diff --git a/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp b/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp index 581c5073c..ac595a8b9 100644 --- a/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp +++ b/sources/TerminalStrip/ui/terminalstripeditorwindow.cpp @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with QElectroTech. If not, see . */ +#include "freeterminaleditor.h" #include "terminalstripeditorwindow.h" #include "ui_terminalstripeditorwindow.h" #include "terminalstriptreedockwidget.h" @@ -22,7 +23,11 @@ #include "terminalstripcreatordialog.h" #include "../UndoCommand/addterminalstripcommand.h" #include "../../qetproject.h" +#include "../realterminal.h" +static int EMPTY_PAGE = 0; +static int FREE_TERMINAL_PAGE = 1; +static int TERMINAL_STRIP_PAGE = 2; /** * @brief TerminalStripEditorWindow::TerminalStripEditorWindow * @param project @@ -37,7 +42,12 @@ TerminalStripEditorWindow::TerminalStripEditorWindow(QETProject *project, QWidge ui->m_remove_terminal->setDisabled(true); addTreeDockWidget(); + m_free_terminal_editor = new FreeTerminalEditor(m_project, this); + connect(m_tree_dock, &TerminalStripTreeDockWidget::currentStripChanged, this, &TerminalStripEditorWindow::currentStripChanged); + + ui->m_stacked_widget->insertWidget(EMPTY_PAGE, new QWidget(ui->m_stacked_widget)); + ui->m_stacked_widget->insertWidget(FREE_TERMINAL_PAGE, m_free_terminal_editor); } /** @@ -66,7 +76,24 @@ void TerminalStripEditorWindow::addTreeDockWidget() void TerminalStripEditorWindow::currentStripChanged(TerminalStrip *strip) { Q_UNUSED(strip) + updateUi(); + +} + +void TerminalStripEditorWindow::updateUi() +{ ui->m_remove_terminal->setEnabled(m_tree_dock->currentIsStrip()); + + ui->m_stacked_widget->setCurrentIndex(EMPTY_PAGE); + + if (auto real_terminal = m_tree_dock->currentRealTerminal()) + { + if (!real_terminal->parentStrip()) + { + ui->m_stacked_widget->setCurrentIndex(FREE_TERMINAL_PAGE); + m_free_terminal_editor->reload(); + } + } } /** @@ -104,18 +131,6 @@ void TerminalStripEditorWindow::on_m_remove_terminal_triggered() } } -// auto item = ui->m_tree_view->currentItem(); -// if (auto strip = m_item_strip_H.value(item)) -// { -// m_item_strip_H.remove(item); -// m_uuid_strip_H.remove(strip->uuid()); -// delete item; - -// m_project->undoStack()->push(new RemoveTerminalStripCommand(strip, m_project)); -// } - -// on_m_reload_pb_clicked(); - } diff --git a/sources/TerminalStrip/ui/terminalstripeditorwindow.h b/sources/TerminalStrip/ui/terminalstripeditorwindow.h index 343f02419..ea1f7acc6 100644 --- a/sources/TerminalStrip/ui/terminalstripeditorwindow.h +++ b/sources/TerminalStrip/ui/terminalstripeditorwindow.h @@ -23,6 +23,7 @@ class QETProject; class TerminalStripTreeDockWidget; class TerminalStrip; +class FreeTerminalEditor; namespace Ui { class TerminalStripEditorWindow; @@ -44,11 +45,13 @@ class TerminalStripEditorWindow : public QMainWindow private: void addTreeDockWidget(); void currentStripChanged(TerminalStrip *strip); + void updateUi(); private: Ui::TerminalStripEditorWindow *ui; - QETProject *m_project = nullptr; + QETProject *m_project {nullptr}; TerminalStripTreeDockWidget *m_tree_dock; + FreeTerminalEditor *m_free_terminal_editor {nullptr}; }; #endif // TERMINALSTRIPEDITORWINDOW_H diff --git a/sources/TerminalStrip/ui/terminalstripeditorwindow.ui b/sources/TerminalStrip/ui/terminalstripeditorwindow.ui index 0acef215e..e0335630d 100644 --- a/sources/TerminalStrip/ui/terminalstripeditorwindow.ui +++ b/sources/TerminalStrip/ui/terminalstripeditorwindow.ui @@ -13,7 +13,20 @@ Gestionnaire de borniers - + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + diff --git a/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp b/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp index 825d09b0d..3e2a7f337 100644 --- a/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp +++ b/sources/TerminalStrip/ui/terminalstriptreedockwidget.cpp @@ -26,6 +26,7 @@ #include "../realterminal.h" #include "../../qetgraphicsitem/terminalelement.h" #include "../terminalstrip.h" +#include "terminalstriptreewidget.h" TerminalStripTreeDockWidget::TerminalStripTreeDockWidget(QETProject *project, QWidget *parent) : QDockWidget(parent), @@ -144,6 +145,20 @@ void TerminalStripTreeDockWidget::setSelectedStrip(TerminalStrip *strip) { ui->m_tree_view->setCurrentItem(m_item_strip_H.key(strip)); } +/** + * @brief TerminalStripTreeDockWidget::currentRealTerminal + * @return the current real terminal or a null QSharedPointer. + */ +QSharedPointer TerminalStripTreeDockWidget::currentRealTerminal() const +{ + if (auto item = ui->m_tree_view->currentItem()) { + if (item->type() == TerminalStripTreeWidget::Terminal) { + return m_uuid_terminal_H.value(item->data(0,TerminalStripTreeWidget::UUID_USER_ROLE).toUuid()); + } + } + return QSharedPointer(); +} + /** * @brief TerminalStripTreeDockWidget::on_m_tree_view_currentItemChanged * @param current diff --git a/sources/TerminalStrip/ui/terminalstriptreedockwidget.h b/sources/TerminalStrip/ui/terminalstriptreedockwidget.h index 87545b54a..d1892dd10 100644 --- a/sources/TerminalStrip/ui/terminalstriptreedockwidget.h +++ b/sources/TerminalStrip/ui/terminalstriptreedockwidget.h @@ -44,6 +44,7 @@ class TerminalStripTreeDockWidget : public QDockWidget QString currentInstallation() const; QString currentLocation() const; void setSelectedStrip(TerminalStrip *strip); + QSharedPointer currentRealTerminal() const; signals: void currentStripChanged(TerminalStrip *strip); diff --git a/sources/TerminalStrip/ui/terminalstriptreewidget.cpp b/sources/TerminalStrip/ui/terminalstriptreewidget.cpp index 1ca25917b..17a184549 100644 --- a/sources/TerminalStrip/ui/terminalstriptreewidget.cpp +++ b/sources/TerminalStrip/ui/terminalstriptreewidget.cpp @@ -23,8 +23,6 @@ #include #include -int TerminalStripTreeWidget::UUID_USER_ROLE = Qt::UserRole + 1; - TerminalStripTreeWidget::TerminalStripTreeWidget(QWidget *parent) : QTreeWidget(parent) {} diff --git a/sources/TerminalStrip/ui/terminalstriptreewidget.h b/sources/TerminalStrip/ui/terminalstriptreewidget.h index fc1218bc7..d5b7fac1e 100644 --- a/sources/TerminalStrip/ui/terminalstriptreewidget.h +++ b/sources/TerminalStrip/ui/terminalstriptreewidget.h @@ -39,7 +39,7 @@ class TerminalStripTreeWidget : public QTreeWidget }; //Role used for data in QTreeWidgetItem - static int UUID_USER_ROLE; + static constexpr int UUID_USER_ROLE{Qt::UserRole + 1}; signals: /**