Beispiel #1
0
    def __init__(self, parent):
        super(DataListWidget, self).__init__(parent)
        self.ivm = parent.ivm
        self._selected = None
        self._roi_icon = QtGui.QIcon(get_icon("roi_data.png"))
        self._data_icon = QtGui.QIcon(get_icon("data.png"))
        self._main_icon = QtGui.QIcon(get_icon("main_data.png"))
        self._vis_icon = QtGui.QIcon(get_icon("visible.png"))
        self._main_vis_icon = QtGui.QIcon(get_icon("main_ovl.png"))

        self.model = QtGui.QStandardItemModel()
        self.setModel(self.model)
        self._update_list()

        self.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
        self.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
        self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        self.verticalHeader().setVisible(False)
        self.horizontalHeader().setVisible(False)

        self.clicked.connect(self._clicked)
        self.ivm.sig_main_data.connect(self._update_list)
        self.ivm.sig_current_data.connect(self._update_list)
        self.ivm.sig_all_data.connect(self._update_list)
        self.ivm.sig_current_roi.connect(self._update_list)
Beispiel #2
0
 def _toggle_single_multi(self):
     self.ivl.multiview = not self.ivl.multiview
     self._up_btn.setVisible(self.ivl.multiview)
     self._down_btn.setVisible(self.ivl.multiview)
     if self.ivl.multiview:
         self._single_multi_btn.setIcon(
             QtGui.QIcon(get_icon("single_overlay.png")))
     else:
         self._single_multi_btn.setIcon(
             QtGui.QIcon(get_icon("multi_overlay.png")))
Beispiel #3
0
    def __init__(self, ivl, rois=True, data=True):
        OptionBox.__init__(self, border=True)
        self.ivl = ivl
        self.ivm = ivl.ivm
        self._qpdata = None
        self._no_update = False
        self.grid.setVerticalSpacing(2)

        self._view_btn = QtGui.QPushButton()
        self._view_btn.setIcon(QtGui.QIcon(get_icon("visible.png")))
        self._view_btn.setFixedSize(16, 16)
        self._view_btn.setToolTip("Visibility")
        self._view_btn.clicked.connect(self._view_btn_clicked)
        self._data = self.add("Data" if data else "ROI",
                              DataOption(self.ivm,
                                         data=data,
                                         rois=rois,
                                         follow_current=True),
                              self._view_btn,
                              key="data")
        self._view_roi = self.add("View ROI",
                                  DataOption(self.ivm, data=False, rois=True),
                                  checked=True,
                                  key="view_roi")
        self._levels_btn = QtGui.QPushButton()
        self._levels_btn.setIcon(QtGui.QIcon(get_icon("levels.png")))
        self._levels_btn.setFixedSize(16, 16)
        self._levels_btn.setToolTip("Adjust colour map levels")
        self._levels_btn.clicked.connect(self._levels_clicked)
        self._cmap = self.add("Colour map",
                              ChoiceOption([
                                  "jet", "hot", "gist_heat", "flame",
                                  "bipolar", "spectrum", "custom"
                              ]),
                              self._levels_btn,
                              key="cmap")
        self._alpha = self.add("Alpha",
                               NumericOption(minval=0,
                                             maxval=255,
                                             default=255,
                                             edit=False,
                                             intonly=True),
                               key="alpha")
        self._value_label = QtGui.QLabel()
        self.add("Value", self._value_label)
        self.add("", stretch=2)

        self._data.sig_changed.connect(self._data_changed)
        self._view_roi.sig_changed.connect(self._view_roi_changed)
        self._cmap.sig_changed.connect(self._cmap_changed)
        self._alpha.sig_changed.connect(self._alpha_changed)
        self.ivl.sig_focus_changed.connect(self._focus_changed)
        self.qpdata = None
