class BufferSelectToolbar(object):
    def __init__(self, selectTool):
        super(BufferSelectToolbar, self).__init__()
        # references
        self.selectTool = selectTool
        self.result = None
        self.debug = self.selectTool.debug
        self.id = id
        self.config = self.selectTool.config
        self.info = Info(self)
        try:
            self.gtomain = self.selectTool.gtomain
            self.helper = self.gtomain.helper
            self.metadata = self.gtomain.metadata
            self.iface = self.gtomain.iface
            self.canvas = self.iface.mapCanvas()
            # tool data
            self.toolbar_dock = self.config.get("toolbar_dock", 4)
            self.toolbar_height = self.gtomain.toolbar_height
            # widget
            self.toolbar = None
            # load toolbar
            objName = "gtoTB_" + __name__ + str(id)
            self.toolbar = self.gtomain.helper.findToolbar(self.iface, objName)
            if self.toolbar is None:
                if self.debug: self.info.log("load", objName)
                self.toolbar = QToolBar()
                self.toolbar.setObjectName(objName)
                self.toolbar.setWindowTitle(u'GTO Buffer Selection')
                self.toolbar.setAllowedAreas(Qt.BottomToolBarArea
                                             | Qt.TopToolBarArea)
                self.iface.mainWindow().addToolBarBreak(self.toolbar_dock)
                self.iface.addToolBar(self.toolbar, self.toolbar_dock)
                # set the iconsize=> changed when self.iface.addToolBar :S
                if self.toolbar_height is not None:
                    self.toolbar.setMaximumHeight(self.gtomain.toolbar_height)
                    self.toolbar.setMinimumHeight(self.gtomain.toolbar_height)
            else:
                self.toolbar.clear()
            self.wid = Widget(self)
            self.toolbar.addWidget(self.wid)
            self.wid.setIconSizes(self.iface.iconSize(False))
            self.wid.geometry_changed.connect(self.getGeometry)
            self.toolbar.setHidden(False)
        except Exception as e:
            self.info.err(e)

    # from mActionbufferselectxy
    def setHidden(self, a0):
        self.toolbar.setHidden(a0)

    def setGeometry(self, geo, isValid, isCircle=False, isRectangle=False):
        self.toolbar.setHidden(False)
        if self.debug:
            self.info.log("setGeometry", geo.isEmpty(), isValid, isCircle,
                          isRectangle)
        self.wid.setOriginalGeometry(geo, isValid, isCircle, isRectangle)

    def getGeometry(self, geo):
        self.selectTool.setGeometryToMapTool(geo)
