Commit 192189e6 authored by Kaitlyn Lee's avatar Kaitlyn Lee
Browse files

Added toolbar and menu.

parent 2fccc013
Loading
Loading
Loading
Loading
+95 −83
Original line number Diff line number Diff line
@@ -47,8 +47,13 @@
#include "FileName.h"
#include "Project.h"
#include "ToolPad.h"
#include "ToolList.h"
#include "XmlStackedHandlerReader.h"

#include "HelpTool.h"
#include "TrackTool.h"



namespace Isis {
  /**
@@ -66,123 +71,130 @@ namespace Isis {
    QGridLayout *resultLayout = new QGridLayout;
    centralWidget->setLayout(resultLayout);

    int row = 0;

    QMenuBar *menuBar = new QMenuBar;
    resultLayout->addWidget(menuBar, row, 0, 1, 2);
    row++;

    m_cnetEditorWidget = new CnetEditorWidget(control, configFile.expanded());
    m_control = control;

    resultLayout->addWidget(m_cnetEditorWidget, row, 0, 1, 2);
    row++;

    // Populate the menu...
    QMap< QAction *, QList< QString > > actionMap = m_cnetEditorWidget->menuActions();
    QMapIterator< QAction *, QList< QString > > actionMapIterator(actionMap);

    QMap<QString, QMenu *> topLevelMenus;

    while ( actionMapIterator.hasNext() ) {
      actionMapIterator.next();
      QAction *actionToAdd = actionMapIterator.key();
      QList< QString > location = actionMapIterator.value();

      QMenu *menuToPutActionInto = NULL;

      if ( location.count() ) {
        QString topLevelMenuTitle = location.takeFirst();
        if (!topLevelMenus[topLevelMenuTitle]) {
          topLevelMenus[topLevelMenuTitle] = menuBar->addMenu(topLevelMenuTitle);
        }

        menuToPutActionInto = topLevelMenus[topLevelMenuTitle];
      }

      foreach (QString menuName, location) {
        bool foundSubMenu = false;
        foreach ( QAction *possibleSubMenu, menuToPutActionInto->actions() ) {
          if (!foundSubMenu &&
              possibleSubMenu->menu() && possibleSubMenu->menu()->title() == menuName) {
            foundSubMenu = true;
            menuToPutActionInto = possibleSubMenu->menu();
          }
        }

        if (!foundSubMenu) {
          menuToPutActionInto = menuToPutActionInto->addMenu(menuName);
        }
      }

      menuToPutActionInto->addAction(actionToAdd);
    }
    resultLayout->addWidget(m_cnetEditorWidget, 0, 0, 1, 2);

    QTabWidget *treeViews = new QTabWidget;
    treeViews->addTab( m_cnetEditorWidget->pointTreeView(), tr("Point View") );
    treeViews->addTab( m_cnetEditorWidget->serialTreeView(), tr("Serial View") );
    treeViews->addTab( m_cnetEditorWidget->connectionTreeView(), tr("Connection View") );
    resultLayout->addWidget(treeViews, row, 0, 1, 1);
    resultLayout->addWidget(treeViews, 1, 0, 1, 1);

    QTabWidget *filterViews = new QTabWidget;
    filterViews->addTab( m_cnetEditorWidget->pointFilterWidget(), tr("Filter Points and Measures") );
    filterViews->addTab( m_cnetEditorWidget->serialFilterWidget(), tr("Filter Images and Points") );
    filterViews->addTab( m_cnetEditorWidget->connectionFilterWidget(), tr("Filter Connections") );
    resultLayout->addWidget(filterViews, row, 1, 1, 1);
    row++;
    resultLayout->addWidget(filterViews, 1, 1, 1, 1);

    createMenus();
    createToolBars();
    populateMenus();
    populateToolBars();
    //createActions();
  }

  /**
   * Destructor
   */
  CnetEditorView::~CnetEditorView() {

    delete m_cnetEditorWidget;
    delete m_permToolBar;
    delete m_activeToolBar;
    delete m_toolPad;

    m_permToolBar = 0;
    m_activeToolBar = 0;
    m_toolPad = 0;
  }

    m_permToolBar = new QToolBar("Standard Tools", 0);
  void CnetEditorView::createMenus() {
    m_fileMenu = menuBar()->addMenu("&File");
    m_tableMenu = menuBar()->addMenu("&Tables");
    m_helpMenu = menuBar()->addMenu("&Help");
  }

  void CnetEditorView::createToolBars() {
    m_permToolBar = addToolBar("Standard Tools");
    m_permToolBar->setObjectName("permToolBar");
    m_permToolBar->setIconSize(QSize(22, 22));
    //toolBarLayout->addWidget(m_permToolBar);

    m_activeToolBar = new QToolBar("Active Tool", 0);
    m_activeToolBar->setObjectName("activeToolBar");
    m_activeToolBar->setIconSize(QSize(22, 22));
    //toolBarLayout->addWidget(m_activeToolBar);

    m_toolPad = new ToolPad("Tool Pad", 0);
    m_toolPad->setObjectName("toolPad");
    //toolBarLayout->addWidget(m_toolPad);
    addToolBar(m_toolPad);

    // m_separatorAction = new QAction(this);
    // m_separatorAction->setSeparator(true);
  }

//  m_cnetEditorWidget->addToPermanent(m_permToolBar);
//  m_cnetEditorWidget->addTo(m_activeToolBar);
//  m_cnetEditorWidget->addTo(m_toolPad);