Beispiel #4
0
    def __init__(self, parent=None, title="", **kwargs):
        """
        Create a plot widget

        :param qpo: Global options
        """
        QtGui.QWidget.__init__(self, parent)
        self.items = []
        self.updating = False
        self.legend_pos = (30, 30)

        vbox = QtGui.QVBoxLayout()
        self.setLayout(vbox)

        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)

        if kwargs.get("opts_btn", True):
            self.opts_btn = OptionsButton()
            self.opts_btn.clicked.connect(self._show_options)
            hbox.addWidget(self.opts_btn)

        if kwargs.get("clear_btn", False):
            clear_icon = QtGui.QIcon(get_icon("clear"))
            self.clear_btn = QtGui.QPushButton(self)
            self.clear_btn.setIcon(clear_icon)
            self.clear_btn.setIconSize(QtCore.QSize(14, 14))
            self.clear_btn.setToolTip("Clear curves")
            self.clear_btn.clicked.connect(self.clear)
            hbox.addWidget(self.clear_btn)

        vbox.addLayout(hbox)

        self.graphics_layout = pg.GraphicsLayoutWidget()
        self.graphics_layout.setBackground(background=None)
        vbox.addWidget(self.graphics_layout, 10)

        self.axes = self.graphics_layout.addPlot()
        self.axes.setTitle(title)
        self.axes.sigRangeChanged.connect(self._range_changed)
        self.axes.vb.sigRangeChangedManually.connect(
            self._range_changed_manually)

        if kwargs.get("twoaxis", False):
            # For a second y-axis, create a new ViewBox, link the right axis to its coordinate system
            self.axes_alt = pg.ViewBox()
            self.axes.scene().addItem(self.axes_alt)
            self.axes.getAxis('right').linkToView(self.axes_alt)
            self.axes_alt.setXLink(self.axes)
            self.axes.vb.sigResized.connect(self._update_plot_viewbox)
        else:
            self.axes_alt = None

        self.options = PlotOptions(self, **kwargs)
        self._options_changed()
        self.options.sig_options_changed.connect(self._options_changed)
        self._regenerate_legend()
Beispiel #5
0
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle("License Agreement")

        layout = QtGui.QVBoxLayout()

        hbox = QtGui.QHBoxLayout()
        pixmap = QtGui.QPixmap(get_icon("quantiphyse_75.png"))
        lpic = QtGui.QLabel(self)
        lpic.setPixmap(pixmap)
        hbox.addWidget(lpic)
        hbox.addStretch(1)
        layout.addLayout(hbox)

        layout.addWidget(QtGui.QLabel(""))

        # Welcome
        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(
            QtGui.QLabel("\n<font size=5>Welcome to Quantiphyse %s</font>" %
                         get_version()))
        hbox.addStretch(1)
        layout.addLayout(hbox)

        label = QtGui.QLabel(
            "Quantiphyse is <b>free for non-commercial use</b>. If you are interested in using the software "
            "commercially, please contact the technology transfer company of the University: [email protected]"
        )
        label.setWordWrap(True)
        layout.addWidget(label)

        # License agreement
        edit = QtGui.QTextEdit()
        edit.setCurrentFont(QtGui.QFont("Monospace", 8))
        edit.append(__license__)
        edit.append("</pre>")
        edit.moveCursor(QtGui.QTextCursor.Start)
        edit.ensureCursorVisible()
        layout.addWidget(edit)

        # Acceptance section
        self.agree_cb = QtGui.QCheckBox(
            "I agree to abide by the terms of the Quantiphyse license")
        self.agree_cb.stateChanged.connect(self._agree_changed)
        layout.addWidget(self.agree_cb)

        # Buttons
        self.button_box = QtGui.QDialogButtonBox(
            QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel)
        self.button_box.accepted.connect(self.accept)
        self.button_box.rejected.connect(self.reject)
        self.button_box.button(QtGui.QDialogButtonBox.Ok).setEnabled(False)
        layout.addWidget(self.button_box)

        self.setLayout(layout)
        self.setFixedSize(700, 800)
