mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Ajout d'un menu contextuel dans le panel d'elements
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@197 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
5c1260fe0c
commit
66194ba970
@ -41,6 +41,9 @@ ElementsPanel::ElementsPanel(QWidget *parent) : QTreeWidget(parent) {
|
||||
|
||||
// double-cliquer sur un element permet de l'editer
|
||||
connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(slot_doubleClick(QTreeWidgetItem *, int)));
|
||||
|
||||
// emet un signal au lieu de gerer son menu contextuel
|
||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -18,6 +18,8 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
edit_element = new QAction(QIcon(":/ico/edit.png"), tr("\311diter l'\351l\351ment"), this);
|
||||
delete_element = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer l'\351l\351ment"), this);
|
||||
|
||||
context_menu = new QMenu(this);
|
||||
|
||||
connect(reload, SIGNAL(triggered()), elements_panel, SLOT(reload()));
|
||||
connect(new_category, SIGNAL(triggered()), this, SLOT(newCategory()));
|
||||
connect(edit_category, SIGNAL(triggered()), elements_panel, SLOT(editCategory()));
|
||||
@ -27,6 +29,7 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
connect(delete_element, SIGNAL(triggered()), elements_panel, SLOT(deleteElement()));
|
||||
|
||||
connect(elements_panel, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(updateButtons()));
|
||||
connect(elements_panel, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(handleContextMenu(const QPoint &)));
|
||||
|
||||
// initialise la barre d'outils
|
||||
toolbar = new QToolBar(this);
|
||||
@ -100,3 +103,32 @@ void ElementsPanelWidget::updateButtons() {
|
||||
edit_element -> setEnabled(element_selected);
|
||||
delete_element -> setEnabled(element_selected);
|
||||
}
|
||||
|
||||
/**
|
||||
Gere le menu contextuel du panel d'elements
|
||||
@param pos Position ou le menu contextuel a ete demande
|
||||
*/
|
||||
void ElementsPanelWidget::handleContextMenu(const QPoint &pos) {
|
||||
// recupere l'item concerne par l'evenement ainsi que son chemin
|
||||
QTreeWidgetItem *item = elements_panel -> itemAt(pos);
|
||||
if (!item) return;
|
||||
|
||||
// recupere le fichier associe a l'item
|
||||
QString item_file = item -> data(0, 42).toString();
|
||||
QFileInfo item_file_infos(item_file);
|
||||
if (item_file.isNull() || !item_file_infos.exists()) return;
|
||||
|
||||
// remplit le menu differemment selon qu'il s'agit d'un element ou d'une categorie
|
||||
if (item_file_infos.isDir()) {
|
||||
context_menu -> addAction(new_category);
|
||||
context_menu -> addAction(edit_category);
|
||||
context_menu -> addAction(delete_category);
|
||||
context_menu -> addAction(new_element);
|
||||
} else {
|
||||
context_menu -> addAction(edit_element);
|
||||
context_menu -> addAction(delete_element);
|
||||
}
|
||||
|
||||
// affiche le menu
|
||||
context_menu -> popup(mapToGlobal(elements_panel -> mapTo(this, pos)));
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ class ElementsPanelWidget : public QWidget {
|
||||
QAction *reload;
|
||||
QAction *new_category, *edit_category, *delete_category;
|
||||
QAction *new_element, *edit_element, *delete_element;
|
||||
QMenu *context_menu;
|
||||
|
||||
// methodes
|
||||
public:
|
||||
@ -34,6 +35,7 @@ class ElementsPanelWidget : public QWidget {
|
||||
void newElement();
|
||||
void newCategory();
|
||||
void updateButtons();
|
||||
void handleContextMenu(const QPoint &);
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user