    m_activeToolBarAction = new QWidgetAction(this);
    m_activeToolBarAction->setDefaultWidget(m_activeToolBar);
  void CnetEditorView::populateToolBars() {
    QMap< QString, QList< QAction * > > toolActionMap;
    toolActionMap = m_cnetEditorWidget->toolBarActions();
    QMapIterator< QString, QList< QAction * > > toolActionIter(toolActionMap);

    while (toolActionIter.hasNext()) {
      toolActionIter.next();
      QString objName = toolActionIter.key();
      QList< QAction * > actionList = toolActionIter.value();
      foreach (QAction *action, actionList) {
        m_toolPad->addAction(action);
      }
    }
  }

    setAcceptDrops(true);
  void CnetEditorView::populateMenus() {
    QMap< QAction *, QList< QString > > menuActionMap;
    menuActionMap = m_cnetEditorWidget->menuActions();
    QMapIterator< QAction *, QList< QString > > menuActionIter(menuActionMap);
    QWidget *widget = NULL;

    while (menuActionIter.hasNext()) {
      menuActionIter.next();
      QAction *action = menuActionIter.key();
      QList< QString > location = menuActionIter.value();
      widget = menuBar();

      while (location.size()) {
        QString menuName = location.takeFirst();
        int actListIndex = indexOfActionList(widget->actions(), menuName);
        widget = widget->actions()[actListIndex]->menu();
      }
      widget->addAction(action);
    }
  }

    QSizePolicy policy = sizePolicy();
    policy.setHorizontalPolicy(QSizePolicy::Expanding);
    policy.setVerticalPolicy(QSizePolicy::Expanding);
    setSizePolicy(policy);

  void CnetEditorView::createActions() {
    // saveAct = new QAction(QIcon(FileName("$base/icons/filesave.png").expanded()),
    //                       tr("&Save"), this);
    // saveAct->setShortcut(tr("Ctrl+S"));
    // saveAct->setStatusTip(tr("save changes"));
    // connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));
    //
    // saveAsAct = new QAction(QIcon(FileName("$base/icons/filesaveas.png").expanded()),
    //                         tr("Save&As"), this);
    // saveAsAct->setStatusTip(tr("Save control network to specified file"));
    // connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));
    //
    // m_permToolBar->addAction(saveAct);
    // m_permToolBar->addAction(saveAsAct);
    // m_fileMenu->addAction(saveAct);
    // m_fileMenu->addAction(saveAsAct);
  }

  int CnetEditorView::indexOfActionList(QList< QAction * > actionList,
      QString actionText) {

  /**
   * Destructor
   */
  CnetEditorView::~CnetEditorView() {

    delete m_cnetEditorWidget;
    delete m_permToolBar;
    delete m_activeToolBar;
    delete m_toolPad;
    int index = -1;
    for (int i = 0; index == -1 && i < actionList.size(); i++)
      if (actionList[i]->text() == actionText)
        index = i;

    m_permToolBar = 0;
    m_activeToolBar = 0;
    m_toolPad = 0;
    return index;
  }


  /**
   * Returns the cnetEditorWidget.
   *
+23 −2
Original line number Diff line number Diff line
@@ -79,6 +79,18 @@ class CnetEditorView : public AbstractProjectItemView {
    void load(XmlStackedHandlerReader *xmlReader);
    void save(QXmlStreamWriter &stream, Project *project, FileName newProjectRoot) const;

    private:
      void createActions();
      void createToolBars();
      void createMenus();
      int indexOfActionList(QList< QAction * > actionList, QString actionText);
      void populateToolBars();
      void populateMenus();


    // private slots:
    //   void save();
    //   void saveAs();

    private:
      /**
@@ -107,11 +119,20 @@ class CnetEditorView : public AbstractProjectItemView {
    QPointer<CnetEditorWidget> m_cnetEditorWidget;
    QPointer<Control> m_control;

    //QAction *saveAct;
    //QAction *saveAsAct;

    QToolBar *m_permToolBar; //!< The permanent tool bar
    QToolBar *m_activeToolBar; //!< The active tool bar
    ToolPad *m_toolPad; //!< The tool pad

    QWidgetAction *m_activeToolBarAction; //!< Stores the active tool bar
    QMenu *m_fileMenu;
    QMenu *m_helpMenu;
    QMenu *m_tableMenu;

    QList<QAction *> m_permToolBarActions; //!< The permanent tool bar actions
    QWidgetAction *m_activeToolBarAction; //!< Widget of the active tool
    QList<QAction *> m_toolPadActions; //!< The tool pad actions
    QAction *m_separatorAction;
  };
}