Beispiel #6
0
    def init_ui(self):
        layout = QtGui.QVBoxLayout()
        
        title = TitleWidget(self, help="roibuilder", batch_btn=False)
        layout.addWidget(title)

        self.options = OptionBox("Options")
        btn = QtGui.QPushButton("New")
        btn.clicked.connect(self._new_roi)
        self.options.add("ROI", DataOption(self.ivm, rois=True, data=False), btn, key="roi")
        self.options.add("Current label", NumericOption(minval=1, slider=False, intonly=True), key="label")
        self.options.add("Label description", TextOption(), key="label_text")
        self.options.option("roi").sig_changed.connect(self._roi_changed)
        self.options.option("label").sig_changed.connect(self._label_changed)
        self.options.option("label_text").sig_changed.connect(self._label_text_changed)
        layout.addWidget(self.options)
        
        # Add toolbox buttons in a grid
        hbox = QtGui.QHBoxLayout()
        self._toolbox = QtGui.QGroupBox()
        self._toolbox.setTitle("Toolbox")
        self.tools_grid = QtGui.QGridLayout()
        self._toolbox.setLayout(self.tools_grid)

        x, y, cols = 0, 0, 4
        for tool in TOOLS:
            self._add_tool(tool, y, x)
            x += 1
            if x == cols:
                y += 1
                x = 0

        self._undo_btn = QtGui.QPushButton()
        self._undo_btn.clicked.connect(self.undo)
        self._undo_btn.setEnabled(False)
        undo_icon = QtGui.QIcon(get_icon("undo"))
        self._undo_btn.setIcon(undo_icon)
        self._undo_btn.setToolTip("Undo last action")
        self._undo_btn.setFixedSize(32, 32)
        self.tools_grid.addWidget(self._undo_btn, y, x)

        hbox.addWidget(self._toolbox)
        self._toolbox.setEnabled(False)
        hbox.addStretch(1)
        layout.addLayout(hbox)

        # Tool options box - initially invisible
        hbox = QtGui.QHBoxLayout()
        self._tool_options = QtGui.QGroupBox()
        self._tool_options.setVisible(False)

        hbox.addWidget(self._tool_options)
        hbox.addStretch(1)
        layout.addLayout(hbox)

        layout.addStretch(1)
        self.setLayout(layout)
Beispiel #7
0
 def _add_tool(self, tool, x, y):
     tool.ivm = self.ivm
     tool.ivl = self.ivl
     tool.builder = self
     btn = QtGui.QPushButton()
     btn.setIcon(QtGui.QIcon(get_icon(tool.name.lower())))
     btn.setToolTip(tool.tooltip)
     btn.setFixedSize(32, 32)
     btn.clicked.connect(self._tool_selected(tool))
     tool.btn = btn
     self.tools_grid.addWidget(btn, x, y)
Beispiel #8
0
    def __init__(self, ivl, view):
        QtGui.QGroupBox.__init__(self)
        self.ivl = ivl
        self.ivm = ivl.ivm
        self.view = view

        grid = QtGui.QGridLayout()
        grid.setVerticalSpacing(2)
        grid.setContentsMargins(5, 5, 5, 5)
        self.setLayout(grid)

        grid.addWidget(QtGui.QLabel("Overlay"), 0, 0)
        self.overlay_combo = OverlayCombo(self.ivm,
                                          none_option=True,
                                          set_first=False)
        grid.addWidget(self.overlay_combo, 0, 1)
        grid.addWidget(QtGui.QLabel("View"), 1, 0)
        self.ov_view_combo = QtGui.QComboBox()
        self.ov_view_combo.addItem("All")
        self.ov_view_combo.addItem("Only in ROI")
        self.ov_view_combo.addItem("None")
        grid.addWidget(self.ov_view_combo, 1, 1)
        grid.addWidget(QtGui.QLabel("Color map"), 2, 0)
        hbox = QtGui.QHBoxLayout()
        self.ov_cmap_combo = QtGui.QComboBox()
        self.ov_cmap_combo.addItem("jet")
        self.ov_cmap_combo.addItem("hot")
        self.ov_cmap_combo.addItem("gist_heat")
        self.ov_cmap_combo.addItem("flame")
        self.ov_cmap_combo.addItem("bipolar")
        self.ov_cmap_combo.addItem("spectrum")
        hbox.addWidget(self.ov_cmap_combo)
        self.ov_levels_btn = QtGui.QPushButton()
        self.ov_levels_btn.setIcon(QtGui.QIcon(get_icon("levels.png")))
        self.ov_levels_btn.setFixedSize(16, 16)
        self.ov_levels_btn.setToolTip("Adjust colour map levels")
        self.ov_levels_btn.clicked.connect(self._show_ov_levels)
        self.ov_levels_btn.setEnabled(False)
        hbox.addWidget(self.ov_levels_btn)
        grid.addLayout(hbox, 2, 1)
        grid.addWidget(QtGui.QLabel("Alpha"), 3, 0)
        self.ov_alpha_sld = QtGui.QSlider(QtCore.Qt.Horizontal, self)
        self.ov_alpha_sld.setFocusPolicy(QtCore.Qt.NoFocus)
        self.ov_alpha_sld.setRange(0, 255)
        self.ov_alpha_sld.setValue(255)
        grid.addWidget(self.ov_alpha_sld, 3, 1)
        grid.setRowStretch(4, 1)

        self.overlay_combo.currentIndexChanged.connect(self._combo_changed)
        self.ov_view_combo.currentIndexChanged.connect(self._view_changed)
        self.ov_cmap_combo.currentIndexChanged.connect(self._cmap_changed)
        self.ov_alpha_sld.valueChanged.connect(self._alpha_changed)
        self.view.sig_view_changed.connect(self._update)