Пример #2
0
class MainWindow(QMainWindow):

    # initialize the main window
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.init_ui()
        self.show()
        self.rgb = [128, 128, 128]
        self.xy = [0, 0]
        self.hw = [0, 0]
        self.filter = 1
        self.handler.handle_open_for_json()
        QApplication.clipboard().dataChanged.connect(self.clipboardChanged)
        self.clipboardChanged()
        self.resize(1280, 768)
        # self.handler.handle_stow()

    def init_ui(self):
        self.setWindowTitle("Cute Image Editor")
        self.central_widget = QWidget()
        self.gridLayout = QGridLayout()
        self.central_widget.setLayout(self.gridLayout)
        self.setCentralWidget(self.central_widget)
        self.resize(1280, 768)

        # Add the click handler
        self.handler = ClickHandler(self)

        # Main editing area
        self.mdiArea = IWindow(self)
        # Left window~
        self.lwindow = LWindow(self)
        # Right window
        self.rwindow = RWindow(self)
        # Bottom window
        self.bwindow = BWindow(self)

        # Add components to the main grid layout
        self.init_grid()

        self.init_tool_bar()
        self.init_menu_bar()

    def init_grid(self):
        self.gridLayout.setSpacing(2)
        self.gridLayout.addWidget(self.lwindow, 1, 1)
        self.gridLayout.addWidget(self.mdiArea, 1, 2)
        self.gridLayout.addWidget(self.rwindow, 1, 3)
        self.gridLayout.addWidget(self.bwindow, 2, 1, 1, 3)
        self.gridLayout.setColumnMinimumWidth(1, 220)
        self.gridLayout.setColumnMinimumWidth(2, 900)
        self.gridLayout.setColumnMinimumWidth(3, 220)
        self.gridLayout.setRowMinimumHeight(1, 500)
        self.gridLayout.setRowMinimumHeight(2, 140)

    def init_tool_bar(self):

        self.toolbar = QToolBar("Shortcuts")
        self.addToolBar(self.toolbar)
        # action_list = [[self.open_action, self.save_action, self.info_action, self.quit_action, self.search_help_action],
        #                [self.original_color_action, self.reverse_action, self.to_grayscale_action, self],
        #                [self.saturate_red_action, self.saturate_blue_action, self.saturate_green_action],
        #                [self.threshold_action, self.blur_action, self.sharpen_action],
        #                [self.ccl_action, self.hsl_action, self.outline_action],
        #                [self.floyd_action, self.rgb_action, self.crop_action]]
        # for sublist in action_list:
        #     for action in sublist:
        #         self.toolbar.addAction(QAction(action))
        #     self.toolbar.addSeparator()
        self.toolbar.setMaximumHeight(30)
        self.toolbar.setMinimumHeight(30)

    def init_menu_bar(self):
        # Create menus in the menu bar as following
        # File  Edit  View  Image  Processing  Profile  Window  Help
        self.file_menu = QMenu("&File")
        self.menuBar().addMenu(self.file_menu)
        self.edit_menu = QMenu("&Edit")
        self.menuBar().addMenu(self.edit_menu)
        self.view_menu = QMenu("&View")
        self.menuBar().addMenu(self.view_menu)
        self.image_menu = QMenu("&Image")
        self.menuBar().addMenu(self.image_menu)
        self.processing_menu = QMenu("Processing")
        self.menuBar().addMenu(self.processing_menu)
        self.share_menu = QMenu("Share")
        self.menuBar().addMenu(self.share_menu)
        self.window_menu = QMenu("&Window")
        self.menuBar().addMenu(self.window_menu)
        self.help_menu = QMenu("&Help")
        self.menuBar().addMenu(self.help_menu)

        # Create actions for each menu
        # Actions for File menu
        self.open_action = MyImageAction(self, "&Open...", self.file_menu,
                                         self.handler.handle_open, "Ctrl+O",
                                         "open.png")
        self.save_action = MyImageAction(self, "&Save...", self.file_menu,
                                         self.handler.handle_save, "Ctrl+S",
                                         "save_as.png")
        self.info_action = MyImageAction(self, "&Get Info...", self.file_menu,
                                         self.handler.handle_info, "Ctrl+I",
                                         "info.png")
        self.camera_action = MyImageAction(self, "&Camera", self.edit_menu,
                                           self.handler.handle_camera, "",
                                           "camera.png")
        self.url_action = MyImageAction(self, "&Open URL", self.edit_menu,
                                        self.handler.handle_url, "", "url.png")
        self.clipboard_action = MyImageAction(self, "&Copy To Clipboard",
                                              self.edit_menu,
                                              self.handler.handle_clipboard,
                                              "", "clipboard.png")
        self.show_folder_action = MyImageAction(self, "&Show In Finder",
                                                self.file_menu,
                                                self.handler.handle_finder,
                                                "Ctrl+F", "finder.png")
        self.open_with_app_action = MyImageAction(
            self, "&Open With App", self.file_menu,
            self.handler.handle_open_with_app, "", "app.png")
        self.instagram_action = MyImageAction(self, "&Share In Instagram",
                                              self.share_menu,
                                              self.handler.handle_instagram,
                                              "", "instagram.png")
        self.twitter_action = MyImageAction(self, "&Share In Twitter",
                                            self.share_menu,
                                            self.handler.handle_twitter, "",
                                            "twitter.png")
        self.snapchat_action = MyImageAction(self, "&Share In Snapchat",
                                             self.share_menu,
                                             self.handler.handle_snapchat, "",
                                             "snapchat.png")
        # Actions for Processing menu
        self.original_color_action = MyImageAction(
            self, "&Original color", self.image_menu,
            self.handler.handle_original_color, "", "origin.png")
        self.reverse_action = MyImageAction(self, "&Reverse", self.image_menu,
                                            self.handler.handle_reverse, "",
                                            "reverse.png")
        self.to_grayscale_action = MyImageAction(
            self, "&Black and white", self.image_menu,
            self.handler.handle_to_grayscale, "", "to_grayscale.png")
        self.image_menu.addSeparator()
        self.saturate_red_action = MyImageAction(
            self, "&Saturate in red", self.image_menu,
            self.handler.handle_saturate_red, "", "saturate_red.png")
        self.saturate_green_action = MyImageAction(
            self, "&Saturate in green", self.image_menu,
            self.handler.handle_saturate_green, "", "saturate_green.png")
        self.saturate_blue_action = MyImageAction(
            self, "&Saturate in blue", self.image_menu,
            self.handler.handle_saturate_blue, "", "saturate_blue.png")

        self.threshold_action = MyImageAction(self, "&Threshold",
                                              self.processing_menu,
                                              self.handler.handle_threshold,
                                              "", "threshold.png")

        self.blur_action = MyImageAction(self, "&Blur", self.processing_menu,
                                         self.handler.handle_blur, "",
                                         "blur.png")
        self.gaussian_blur_action = MyImageAction(
            self, "&Gaussian Blur", self.processing_menu,
            self.handler.handle_gaussian_blur, "", "gaussian.png")
        self.box_blur_action = MyImageAction(self, "&Box Blur",
                                             self.processing_menu,
                                             self.handler.handle_box_blur, "",
                                             "box.png")
        self.sharpen_action = MyImageAction(self, "&Sharpen",
                                            self.processing_menu,
                                            self.handler.handle_sharpen, "",
                                            "sharpen.png")
        self.processing_menu.addSeparator()
        self.filter_action = MyImageAction(self, "&Filter",
                                           self.processing_menu,
                                           self.handler.handle_filter, "",
                                           "filter.png")
        self.ccl_action = MyImageAction(self, "&CCL", self.processing_menu,
                                        self.handler.handle_ccl, "", "CCL.png")
        # self.hsl_action = MyImageAction(self, "&HSL", self.processing_menu, self.handler.handle_hsl, "", "hsl.png")
        self.outline_action = MyImageAction(self, "&Outline detection",
                                            self.processing_menu,
                                            self.handler.handle_outline, "",
                                            "outline.png")
        self.smooth_action = MyImageAction(self, "&Smooth",
                                           self.processing_menu,
                                           self.handler.handle_smooth, "",
                                           "smooth.png")
        self.smooth_more_action = MyImageAction(
            self, "&Smooth More", self.processing_menu,
            self.handler.handle_smooth_more, "", "smooth.png")
        self.detail_action = MyImageAction(self, "&Detail",
                                           self.processing_menu,
                                           self.handler.handle_detail, "",
                                           "detail.png")
        self.emboss_action = MyImageAction(self, "&Emboss",
                                           self.processing_menu,
                                           self.handler.handle_emboss, "",
                                           "emboss.png")
        self.edge_action = MyImageAction(self, "&Edge", self.processing_menu,
                                         self.handler.handle_edge, "",
                                         "edge.png")
        self.edge_more_action = MyImageAction(self, "&Edge More",
                                              self.processing_menu,
                                              self.handler.handle_edge_more,
                                              "", "edge.png")
        self.find_edges_action = MyImageAction(self, "&Find Edges",
                                               self.processing_menu,
                                               self.handler.handle_find_edges,
                                               "", "find_edges.png")

        self.processing_menu.addSeparator()
        self.min_filter_action = MyImageAction(self, "&Min Filter",
                                               self.processing_menu,
                                               self.handler.handle_min_filter,
                                               "", "filter-512.png")
        self.max_filter_action = MyImageAction(self, "&Max Filter",
                                               self.processing_menu,
                                               self.handler.handle_max_filter,
                                               "", "filter-512.png")
        self.median_filter_action = MyImageAction(
            self, "&Median Filter", self.processing_menu,
            self.handler.handle_median_filter, "", "filter-512.png")
        self.rank_filter_action = MyImageAction(
            self, "&Rank Filter", self.processing_menu,
            self.handler.handle_rank_filter, "", "filter-512.png")

        self.processing_menu.addSeparator()
        self.floyd_action = MyImageAction(self, "&Dithering",
                                          self.processing_menu,
                                          self.handler.handle_dithering, "",
                                          "floyd.png")
        self.rgb_action = MyImageAction(self, "&RGB", self.processing_menu,
                                        self.handler.handle_rgb, "", "rgb.png")
        self.crop_action = MyImageAction(self, "&Crop", self.processing_menu,
                                         self.handler.handle_crop, "",
                                         "crop.png")
        self.timer_action = MyImageAction(self, "&Timer", self.processing_menu,
                                          self.handler.handle_timer, "",
                                          "timer.png")
        self.kernel_action = MyImageAction(self, "&Kernel",
                                           self.processing_menu,
                                           self.handler.handle_kernel, "",
                                           "kernel.png")
        self.view_menu.addSeparator()
        self.toggle_l_action = MyImageAction(self, "&Toggle Left",
                                             self.view_menu,
                                             self.handler.handle_toggle_l,
                                             "Ctrl+1", "l_window.png")
        self.toggle_r_action = MyImageAction(self, "&Toggle Right",
                                             self.view_menu,
                                             self.handler.handle_toggle_r,
                                             "Ctrl+2", "r_window.png")
        self.toggle_b_action = MyImageAction(self, "&Toggle Bottom",
                                             self.view_menu,
                                             self.handler.handle_toggle_b,
                                             "Ctrl+0", "b_window.png")
        self.view_menu.addSeparator()
        self.close_all_action = MyImageAction(self, "&Close All",
                                              self.window_menu,
                                              self.handler.handle_close_all,
                                              "", "close.png")
        self.quit_action = MyImageAction(self, "&Quit", self.file_menu,
                                         self.close, "Ctrl+Q", "quit.png")

        self.search_help_action = QAction("&Search help...", self)
        self.actions = [
            [self.open_action, self.save_action, self.info_action],
            [self.camera_action, self.clipboard_action],
            [
                self.url_action, self.show_folder_action,
                self.open_with_app_action
            ],
            [self.instagram_action, self.twitter_action, self.snapchat_action],
            [
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction(),
                QAction()
            ],
            [self.toggle_l_action, self.toggle_r_action, self.toggle_b_action],
            [self.close_all_action, self.quit_action]
        ]
        for sub_list in self.actions:
            for action in sub_list:
                self.toolbar.addAction(action)
            if sub_list != self.actions[-1] and sub_list != self.actions[
                    -3] and sub_list != self.actions[-4]:
                self.toolbar.addSeparator()

        self.help_menu.addAction(self.search_help_action)

    def get_rgb(self):
        return self.rgb

    def get_xy(self):
        return self.xy

    def get_hw(self):
        return self.hw

    def clipboardChanged(self):
        self.clip_board_text = QApplication.clipboard().text()
        self.clip_board_image = QApplication.clipboard().image()

    def set_rgb(self, r=128, g=128, b=128):
        self.rgb = [r, g, b]

    def closeEvent(self, event):
        self.handler.handle_close_event()
