From 467fab992b184f23703e342e9c05af2c2e7952fb Mon Sep 17 00:00:00 2001
From: Martin Hanzik <martin@hanzik.com>
Date: Tue, 24 Apr 2018 18:04:59 +0200
Subject: [PATCH] Remove AlgorithmList and drag related things

---
 agui2/CMakeLists.txt                          |  2 -
 agui2/src/Algorithm/Registry.cpp              | 25 -----------
 agui2/src/Algorithm/Registry.hpp              |  3 --
 agui2/src/Graphics/AlgorithmList.cpp          | 31 --------------
 agui2/src/Graphics/AlgorithmList.hpp          | 14 -------
 .../src/Graphics/Connection/ConnectionBox.cpp |  1 -
 agui2/src/Graphics/GraphicsView.cpp           | 31 +-------------
 agui2/src/Graphics/GraphicsView.hpp           |  7 +---
 agui2/src/MainWindow.cpp                      |  6 ---
 agui2/src/MainWindow.hpp                      |  2 -
 agui2/src/MainWindow.ui                       | 41 -------------------
 11 files changed, 2 insertions(+), 161 deletions(-)
 delete mode 100644 agui2/src/Graphics/AlgorithmList.cpp
 delete mode 100644 agui2/src/Graphics/AlgorithmList.hpp