Beispiel #9
0
    def init_ui(self):
        layout = QtGui.QVBoxLayout()

        hbox = QtGui.QHBoxLayout()
        pixmap = QtGui.QPixmap(get_icon("quantiphyse_75.png"))
        lpic = QtGui.QLabel(self)
        lpic.setPixmap(pixmap)
        hbox.addWidget(lpic)
        hbox.addStretch(1)
        help_btn = HelpButton(self)
        hbox.addWidget(help_btn)
        layout.addLayout(hbox)

        summary_label = QtGui.QLabel(SUMMARY)
        summary_label.setWordWrap(True)
        layout.addWidget(summary_label)

        box = QtGui.QGroupBox()
        hbox = QtGui.QHBoxLayout()
        box.setLayout(hbox)
        disc = QtGui.QLabel(
            "<font size=2> Disclaimer: This software has been developed for research purposes only, and "
            "should not be used as a diagnostic tool. The authors or distributors will not be "
            "responsible for any direct, indirect, special, incidental, or consequential damages "
            "arising of the use of this software. By using the this software you agree to this disclaimer."
            "<p>"
            "Please read the Quantiphyse License for more information")
        disc.setWordWrap(True)
        hbox.addWidget(disc, 10)
        license_btn = QtGui.QPushButton("License")
        license_btn.clicked.connect(self._view_license)
        hbox.addWidget(license_btn)
        layout.addWidget(box)

        self.data_list = DataListWidget(self)
        layout.addWidget(self.data_list)

        hbox = QtGui.QHBoxLayout()
        btn = QtGui.QPushButton("Rename")
        btn.clicked.connect(self._rename)
        hbox.addWidget(btn)
        btn = QtGui.QPushButton("Delete")
        btn.clicked.connect(self._delete)
        hbox.addWidget(btn)
        btn = QtGui.QPushButton("Set as main data")
        btn.clicked.connect(self._set_main)
        hbox.addWidget(btn)
        btn = QtGui.QPushButton("Toggle ROI")
        btn.clicked.connect(self._toggle_roi)
        hbox.addWidget(btn)
        layout.addLayout(hbox)

        self.setLayout(layout)
