Skip to content

Commit

Permalink
Work toward adding a toolbar
Browse files Browse the repository at this point in the history
  • Loading branch information
davidborland committed Dec 11, 2019
1 parent 173647e commit efa10d1
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 10 deletions.
43 changes: 39 additions & 4 deletions MainWindow.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,15 @@
#include <QIcon>
#include <QStyle>
#include <QPushButton>

#include <QIODevice>
#include <QJsonDocument>
#include <QJsonObject>
#include <QToolBar>

#include <vtkGenericOpenGLRenderWindow.h>

#include "VisualizationContainer.h"
#include "RegionCollection.h"
#include "RegionTable.h"
#include "RegionMetadataIO.h"
#include "InteractionEnums.h"

#include "vtkCallbackCommand.h"
#include "vtkSmartPointer.h"
Expand All @@ -31,6 +29,9 @@ MainWindow::MainWindow() {
defaultImageDirectoryKey = "default_image_directory";
defaultSegmentationDirectoryKey = "default_segmentation_directory";

// Create tool bar
CreateToolBar();

// Create render windows
vtkNew<vtkGenericOpenGLRenderWindow> renderWindowLeft;
qvtkWidgetLeft->SetRenderWindow(renderWindowLeft);
Expand Down Expand Up @@ -319,6 +320,15 @@ void MainWindow::on_actionExit_triggered() {
qApp->exit();
}

void MainWindow::on_actionNavigation() {

visualizationContainer->SetInteractionMode(NavigationMode);
}

void MainWindow::on_actionEdit() {
visualizationContainer->SetInteractionMode(EditMode);
}

void MainWindow::on_regionDone(int label, bool done) {
visualizationContainer->SetRegionDone((unsigned short)label, done);
}
Expand Down Expand Up @@ -355,3 +365,28 @@ void MainWindow::SetDefaultDirectory(QString key, QString fileName) {
QSettings settings;
settings.setValue(key, fileInfo.absoluteDir().absolutePath());
}

void MainWindow::CreateToolBar() {
QToolBar* toolBar = new QToolBar();
toolBar->setFloatable(true);
toolBar->setMovable(true);
toolBar->setOrientation(Qt::Vertical);

QActionGroup* interactionModeGroup = new QActionGroup(this);
interactionModeGroup->setExclusive(true);

QAction* actionNavigation = new QAction("N", interactionModeGroup);
actionNavigation->setCheckable(true);
actionNavigation->setChecked(true);

QAction* actionEdit = new QAction("E", interactionModeGroup);
actionNavigation->setCheckable(false);

toolBar->addAction(actionNavigation);
toolBar->addAction(actionEdit);

QObject::connect(actionNavigation, &QAction::triggered, this, &MainWindow::on_actionNavigation);
QObject::connect(actionEdit, &QAction::triggered, this, &MainWindow::on_actionEdit);

toolBarWidget->layout()->addWidget(toolBar);
}
9 changes: 8 additions & 1 deletion MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,13 @@ class MainWindow : public QMainWindow, private Ui::MainWindow {
void highlightRegion(unsigned short label);

public slots:

// Menu events
// Use Qt's auto-connect magic to tie GUI widgets to slots,
// removing the need to call connect() explicitly.
// Names of the methods must follow the naming convention
// on_<widget name>_<signal name>(<signal parameters>).

// Menu events
virtual void on_actionOpen_Image_File_triggered();
virtual void on_actionOpen_Image_Stack_triggered();

Expand All @@ -42,6 +43,10 @@ public slots:

virtual void on_actionExit_triggered();

// Tool bar events
virtual void on_actionNavigation();
virtual void on_actionEdit();

// Region table events
virtual void on_regionDone(int label, bool done);
virtual void on_removeRegion(int label);
Expand All @@ -61,6 +66,8 @@ public slots:

QString GetDefaultDirectory(QString key);
void SetDefaultDirectory(QString key, QString fileName);

void CreateToolBar();
};

#endif
9 changes: 9 additions & 0 deletions MainWindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,15 @@
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="toolBarWidget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="regionTableContainer">
<property name="sizePolicy">
Expand Down
4 changes: 3 additions & 1 deletion SliceView.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class RegionOutline;
class RegionCollection;
class SliceLocation;

enum InteractionMode;

class SliceView {
public:
SliceView(vtkRenderWindowInteractor* interactor, vtkLookupTable* lut);
Expand All @@ -34,7 +36,7 @@ class SliceView {
void SetShowProbe(bool show);
void SetProbePosition(double x, double y, double z);

void SetInteractionMode(enum InteractionMode mode);
void SetInteractionMode(InteractionMode mode);

void SetCurrentRegion(Region* region);

Expand Down
8 changes: 6 additions & 2 deletions VisualizationContainer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -343,15 +343,19 @@ void VisualizationContainer::SegmentVolume() {
Render();
}

void VisualizationContainer::ToggleInteractionMode() {
interactionMode = interactionMode == NavigationMode ? EditMode : NavigationMode;
void VisualizationContainer::SetInteractionMode(InteractionMode mode) {
interactionMode = mode;

sliceView->SetInteractionMode(interactionMode);
volumeView->SetInteractionMode(interactionMode);

Render();
}

void VisualizationContainer::ToggleInteractionMode() {
SetInteractionMode(interactionMode == NavigationMode ? EditMode : NavigationMode);
}

void VisualizationContainer::PickLabel(int x, int y, int z) {
if (!labels) return;

Expand Down
5 changes: 4 additions & 1 deletion VisualizationContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ class SliceView;
class Region;
class RegionCollection;

enum InteractionMode;

class VisualizationContainer {
public:
VisualizationContainer(
Expand All @@ -41,6 +43,7 @@ class VisualizationContainer {
void SegmentVolume();
FileErrorCode SaveSegmentationData(const std::string& fileName);

void SetInteractionMode(InteractionMode mode);
void ToggleInteractionMode();

void PickLabel(int x, int y, int z);
Expand Down Expand Up @@ -84,7 +87,7 @@ class VisualizationContainer {
SliceView *sliceView;

// Current interaction mode
enum InteractionMode interactionMode;
InteractionMode interactionMode;

void SetImageData(vtkImageData* imageData);
bool SetLabelData(vtkImageData* labelData);
Expand Down
4 changes: 3 additions & 1 deletion VolumeView.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ class Region;
class RegionSurface;
class RegionCollection;

enum InteractionMode;

class VolumeView {
public:
VolumeView(vtkRenderWindowInteractor* interactor);
Expand All @@ -34,7 +36,7 @@ class VolumeView {
void SetShowProbe(bool visibility);
void SetProbePosition(double x, double y, double z);

void SetInteractionMode(enum InteractionMode mode);
void SetInteractionMode(InteractionMode mode);

void SetCurrentRegion(Region* region);

Expand Down

0 comments on commit efa10d1

Please sign in to comment.