Пример #3
0
class UIForm:
    def setupUI(self, Form):
        Form.setObjectName('MainWindow')
        self.setWindowTitle('QMCenter')
        self.setMinimumSize(1000, 650)
        # Create main menu
        self.menu = QMenuBar()
        self.setMenuBar(self.menu)

        self.fileMenu = self.menu.addMenu(_('&File'))

        self.new_project = self.fileMenu.addAction(_('New project'))
        self.new_project.setShortcut('Ctrl+N')
        self.open_project = self.fileMenu.addAction(_('Open project'))
        self.open_project.setShortcut('Ctrl+O')
        self.settings = self.fileMenu.addAction(_('Settings'))
        self.settings.setShortcut('Ctrl+S')
        self.fileMenu.addSeparator()
        self.exit_action = self.fileMenu.addAction(_('&Quit'))
        self.exit_action.setShortcut('Ctrl+Q')

        self.view = self.menu.addMenu(_('&View'))
        self.graphs_action = self.view.addAction(_('Telemetry'))
        self.config_action = self.view.addAction(_('Configuration'))
        self.visual_action = self.view.addAction(_('3D Viewer'))
        self.update_action = self.view.addAction(_('Update'))
        self.file_manager_action = self.view.addAction(_('File Manager'))
        self.statistic_action = self.view.addAction(_('Statistic Processing'))
        self.view.addSeparator()
        self.toolbar_action = self.view.addAction(_('Toolbar'))
        self.workspace_action = self.view.addAction(_('Workspace'))

        self.helpMenu = self.menu.addMenu(_('Help'))
        self.about = self.helpMenu.addAction(_('About QMCenter'))
        self.about_widget = HelpWidget()

        # Create settings widget
        self.settings_widget = SettingsWidget(self)

        # Create project instance
        self.project_instance = CurrentProject(self)

        # Create toolbar
        self.graphs_btn = QPushButton()
        self.graphs_btn.setText(_('Telemetry'))

        self.config_btn = QPushButton()
        self.config_btn.setText(_('Configuration'))

        self.visual_btn = QPushButton()
        self.visual_btn.setText(_('3D Viewer'))

        self.update_btn = QPushButton()
        self.update_btn.setText(_('Update'))

        self.file_manager = QPushButton(_('File Manager'))

        self.statistic_btn = QPushButton(_('Statistic Processing'))

        empty = QWidget()
        empty.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)

        self.visual_btn = QPushButton()
        self.visual_btn.setText(_('3D Viewer'))

        self.toolbar = QToolBar(_('Toolbar'))
        self.toolbar.setMinimumHeight(40)
        self.addToolBar(Qt.TopToolBarArea, self.toolbar)
        self.toolbar.addWidget(self.graphs_btn)
        self.toolbar.addWidget(self.config_btn)
        self.toolbar.addWidget(self.visual_btn)
        self.toolbar.addWidget(self.update_btn)
        self.toolbar.addWidget(self.file_manager)
        self.toolbar.addWidget(self.statistic_btn)
        self.toolbar.addSeparator()
        self.toolbar.addWidget(empty)

        # Create Central widget
        self.central_widget = QStackedWidget()

        self.split_tabwidget = QSplitter()
        self.split_tabwidget.setChildrenCollapsible(False)

        self.one_tabwidget = QWidget()
        self.one_lay = QGridLayout(self.one_tabwidget)
        self.one_lay.setContentsMargins(0, 0, 0, 0)

        self.tabwidget_left = DetachableTabWidget(self)
        self.one_lay.addWidget(self.tabwidget_left, 0, 0, 1, 1)

        self.tabwidget_right = DetachableTabWidget(self)

        self.central_widget.addWidget(self.one_tabwidget)
        self.central_widget.addWidget(self.split_tabwidget)
        self.setCentralWidget(self.central_widget)

        # Create Work panel
        self.workspace = QDockWidget()
        self.workspace.setWindowTitle(_('Workspace'))
        self.addDockWidget(Qt.LeftDockWidgetArea, self.workspace)

        self.tab_workspace = QTabWidget()
        self.tab_workspace.setTabPosition(QTabWidget.South)
        self.workspace.setWidget(self.tab_workspace)

        # create Workspace widget
        self.project_widget = ProjectWidget(self)
        self.tab_workspace.addTab(self.project_widget, _('Project'))

        # create Info widget
        self.geoshark_widget = GeosharkWidget(self)
        self.tab_workspace.addTab(self.geoshark_widget, _('GeoShark'))

        self.widgets = []

        # Create update tab
        self.update_widget = UpdateWidget(self)
        self.widgets.append(self.update_widget)

        # create file manager tab
        self.file_manager_widget = FileManager(self)
        self.widgets.append(self.file_manager_widget)

        # create Telemetry tab
        self.graphs_widget = GraphsWidget(self)
        self.widgets.append(self.graphs_widget)

        # Create configuration tab
        self.configuration_widget = ConfigurationWidget(self)
        self.widgets.append(self.configuration_widget)

        # create tab 3D Viewer
        self.three_d_widget = ThreeDVisual(self)
        self.widgets.append(self.three_d_widget)

        # create Statistic processing tab
        self.statistic_widget = StatisticProcessing(self)
        self.widgets.append(self.statistic_widget)

    def retranslate(self):
        self.fileMenu.setTitle(_('&File'))
        self.new_project.setText(_('New project'))
        self.open_project.setText(_('Open project'))
        self.settings.setText(_('Settings'))
        self.exit_action.setText(_('&Quit'))
        self.graphs_btn.setText(_('Telemetry'))
        self.config_btn.setText(_('Configuration'))
        self.visual_btn.setText(_('3D Viewer'))
        self.update_btn.setText(_('Update'))
        self.file_manager.setText(_('File Manager'))
        self.statistic_btn.setText(_('Statistic Processing'))
        self.visual_btn.setText(_('3D Viewer'))
        self.view.setTitle(_('&View'))
        self.graphs_action.setText(_('Telemetry'))
        self.config_action.setText(_('Configuration'))
        self.visual_action.setText(_('3D Viewer'))
        self.update_action.setText(_('Update'))
        self.file_manager_action.setText(_('File Manager'))
        self.statistic_action.setText(_('Statistic Processing'))
        self.toolbar_action.setText(_('Toolbar'))
        self.workspace_action.setText(_('Workspace'))

        self.helpMenu.setTitle(_('Help'))
        self.about.setText(_('About QMCenter'))

        self.workspace.setWindowTitle(_('Workspace'))
        self.tab_workspace.setTabText(
            self.tab_workspace.indexOf(self.project_widget), _('Project'))
        self.tab_workspace.setTabText(
            self.tab_workspace.indexOf(self.geoshark_widget), _('GeoShark'))

        for i in range(self.tabwidget_left.count()):
            self.tabwidget_left.setTabText(
                i, _(self.tabwidget_left.widget(i).name))

        for i in range(self.tabwidget_right.count()):
            self.tabwidget_right.setTabText(
                i, _(self.tabwidget_right.widget(i).name))