Beispiel #10
0
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle("Optional Registration")

        layout = QtGui.QVBoxLayout()

        hbox = QtGui.QHBoxLayout()
        pixmap = QtGui.QPixmap(get_icon("quantiphyse_75.png"))
        lpic = QtGui.QLabel(self)
        lpic.setPixmap(pixmap)
        hbox.addWidget(lpic)
        hbox.addStretch(1)
        layout.addLayout(hbox)

        layout.addWidget(QtGui.QLabel(""))

        # Welcome
        hbox = QtGui.QHBoxLayout()
        hbox.addWidget(
            QtGui.QLabel("<font size=5>Optional Registration</font>"))
        layout.addLayout(hbox)

        # Registration section
        label = QtGui.QLabel(
            "If you like you can register as a user. This is to "
            "help us know where the software is being used.")
        label.setWordWrap(True)
        layout.addWidget(label)

        grid = QtGui.QGridLayout()
        grid.addWidget(QtGui.QLabel("<font size=2>Name"), 0, 0)
        self.name_edit = QtGui.QLineEdit()
        grid.addWidget(self.name_edit, 0, 1)
        grid.addWidget(QtGui.QLabel("<font size=2>Institution"), 0, 2)
        self.inst_edit = QtGui.QLineEdit()
        grid.addWidget(self.inst_edit, 0, 3)
        grid.addWidget(QtGui.QLabel("<font size=2>Email"), 1, 0)
        self.email_edit = QtGui.QLineEdit()
        grid.addWidget(self.email_edit, 1, 1, 1, 3)
        layout.addLayout(grid)

        # Buttons
        self.button_box = QtGui.QDialogButtonBox(
            QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel)
        self.button_box.accepted.connect(self.send_register_email)
        self.button_box.rejected.connect(self.accept)
        layout.addWidget(self.button_box)

        self.setLayout(layout)
        self.setFixedWidth(700)
Beispiel #11
0
    def __init__(self, parent):
        super(DataListWidget, self).__init__(parent)
        self.setStyleSheet(
            "font-size: 10px; alternate-background-color: #6c6c6c;")

        self.ivm = parent.ivm
        self.ivl = parent.ivl
        self._selected = None
        self._known_data = []
        self._roi_icon = QtGui.QIcon(get_icon("roi_data.png"))
        self._data_icon = QtGui.QIcon(get_icon("data.png"))
        self._main_icon = QtGui.QIcon(get_icon("main_data.png"))
        self._vis_icon = QtGui.QIcon(get_icon("visible.png"))
        self._main_vis_icon = QtGui.QIcon(get_icon("main_ovl.png"))

        self.model = QtGui.QStandardItemModel()
        self.setModel(self.model)
        self._update_list()

        self.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
        self.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
        self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        self.setShowGrid(False)
        self.setTextElideMode(QtCore.Qt.ElideLeft)
        self.setAlternatingRowColors(True)
        self.verticalHeader().setVisible(False)
        self.verticalHeader().setDefaultSectionSize(
            self.verticalHeader().minimumSectionSize() + 2)
        self.horizontalHeader().setVisible(True)
        self.horizontalHeader().setDefaultAlignment(QtCore.Qt.AlignLeft)

        self.selectionModel().currentRowChanged.connect(
            self._current_row_changed)
        self.ivm.sig_all_data.connect(self._data_changed)
        self.ivm.sig_main_data.connect(self._update_vis_icons)
        self.ivm.sig_current_data.connect(self._set_current)
        self.ivm.sig_current_roi.connect(self._set_current)