diff --git a/agui2/CMakeLists.txt b/agui2/CMakeLists.txt
index d8c4e1c345..a0566a8be6 100644
--- a/agui2/CMakeLists.txt
+++ b/agui2/CMakeLists.txt
@@ -44,8 +44,6 @@ add_executable(${PROJECT_NAME}
         src/Algorithm/Registry.hpp
         src/Converter.cpp
         src/Converter.hpp
-        src/Graphics/AlgorithmList.cpp
-        src/Graphics/AlgorithmList.hpp
         src/Graphics/Connection/Connection.cpp
         src/Graphics/Connection/Connection.hpp
         src/Graphics/Connection/ConnectionBox.cpp
diff --git a/agui2/src/Algorithm/Registry.cpp b/agui2/src/Algorithm/Registry.cpp
index 51854ba63f..97fbfb0959 100644
--- a/agui2/src/Algorithm/Registry.cpp
+++ b/agui2/src/Algorithm/Registry.cpp
@@ -61,28 +61,3 @@ std::map<std::string, std::vector<Algorithm*>> Registry::getGroups() {
 
     return res;
 }
-
-std::unique_ptr<QStandardItemModel> Registry::createAlgorithmModel() {
-
-    auto model = std::make_unique<QStandardItemModel>();
-
-    for (const auto& group: Registry::getGroups()) {
-        auto groupName = QString::fromStdString(group.first);
-        auto* groupItem = new QStandardItem(groupName);
-        groupItem->setToolTip(groupName);
-        model->appendRow(groupItem);
-
-        for (const auto* algo: group.second) {
-            auto name = QString::fromStdString(algo->getPrettyName());
-            auto fullName = QString::fromStdString(algo->getFullName());
-
-            auto* item = new QStandardItem(name);
-            item->setToolTip(fullName);
-            item->setData(fullName);
-
-            groupItem->appendRow(item);
-        }
-    }
-
-    return model;
-}
diff --git a/agui2/src/Algorithm/Registry.hpp b/agui2/src/Algorithm/Registry.hpp
index 57c8eb9f0c..7e15d6679d 100644
--- a/agui2/src/Algorithm/Registry.hpp
+++ b/agui2/src/Algorithm/Registry.hpp
@@ -4,7 +4,6 @@
 #include <string>
 
 #include <Algorithm/Algorithm.hpp>
-#include <QtGui/QStandardItemModel>
 
 class Registry {
 public:
@@ -13,8 +12,6 @@ public:
     static Algorithm* getAlgorithm(const std::string& name);
     static std::map<std::string, std::vector<Algorithm*>> getGroups();
 
-    static std::unique_ptr<QStandardItemModel> createAlgorithmModel();
-
 private:
     Registry() = default;
 
diff --git a/agui2/src/Graphics/AlgorithmList.cpp b/agui2/src/Graphics/AlgorithmList.cpp
deleted file mode 100644
index d23db99eaf..0000000000
--- a/agui2/src/Graphics/AlgorithmList.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <Graphics/AlgorithmList.hpp>
-
-#include <QDrag>
-#include <QtGui/QDragMoveEvent>
-#include <QtGui/QStandardItemModel>
-#include <QMimeData>
-
-void AlgorithmList::startDrag(Qt::DropActions supportedActions) {
-    auto* item = dynamic_cast<QStandardItemModel*>(this->model())->itemFromIndex(this->currentIndex());
-    if (!item)
-        return;
-
-    auto algorithm = item->data();
-    if (algorithm.isNull())
-        return;
-
-    auto algorithmName = algorithm.toString();
-    if (algorithmName.isEmpty())
-        return;
-
-    auto* mimeData = new QMimeData;
-    mimeData->setData("application/x-algorithm", algorithmName.toUtf8());
-    auto* drag = new QDrag(this);
-    drag->setMimeData(mimeData);
-    drag->exec(Qt::MoveAction);
-}
-
-AlgorithmList::AlgorithmList(QWidget* parent)
-    : QTreeView(parent) {
-    this->setDragEnabled(true);
-}
diff --git a/agui2/src/Graphics/AlgorithmList.hpp b/agui2/src/Graphics/AlgorithmList.hpp
deleted file mode 100644
index e58990b130..0000000000
--- a/agui2/src/Graphics/AlgorithmList.hpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <QtWidgets/QTreeView>
-
-class AlgorithmList : public QTreeView {
-public:
-    explicit AlgorithmList(QWidget* parent);
-
-protected:
-    void startDrag(Qt::DropActions supportedActions) override;
-
-};
-
-
diff --git a/agui2/src/Graphics/Connection/ConnectionBox.cpp b/agui2/src/Graphics/Connection/ConnectionBox.cpp
index 81086871f4..97b48b0085 100644
--- a/agui2/src/Graphics/Connection/ConnectionBox.cpp
+++ b/agui2/src/Graphics/Connection/ConnectionBox.cpp
@@ -2,7 +2,6 @@
 
 #include <utility>
 
-#include <QtGui/QDrag>
 #include <QtWidgets/QApplication>
 
 #include <Graphics/Connection/InputConnectionBox.hpp>
diff --git a/agui2/src/Graphics/GraphicsView.cpp b/agui2/src/Graphics/GraphicsView.cpp
index bffff1b1f8..49bb0ad92a 100644
--- a/agui2/src/Graphics/GraphicsView.cpp
+++ b/agui2/src/Graphics/GraphicsView.cpp
@@ -1,7 +1,6 @@
 #include <Graphics/GraphicsView.hpp>
 
-#include <QDragEnterEvent>
-#include <QMimeData>
+#include <QMouseEvent>
 #include <QtWidgets/QGraphicsScene>
 #include <QtWidgets/QWidget>
 
@@ -11,34 +10,6 @@
 #include <MainWindow.hpp>
 #include <Models/AlgorithmModelBox.hpp>
 
-GraphicsView::GraphicsView(QWidget* parent)
-    : QGraphicsView(parent)
-{
-    this->setAcceptDrops(true);
-}
-
-void GraphicsView::dragEnterEvent(QDragEnterEvent* event) {
-    if (event->mimeData()->hasFormat("application/x-algorithm"))
-        event->acceptProposedAction();
-}
-
-void GraphicsView::dropEvent(QDropEvent* event) {
-    auto name = event->mimeData()->data("application/x-algorithm").toStdString();
-    if (auto* algo = Registry::getAlgorithm(name)) {
-
-        this->scene()->addItem(new GraphicsBox(std::make_unique<AlgorithmModelBox>(algo), this->mapToScene(event->pos())));
-        event->acceptProposedAction();
-    }
-    else {
-        event->ignore();
-    }
-}
-
-void GraphicsView::dragMoveEvent(QDragMoveEvent* event) {
-    if (event->mimeData()->hasFormat("application/x-algorithm"))
-        event->acceptProposedAction();
-}
-
 void GraphicsView::mousePressEvent(QMouseEvent* event) {
     auto* w = MainWindow::getInstance();
     const auto& data = w->getCursorData();
diff --git a/agui2/src/Graphics/GraphicsView.hpp b/agui2/src/Graphics/GraphicsView.hpp
index 2d82284bac..26959b4b30 100644
--- a/agui2/src/Graphics/GraphicsView.hpp
+++ b/agui2/src/Graphics/GraphicsView.hpp
@@ -3,13 +3,8 @@
 
 class GraphicsView : public QGraphicsView {
 public:
-    GraphicsView(QWidget* parent);
-
+    using QGraphicsView::QGraphicsView;
 protected:
-    void dragEnterEvent(QDragEnterEvent* event) override;
-    void dragMoveEvent(QDragMoveEvent* event) override;
-    void dropEvent(QDropEvent* event) override;
-
     void mousePressEvent(QMouseEvent* event) override;
 };
 
diff --git a/agui2/src/MainWindow.cpp b/agui2/src/MainWindow.cpp
index 0f49097656..7ef4939c52 100644
--- a/agui2/src/MainWindow.cpp
+++ b/agui2/src/MainWindow.cpp
@@ -25,7 +25,6 @@ const std::string MainWindow::ADD_INPUT_CURSOR_DATA = "__ADD_INPUT__";
 MainWindow::MainWindow()
     : ui(new Ui::MainWindow)
     , scene(new GraphicsScene(this))
-    , algorithmModel(std::make_unique<QStandardItemModel>())
 {
     Q_ASSERT(MainWindow::instance == nullptr);
     MainWindow::instance = this;
@@ -37,11 +36,6 @@ MainWindow::MainWindow()
 
     this->setupMenu();
 
-    this->algorithmModel = Registry::createAlgorithmModel();
-
-    this->ui->algorithmList->setModel(this->algorithmModel.get());
-    this->ui->algorithmList->expandAll();
-
     this->scene->addItem(new InputGraphicsBox(std::make_unique<InputModelBox>(), {0, 200}));
     this->outputBox = new GraphicsBox(std::make_unique<OutputModelBox>(), {400, 200});;
     this->scene->addItem(outputBox);
diff --git a/agui2/src/MainWindow.hpp b/agui2/src/MainWindow.hpp
index 70724e077e..8b36161f71 100644
--- a/agui2/src/MainWindow.hpp
+++ b/agui2/src/MainWindow.hpp
@@ -6,7 +6,6 @@
 #include <QGraphicsView>
 #include <QMainWindow>
 #include <QtCore/QStringListModel>
-#include <QtGui/QStandardItemModel>
 
 #include <Algorithm/Algorithm.hpp>
 #include <Graphics/GraphicsScene.hpp>
@@ -42,7 +41,6 @@ public:
 private:
     std::unique_ptr<Ui::MainWindow> ui;
     std::unique_ptr<GraphicsScene> scene;
-    std::unique_ptr<QStandardItemModel> algorithmModel;
     GraphicsBox* outputBox = nullptr;
     std::string cursorData;
 
diff --git a/agui2/src/MainWindow.ui b/agui2/src/MainWindow.ui
index 6d5123d034..935435260a 100644
--- a/agui2/src/MainWindow.ui
+++ b/agui2/src/MainWindow.ui
@@ -35,42 +35,6 @@
    <layout class="QVBoxLayout" name="verticalLayout_4">
     <item>
      <layout class="QHBoxLayout" name="horizontalLayout">
-      <item>
-       <layout class="QVBoxLayout" name="verticalLayout_3" stretch="0,0">
-        <property name="spacing">
-         <number>0</number>
-        </property>
-        <property name="sizeConstraint">
-         <enum>QLayout::SetFixedSize</enum>
-        </property>
-        <item>
-         <widget class="QPushButton" name="AddInputBtn">
-          <property name="text">
-           <string>Add Input</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="AlgorithmList" name="algorithmList">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="minimumSize">
-           <size>
-            <width>300</width>
-            <height>0</height>
-           </size>
-          </property>
-          <attribute name="headerVisible">
-           <bool>false</bool>
-          </attribute>
-         </widget>
-        </item>
-       </layout>
-      </item>
       <item>
        <widget class="GraphicsView" name="graphicsView">
         <property name="sizePolicy">
@@ -141,11 +105,6 @@
    <extends>QGraphicsView</extends>
    <header>Graphics/GraphicsView.hpp</header>
   </customwidget>
-  <customwidget>
-   <class>AlgorithmList</class>
-   <extends>QTreeView</extends>
-   <header>Graphics/AlgorithmList.hpp</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
-- 
GitLab