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
|
// double-cliquer sur un element permet de l'editer
|
||||||
connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(slot_doubleClick(QTreeWidgetItem *, int)));
|
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);
|
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);
|
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(reload, SIGNAL(triggered()), elements_panel, SLOT(reload()));
|
||||||
connect(new_category, SIGNAL(triggered()), this, SLOT(newCategory()));
|
connect(new_category, SIGNAL(triggered()), this, SLOT(newCategory()));
|
||||||
connect(edit_category, SIGNAL(triggered()), elements_panel, SLOT(editCategory()));
|
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(delete_element, SIGNAL(triggered()), elements_panel, SLOT(deleteElement()));
|
||||||
|
|
||||||
connect(elements_panel, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(updateButtons()));
|
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
|
// initialise la barre d'outils
|
||||||
toolbar = new QToolBar(this);
|
toolbar = new QToolBar(this);
|
||||||
@ -100,3 +103,32 @@ void ElementsPanelWidget::updateButtons() {
|
|||||||
edit_element -> setEnabled(element_selected);
|
edit_element -> setEnabled(element_selected);
|
||||||
delete_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 *reload;
|
||||||
QAction *new_category, *edit_category, *delete_category;
|
QAction *new_category, *edit_category, *delete_category;
|
||||||
QAction *new_element, *edit_element, *delete_element;
|
QAction *new_element, *edit_element, *delete_element;
|
||||||
|
QMenu *context_menu;
|
||||||
|
|
||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
@ -34,6 +35,7 @@ class ElementsPanelWidget : public QWidget {
|
|||||||
void newElement();
|
void newElement();
|
||||||
void newCategory();
|
void newCategory();
|
||||||
void updateButtons();
|
void updateButtons();
|
||||||
|
void handleContextMenu(const QPoint &);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user