Beispiel #12
0
    def _get_visibility_icon(self):
        if self._qpdata.view.visible == Visibility.HIDE:
            icon = "invisible.png"
        elif self._qpdata.roi:
            if self._qpdata.view.contour and self._qpdata.view.shade:
                icon = "shade_contour.png"
            elif self._qpdata.view.contour:
                icon = "contour.png"
            elif self._qpdata.view.shade:
                icon = "shade.png"
            else:
                icon = "invisible.png"
        else:
            icon = "visible.png"

        return QtGui.QIcon(get_icon(icon))
    def init_menu(self):
        """
        Set up the main window menus
        """

        # File --> Load Data
        load_action = QtGui.QAction(QtGui.QIcon(get_icon("picture")),
                                    '&Load Data', self)
        load_action.setShortcut('Ctrl+L')
        load_action.setStatusTip('Load a 3d or 4d image or ROI')
        load_action.triggered.connect(self.load_data_interactive)

        # File --> Save Data
        save_ovreg_action = QtGui.QAction(
            QtGui.QIcon.fromTheme("document-save"), '&Save current data', self)
        save_ovreg_action.setStatusTip('Save current data as a NIFTI file')
        save_ovreg_action.triggered.connect(self.save_data)
        save_ovreg_action.setShortcut('Ctrl+S')

        # File --> Save ROI
        save_roi_action = QtGui.QAction(QtGui.QIcon.fromTheme("document-save"),
                                        '&Save current ROI', self)
        save_roi_action.setStatusTip('Save current ROI as a NIFTI file')
        save_roi_action.triggered.connect(self.save_roi)

        # File --> Clear all
        clear_action = QtGui.QAction(QtGui.QIcon.fromTheme("clear"),
                                     '&Clear all data', self)
        clear_action.setStatusTip('Remove all data from the viewer')
        clear_action.triggered.connect(self._clear)

        # File --> Exit
        exit_action = QtGui.QAction(QtGui.QIcon.fromTheme("application-exit"),
                                    '&Exit', self)
        exit_action.setShortcut('Ctrl+Q')
        exit_action.setStatusTip('Exit Application')
        exit_action.triggered.connect(self.close)

        # About
        about_action = QtGui.QAction(QtGui.QIcon.fromTheme("help-about"),
                                     '&About', self)
        about_action.setStatusTip('About Quantiphyse')
        about_action.triggered.connect(self._show_about)

        # Help -- > Online help
        help_action = QtGui.QAction(QtGui.QIcon.fromTheme("help-contents"),
                                    '&Online Help', self)
        help_action.setStatusTip('See online help file')
        help_action.triggered.connect(self._show_help)

        # Advanced --> Python Console
        console_action = QtGui.QAction(QtGui.QIcon(get_icon("console")),
                                       '&Console', self)
        console_action.setStatusTip('Run a console for advanced interaction')
        console_action.triggered.connect(self.show_console)

        # Advanced --> Install Packages
        #install_action = QtGui.QAction(QtGui.QIcon(get_icon("package")), '&Install Packages', self)
        #install_action.setStatusTip('Install additional packages')
        #install_action.triggered.connect(self.install_packages)

        menubar = self.menuBar()
        file_menu = menubar.addMenu('&File')
        widget_menu = menubar.addMenu('&Widgets')
        advanced_menu = menubar.addMenu('&Advanced')
        help_menu = menubar.addMenu('&Help')

        file_menu.addAction(load_action)
        file_menu.addAction(save_ovreg_action)
        file_menu.addAction(save_roi_action)
        file_menu.addAction(clear_action)
        file_menu.addAction(exit_action)

        widget_submenus = {"": widget_menu}
        default_widget_groups = [
            "Visualisation", "Processing", "Clustering", "ROIs", "Utilities"
        ]
        for group in default_widget_groups:
            widget_submenus[group] = widget_menu.addMenu(group)

        for group in sorted(self.widget_groups.keys()):
            if group != "DEFAULT":
                if group not in widget_submenus:
                    widget_submenus[group] = widget_menu.addMenu(group)

                for w in self.widget_groups[group]:
                    action = QtGui.QAction(w.icon, '&%s' % w.name, self)
                    action.setStatusTip(w.description)
                    action.widget = w
                    action.triggered.connect(self._show_widget)
                    widget_submenus[group].addAction(action)

        help_menu.addAction(help_action)
        help_menu.addAction(about_action)

        advanced_menu.addAction(console_action)
        #advanced_menu.addAction(install_action)

        # extra info displayed in the status bar
        self.statusBar()
    def __init__(self, load_data=None, widgets=True):
        super(MainWindow, self).__init__()

        self.ivm = ImageVolumeManagement()
        self.view_options_dlg = ViewOptions(self, self.ivm)
        self.ivl = ImageView(self.ivm, self.view_options_dlg)

        # Load style sheet
        stylesheet = get_local_file("resources/darkorange.stylesheet")
        with open(stylesheet, "r") as stylesheet_file:
            self.setStyleSheet(stylesheet_file.read())

        # Default dir to load files from is the user's home dir
        self.default_directory = os.path.expanduser("~")

        # Widgets
        self.widget_groups = {}
        self.current_widget = None

        # Main layout - image view to left, tabs to right
        main_widget = QtGui.QWidget()
        hbox = QtGui.QHBoxLayout()
        splitter = QtGui.QSplitter(QtCore.Qt.Horizontal)
        splitter.addWidget(self.ivl)
        splitter.setStretchFactor(0, 4)
        hbox.addWidget(splitter)
        main_widget.setLayout(hbox)
        self.setCentralWidget(main_widget)

        if widgets:
            default_size = (1000, 700)
            widgets = get_plugins("widgets")
            for wclass in widgets:
                w = wclass(ivm=self.ivm,
                           ivl=self.ivl,
                           opts=self.view_options_dlg)
                if w.group not in self.widget_groups:
                    self.widget_groups[w.group] = []
                self.widget_groups[w.group].append(w)

            for _, widgets in self.widget_groups.items():
                widgets.sort(key=lambda x: x.position)

            self._init_tabs()
            splitter.addWidget(self.tab_widget)
            splitter.setStretchFactor(1, 1)
        else:
            default_size = (700, 700)

        self.init_menu()

        # General properties of main window
        self.setWindowTitle("Quantiphyse %s" % get_version())
        self.setWindowIcon(QtGui.QIcon(get_icon("main_icon.png")))
        self.resize(*default_size)
        self.setUnifiedTitleAndToolBarOnMac(True)
        self.setAcceptDrops(True)
        self.show()

        # Load any files from the command line
        if load_data:
            for fname in load_data:
                self.load_data(fname=fname)
