diff --git a/elementspanel.cpp b/elementspanel.cpp index 10e1be322..5e3d26ad9 100644 --- a/elementspanel.cpp +++ b/elementspanel.cpp @@ -20,11 +20,8 @@ ElementsPanel::ElementsPanel(QWidget *parent) : QTreeWidget(parent) { // taille des elements setIconSize(QSize(50, 50)); - // chargement des elements de la collection QET - addDir(invisibleRootItem(), QETApp::commonElementsDir(), tr("Collection QET")); - - // chargement des elements de la collection utilisateur - addDir(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur")); + // charge les collections + reload(); // force du noir sur une alternance de blanc (comme le schema) et de gris // clair, avec du blanc sur bleu pas trop fonce pour la selection @@ -199,3 +196,17 @@ QString ElementsPanel::categoryName(QDir &directory) { } return(category_name); } + +/** + Recharge l'arbre des elements +*/ +void ElementsPanel::reload() { + // vide l'arbre + while (takeTopLevelItem(0)); + + // chargement des elements de la collection QET + addDir(invisibleRootItem(), QETApp::commonElementsDir(), tr("Collection QET")); + + // chargement des elements de la collection utilisateur + addDir(invisibleRootItem(), QETApp::customElementsDir(), tr("Collection utilisateur")); +} diff --git a/elementspanel.h b/elementspanel.h index 835940a81..80cf6047a 100644 --- a/elementspanel.h +++ b/elementspanel.h @@ -16,6 +16,7 @@ void dragMoveEvent(QDragMoveEvent *); void dropEvent(QDropEvent *); void startDrag(Qt::DropActions); + void reload(); private: void addFile(QTreeWidgetItem *, QString); void addDir(QTreeWidgetItem *, QString, QString = QString()); diff --git a/elementspanelwidget.cpp b/elementspanelwidget.cpp new file mode 100644 index 000000000..534989a5a --- /dev/null +++ b/elementspanelwidget.cpp @@ -0,0 +1,20 @@ +#include "elementspanelwidget.h" + +ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) { + // initalise le panel d'elements + elements_panel = new ElementsPanel(this); + + // initialise la barre d'outils + toolbar = new QToolBar(this); + toolbar -> setMovable(false); + toolbar -> addAction(QIcon(":/ico/reload.png"), tr("Recharger les collections"), elements_panel, SLOT(reload())); + + // disposition verticale + QVBoxLayout *vlayout = new QVBoxLayout(this); + vlayout -> setMargin(0); + vlayout -> setSpacing(0); + vlayout -> addWidget(toolbar); + vlayout -> addWidget(elements_panel); + vlayout -> setStretchFactor(elements_panel, 75000); + setLayout(vlayout); +} diff --git a/elementspanelwidget.h b/elementspanelwidget.h new file mode 100644 index 000000000..5c9e53de3 --- /dev/null +++ b/elementspanelwidget.h @@ -0,0 +1,21 @@ +#ifndef ELEMENTS_PANEL_WIDGET_H + #define ELEMENTS_PANEL_WIDGET_H + #include + #include "elementspanel.h" + class ElementsPanelWidget : public QWidget { + Q_OBJECT + + // constructeurs + public: + ElementsPanelWidget(QWidget * = 0); + + // attributs + private: + ElementsPanel *elements_panel; + QToolBar *toolbar; + + // methodes + public: + inline ElementsPanel &elementsPanel() const { return(*elements_panel); } + }; +#endif diff --git a/qelectrotech.pro b/qelectrotech.pro index c0036c57a..1a7314a4f 100644 --- a/qelectrotech.pro +++ b/qelectrotech.pro @@ -21,7 +21,8 @@ HEADERS += aboutqet.h \ qetapp.h \ terminal.h \ conducersegment.h \ - elementtextitem.h + elementtextitem.h \ + elementspanelwidget.h SOURCES += aboutqet.cpp \ borderinset.cpp \ conducer.cpp \ @@ -36,7 +37,8 @@ SOURCES += aboutqet.cpp \ qetapp.cpp \ terminal.cpp \ conducersegment.cpp \ - elementtextitem.cpp + elementtextitem.cpp \ + elementspanelwidget.cpp RESOURCES += qelectrotech.qrc TRANSLATIONS += lang/qet_en.ts lang/qt_fr.ts QT += xml diff --git a/qelectrotech.qrc b/qelectrotech.qrc index 21739df12..42fc91d8c 100644 --- a/qelectrotech.qrc +++ b/qelectrotech.qrc @@ -24,6 +24,7 @@ ico/print.png ico/qt.png ico/redo.png + ico/reload.png ico/restaurer.png ico/saveas.png ico/save.png diff --git a/qetapp.cpp b/qetapp.cpp index 1c2019e33..c02b57a01 100644 --- a/qetapp.cpp +++ b/qetapp.cpp @@ -1,7 +1,7 @@ #include "qetapp.h" //#include "diagram.h" #include "diagramview.h" -#include "elementspanel.h" +#include "elementspanelwidget.h" #include "aboutqet.h" /** @@ -55,7 +55,7 @@ QETApp::QETApp(QWidget *parent) : QMainWindow(parent) { qdw_pa -> setAllowedAreas(Qt::AllDockWidgetAreas); qdw_pa -> setFeatures(QDockWidget::AllDockWidgetFeatures); qdw_pa -> setMinimumWidth(160); - qdw_pa -> setWidget(pa = new ElementsPanel(qdw_pa)); + qdw_pa -> setWidget(pa = new ElementsPanelWidget(qdw_pa)); addDockWidget(Qt::LeftDockWidgetArea, qdw_pa); // mise en place des actions diff --git a/qetapp.h b/qetapp.h index c941e45ee..8f6df7b6b 100644 --- a/qetapp.h +++ b/qetapp.h @@ -2,7 +2,7 @@ #define QETAPP_H #include class DiagramView; - class ElementsPanel; + class ElementsPanelWidget; /** Cette classe represente la fenetre principale de QElectroTech et, ipso facto, la plus grande partie de l'interface graphique de QElectroTech. @@ -117,7 +117,7 @@ /// Dock pour le Panel d'Appareils QDockWidget *qdw_pa; /// Panel d'Appareils - ElementsPanel *pa; + ElementsPanelWidget *pa; /// Elements de menus pour l'icone du systray QMenu *menu_systray; QAction *systray_masquer;