Beispiel #15
0
    def init_ui(self):
        layout = QtGui.QVBoxLayout()

        hbox = QtGui.QHBoxLayout()
        pixmap = QtGui.QPixmap(get_icon("quantiphyse_75.png"))
        lpic = QtGui.QLabel(self)
        lpic.setPixmap(pixmap)
        hbox.addWidget(lpic)
        hbox.addStretch(1)
        help_btn = HelpButton(self)
        hbox.addWidget(help_btn)
        layout.addLayout(hbox)

        summary_label = QtGui.QLabel(SUMMARY)
        summary_label.setWordWrap(True)
        layout.addWidget(summary_label)

        box = QtGui.QGroupBox()
        hbox = QtGui.QHBoxLayout()
        box.setLayout(hbox)
        disc = QtGui.QLabel(
            "<font size=2> Disclaimer: This software has been developed for research purposes only, and "
            "should not be used as a diagnostic tool. The authors or distributors will not be "
            "responsible for any direct, indirect, special, incidental, or consequential damages "
            "arising of the use of this software. By using the this software you agree to this disclaimer."
            "<p>"
            "Please read the Quantiphyse License for more information")
        disc.setWordWrap(True)
        hbox.addWidget(disc, 10)
        license_btn = QtGui.QPushButton("License")
        license_btn.clicked.connect(self._view_license)
        hbox.addWidget(license_btn)
        layout.addWidget(box)

        self.data_list = DataListWidget(self)
        layout.addWidget(self.data_list)

        hbox = QtGui.QHBoxLayout()

        self._up_btn = self._btn(hbox, QtGui.QIcon(get_icon("up.png")),
                                 "Raise data set in viewing order", self._up)
        self._down_btn = self._btn(hbox, QtGui.QIcon(get_icon("down.png")),
                                   "Lower data set in viewing order",
                                   self._down)
        self._btn(hbox, QtGui.QIcon(get_icon("delete.png")),
                  "Delete selected data set", self._delete)
        self._btn(hbox, QtGui.QIcon(get_icon("save.png")),
                  "Save selected data set", self._save)
        self._btn(hbox, QtGui.QIcon(get_icon("reload.png")),
                  "Reload selected data set", self._reload)
        self._btn(hbox, QtGui.QIcon(get_icon("rename.png")),
                  "Rename selected data set", self._rename)
        self._btn(hbox, QtGui.QIcon(get_icon("main_data.png")),
                  "Make selected data set the main (background) data",
                  self._set_main)
        self._btn(hbox, QtGui.QIcon(get_icon("roi_or_data.png")),
                  "Mark/unmark selected data set as an ROI", self._toggle_roi)

        hbox.addStretch(1)
        self._single_multi_btn = self._btn(
            hbox, QtGui.QIcon(get_icon("multi_overlay.png")),
            "Switch between single and multi overlay modes",
            self._toggle_single_multi)
        self._btn(hbox, QtGui.QIcon(get_icon("options.png")), "Viewer options",
                  self._viewer_options)

        layout.addLayout(hbox)
        self.setLayout(layout)
        self._toggle_single_multi()