Пример #1
0
   def paint_mainWindow(self):
         
      # Define and use a "Grid Layout" for the main window.
      grid = QGridLayout()
      grid.addWidget(self.textArea, 1, 1)
      grid.addWidget(self.tabs,     2, 1)
      
      # Create central widget, add layout, and set
      central_widget = QWidget()
      central_widget.setLayout(grid)
      self.setCentralWidget(central_widget)      
      
      # Fun feature for users. If you are going to have a toolbar then you 
      # really need this status bar to show what the icons do.        
      self.statusbar = QStatusBar(self) 
      self.statusbar.setObjectName( "statusbar") 
      MainWindow.setStatusBar(self, self.statusbar) 
      self.statusbar.show()
      
      # Initial settings for the main window 
      #
      #    Set the Main Window Geometry
      top    =  100 # Main Window initial 'top' position (as pixels from top of screen)
      left   =  100 # Main Window initial 'left' position (as pixels from left side of screen)
      width  = 1000 # Main Window initial 'width' (as pixels)
      height =  700 # Main Window initial 'height' (as pixels)
      self.setGeometry(QRect(top, left, width, height))  
 
      # Create connection(s)
      #    If the contents of the text area are changed then call a function 
      #    to set the appropriate file menu state. This file menu state can 
      #    also be used to ensure clean exits. In english, keep track 
      #    of changes to the text editor. It affects the "state" of the
      #    application. See setState()
      self.connect(self.textArea, SIGNAL("textChanged()"), self.textChanged)
Пример #2
0
    def __init__(self, scene, *args, **kwargs):

        super(TestWindow, self).__init__(*args, **kwargs)
        # self.windowTitleChanged.connect(self.onWindowTitleChange)
        self.setWindowTitle("timeline unit test")

        # toolbar = QToolBar("och")
        # toolbar.setIconSize(QSize(20,20))
        # self.addToolBar(toolbar)

        # button_action = QAction(QIcon("balance.png"), "ochtuse", self)
        # button_action.setStatusTip("och, just do something")
        # button_action.triggered.connect(self.onMyToolBarButtonClick)
        # button_action.setCheckable(True)
        # # button_action.setShortcut(QKeySequence("Ctrl+p"))
        # # button_action.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_P))
        # button_action.setShortcut(QKeySequence.Print)
        # toolbar.addAction(button_action)
        # toolbar.addWidget(QLabel("OCH"))
        # toolbar.addWidget(QCheckBox())

        self.setStatusBar(QStatusBar(self))

        menu = self.menuBar()

        file_menu = menu.addMenu("&File")
        # file_menu.addAction(button_action)
        # file_menu.addSeparator()
        file_menu.addMenu("Do not push")
        #        file_menu.addAction()

        self._scene = scene
        gfx = self._gfx = QFramesInTracksView(self)
        # label = QLabel("och!")
        # label.setAlignment(Qt.AlignCenter)

        # ref https://doc.qt.io/archives/qq/qq26-openglcanvas.html
        self.setCentralWidget(gfx)

        scene.setSceneRect(QRectF(0, 0, 800, 600))
        gfx.setScene(scene)

        # populate fills the scene with interesting stuff.
        # self.populate()

        # Make it bigger
        # self.setWindowState(Qt.WindowMaximized)

        # Well... it's going to have an animation, ok?

        # So, I set a timer to 1 second
        # self.animator=QTimer()

        # And when it triggers, it calls the animate method
        # self.animator.timeout.connect(self.animate)

        # And I animate it once manually.
        # self.animate()
        self.show()
        self.raise_()
Пример #3
0
    def __init__(self):
        super().__init__()

        self.__central_widget = CentralWidget(None)

        self.__board = self.__central_widget.board
        self.__nodes_view = self.__central_widget.nodes_widget

        self.__status_bar = QStatusBar()

        self.setCentralWidget(self.__central_widget)
        self.setStatusBar(self.__status_bar)
        self.setMinimumSize(self.__central_widget.size())

        self.__board.on_click.connect(self.on_piece_click)
        self.__nodes_view.node_click.connect(self.on_point_click)

        self.__central_widget.button_bar.open_click.connect(self.on_open_click)
        self.__central_widget.button_bar.save_click.connect(self.on_save_click)
        self.__central_widget.button_bar.pass_click.connect(self.on_pass_click)
        self.__central_widget.button_bar.resign_click.connect(
            self.on_resign_click)
        self.__central_widget.button_bar.count_click.connect(
            self.on_count_click)

        self.__status_bar.showMessage("Juego cargado.")
Пример #4
0
	def __init__(self, parent=None):
		super(TestDlg, self).__init__(parent)
		self.mymodel = None
		self.myscene = DragEnabledScene(QRectF(-400,-300,800,600))
		self.myview = QGraphicsView()
		self.myview.setScene(self.myscene)
		self.myfile = None
		layout = QVBoxLayout()
		layout.addWidget(self.myview)
		buttonLayout = QHBoxLayout()
		self.savebutton = QPushButton('Save')
		self.loadbutton = QPushButton('Load')
		self.renderbutton = QPushButton('Accept')
		buttonLayout.addWidget(self.savebutton)
		buttonLayout.addWidget(self.loadbutton)
		buttonLayout.addWidget(self.renderbutton)
		layout.addLayout(buttonLayout)
		self.statusbar =  QStatusBar()
		layout.addWidget(self.statusbar)
		self.statusbar.showMessage("Ready.",2000)
		self.setLayout(layout)

		self.loadfromInitData()

		self.savebutton.pressed.connect(self.saveMatrix)
		self.loadbutton.pressed.connect(self.loadMatrix)
		self.myscene.selectionChanged.connect(self.updateStatus)
		self.myscene.modelchanged.connect(self.changeModel)

		self.renderbutton.pressed.connect(self.testDistance)
Пример #5
0
        def setupUi(self, MainWindow):
            """
            """

            MainWindow.resize(100,200)

            # Create the "Central Widget" and add a "Layout"
            self.centralwidget = QWidget(MainWindow)
            MainWindow.setCentralWidget(self.centralwidget)
            self.verticalLayout= QVBoxLayout(self.centralwidget)

            # Add a Temperature sensor and Label Widgets
            self.t1 = QFellesThermocouple(self.centralwidget)
            self.label = QLabel(self.centralwidget)
            self.label.setText("[C]")

            # Add Widgets to Layout
            self.verticalLayout.addWidget(self.t1)
            self.verticalLayout.addWidget(self.label)

            # Add connections
            self.t1.measurement_updated.connect(self.label.setText)

            # Create the Menu bar
            self.menubar = QMenuBar(MainWindow)
            MainWindow.setMenuBar(self.menubar)
            # Create the Status Bar
            self.statusbar = QStatusBar(MainWindow)
            MainWindow.setStatusBar(self.statusbar)

            self.retranslateUi(MainWindow)
Пример #6
0
    def __init__(self, showEmptyDatasetNodes=False, parent=None):
        """Constructor."""

        super(Visor, self).__init__(parent)
        self.setupUi(self)

        self.controller = VisorController.VisorController()
        self.controller.threddsServerMapObjectRetrieved.connect(
            self.onNewDatasetsAvailable)
        self.controller.threddsDataSetUpdated.connect(self.onDataSetUpdated)
        self.controller.mapImageRetrieved.connect(self.showNewImage)
        self.controller.standardMessage.connect(
            self.postInformationMessageToUser)
        self.controller.errorMessage.connect(self.postCriticalErrorToUser)
        self.controller.mapInfoRetrieved.connect(
            self._onMapInfoReceivedFromController)
        self.controller.batchDownloadFinished.connect(self.createLayerGroup)

        self.showEmptyDatasetNodes = showEmptyDatasetNodes  # TODO: self-explanatory...
        self.combo_dataset_list.currentIndexChanged.connect(
            self._onDataSetItemChanged)
        self.tree_widget.itemClicked.connect(self._onMapTreeWidgetItemClicked)
        self.tree_widget.itemExpanded.connect(
            self._onMapTreeWidgetItemExpanded)

        self.tabWidget.currentChanged.connect(self.runWhenTabChange)

        self.connect(self.combo_wcs_coverage,
                     SIGNAL("currentIndexChanged(const QString&)"),
                     self._onCoverageSelectorItemChanged)
        self.connect(self.combo_wms_layer,
                     SIGNAL("currentIndexChanged(const QString&)"),
                     self._onWMSLayerSelectorItemChanged)
        self.connect(self.combo_wms_style_type,
                     SIGNAL("currentIndexChanged(const QString&)"),
                     self._onWMSStyleTypeSelectorItemChanged)
        self.connect(self.combo_wms_time, SIGNAL("currentIndexChanged(int)"),
                     self._onWMSFirstTimeChanged)
        self.connect(self.combo_wcs_time, SIGNAL("currentIndexChanged(int)"),
                     self._onWCSFirstTimeChanged)

        self.button_req_map.clicked.connect(self._onbuttonReqMapClicked)
        #self.actionToggleAlwaysOnTop.toggled.connect(self._onAlwaysOnTopPrefsChanged)
        self.buttonManageServers.clicked.connect(
            self._onManageServersRequested)
        self.button_req_animation.clicked.connect(self.toggleAnimationMenu)

        # We add a status bar to this QDockWidget:
        self.statusbar = QStatusBar()
        self.gridLayout.addWidget(self.statusbar)

        self.datasetInUse = None
        self.uiAnimation = None
        self.currentMap = None
        self.wcsAvailableTimes = []
        self.wmsAvailableTimes = []

        self.firstRunThisSession = True
Пример #7
0
    def __init__(self, parent, configuration):
        QWidget.__init__(self, parent)
        self._configuration = configuration

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        main_widget = QWidget(self)
        self._layout_main = QVBoxLayout()
        self._layout_main.setContentsMargins(0, 0, 0, 0)
        self._layout_main.setSpacing(6)
        main_widget.setLayout(self._layout_main)
        layout.addWidget(main_widget)
        self._status_bar = QStatusBar()
        layout.addWidget(self._status_bar)
        self.setLayout(layout)
Пример #8
0
    def init_ui(self):
        wtitle = "Teigen " + self.version
        self.setWindowTitle(wtitle)
        self.mainLayout = QGridLayout(self)

        self.statusBar = QStatusBar()
        self.mainLayout.addWidget(self.statusBar, 10, 0, 1, 2)
        self.progressBar = QtGui.QProgressBar()
        self.progressBar.setRange(0, 10000)
        self.progressBar.setValue(0)

        self.ui_stop_button = QPushButton("Stop", self)
        self.ui_stop_button.clicked.connect(self.btnStop)

        self.statusBar.addWidget(self.progressBar)
        self.statusBar.addWidget(self.ui_stop_button)
        self.progressBar.show()

        self.configBarLayout = QGridLayout(self)
        self._ui_config_init()
Пример #9
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.dirty = False

        self.setObjectName("MainWindow")
        self.resize(800, 600)
        self.setWindowTitle("GA")  # TODO
        # TODO        app_icon = get_icon('OpenFisca22.png')
        #        self.setWindowIcon(app_icon)
        self.setLocale(QLocale(QLocale.French, QLocale.France))
        self.setDockOptions(QMainWindow.AllowNestedDocks
                            | QMainWindow.AllowTabbedDocks
                            | QMainWindow.AnimatedDocks)

        self.centralwidget = QWidget(self)
        self.gridLayout = QGridLayout(self.centralwidget)
        self.setCentralWidget(self.centralwidget)
        self.centralwidget.hide()

        self.statusbar = QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)

        # Showing splash screen
        pixmap = QPixmap(':/images/splash.png', 'png')
        self.splash = QSplashScreen(pixmap)
        font = self.splash.font()
        font.setPixelSize(10)
        self.splash.setFont(font)
        self.splash.show()
        self.splash.showMessage(
            "Initialisation...",
            Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute,
            QColor(Qt.black))
        #        if CONF.get('main', 'current_version', '') != __version__:
        #            CONF.set('main', 'current_version', __version__)
        # Execute here the actions to be performed only once after
        # each update (there is nothing there for now, but it could
        # be useful some day...

        self.start()
Пример #10
0
 def addWidgets(self):
     layout = QVBoxLayout()
     self.setLayout(layout)
     layout.setSpacing(0)
     layout.setContentsMargins(0, 0, 0, 0)
     hbox = QHBoxLayout()
     hbox.setSpacing(4)
     hbox.setContentsMargins(8, 8, 8, 2)
     searchbox = SearchEditor()
     hbox.addWidget(searchbox)
     self.searchbox = searchbox
     menu = MenuButton(self)
     hbox.addWidget(menu)
     layout.addLayout(hbox)
     pwview = VaultView(self)
     searchbox.textChanged.connect(pwview.setSearchQuery)
     pwview.currentVaultChanged.connect(searchbox.currentVaultChanged)
     pwview.currentVaultItemCountChanged.connect(
         searchbox.currentVaultItemCountChanged)
     layout.addWidget(pwview)
     self.pwview = pwview
     hbox = QHBoxLayout()
     addbutton = AddButton()
     pwview.currentVaultChanged.connect(addbutton.currentVaultChanged)
     hbox.addWidget(addbutton)
     frame = QFrame()
     frame.setFrameStyle(QFrame.VLine | QFrame.Raised)
     frame.setLineWidth(1)
     frame.setFixedHeight(26)
     hbox.addWidget(frame)
     statusbar = QStatusBar()
     hbox.addWidget(statusbar)
     self.statusbar = statusbar
     self.sink = QWidget()
     self.sink.setFocusPolicy(Qt.ClickFocus)
     self.sink.resize(0, 0)
     hbox.addWidget(self.sink)
     layout.addLayout(hbox)
Пример #11
0
        def setupUi(self, MainWindow):
            """
            """
            MainWindow.resize(100, 200)
            #Create central widget and add a Layout
            self.centralwidget = QWidget(MainWindow)
            MainWindow.setCentralWidget(self.centralwidget)
            self.verticalLayout = QVBoxLayout(self.centralwidget)

            # Add a Temperature sensor and Label Widgets
            self.t1 = QFellesController(self.centralwidget)

            # Add Widgets to Layout
            self.verticalLayout.addWidget(self.t1)

            # Create the Menu bar
            self.menubar = QMenuBar(MainWindow)
            MainWindow.setMenuBar(self.menubar)
            # Create the Status Bar
            self.statusbar = QStatusBar(MainWindow)
            MainWindow.setStatusBar(self.statusbar)

            self.retranslateUi(MainWindow)
Пример #12
0
    def initUI(self, shape, vscale, height=600, mode='seed'):
        """
        Initialize UI.

        Parameters
        ----------
        shape : (int, int, int)
            Shape of data matrix.
        vscale : (float, float, float)
            Voxel scaling.
        height : int
            Maximal slice height in pixels.
        mode : str
            Editor mode.
        """

        # picture
        grid = height / float(shape[1] * vscale[1])
        mgrid = (grid * vscale[0], grid * vscale[1])
        self.slice_box = SliceBox(shape[:-1], mgrid, mode)
        self.slice_box.setScrollFun(self.scrollSlices)
        self.connect(self.slice_box, SIGNAL('focus_slider'),
                     self.focusSliceSlider)

        # sliders
        self.allow_select_slice = True
        self.n_slices = shape[2]
        self.slider = QSlider(Qt.Vertical)
        self.slider.label = QLabel()
        self.slider.label.setText('Slice: %d / %d' %
                                  (self.actual_slice, self.n_slices))
        self.slider.setRange(1, self.n_slices)
        self.slider.valueChanged.connect(self.sliderSelectSlice)
        self.slider.setValue(self.actual_slice)

        self.slider_cw = {}
        self.slider_cw['c'] = QSlider(Qt.Horizontal)
        self.slider_cw['c'].valueChanged.connect(self.changeC)
        self.slider_cw['c'].label = QLabel()

        self.slider_cw['w'] = QSlider(Qt.Horizontal)
        self.slider_cw['w'].valueChanged.connect(self.changeW)
        self.slider_cw['w'].label = QLabel()

        self.view_label = QLabel('View size: %d x %d' %
                                 self.img_aview.shape[:-1])
        self.voxel_label = QLabel('Voxel size [mm]:\n  %.2f x %.2f x %.2f'\
                                      % tuple(self.voxel_size[np.array(self.act_transposition)]))

        combo_view_options = VIEW_TABLE.keys()
        combo_view = QComboBox(self)
        combo_view.activated[str].connect(self.setView)
        combo_view.addItems(combo_view_options)

        # buttons
        self.btn_quit = QPushButton("Return", self)
        self.btn_quit.clicked.connect(self.quit)

        combo_dmask = QComboBox(self)
        combo_dmask.activated.connect(self.changeMask)
        self.mask_points_tab, aux = self.init_draw_mask(DRAW_MASK, mgrid)
        for icon, label in aux:
            combo_dmask.addItem(icon, label)

        self.slice_box.setMaskPoints(
            self.mask_points_tab[combo_dmask.currentIndex()])

        self.status_bar = QStatusBar()

        self.seeds_copy = None
        vopts = []
        vmenu = []
        appmenu = []
        if mode == 'seed' and self.mode_fun is not None:
            btn_recalc = QPushButton("Recalculate", self)
            btn_recalc.clicked.connect(self.recalculate)
            self.btn_save = QPushButton("Save seeds", self)
            self.btn_save.clicked.connect(self.saveload_seeds)
            btn_s2b = QPushButton("Seg. to bckgr.", self)
            btn_s2b.clicked.connect(self.seg_to_background_seeds)
            btn_s2f = QPushButton("Seg. to forgr.", self)
            btn_s2f.clicked.connect(self.seg_to_foreground_seeds)
            appmenu.append(
                QLabel('<b>Segmentation mode</b><br><br><br>' +
                       'Select the region of interest<br>' +
                       'using the mouse buttons:<br><br>' +
                       '&nbsp;&nbsp;<i>left</i> - inner region<br>' +
                       '&nbsp;&nbsp;<i>right</i> - outer region<br><br>'))
            appmenu.append(btn_recalc)
            appmenu.append(self.btn_save)
            appmenu.append(btn_s2f)
            appmenu.append(btn_s2b)
            appmenu.append(QLabel())
            self.volume_label = QLabel('Volume:\n  unknown')
            appmenu.append(self.volume_label)

            # Set middle pencil as default (M. Jirik)
            combo_dmask.setCurrentIndex(1)
            self.slice_box.setMaskPoints(
                self.mask_points_tab[combo_dmask.currentIndex()])
            #  -----mjirik---end------

        if mode == 'seed' or mode == 'crop'\
                or mode == 'mask' or mode == 'draw':

            combo_seed_label_options = ['all', '1', '2', '3', '4']
            combo_seed_label = QComboBox(self)
            combo_seed_label.activated[str].connect(self.changeFocusedLabel)
            combo_seed_label.addItems(combo_seed_label_options)
            self.changeFocusedLabel(
                combo_seed_label_options[combo_seed_label.currentIndex()])
            # vopts.append(QLabel('Label to delete:'))
            # vopts.append(combo_seed_label)
            vmenu.append(QLabel('Label to delete:'))
            vmenu.append(combo_seed_label)

            btn_del = QPushButton("Del Slice Seeds", self)
            btn_del.clicked.connect(self.deleteSliceSeeds)
            vmenu.append(None)
            vmenu.append(btn_del)
            btn_del = QPushButton("Del All Seeds", self)
            btn_del.clicked.connect(self.deleteSeedsInAllImage)
            vmenu.append(None)
            vmenu.append(btn_del)

            combo_contour_options = ['fill', 'contours', 'off']
            combo_contour = QComboBox(self)
            combo_contour.activated[str].connect(self.changeContourMode)
            combo_contour.addItems(combo_contour_options)
            self.changeContourMode(
                combo_contour_options[combo_contour.currentIndex()])
            vopts.append(QLabel('Selection mode:'))
            vopts.append(combo_contour)

        if mode == 'mask':
            btn_recalc_mask = QPushButton("Recalculate mask", self)
            btn_recalc_mask.clicked.connect(self.updateMaskRegion_btn)
            btn_all = QPushButton("Select all", self)
            btn_all.clicked.connect(self.maskSelectAll)
            btn_reset = QPushButton("Reset selection", self)
            btn_reset.clicked.connect(self.resetSelection)
            btn_reset_seads = QPushButton("Reset seads", self)
            btn_reset_seads.clicked.connect(self.resetSeads)
            btn_add = QPushButton("Add selection", self)
            btn_add.clicked.connect(self.maskAddSelection)
            btn_rem = QPushButton("Remove selection", self)
            btn_rem.clicked.connect(self.maskRemoveSelection)
            btn_mask = QPushButton("Mask region", self)
            btn_mask.clicked.connect(self.maskRegion)
            appmenu.append(
                QLabel('<b>Mask mode</b><br><br><br>' +
                       'Select the region to mask<br>' +
                       'using the left mouse button<br><br>'))
            appmenu.append(self.get_line('h'))
            appmenu.append(btn_recalc_mask)
            appmenu.append(btn_all)
            appmenu.append(btn_reset)
            appmenu.append(btn_reset_seads)
            appmenu.append(self.get_line('h'))
            appmenu.append(btn_add)
            appmenu.append(btn_rem)
            appmenu.append(self.get_line('h'))
            appmenu.append(btn_mask)
            appmenu.append(self.get_line('h'))
            self.mask_qhull = None

        if mode == 'crop':
            btn_crop = QPushButton("Crop", self)
            btn_crop.clicked.connect(self.crop)
            appmenu.append(
                QLabel('<b>Crop mode</b><br><br><br>' +
                       'Select the crop region<br>' +
                       'using the left mouse button<br><br>'))
            appmenu.append(btn_crop)

        if mode == 'draw':
            appmenu.append(
                QLabel('<b>Manual segmentation<br> mode</b><br><br><br>' +
                       'Mark the region of interest<br>' +
                       'using the mouse buttons:<br><br>' +
                       '&nbsp;&nbsp;<i>left</i> - draw<br>' +
                       '&nbsp;&nbsp;<i>right</i> - erase<br>' +
                       '&nbsp;&nbsp;<i>middle</i> - vol. erase<br><br>'))

            btn_reset = QPushButton("Reset", self)
            btn_reset.clicked.connect(self.resetSliceDraw)
            vmenu.append(None)
            vmenu.append(btn_reset)

            combo_erase_options = ['inside', 'outside']
            combo_erase = QComboBox(self)
            combo_erase.activated[str].connect(self.changeEraseMode)
            combo_erase.addItems(combo_erase_options)
            self.changeEraseMode(
                combo_erase_options[combo_erase.currentIndex()])
            vopts.append(QLabel('Volume erase mode:'))
            vopts.append(combo_erase)

        hbox = QHBoxLayout()
        vbox = QVBoxLayout()
        vbox_left = QVBoxLayout()
        vbox_app = QVBoxLayout()

        hbox.addWidget(self.slice_box)
        hbox.addWidget(self.slider)
        vbox_left.addWidget(self.slider.label)
        vbox_left.addWidget(self.view_label)
        vbox_left.addWidget(self.voxel_label)
        vbox_left.addWidget(QLabel())
        vbox_left.addWidget(QLabel('View plane:'))
        vbox_left.addWidget(combo_view)
        vbox_left.addWidget(self.get_line())
        vbox_left.addWidget(self.slider_cw['c'].label)
        vbox_left.addWidget(self.slider_cw['c'])
        vbox_left.addWidget(self.slider_cw['w'].label)
        vbox_left.addWidget(self.slider_cw['w'])
        vbox_left.addWidget(self.get_line())
        vbox_left.addWidget(QLabel('Drawing mask:'))
        vbox_left.addWidget(combo_dmask)

        for ii in vopts:
            vbox_left.addWidget(ii)

        for ii in vmenu:
            if ii is None:
                vbox_left.addStretch(1)

            else:
                vbox_left.addWidget(ii)

        for ii in appmenu:
            if ii is None:
                vbox_app.addStretch(1)

            else:
                vbox_app.addWidget(ii)

        vbox_app.addStretch(1)
        vbox_app.addWidget(self.btn_quit)

        hbox.addLayout(vbox_left)
        hbox.addWidget(self.get_line('v'))
        hbox.addLayout(vbox_app)
        vbox.addLayout(hbox)
        vbox.addWidget(self.status_bar)
        self.my_layout = vbox
        self.setLayout(vbox)

        self.setWindowTitle('Segmentation Editor')
        self.show()
Пример #13
0
    def __init__(self, settings, parent=None):
        super(MikiWindow, self).__init__(parent)
        self.setObjectName("mikiWindow")
        self.settings = settings
        self.notePath = settings.notePath
        lockPath = os.path.join(settings.notebookPath, '.mikidown_lock')
        if not os.path.exists(lockPath):
            self.lockPathFH = os.open(lockPath,
                                      os.O_CREAT | os.O_EXCL | os.O_RDWR)
        ################ Setup core components ################
        self.notesTree = MikiTree(self)
        self.quickNoteNav = QLineEdit()
        self.notesTab = QWidget()
        self.completer = SlashPleter()
        self.completer.setModel(self.notesTree.model())
        self.quickNoteNav.setCompleter(self.completer)
        self.notesTree.setObjectName("notesTree")
        self.initTree(self.notePath, self.notesTree)
        self.notesTree.sortItems(0, Qt.AscendingOrder)

        self.ix = None
        self.setupWhoosh()

        self.viewedList = QToolBar(self.tr('Recently Viewed'), self)
        self.viewedList.setIconSize(QSize(16, 16))
        self.viewedList.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.viewedListActions = []
        self.noteSplitter = QSplitter(Qt.Horizontal)

        self.dockIndex = QDockWidget(self.tr("Index"))
        self.dockSearch = QDockWidget(self.tr("Search"))
        self.searchEdit = QLineEdit()
        self.searchView = MikiSearch(self)
        self.searchTab = QWidget()
        self.dockToc = QDockWidget(self.tr("TOC"))
        self.tocTree = TocTree()
        self.dockAttachment = QDockWidget(self.tr("Attachment"))
        self.attachmentView = AttachmentView(self)

        self.notesEdit = MikiEdit(self)
        self.notesEdit.setObjectName(self.tr("notesEdit"))
        self.loadHighlighter()
        self.notesView = MikiView(self)

        self.findBar = QToolBar(self.tr('Find'), self)
        self.findBar.setFixedHeight(30)
        self.findEdit = QLineEdit(self.findBar)
        self.checkBox = QCheckBox(self.tr('Match case'), self.findBar)

        self.statusBar = QStatusBar(self)
        self.statusLabel = QLabel(self)

        self.altPressed = False

        ################ Setup actions ################
        self.actions = dict()
        self.setupActions()

        ################ Setup mainwindow ################
        self.setupMainWindow()

        # show changelogs after upgrade mikidown
        if self.settings.version < __version__ or Mikibook.settings.value(
                "version", defaultValue="0") < __version__:
            self.changelogHelp()
            self.settings.qsettings.setValue("version", __version__)
            Mikibook.settings.setValue("version", __version__)
Пример #14
0
    def insertLayout(self):
        def createPixmapWidget(self, parent, iconName):
            w = QLabel(parent)
            parent.layout().addWidget(w)
            w.setFixedSize(16, 16)
            w.hide()
            if os.path.exists(iconName):
                w.setPixmap(QPixmap(iconName))
            return w

        self.setLayout(QVBoxLayout())
        self.layout().setMargin(2)

        self.warning_bar = gui.widgetBox(self, orientation="horizontal",
                                         margin=0, spacing=0)
        self.warning_icon = gui.widgetLabel(self.warning_bar, "")
        self.warning_label = gui.widgetLabel(self.warning_bar, "")
        self.warning_label.setStyleSheet("padding-top: 5px")
        self.warning_bar.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Maximum)
        gui.rubber(self.warning_bar)
        self.warning_bar.setVisible(False)

        self.want_main_area = self.graph_name is not None or self.want_main_area

        splitter = self.Splitter(Qt.Horizontal, self)
        self.layout().addWidget(splitter)

        if self.want_control_area:
            self.controlArea = gui.widgetBox(splitter,
                                             orientation="vertical",
                                             margin=0)
            splitter.setSizes([1])  # Results in smallest size allowed by policy

            if self.graph_name is not None or hasattr(self, "send_report"):
                leftSide = self.controlArea
                self.controlArea = gui.widgetBox(leftSide, margin=0)
            if self.graph_name is not None:
                self.graphButton = gui.button(leftSide, None, "&Save Graph")
                self.graphButton.clicked.connect(self.save_graph)
                self.graphButton.setAutoDefault(0)
            if hasattr(self, "send_report"):
                self.report_button = gui.button(leftSide, None, "&Report",
                                                callback=self.show_report)
                self.report_button.setAutoDefault(0)

            if self.want_main_area:
                self.controlArea.setSizePolicy(QSizePolicy.Fixed,
                                               QSizePolicy.MinimumExpanding)
            self.controlArea.layout().setContentsMargins(4, 4, 0 if self.want_main_area else 4, 4)
        if self.want_main_area:
            self.mainArea = gui.widgetBox(splitter,
                                          orientation="vertical",
                                          margin=4,
                                          sizePolicy=QSizePolicy(QSizePolicy.Expanding,
                                                                 QSizePolicy.Expanding))
            splitter.setCollapsible(1, False)
            self.mainArea.layout().setContentsMargins(0 if self.want_control_area else 4, 4, 4, 4)

        if self.want_status_bar:
            self.widgetStatusArea = QFrame(self)
            self.statusBarIconArea = QFrame(self)
            self.widgetStatusBar = QStatusBar(self)

            self.layout().addWidget(self.widgetStatusArea)

            self.widgetStatusArea.setLayout(QHBoxLayout(self.widgetStatusArea))
            self.widgetStatusArea.layout().addWidget(self.statusBarIconArea)
            self.widgetStatusArea.layout().addWidget(self.widgetStatusBar)
            self.widgetStatusArea.layout().setMargin(0)
            self.widgetStatusArea.setFrameShape(QFrame.StyledPanel)

            self.statusBarIconArea.setLayout(QHBoxLayout())
            self.widgetStatusBar.setSizeGripEnabled(0)

            self.statusBarIconArea.hide()

            self._warningWidget = createPixmapWidget(
                self.statusBarIconArea,
                gui.resource_filename("icons/triangle-orange.png"))
            self._errorWidget = createPixmapWidget(
                self.statusBarIconArea,
                gui.resource_filename("icons/triangle-red.png"))

        if not self.resizing_enabled:
            self.layout().setSizeConstraint(QVBoxLayout.SetFixedSize)
Пример #15
0
    def initUI(self, shape, vscale, height=600, mode='seed'):
        """
        Initialize UI.

        Parameters
        ----------
        shape : (int, int, int)
            Shape of data matrix.
        vscale : (float, float, float)
            Voxel scaling.
        height : int
            Maximal slice height in pixels.
        mode : str
            Editor mode.
        """

        self.slab = {}

        # picture
        grid = height / float(shape[1] * vscale[1])
        mgrid = (grid * vscale[0], grid * vscale[1])
        self.slice_box = SliceBox(shape[:-1], mgrid, mode)
        self.slice_box.setScrollFun(self.scrollSlices)
        self.connect(self.slice_box, SIGNAL('focus_slider'),
                     self.focusSliceSlider)

        # sliders
        self.allow_select_slice = True
        self.n_slices = shape[2]
        self.slider = QSlider(Qt.Vertical)
        self.slider.valueChanged.connect(self.sliderSelectSlice)
        self.slider.label = QLabel()
        self.slider.setRange(1, self.n_slices)

        self.slider_cw = {}
        self.slider_cw['c'] = QSlider(Qt.Horizontal)
        self.slider_cw['c'].valueChanged.connect(self.changeC)
        self.slider_cw['c'].label = QLabel()

        self.slider_cw['w'] = QSlider(Qt.Horizontal)
        self.slider_cw['w'].valueChanged.connect(self.changeW)
        self.slider_cw['w'].label = QLabel()

        self.view_label = QLabel('View size: %d x %d' %
                                 self.img_aview.shape[:-1])
        self.voxel_label = QLabel('Voxel size [mm]:\n  %.2f x %.2f x %.2f'\
                                      % tuple(self.voxel_size[np.array(self.act_transposition)]))

        # combo_view_options = VIEW_TABLE.keys()
        # combo_view = QComboBox(self)
        # combo_view.activated[str].connect(self.setView)
        # combo_view.addItems(combo_view_options)

        #radio button group for choosing seed class ------------------------
        self.current_class = 1
        self.slice_box.seed_mark = self.current_class
        number_group = QGroupBox(QString('Class markers'))
        vbox_NG = QVBoxLayout()
        r1 = QRadioButton('class 1')
        r1.setStyleSheet('QRadioButton {color: red}')
        r1.setChecked(True)
        r2 = QRadioButton('class 2')
        r2.setStyleSheet('QRadioButton {color: green}')
        r3 = QRadioButton('class 3')
        r3.setStyleSheet('QRadioButton {color: blue}')
        r4 = QRadioButton('class 4')
        r4.setStyleSheet('QRadioButton {color: cyan}')
        r5 = QRadioButton('class 5')
        r5.setStyleSheet('QRadioButton {color: magenta}')

        vbox_NG.addWidget(r1)
        vbox_NG.addWidget(r2)
        vbox_NG.addWidget(r3)
        vbox_NG.addWidget(r4)
        vbox_NG.addWidget(r5)

        number_group.setLayout(vbox_NG)

        self.button_group = QButtonGroup()
        self.button_group.addButton(r1, 1)
        self.button_group.addButton(r2, 2)
        self.button_group.addButton(r3, 3)
        self.button_group.addButton(r4, 4)
        self.button_group.addButton(r5, 5)
        self.connect(self.button_group, SIGNAL("buttonClicked(int)"),
                     self.change_seed_class)
        #-------------------------------------------------------------------

        # buttons
        # btn_save = QPushButton('Save', self)
        # btn_save.clicked.connect(self.save)

        btn_quit = QPushButton("Quit", self)
        btn_quit.clicked.connect(self.quit)

        # btn_crop = QPushButton('Crop', self)
        # btn_crop.clicked.connect(self.crop)

        combo_dmask = QComboBox(self)
        combo_dmask.activated.connect(self.changeMask)
        self.mask_points_tab, aux = self.init_draw_mask(DRAW_MASK, mgrid)
        for icon, label in aux:
            combo_dmask.addItem(icon, label)

        self.slice_box.setMaskPoints(
            self.mask_points_tab[combo_dmask.currentIndex()])

        self.status_bar = QStatusBar()

        vopts = []
        vmenu = []
        appmenu = []

        # btn_recalc = QPushButton("Recalculate", self)
        # btn_recalc.clicked.connect(self.recalculate)
        # appmenu.append(QLabel('<b>Segmentation mode</b><br><br><br>' +
        #                       'Select the region of interest<br>' +
        #                       'using the mouse buttons.<br><br>'))
        # appmenu.append(btn_recalc)
        # appmenu.append(QLabel())
        # self.volume_label = QLabel('Volume [mm3]:\n  unknown')
        # appmenu.append(self.volume_label)

        # btn_crop = QPushButton("Crop", self)
        # btn_crop.clicked.connect(self.crop)
        # appmenu.append(btn_crop)

        btn_save = QPushButton("Save Seeds", self)
        btn_save.clicked.connect(self.saveSeeds)
        appmenu.append(btn_save)

        btn_del = QPushButton("Delete Seeds", self)
        btn_del.clicked.connect(self.deleteSliceSeeds)
        appmenu.append(btn_del)

        # combo_contour_options = ['fill', 'contours', 'off']
        # combo_contour = QComboBox(self)
        # combo_contour.activated[str].connect(self.changeContourMode)
        # combo_contour.addItems(combo_contour_options)
        # self.changeContourMode(combo_contour_options[combo_contour.currentIndex()])
        # vopts.append(QLabel('Selection mode:'))
        # vopts.append(combo_contour)

        # btn_reset = QPushButton("Reset Seeds", self)
        # btn_reset.clicked.connect(self.resetSliceDraw)
        # # appmenu.append(None)
        # appmenu.append(btn_reset)

        hbox = QHBoxLayout()
        vbox = QVBoxLayout()
        vbox_left = QVBoxLayout()
        vbox_app = QVBoxLayout()

        hbox.addWidget(self.slice_box)
        hbox.addWidget(self.slider)
        vbox_left.addWidget(self.slider.label)
        vbox_left.addWidget(self.view_label)
        vbox_left.addWidget(self.voxel_label)
        # vbox_left.addWidget(QLabel())
        # vbox_left.addWidget(QLabel('View plane:'))
        # vbox_left.addWidget(combo_view)
        vbox_left.addWidget(self.get_line())
        vbox_left.addWidget(self.slider_cw['c'].label)
        vbox_left.addWidget(self.slider_cw['c'])
        vbox_left.addWidget(self.slider_cw['w'].label)
        vbox_left.addWidget(self.slider_cw['w'])
        vbox_left.addWidget(self.get_line())
        vbox_left.addWidget(QLabel('Drawing mask:'))
        vbox_left.addWidget(combo_dmask)

        for ii in vopts:
            vbox_left.addWidget(ii)

        for ii in vmenu:
            if ii is None:
                vbox_left.addStretch(1)

            else:
                vbox_left.addWidget(ii)

        for ii in appmenu:
            if ii is None:
                vbox_app.addStretch(1)

            else:
                vbox_app.addWidget(ii)

        vbox_left.addWidget(self.get_line())
        vbox_left.addWidget(number_group)

        # vbox_app.addWidget(btn_crop)

        vbox_app.addStretch(1)
        # vbox_app.addWidget(btn_save)
        vbox_app.addWidget(btn_quit)

        hbox.addLayout(vbox_left)
        hbox.addWidget(self.get_line('v'))
        hbox.addLayout(vbox_app)
        vbox.addLayout(hbox)
        vbox.addWidget(self.status_bar)
        self.setLayout(vbox)

        self.setWindowTitle('Seed Editor')
        self.show()
Пример #16
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.dirty = False
        self.isLoaded = False
        self.calibration_enabled = False
        self.aggregate_enabled = False

        self.setObjectName("MainWindow")
        self.resize(800, 600)
        self.setWindowTitle("OpenFisca")
        app_icon = get_icon('OpenFisca22.png')
        self.setWindowIcon(app_icon)
        self.setLocale(QLocale(QLocale.French, QLocale.France))
        self.setDockOptions(QMainWindow.AllowNestedDocks
                            | QMainWindow.AllowTabbedDocks
                            | QMainWindow.AnimatedDocks)

        self.centralwidget = QWidget(self)
        self.gridLayout = QGridLayout(self.centralwidget)
        self.setCentralWidget(self.centralwidget)
        self.centralwidget.hide()

        self.statusbar = QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)

        # Showing splash screen
        pixmap = QPixmap(':/images/splash.png', 'png')
        self.splash = QSplashScreen(pixmap)
        font = self.splash.font()
        font.setPixelSize(10)
        self.splash.setFont(font)
        self.splash.show()
        self.splash.showMessage(
            "Initialisation...",
            Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute,
            QColor(Qt.black))
        #        if CONF.get('main', 'current_version', '') != __version__:
        #            CONF.set('main', 'current_version', __version__)
        # Execute here the actions to be performed only once after
        # each update (there is nothing there for now, but it could
        # be useful some day...

        self.scenario = Scenario()
        # Preferences
        self.general_prefs = [SimConfigPage, PathConfigPage, CalConfigPage]
        self.oldXAXIS = 'sal'
        self.reforme = False
        self.apply_settings()

        # Dockwidgets creation
        self.splash.showMessage(
            "Creating widgets...",
            Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute,
            QColor(Qt.black))

        self.create_dockwidgets()
        self.populate_mainwidow()

        #################################################################
        ## Menu initialization
        #################################################################
        self.splash.showMessage(
            "Creating menubar...",
            Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute,
            QColor(Qt.black))
        # Menu Fichier
        self.file_menu = self.menuBar().addMenu("Fichier")
        action_export_png = create_action(self,
                                          'Exporter le graphique',
                                          icon='document-save png.png',
                                          triggered=self._graph.save_figure)
        action_export_csv = create_action(self,
                                          'Exporter la table',
                                          icon='document-save csv.png',
                                          triggered=self._table.saveCsv)
        action_pref = create_action(self,
                                    u'Préférences',
                                    QKeySequence.Preferences,
                                    icon='preferences-desktop.png',
                                    triggered=self.edit_preferences)
        action_quit = create_action(self,
                                    'Quitter',
                                    QKeySequence.Quit,
                                    icon='process-stop.png',
                                    triggered=SLOT('close()'))

        file_actions = [
            action_export_png, action_export_csv, None, action_pref, None,
            action_quit
        ]
        add_actions(self.file_menu, file_actions)

        # Menu Edit
        self.edit_menu = self.menuBar().addMenu(u"Édition")
        action_copy = create_action(self,
                                    'Copier',
                                    QKeySequence.Copy,
                                    triggered=self.global_callback,
                                    data='copy')

        edit_actions = [None, action_copy]
        add_actions(self.edit_menu, edit_actions)

        # Menu Simulation
        self.simulation_menu = self.menuBar().addMenu(u"Simulation")

        self.action_refresh_bareme = create_action(
            self,
            u'Calculer barèmes',
            shortcut='F9',
            icon='calculator_green.png',
            triggered=self.refresh_bareme)
        self.action_refresh_aggregate = create_action(
            self,
            u'Calculer aggrégats',
            shortcut='F10',
            icon='calculator_blue.png',
            triggered=self.refresh_aggregate)

        self.action_calibrate = create_action(self,
                                              u'Caler les poids',
                                              shortcut='CTRL+K',
                                              icon='scale22.png',
                                              triggered=self.calibrate)

        action_bareme = create_action(self,
                                      u'Barème',
                                      icon='bareme22.png',
                                      toggled=self.modeBareme)
        action_cas_type = create_action(self,
                                        u'Cas type',
                                        icon='castype22.png',
                                        toggled=self.modeCasType)
        action_mode_reforme = create_action(
            self,
            u'Réforme',
            icon='comparison22.png',
            toggled=self.modeReforme,
            tip=
            u"Différence entre la situation simulée et la situation actuelle")
        mode_group = QActionGroup(self)
        mode_group.addAction(action_bareme)
        mode_group.addAction(action_cas_type)
        self.mode = 'bareme'
        action_bareme.trigger()

        simulation_actions = [
            self.action_refresh_bareme, self.action_refresh_aggregate, None,
            self.action_calibrate, None, action_bareme, action_cas_type, None,
            action_mode_reforme
        ]
        add_actions(self.simulation_menu, simulation_actions)

        # Menu Help
        help_menu = self.menuBar().addMenu("&Aide")
        action_about = create_action(self,
                                     u"&About OpenFisca",
                                     triggered=self.helpAbout)
        action_help = create_action(self,
                                    "&Aide",
                                    QKeySequence.HelpContents,
                                    triggered=self.helpHelp)
        help_actions = [action_about, action_help]
        add_actions(help_menu, help_actions)

        # Display Menu
        view_menu = self.createPopupMenu()
        view_menu.setTitle("&Affichage")
        self.menuBar().insertMenu(help_menu.menuAction(), view_menu)

        # Toolbar
        self.main_toolbar = self.create_toolbar(u"Barre d'outil",
                                                'main_toolbar')
        toolbar_actions = [
            action_export_png, action_export_csv, None,
            self.action_refresh_bareme, self.action_refresh_aggregate, None,
            self.action_calibrate, None, action_bareme, action_cas_type, None,
            action_mode_reforme
        ]
        add_actions(self.main_toolbar, toolbar_actions)

        self.connect(self._menage, SIGNAL('changed()'), self.changed_bareme)
        self.connect(self._parametres, SIGNAL('changed()'), self.changed_param)
        self.connect(self._aggregate_output, SIGNAL('calculated()'),
                     self.calculated)
        self.connect(self, SIGNAL('weights_changed()'), self.refresh_aggregate)
        self.connect(self, SIGNAL('bareme_only()'), self.switch_bareme_only)

        # Window settings
        self.splash.showMessage(
            "Restoring settings...",
            Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute,
            QColor(Qt.black))
        settings = QSettings()
        size = settings.value('MainWindow/Size',
                              QVariant(QSize(800, 600))).toSize()
        self.resize(size)
        position = settings.value('MainWindow/Position',
                                  QVariant(QPoint(0, 0))).toPoint()
        self.move(position)
        self.restoreState(settings.value("MainWindow/State").toByteArray())

        self.splash.showMessage(
            "Loading survey data...",
            Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute,
            QColor(Qt.black))

        self.enable_aggregate(True)

        self.refresh_bareme()

        self.isLoaded = True
        self.splash.hide()
Пример #17
0
    def initView(self):
        if self.impType == ImpDateType.SERVINGCELL:
            self.setWindowTitle(u'相邻小区数据导入')
        else:
            self.setWindowTitle(u'基站和小区数据导入')
        self.setWindowIcon(QIcon('images/logo.png'))
        self.resize(620, 480)

        # 数据表格
        self.tableWidget = QTableWidget(self)
        self.tableWidget.setAlternatingRowColors(True)
        self.tableWidget.setRowCount(7)
        # 设置当前Table不能编辑
        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        # 初始化表格上下文菜单
        self.initTableContextMenu()
        # 初始化表头
        self.initTableHeader()
        # 导入出错列表
        self.listWidget = QListWidget(self)
        # 按钮组
        impBtn = QPushButton(u"导入EXCEL表", self)
        yzBtn = QPushButton(u"数据检验", self)
        impdateBtn = QPushButton(u"导入数据", self)
        btnVBox = QVBoxLayout()
        btnVBox.addWidget(impBtn)
        btnVBox.addWidget(yzBtn)
        btnVBox.addWidget(impdateBtn)
        # 错误列表与按钮组
        hBox = QHBoxLayout()
        hBox.setMargin(20)
        hBox.addWidget(self.listWidget)
        hBox.addLayout(btnVBox)

        self.mbar = QStatusBar(self)
        self.mbar.showMessage(u'准备就绪...')

        self.maction = QToolBar(self)
        self.editAction = QAction(u'编辑', self.maction)
        self.editAction.setCheckable(True)

        self.combox = QComboBox(self)
        self.combox.addItems(HeadsConfig.ImpExcelName)

        self.maction.addWidget(self.combox)
        self.maction.addAction(self.editAction)

        vBox = QVBoxLayout()
        vBox.addWidget(self.maction)
        vBox.addWidget(self.tableWidget)
        vBox.addLayout(hBox)
        vBox.addWidget(self.mbar)

        vBox.setStretchFactor(self.tableWidget, 9)
        vBox.setStretchFactor(hBox, 5)
        vBox.setStretchFactor(self.mbar, 1)

        self.setLayout(vBox)

        QObject.connect(impBtn, SIGNAL('clicked()'), self.impClick)
        QObject.connect(yzBtn, SIGNAL('clicked()'), self.yzClick)
        QObject.connect(impdateBtn, SIGNAL('clicked()'), self.impdateClick)
        QObject.connect(self.editAction, SIGNAL('triggered()'), self.editClick)
        QObject.connect(self.combox, SIGNAL('currentIndexChanged(int)'),
                        self.comboxChange)

        self.listWidget.doubleClicked.connect(self.mlistClicked)
Пример #18
0
    def createStatusBar(self):
        """create status bar"""

        self.statusbar = QStatusBar(self)
        self.setStatusBar(self.statusbar)
Пример #19
0
    def __init__(self, app, dictOpts):
        QMainWindow.__init__(self)
        self.setWindowTitle("PostGIS Layer Viewer - v.1.6.1")
        self.setTabPosition(Qt.BottomDockWidgetArea, QTabWidget.North)

        self.canvas = QgsMapCanvas()
        self.canvas.setCanvasColor(Qt.white)
        self.canvas.useImageToRender(True)
        self.canvas.enableAntiAliasing(True)
        self.setCentralWidget(self.canvas)

        actionZoomIn = QAction(QIcon(imgs_dir + "mActionZoomIn.png"),
                               QString("Zoom in"), self)
        actionZoomOut = QAction(QIcon(imgs_dir + "mActionZoomOut.png"),
                                QString("Zoom out"), self)
        actionPan = QAction(QIcon(imgs_dir + "mActionPan.png"), QString("Pan"),
                            self)
        actionZoomFullExtent = QAction(
            QIcon(imgs_dir + "mActionZoomFullExtent.png"),
            QString("Zoom full"), self)

        actionZoomIn.setCheckable(True)
        actionZoomOut.setCheckable(True)
        actionPan.setCheckable(True)

        self.connect(actionZoomIn, SIGNAL("triggered()"), self.zoomIn)
        self.connect(actionZoomOut, SIGNAL("triggered()"), self.zoomOut)
        self.connect(actionPan, SIGNAL("triggered()"), self.pan)
        self.connect(actionZoomFullExtent, SIGNAL("triggered()"),
                     self.zoomFullExtent)

        self.actionGroup = QActionGroup(self)
        self.actionGroup.addAction(actionPan)
        self.actionGroup.addAction(actionZoomIn)
        self.actionGroup.addAction(actionZoomOut)

        # Create the toolbar
        self.toolbar = self.addToolBar("Map tools")
        self.toolbar.addAction(actionPan)
        self.toolbar.addAction(actionZoomIn)
        self.toolbar.addAction(actionZoomOut)
        self.toolbar.addAction(actionZoomFullExtent)

        # Create the map tools
        self.toolPan = QgsMapToolPan(self.canvas)
        self.toolPan.setAction(actionPan)
        self.toolZoomIn = QgsMapToolZoom(self.canvas, False)  # false = in
        self.toolZoomIn.setAction(actionZoomIn)
        self.toolZoomOut = QgsMapToolZoom(self.canvas, True)  # true = out
        self.toolZoomOut.setAction(actionZoomOut)

        # Create the statusbar
        self.statusbar = QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)

        self.lblXY = QLabel()
        self.lblXY.setFrameStyle(QFrame.Box)
        self.lblXY.setMinimumWidth(170)
        self.lblXY.setAlignment(Qt.AlignCenter)
        self.statusbar.setSizeGripEnabled(False)
        self.statusbar.addPermanentWidget(self.lblXY, 0)

        self.lblScale = QLabel()
        self.lblScale.setFrameStyle(QFrame.StyledPanel)
        self.lblScale.setMinimumWidth(140)
        self.statusbar.addPermanentWidget(self.lblScale, 0)

        self.createLegendWidget()  # Create the legend widget

        self.connect(app, SIGNAL("loadPgLayer"), self.loadLayer)
        self.connect(self.canvas, SIGNAL("scaleChanged(double)"),
                     self.changeScale)
        self.connect(self.canvas, SIGNAL("xyCoordinates(const QgsPoint&)"),
                     self.updateXY)

        self.pan()  # Default

        self.plugins = Plugins(self, self.canvas, dictOpts['-h'],
                               dictOpts['-p'], dictOpts['-d'], dictOpts['-U'],
                               dictOpts['-W'])

        self.createAboutWidget()
        self.layerSRID = '-1'
        self.loadLayer(dictOpts)
Пример #20
0
class MenuQt(object):
    """主菜单"""
    add_record = QFrame(CENTRAL_WIDGET)  # 增加交易记录的界面
    grid_layout_widget = QWidget(add_record)  # title的container
    grid_layout = QGridLayout(grid_layout_widget)
    title = QLabel(grid_layout_widget)
    statusbar = QStatusBar(WINDOW)
    # 股票代码的title以及输入框
    grid_layout_widget_2 = QWidget(add_record)
    grid_layout_2 = QGridLayout(grid_layout_widget_2)
    share_code_title = QLabel(grid_layout_widget_2)
    grid_layout_widget_14 = QWidget(add_record)
    grid_layout_14 = QGridLayout(grid_layout_widget_14)
    share_code_input = QLineEdit(grid_layout_widget_14)
    # 股票名称的title和显示框
    grid_layout_widget_12 = QWidget(add_record)
    grid_layout_12 = QGridLayout(grid_layout_widget_12)
    share_name_title = QLabel(grid_layout_widget_12)
    grid_layout_widget_21 = QWidget(add_record)
    grid_layout_21 = QGridLayout(grid_layout_widget_21)
    share_name_show = QLineEdit(grid_layout_widget_21)
    # 买入日期的title和输入框
    grid_layout_widget_3 = QWidget(add_record)
    grid_layout_3 = QGridLayout(grid_layout_widget_3)
    buy_date_title = QLabel(grid_layout_widget_3)
    grid_layout_widget_15 = QWidget(add_record)
    grid_layout_15 = QGridLayout(grid_layout_widget_15)
    buy_date_input = QDateEdit(grid_layout_widget_15)
    # 卖出日期的title和输入框
    grid_layout_widget_10 = QWidget(add_record)
    grid_layout_10 = QGridLayout(grid_layout_widget_10)
    sale_date_title = QLabel(grid_layout_widget_10)
    grid_layout_widget_20 = QWidget(add_record)
    grid_layout_20 = QGridLayout(grid_layout_widget_20)
    sale_date_input = QDateEdit(grid_layout_widget_20)
    # 买入数量的title和输入框
    grid_layout_widget_5 = QWidget(add_record)
    grid_layout_5 = QGridLayout(grid_layout_widget_5)
    buy_num_title = QLabel(grid_layout_widget_5)
    grid_layout_widget_16 = QWidget(add_record)
    grid_layout_16 = QGridLayout(grid_layout_widget_16)
    buy_num_input = QLineEdit(grid_layout_widget_16)
    # 卖出数量的title和输入框
    grid_layout_widget_25 = QWidget(add_record)
    grid_layout_25 = QGridLayout(grid_layout_widget_25)
    sale_num_input = QLineEdit(grid_layout_widget_25)
    grid_layout_widget_13 = QWidget(add_record)
    grid_layout_13 = QGridLayout(grid_layout_widget_13)
    sale_num_title = QLabel(grid_layout_widget_13)
    # 买入价格的title和输入框
    grid_layout_widget_4 = QWidget(add_record)
    grid_layout_4 = QGridLayout(grid_layout_widget_4)
    buy_price_title = QLabel(grid_layout_widget_4)
    grid_layout_widget_17 = QWidget(add_record)
    grid_layout_17 = QGridLayout(grid_layout_widget_17)
    buy_price_input = QLineEdit(grid_layout_widget_17)
    # 卖出价格和输入框
    grid_layout_widget_11 = QWidget(add_record)
    grid_layout_11 = QGridLayout(grid_layout_widget_11)
    sale_price_title = QLabel(grid_layout_widget_11)
    grid_layout_widget_22 = QWidget(add_record)
    grid_layout_22 = QGridLayout(grid_layout_widget_22)
    sale_price_input = QLineEdit(grid_layout_widget_22)
    # 持仓价格和显示框
    grid_layout_widget_6 = QWidget(add_record)
    grid_layout_6 = QGridLayout(grid_layout_widget_6)
    have_avg_price = QLabel(grid_layout_widget_6)
    grid_layout_widget_19 = QWidget(add_record)
    grid_layout_19 = QGridLayout(grid_layout_widget_19)
    buv_avg_price_show = QLineEdit(grid_layout_widget_19)
    # 持仓数量和显示框
    grid_layout_widget_7 = QWidget(add_record)
    grid_layout_7 = QGridLayout(grid_layout_widget_7)
    have_num_title = QLabel(grid_layout_widget_7)
    grid_layout_widget_18 = QWidget(add_record)
    grid_layout_18 = QGridLayout(grid_layout_widget_18)
    have_num_show = QLineEdit(grid_layout_widget_18)
    # 当前盈利和显示框
    grid_layout_widget_8 = QWidget(add_record)
    grid_layout_8 = QGridLayout(grid_layout_widget_8)
    win_title = QLabel(grid_layout_widget_8)
    grid_layout_widget_24 = QWidget(add_record)
    grid_layout_24 = QGridLayout(grid_layout_widget_24)
    win_show = QLineEdit(grid_layout_widget_24)
    # 可卖数量和显示框
    grid_layout_widget_9 = QWidget(add_record)
    grid_layout_9 = QGridLayout(grid_layout_widget_9)
    can_sale_num_title = QLabel(grid_layout_widget_9)
    grid_layout_widget_23 = QWidget(add_record)
    grid_layout_23 = QGridLayout(grid_layout_widget_23)
    can_sale_num_show = QLineEdit(grid_layout_widget_23)
    # 查询按钮 计算按钮 保存按钮
    # grid_layout_widget_26 = QWidget(add_record)
    # grid_layout_26 = QGridLayout(grid_layout_widget_26)
    # query_button = QPushButton(grid_layout_widget_26)

    # grid_layout_widget_27 = QWidget(add_record)
    # grid_layout_27 = QGridLayout(grid_layout_widget_27)
    # compute_button = QPushButton(grid_layout_widget_27)

    grid_layout_widget_28 = QWidget(add_record)
    grid_layout_28 = QGridLayout(grid_layout_widget_28)
    save_button = QPushButton(grid_layout_widget_28)

    grid_layout_widget_29 = QWidget(add_record)
    grid_layout_29 = QGridLayout(grid_layout_widget_29)
    text_edit = QTextEdit(grid_layout_widget_29)
    menubar = QMenuBar(WINDOW)
    edit = QMenu(menubar)
    tool = QMenu(menubar)
    program = QMenu(menubar)
    help = QMenu(menubar)
    add = QAction(WINDOW)
    query = QAction(WINDOW)
    delete_record = QAction(WINDOW)
    add_share = QAction(WINDOW)
    import_share = QAction(WINDOW)
    login = QAction(WINDOW)
    logout = QAction(WINDOW)
    exit = QAction(WINDOW)
    about = QAction(WINDOW)
    slot_func = None

    @classmethod
    def init_window(cls):
        cls.slot_func = SlotFunc(cls)
        cls.init_widget()
        cls.init_button()
        cls.init_menu()
        cls.set_style_sheet()
        cls.init_text()
        cls.add_slot_func()
        QMetaObject.connectSlotsByName(WINDOW)

    @classmethod
    def init_menu(cls):
        WINDOW.setCentralWidget(CENTRAL_WIDGET)
        cls.menubar.setGeometry(QRect(0, 0, 960, 23))
        cls.menubar.setObjectName(_fromUtf8("menubar"))
        cls.edit.setObjectName(_fromUtf8("edit"))
        cls.tool.setObjectName(_fromUtf8("tool"))
        cls.program.setObjectName(_fromUtf8("program"))
        cls.help.setObjectName(_fromUtf8("help"))
        WINDOW.setMenuBar(cls.menubar)
        cls.statusbar.setObjectName(_fromUtf8("statusbar"))
        WINDOW.setStatusBar(cls.statusbar)
        cls.add.setObjectName(_fromUtf8("add"))
        cls.query.setObjectName(_fromUtf8("query"))
        cls.delete_record.setObjectName(_fromUtf8("delete_record"))
        cls.add_share.setObjectName(_fromUtf8("add_share"))
        cls.import_share.setObjectName(_fromUtf8("import_share"))
        cls.login.setObjectName(_fromUtf8("login"))
        cls.logout.setObjectName(_fromUtf8("logout"))
        cls.exit.setObjectName(_fromUtf8("exit"))
        cls.about.setObjectName(_fromUtf8("about"))
        cls.edit.addAction(cls.add)
        cls.edit.addAction(cls.query)
        cls.edit.addAction(cls.delete_record)

        cls.tool.addAction(cls.add_share)
        cls.tool.addAction(cls.import_share)
        cls.tool.addSeparator()
        cls.tool.addAction(cls.login)
        cls.tool.addAction(cls.logout)

        cls.program.addAction(cls.exit)
        cls.help.addAction(cls.about)

        cls.menubar.addAction(cls.edit.menuAction())
        cls.menubar.addAction(cls.tool.menuAction())
        cls.menubar.addAction(cls.program.menuAction())
        cls.menubar.addAction(cls.help.menuAction())

    @classmethod
    def add_slot_func(cls):
        """增加槽函数"""
        cls.share_code_input.textChanged.connect(
            cls.slot_func.query_share_code)
        cls.save_button.clicked.connect(cls.slot_func.save_record)

    @classmethod
    def init_button(cls):
        """初始化按钮"""
        # cls.grid_layout_widget_26.setGeometry(QRect(160, 390, 121, 50))
        # cls.grid_layout_widget_26.setObjectName(_fromUtf8("grid_layout_widget_26"))
        # cls.grid_layout_26.setObjectName(_fromUtf8("grid_layout_26"))
        # cls.query_button.setFont(WindowCons.get_font(bold=True))
        # cls.query_button.setFlat(False)
        # cls.query_button.setObjectName(_fromUtf8("query_button"))
        # cls.grid_layout_26.addWidget(cls.query_button, 0, 0, 1, 1)
        # cls.grid_layout_widget_27.setGeometry(QRect(300, 390, 121, 50))
        # cls.grid_layout_widget_27.setObjectName(_fromUtf8("grid_layout_widget_27"))
        # cls.grid_layout_27.setObjectName(_fromUtf8("grid_layout_27"))
        # cls.compute_button.setFont(WindowCons.get_font(bold=True))
        # cls.compute_button.setObjectName(_fromUtf8("compute_button"))
        # cls.grid_layout_27.addWidget(cls.compute_button, 0, 0, 1, 1)
        cls.grid_layout_widget_28.setGeometry(QRect(440, 390, 121, 50))
        cls.grid_layout_widget_28.setObjectName(
            _fromUtf8("grid_layout_widget_28"))
        cls.grid_layout_28.setObjectName(_fromUtf8("grid_layout_28"))
        cls.save_button.setFont(WindowCons.get_font(bold=True))
        cls.save_button.setObjectName(_fromUtf8("save_button"))
        cls.grid_layout_28.addWidget(cls.save_button, 0, 0, 1, 1)
        cls.grid_layout_widget_29.setGeometry(QRect(570, 390, 160, 73))
        cls.grid_layout_widget_29.setObjectName(
            _fromUtf8("grid_layout_widget_29"))
        cls.grid_layout_29.setObjectName(_fromUtf8("grid_layout_29"))
        cls.text_edit.setEnabled(False)
        cls.text_edit.setReadOnly(True)
        cls.text_edit.setFrameShape(False)
        cls.text_edit.setObjectName(_fromUtf8("textEdit"))
        cls.grid_layout_29.addWidget(cls.text_edit, 0, 0, 1, 1)

    @classmethod
    def set_style_sheet(cls):
        """设置样式"""
        # cls.query_button.setStyleSheet(WindowCons.button_style())
        cls.save_button.setStyleSheet(WindowCons.button_style())
        # cls.compute_button.setStyleSheet(WindowCons.button_style())
        cls.add_record.setStyleSheet(WindowCons.background_image())

        cls.title.setStyleSheet(WindowCons.LIGHT_BLUE_STYLE)
        cls.sale_num_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.share_name_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.sale_price_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.buy_date_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.win_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.buy_num_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.can_sale_num_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.have_num_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.share_code_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.buy_price_title.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.have_avg_price.setStyleSheet(WindowCons.WHITE_STYLE)
        cls.sale_date_title.setStyleSheet(WindowCons.WHITE_STYLE)
        # cls.text_edit.setAttribute(Qt.WA_TranslucentBackground, True)
        # cls.text_edit.repaint()
        cls.text_edit.setStyleSheet(WindowCons.TRANSPARENT)
        palette1 = QPalette()
        palette1.setBrush(
            cls.add_record.backgroundRole(),
            QBrush(QPixmap(':backgroud.png').scaled(cls.add_record.size())))
        cls.add_record.setPalette(palette1)
        cls.add_record.setStyleSheet(WindowCons.background_image())

    @classmethod
    def init_widget(cls):
        CENTRAL_WIDGET.setObjectName(_fromUtf8("centralwidget"))
        cls.add_record.setGeometry(QRect(-1, -1, 961, 561))
        cls.add_record.setObjectName(_fromUtf8("add_record"))
        cls.grid_layout_widget.setGeometry(QRect(50, 10, 314, 50))
        cls.grid_layout_widget.setObjectName(_fromUtf8("gridLayoutWidget"))
        cls.grid_layout.setObjectName(_fromUtf8("gridLayout"))
        cls.title.setFont(WindowCons.get_font(size=16, weight=50))
        cls.title.setTextFormat(Qt.PlainText)
        cls.title.setScaledContents(False)
        cls.title.setAlignment(Qt.AlignCenter)
        cls.title.setObjectName(_fromUtf8("title"))
        cls.grid_layout.addWidget(cls.title, 0, 0, 1, 1)
        cls._init_labels()

    @classmethod
    def init_text(cls):
        """初始化文字"""
        WINDOW.setWindowTitle(_translate("MainWindow", "驰骋A股", None))
        cls.title.setText(_translate("MainWindow", "新增交易记录", None))
        cls.share_code_title.setText(_translate("MainWindow", "股票代码", None))
        cls.buy_date_title.setText(_translate("MainWindow", "买入日期", None))
        cls.buy_price_title.setText(_translate("MainWindow", "买入价格", None))
        cls.buy_num_title.setText(_translate("MainWindow", "买入数量", None))
        cls.have_avg_price.setText(_translate("MainWindow", "持仓均价", None))
        cls.have_num_title.setText(_translate("MainWindow", "持仓数量", None))
        cls.win_title.setText(_translate("MainWindow", "当前盈利", None))
        cls.can_sale_num_title.setText(_translate("MainWindow", "可卖数量", None))
        cls.sale_date_title.setText(_translate("MainWindow", "卖出日期", None))
        cls.sale_price_title.setText(_translate("MainWindow", "卖出价格", None))
        cls.share_name_title.setText(_translate("MainWindow", "股票名称", None))
        cls.sale_num_title.setText(_translate("MainWindow", "卖出数量", None))
        # cls.query_button.setText(_translate("MainWindow", "查询", None))
        # cls.compute_button.setText(_translate("MainWindow", "计算", None))
        cls.save_button.setText(_translate("MainWindow", "保存", None))
        cls.text_edit.setHtml(
            _translate(
                "MainWindow",
                "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
                "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
                "p, li { white-space: pre-wrap; }\n"
                "</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
                "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">数量单位:手(1手=100股)</p>\n"
                "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">货币单位:元</p></body></html>",
                None))
        cls.edit.setTitle(_translate("MainWindow", "编辑", None))
        cls.tool.setTitle(_translate("MainWindow", "工具", None))
        cls.program.setTitle(_translate("MainWindow", "程序", None))
        cls.help.setTitle(_translate("MainWindow", "帮助", None))

        cls.add.setText(_translate("MainWindow", "新增交易记录", None))
        cls.query.setText(_translate("MainWindow", "查询交易记录", None))
        cls.delete_record.setText(_translate("MainWindow", "删除交易记录", None))
        cls.add_share.setText(_translate("MainWindow", "新增股票信息", None))
        cls.import_share.setText(_translate("MainWindow", "导入股票信息", None))
        cls.login.setText(_translate("MainWindow", "登录", None))
        cls.logout.setText(_translate("MainWindow", "注销", None))
        cls.exit.setText(_translate("MainWindow", "退出", None))
        cls.about.setText(_translate("MainWindow", "关于", None))
        cls.statusbar.showMessage(
            "本程序仅限内部人员使用,如作他用所承受的法律责任一概与作者无关(使用即代表你同意上述观点)")
        cls.statusbar.setStyleSheet(WindowCons.RED_STYLE)

    @classmethod
    def _init_labels(cls):
        """初始化页面的label"""
        cls.__init_share_code()  # 初始化股票代码以及输入框
        cls.__init_share_name()  # 初始化股票名称以及显示框
        cls.__init_buy_date()  # 初始化买入日期以及输入框
        cls.__init_sale_date()  # 初始化卖出日期以及输入框
        cls.__init_buy_num()  # 初始化买入数量以及输入框
        cls.__init_sale_num()  # 初始化卖出数量以及输入框
        cls.__init_buy_price()  # 初始化买入价格以及输入框
        cls.__init_sale_price()  # 初始化卖出价格以及输入框
        cls.__init_buy_avg_price()  # 初始化平均价以及显示框
        cls.__init_have_num()  # 初始化持仓数量以及显示框
        cls.__init_have_win()  # 初始化当前股票盈利情况以及显示框
        cls.__can_sale_num()  # 初始化可卖数量以及显示框

    @classmethod
    def __init_share_code(cls):
        cls.grid_layout_widget_2.setGeometry(QRect(160, 60, 101, 41))
        cls.grid_layout_widget_2.setObjectName(_fromUtf8("gridLayoutWidget_2"))
        cls.grid_layout_2.setObjectName(_fromUtf8("gridLayout_2"))
        cls.share_code_title.setFont(WindowCons.get_font(bold=True))
        cls.share_code_title.setTextFormat(Qt.PlainText)
        cls.share_code_title.setAlignment(Qt.AlignCenter)
        cls.share_code_title.setObjectName(_fromUtf8("share_code_title"))
        cls.grid_layout_2.addWidget(cls.share_code_title, 0, 0, 1, 1)
        cls.grid_layout_widget_14.setGeometry(QRect(280, 60, 141, 50))
        cls.grid_layout_widget_14.setObjectName(
            _fromUtf8("gridLayoutWidget_14"))
        cls.grid_layout_14.setObjectName(_fromUtf8("gridLayout_14"))
        cls.share_code_input.setFont(
            WindowCons.get_font(weight=50, family=WindowCons.YAHEI_UI_FAMILY))
        cls.share_code_input.setObjectName(_fromUtf8("share_code_input"))
        cls.share_code_input.setValidator(RegExpValidator())
        cls.grid_layout_14.addWidget(cls.share_code_input, 0, 0, 1, 1)

    @classmethod
    def __init_share_name(cls):
        cls.grid_layout_widget_12.setGeometry(QRect(450, 60, 101, 41))
        cls.grid_layout_widget_12.setObjectName(
            _fromUtf8("gridLayoutWidget_12"))
        cls.grid_layout_12.setObjectName(_fromUtf8("gridLayout_12"))
        cls.share_name_title.setFont(WindowCons.get_font(bold=True))
        cls.share_name_title.setTextFormat(Qt.PlainText)
        cls.share_name_title.setAlignment(Qt.AlignCenter)
        cls.share_name_title.setObjectName(_fromUtf8("share_name_title"))
        cls.grid_layout_12.addWidget(cls.share_name_title, 0, 0, 1, 1)

        cls.grid_layout_widget_21.setGeometry(QRect(570, 60, 141, 50))
        cls.grid_layout_widget_21.setObjectName(
            _fromUtf8("grid_layout_widget_21"))
        cls.grid_layout_21.setObjectName(_fromUtf8("grid_layout_21"))
        cls.share_name_show.setEnabled(True)
        cls.share_name_show.setFont(
            WindowCons.get_font(weight=50,
                                family=WindowCons.YAHEI_LIGHT_FAMILY))
        cls.share_name_show.setReadOnly(True)
        cls.share_name_show.setFrame(False)
        cls.share_name_show.setObjectName(_fromUtf8("share_name_show"))
        cls.grid_layout_21.addWidget(cls.share_name_show, 0, 0, 1, 1)

    @classmethod
    def __init_buy_date(cls):
        cls.grid_layout_widget_3.setGeometry(QRect(160, 110, 101, 41))
        cls.grid_layout_widget_3.setObjectName(_fromUtf8("gridLayoutWidget_3"))
        cls.grid_layout_3.setObjectName(_fromUtf8("gridLayout_3"))
        cls.buy_date_title.setFont(WindowCons.get_font(bold=True))
        cls.buy_date_title.setTextFormat(Qt.PlainText)
        cls.buy_date_title.setAlignment(Qt.AlignCenter)
        cls.buy_date_title.setObjectName(_fromUtf8("buy_date_title"))
        cls.grid_layout_3.addWidget(cls.buy_date_title, 0, 0, 1, 1)

        cls.grid_layout_widget_15.setGeometry(QRect(280, 110, 141, 41))
        cls.grid_layout_widget_15.setObjectName(
            _fromUtf8("gridLayoutWidget_15"))
        cls.grid_layout_15.setObjectName(_fromUtf8("gridLayout_15"))
        cls.buy_date_input.setEnabled(True)
        size_policy = WindowCons.get_size_policy(cls.buy_date_input)
        cls.buy_date_input.setSizePolicy(size_policy)
        cls.buy_date_input.setFont(
            WindowCons.get_font(family=WindowCons.YAHEI_LIGHT_FAMILY, size=12))
        cls.buy_date_input.setWrapping(False)
        cls.buy_date_input.setCalendarPopup(True)
        cls.buy_date_input.setFrame(False)
        cls.buy_date_input.setDate(
            QDate(datetime.datetime.date(datetime.datetime.now())))
        cls.buy_date_input.setObjectName(_fromUtf8("buy_date_input"))
        cls.grid_layout_15.addWidget(cls.buy_date_input, 0, 0, 1, 1)

    @classmethod
    def __init_sale_date(cls):
        cls.grid_layout_widget_10.setGeometry(QRect(450, 110, 101, 41))
        cls.grid_layout_widget_10.setObjectName(
            _fromUtf8("gridLayoutWidget_10"))
        cls.grid_layout_10.setObjectName(_fromUtf8("gridLayout_10"))
        cls.sale_date_title.setFont(WindowCons.get_font(bold=True))
        cls.sale_date_title.setTextFormat(Qt.PlainText)
        cls.sale_date_title.setAlignment(Qt.AlignCenter)
        cls.sale_date_title.setObjectName(_fromUtf8("buy_date_title_2"))
        cls.grid_layout_10.addWidget(cls.sale_date_title, 0, 0, 1, 1)

        cls.grid_layout_widget_20.setGeometry(QRect(570, 110, 141, 41))
        cls.grid_layout_widget_20.setObjectName(
            _fromUtf8("gridLayoutWidget_20"))
        cls.grid_layout_20.setObjectName(_fromUtf8("gridLayout_20"))
        cls.sale_date_input.setFont(
            WindowCons.get_font(size=12, family=WindowCons.YAHEI_LIGHT_FAMILY))
        cls.sale_date_input.setWrapping(False)
        cls.sale_date_input.setFrame(False)
        cls.sale_date_input.setCalendarPopup(True)
        cls.sale_date_input.setDate(
            QDate(datetime.datetime.date(datetime.datetime.now())))
        cls.sale_date_input.setObjectName(_fromUtf8("sale_date_input"))
        cls.grid_layout_20.addWidget(cls.sale_date_input, 0, 0, 1, 1)

    @classmethod
    def __init_buy_num(cls):
        cls.grid_layout_widget_5.setGeometry(QRect(160, 210, 101, 41))
        cls.grid_layout_widget_5.setObjectName(_fromUtf8("gridLayoutWidget_5"))
        cls.grid_layout_5.setObjectName(_fromUtf8("gridLayout_5"))
        cls.buy_num_title.setFont(WindowCons.get_font(bold=True))
        cls.buy_num_title.setTextFormat(Qt.PlainText)
        cls.buy_num_title.setAlignment(Qt.AlignCenter)
        cls.buy_num_title.setObjectName(_fromUtf8("buy_num_title"))
        cls.grid_layout_5.addWidget(cls.buy_num_title, 0, 0, 1, 1)

        cls.grid_layout_widget_16.setGeometry(QRect(280, 210, 141, 41))
        cls.grid_layout_widget_16.setObjectName(
            _fromUtf8("gridLayoutWidget_16"))
        cls.grid_layout_16.setObjectName(_fromUtf8("gridLayout_16"))
        cls.buy_num_input.setValidator(IntValidator())
        cls.buy_num_input.setText("100")
        cls.buy_num_input.setFont(
            WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY))
        cls.buy_num_input.setFrame(False)
        cls.buy_num_input.setObjectName(_fromUtf8("buy_num_input"))
        cls.grid_layout_16.addWidget(cls.buy_num_input, 0, 0, 1, 1)

    @classmethod
    def __init_sale_num(cls):
        # 初始化卖出数量以及输入框
        cls.grid_layout_widget_25.setGeometry(QRect(570, 210, 141, 41))
        cls.grid_layout_widget_25.setObjectName(
            _fromUtf8("gridLayoutWidget_25"))
        cls.grid_layout_25.setObjectName(_fromUtf8("gridLayout_25"))
        cls.sale_num_input.setValidator(IntValidator())
        cls.sale_num_input.setText("100")
        cls.sale_num_input.setFont(
            WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY))
        cls.sale_num_input.setFrame(False)
        cls.sale_num_input.setObjectName(_fromUtf8("sale_num_input"))
        cls.grid_layout_25.addWidget(cls.sale_num_input, 0, 0, 1, 1)

        cls.grid_layout_widget_13.setGeometry(QRect(450, 210, 101, 41))
        cls.grid_layout_widget_13.setObjectName(
            _fromUtf8("gridLayoutWidget_13"))
        cls.grid_layout_13.setObjectName(_fromUtf8("gridLayout_13"))
        cls.sale_num_title.setFont(WindowCons.get_font(bold=True))
        cls.sale_num_title.setTextFormat(Qt.PlainText)
        cls.sale_num_title.setAlignment(Qt.AlignCenter)
        cls.sale_num_title.setObjectName(_fromUtf8("buy_num_title_2"))
        cls.grid_layout_13.addWidget(cls.sale_num_title, 0, 0, 1, 1)

    @classmethod
    def __init_buy_price(cls):
        # 初始化买入价格以及输入框
        cls.grid_layout_widget_4.setGeometry(QRect(160, 160, 101, 41))
        cls.grid_layout_widget_4.setObjectName(_fromUtf8("gridLayoutWidget_4"))
        cls.grid_layout_4.setObjectName(_fromUtf8("gridLayout_4"))
        cls.buy_price_title.setFont(WindowCons.get_font(bold=True))
        cls.buy_price_title.setTextFormat(Qt.PlainText)
        cls.buy_price_title.setAlignment(Qt.AlignCenter)
        cls.buy_price_title.setObjectName(_fromUtf8("buy_price_title"))
        cls.grid_layout_4.addWidget(cls.buy_price_title, 0, 0, 1, 1)

        cls.grid_layout_widget_17.setGeometry(QRect(280, 160, 141, 41))
        cls.grid_layout_widget_17.setObjectName(
            _fromUtf8("gridLayoutWidget_17"))
        cls.grid_layout_17.setObjectName(_fromUtf8("gridLayout_17"))
        cls.buy_price_input.setFont(
            WindowCons.get_font(family=WindowCons.YAHEI_LIGHT_FAMILY))
        cls.buy_price_input.setFrame(False)
        cls.buy_price_input.setValidator(DoubleValidator())
        cls.buy_price_input.setText("0.00")
        cls.buy_price_input.setObjectName(_fromUtf8("buy_price_input"))
        cls.grid_layout_17.addWidget(cls.buy_price_input, 0, 0, 1, 1)

    @classmethod
    def __init_sale_price(cls):
        # 初始化卖出价格以及输入框
        cls.grid_layout_widget_11.setGeometry(QRect(450, 160, 101, 41))
        cls.grid_layout_widget_11.setObjectName(
            _fromUtf8("gridLayoutWidget_11"))
        cls.grid_layout_11.setObjectName(_fromUtf8("gridLayout_11"))
        cls.sale_price_title.setFont(WindowCons.get_font(bold=True))
        cls.sale_price_title.setTextFormat(Qt.PlainText)
        cls.sale_price_title.setAlignment(Qt.AlignCenter)
        cls.sale_price_title.setObjectName(_fromUtf8("cls.sale_price_title"))
        cls.grid_layout_11.addWidget(cls.sale_price_title, 0, 0, 1, 1)

        cls.grid_layout_widget_22.setGeometry(QRect(570, 160, 141, 41))
        cls.grid_layout_widget_22.setObjectName(
            _fromUtf8("grid_layout_widget_22"))
        cls.grid_layout_22.setObjectName(_fromUtf8("grid_layout_22"))
        cls.sale_price_input.setFont(
            WindowCons.get_font(family=WindowCons.YAHEI_LIGHT_FAMILY))
        cls.sale_price_input.setFrame(False)
        cls.sale_price_input.setText("0.00")
        cls.sale_price_input.setValidator(DoubleValidator())
        cls.sale_price_input.setObjectName(_fromUtf8("sale_price_input"))
        cls.grid_layout_22.addWidget(cls.sale_price_input, 0, 0, 1, 1)

    @classmethod
    def __init_buy_avg_price(cls):
        # 初始化平均价以及显示框
        cls.grid_layout_widget_6.setGeometry(QRect(160, 260, 101, 41))
        cls.grid_layout_widget_6.setObjectName(
            _fromUtf8("grid_layout_widget_6"))
        cls.grid_layout_6.setObjectName(_fromUtf8("grid_layout_6"))
        cls.have_avg_price.setFont(WindowCons.get_font(bold=True))
        cls.have_avg_price.setTextFormat(Qt.PlainText)
        cls.have_avg_price.setAlignment(Qt.AlignCenter)
        cls.have_avg_price.setObjectName(_fromUtf8("have_avg_price"))
        cls.grid_layout_6.addWidget(cls.have_avg_price, 0, 0, 1, 1)

        cls.grid_layout_widget_19.setGeometry(QRect(280, 260, 141, 41))
        cls.grid_layout_widget_19.setObjectName(
            _fromUtf8("grid_layout_widget_19"))
        cls.grid_layout_19.setObjectName(_fromUtf8("grid_layout_19"))
        cls.buv_avg_price_show.setEnabled(True)
        cls.buv_avg_price_show.setFont(
            WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY))
        cls.buv_avg_price_show.setReadOnly(True)
        cls.buv_avg_price_show.setFrame(False)
        cls.buv_avg_price_show.setObjectName(_fromUtf8("buv_avg_price_show"))
        cls.grid_layout_19.addWidget(cls.buv_avg_price_show, 0, 0, 1, 1)

    @classmethod
    def __init_have_num(cls):
        # 初始化持仓数量以及显示框
        cls.grid_layout_widget_7.setGeometry(QRect(160, 310, 101, 41))
        cls.grid_layout_widget_7.setObjectName(
            _fromUtf8("grid_layout_widget_7"))
        cls.grid_layout_7.setObjectName(_fromUtf8("grid_layout_7"))
        cls.have_num_title.setFont(WindowCons.get_font(bold=True))
        cls.have_num_title.setTextFormat(Qt.PlainText)
        cls.have_num_title.setAlignment(Qt.AlignCenter)
        cls.have_num_title.setObjectName(_fromUtf8("have_num_title"))
        cls.grid_layout_7.addWidget(cls.have_num_title, 0, 0, 1, 1)

        cls.grid_layout_widget_18.setGeometry(QRect(280, 310, 141, 41))
        cls.grid_layout_widget_18.setObjectName(
            _fromUtf8("grid_layout_widget_18"))
        cls.grid_layout_18.setObjectName(_fromUtf8("grid_layout_18"))
        cls.have_num_show.setFont(
            WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY))
        cls.have_num_show.setReadOnly(True)
        cls.have_num_show.setFrame(False)
        cls.have_num_show.setObjectName(_fromUtf8("have_num_show"))
        cls.grid_layout_18.addWidget(cls.have_num_show, 0, 0, 1, 1)

    @classmethod
    def __init_have_win(cls):
        # 初始化当前股票盈利情况以及显示框
        cls.grid_layout_widget_8.setGeometry(QRect(450, 260, 101, 41))
        cls.grid_layout_widget_8.setObjectName(
            _fromUtf8("grid_layout_widget_8"))
        cls.grid_layout_8.setObjectName(_fromUtf8("grid_layout_8"))
        cls.win_title.setFont(WindowCons.get_font(bold=True))
        cls.win_title.setTextFormat(Qt.PlainText)
        cls.win_title.setAlignment(Qt.AlignCenter)
        cls.win_title.setObjectName(_fromUtf8("win_title"))
        cls.grid_layout_8.addWidget(cls.win_title, 0, 0, 1, 1)

        cls.grid_layout_widget_24.setGeometry(QRect(570, 260, 141, 41))
        cls.grid_layout_widget_24.setObjectName(
            _fromUtf8("grid_layout_widget_24"))
        cls.grid_layout_24.setObjectName(_fromUtf8("grid_layout_24"))
        cls.win_show.setEnabled(True)
        cls.win_show.setFont(
            WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY))
        cls.win_show.setReadOnly(True)
        cls.win_show.setObjectName(_fromUtf8("win_show"))
        cls.win_show.setFrame(False)
        cls.grid_layout_24.addWidget(cls.win_show, 0, 0, 1, 1)

    @classmethod
    def __can_sale_num(cls):
        # 初始化可卖数量以及显示框
        cls.grid_layout_widget_9.setGeometry(QRect(450, 310, 101, 41))
        cls.grid_layout_widget_9.setObjectName(
            _fromUtf8("grid_layout_widget_9"))
        cls.grid_layout_9.setObjectName(_fromUtf8("gridLayout_9"))
        cls.can_sale_num_title.setFont(WindowCons.get_font(bold=True))
        cls.can_sale_num_title.setTextFormat(Qt.PlainText)
        cls.can_sale_num_title.setAlignment(Qt.AlignCenter)
        cls.can_sale_num_title.setObjectName(_fromUtf8("can_sale_num_title"))
        cls.grid_layout_9.addWidget(cls.can_sale_num_title, 0, 0, 1, 1)

        cls.grid_layout_widget_23.setGeometry(QRect(570, 310, 141, 41))
        cls.grid_layout_widget_23.setObjectName(
            _fromUtf8("gridLayoutWidget_23"))
        cls.grid_layout_23.setObjectName(_fromUtf8("grid_layout_23"))
        cls.can_sale_num_show.setEnabled(True)
        cls.can_sale_num_show.setFont(
            WindowCons.get_font(family=WindowCons.JUI_LIGHT_FAMILY))
        cls.can_sale_num_show.setReadOnly(True)
        cls.can_sale_num_show.setFrame(False)
        cls.can_sale_num_show.setObjectName(_fromUtf8("can_sale_num_show"))
        cls.grid_layout_23.addWidget(cls.can_sale_num_show, 0, 0, 1, 1)
Пример #21
0
    def create_widget(self):
        """ Create the QStatusBar widget.

        """
        self.widget = QStatusBar(self.parent_widget())
Пример #22
0
 def setupUi(self, port):
     self.setObjectName("MainWindow")
     self.resize(600, 600)
     self.centralwidget = QWidget(self)
     p = self.centralwidget.palette()
     self.centralwidget.setAutoFillBackground(True)
     p.setColor(self.centralwidget.backgroundRole(), QColor(126, 135, 152))
     self.centralwidget.setPalette(p)
     self.centralwidget.setObjectName("centralwidget")
     self.gridLayout = QGridLayout(self.centralwidget)
     self.gridLayout.setObjectName("gridLayout")
     self.setCentralWidget(self.centralwidget)
     self.menubar = QMenuBar(self)
     self.menubar.setGeometry(QRect(0, 0, 808, 25))
     self.menubar.setObjectName("menubar")
     self.menuFile = QMenu(self.menubar)
     self.menuFile.setObjectName("menuFile")
     self.setMenuBar(self.menubar)
     self.statusbar = QStatusBar(self)
     self.statusbar.setObjectName("statusbar")
     self.setStatusBar(self.statusbar)
     self.actionQuit = QAction(self)
     self.actionQuit.setObjectName("actionQuit")
     self.menuFile.addSeparator()
     self.menuFile.addAction(self.actionQuit)
     self.menubar.addAction(self.menuFile.menuAction())
     self.actionReset = QAction(self)
     self.actionReset.setObjectName("reset")
     self.menuFile.addSeparator()
     self.menuFile.addAction(self.actionReset)
     self.menubar.addAction(self.menuFile.menuAction())
     # add other GUI objects
     self.graph_widget = GraphWidget(self.statusbar)
     self.gridLayout.addWidget(self.graph_widget, 1, 11, 10, 10)
     pixmap = QPixmap(':/images/cta-logo-mini.png')
     lbl = QLabel()
     lbl.setPixmap(pixmap)
     self.gridLayout.addWidget(lbl, 0, 0)
     p = self.graph_widget.palette()
     self.graph_widget.setAutoFillBackground(True)
     p.setColor(self.graph_widget.backgroundRole(),
                QColor(255, 255, 255))  # QColor(226, 235, 252))
     self.graph_widget.setPalette(p)
     self.quitButton = QPushButton()  # self.centralwidget)
     self.quitButton.setObjectName("quitButton")
     self.quitButton.setText(
         QApplication.translate("MainWindow", "Quit", None,
                                QApplication.UnicodeUTF8))
     self.gridLayout.addWidget(self.quitButton, 12, 0, 1, 1)
     self.info_label = InfoLabel(0, 4)
     self.info_label.setAutoFillBackground(True)
     self.gridLayout.addWidget(self.info_label, 1, 0, 1, 5)
     #self.info_label.setAlignment(PyQt4.Qt.AlignCenter);
     palette = QPalette()
     palette.setColor(self.info_label.backgroundRole(), Qt.lightGray)
     self.info_label.setPalette(palette)
     QObject.connect(self.quitButton, SIGNAL("clicked()"), self.stop)
     QObject.connect(self.actionQuit, SIGNAL("triggered()"), self.stop)
     QMetaObject.connectSlotsByName(self)
     self.retranslateUi()
     QObject.connect(self.actionQuit, SIGNAL("triggered()"), self.close)
     QMetaObject.connectSlotsByName(self)
     # Create GuiConnexion for ZMQ comminucation with pipeline
     self.guiconnection = GuiConnexion(gui_port=port,
                                       statusBar=self.statusbar)
     self.guiconnection.message.connect(self.graph_widget.pipechange)
     self.guiconnection.message.connect(self.info_label.pipechange)
     self.guiconnection.reset_message.connect(self.graph_widget.reset)
     self.guiconnection.reset_message.connect(self.info_label.reset)
     self.guiconnection.mode_message.connect(self.info_label.mode_receive)
     QObject.connect(self.actionReset, SIGNAL("triggered()"),
                     self.guiconnection.reset)
     QMetaObject.connectSlotsByName(self)
     # start the process
     self.guiconnection.start()
Пример #23
0
req = {'type': 'request'}

confManager = ConfManager.getManager()

fts = confManager.getValue('common', 'folders')

ui.nameLabel.setText(confManager.getValue('UI', 'username'))

i = 0
for ft in fts:
    flistItem = QListWidgetItem(QIcon('icon/folder.png'), ft, ui.folderList)
    ui.folderList.insertItem(i, flistItem)
    i += 1

statusBar = QStatusBar(d)
#print confManager.getValue('UI', 'window')
statusBar.showMessage(
    confManager.getValue('UI', 'statusbar')['messages']['init'])
d.setStatusBar(statusBar)


def connect(btn):
    """connect to UniFileSync Server"""
    req['param'] = {'name': 'all'}

    print btn.text()

    if btn.text() == 'Connect':
        req['action'] = 'start'
    else:
Пример #24
0
    def setupUi(self):
        self.setWindowTitle(self.tr("DB Manager"))
        self.setWindowIcon(QIcon(":/db_manager/icon"))
        self.resize(QSize(700, 500).expandedTo(self.minimumSizeHint()))

        # create central tab widget and add the first 3 tabs: info, table and preview
        self.tabs = QTabWidget()
        self.info = InfoViewer(self)
        self.tabs.addTab(self.info, self.tr("Info"))
        self.table = TableViewer(self)
        self.tabs.addTab(self.table, self.tr("Table"))
        self.preview = LayerPreview(self)
        self.tabs.addTab(self.preview, self.tr("Preview"))
        self.setCentralWidget(self.tabs)

        # display close button for all tabs but the first 3 ones, i.e.
        # HACK: just hide the close button where not needed (GS)
        self.tabs.setTabsClosable(True)
        self.tabs.tabCloseRequested.connect(self.close_tab)
        tabbar = self.tabs.tabBar()
        for i in range(3):
            btn = tabbar.tabButton(i, QTabBar.RightSide) if tabbar.tabButton(
                i, QTabBar.RightSide) else tabbar.tabButton(
                    i, QTabBar.LeftSide)
            btn.resize(0, 0)
            btn.hide()

        # Creates layout for message bar
        self.layout = QGridLayout(self.info)
        self.layout.setContentsMargins(0, 0, 0, 0)
        spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                 QSizePolicy.Expanding)
        self.layout.addItem(spacerItem, 1, 0, 1, 1)
        # init messageBar instance
        self.infoBar = QgsMessageBar(self.info)
        sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        self.infoBar.setSizePolicy(sizePolicy)
        self.layout.addWidget(self.infoBar, 0, 0, 1, 1)

        # create database tree
        self.dock = QDockWidget("Tree", self)
        self.dock.setObjectName("DB_Manager_DBView")
        self.dock.setFeatures(QDockWidget.DockWidgetMovable)
        self.tree = DBTree(self)
        self.dock.setWidget(self.tree)
        self.addDockWidget(Qt.LeftDockWidgetArea, self.dock)

        # create status bar
        self.statusBar = QStatusBar(self)
        self.setStatusBar(self.statusBar)

        # create menus
        self.menuBar = QMenuBar(self)
        self.menuDb = QMenu(self.tr("&Database"), self)
        self.menuBar.addMenu(self.menuDb)
        self.menuSchema = QMenu(self.tr("&Schema"), self)
        actionMenuSchema = self.menuBar.addMenu(self.menuSchema)
        self.menuTable = QMenu(self.tr("&Table"), self)
        actionMenuTable = self.menuBar.addMenu(self.menuTable)
        self.menuHelp = None  # QMenu(self.tr("&Help"), self)
        # actionMenuHelp = self.menuBar.addMenu(self.menuHelp)

        self.setMenuBar(self.menuBar)

        # create toolbar
        self.toolBar = QToolBar("Default", self)
        self.toolBar.setObjectName("DB_Manager_ToolBar")
        self.addToolBar(self.toolBar)

        # create menus' actions

        # menu DATABASE
        sep = self.menuDb.addSeparator()
        sep.setObjectName("DB_Manager_DbMenu_placeholder")
        sep.setVisible(False)

        self.actionRefresh = self.menuDb.addAction(
            QIcon(":/db_manager/actions/refresh"), self.tr("&Refresh"),
            self.refreshActionSlot, QKeySequence("F5"))
        self.actionSqlWindow = self.menuDb.addAction(
            QIcon(":/db_manager/actions/sql_window"), self.tr("&SQL window"),
            self.runSqlWindow, QKeySequence("F2"))
        self.menuDb.addSeparator()
        self.actionClose = self.menuDb.addAction(QIcon(), self.tr("&Exit"),
                                                 self.close,
                                                 QKeySequence("CTRL+Q"))

        # menu SCHEMA
        sep = self.menuSchema.addSeparator()
        sep.setObjectName("DB_Manager_SchemaMenu_placeholder")
        sep.setVisible(False)

        actionMenuSchema.setVisible(False)

        # menu TABLE
        sep = self.menuTable.addSeparator()
        sep.setObjectName("DB_Manager_TableMenu_placeholder")
        sep.setVisible(False)

        self.actionImport = self.menuTable.addAction(
            QIcon(":/db_manager/actions/import"),
            self.tr("&Import layer/file"), self.importActionSlot)
        self.actionExport = self.menuTable.addAction(
            QIcon(":/db_manager/actions/export"), self.tr("&Export to file"),
            self.exportActionSlot)
        self.menuTable.addSeparator()
        #self.actionShowSystemTables = self.menuTable.addAction(self.tr("Show system tables/views"), self.showSystemTables)
        #self.actionShowSystemTables.setCheckable(True)
        #self.actionShowSystemTables.setChecked(True)
        actionMenuTable.setVisible(False)

        # add actions to the toolbar
        self.toolBar.addAction(self.actionRefresh)
        self.toolBar.addAction(self.actionSqlWindow)
        self.toolBar.addAction(self.actionImport)
        self.toolBar.addAction(self.actionExport)
Пример #25
0
 def createStatusBar(self):
     sb = QStatusBar()
     sb.setFixedHeight(18)
     self.setStatusBar(sb)
     self.statusBar().showMessage(self.tr("Ready"))
Пример #26
0
    def __init__(self, appid, base, name):
        super(BrowserWindow, self).__init__()

        self.appid = appid
        self.name = name
        self.original_name = name
        self.base = base

        # Main widgets
        self.centralwidget = QWidget(self)
        self.gridLayout_2 = QGridLayout(self.centralwidget)
        self.setCentralWidget(self.centralwidget)
        self.urlLineEdit = QLineEdit(self)
        self.progressBar = QProgressBar(self)

        # Custom webview
        self.page = LocalWebPage()
        self.page.setFeaturePermission(self.page.mainFrame(),
                                       LocalWebPage.Notifications,
                                       LocalWebPage.PermissionGrantedByUser)
        self.webkitNotifications = WebkitNotifications(self)

        self.webViewMain = LocalWebView(self.centralwidget)
        self.webViewMain.setPage(self.page)
        self.gridLayout_2.addWidget(self.webViewMain, 0, 0, 1, 1)

        self.webViewMain.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_2.setContentsMargins(0, 0, 0, 0)

        self.menubar = QMenuBar(self)
        self.menuFile = QMenu(self.menubar)
        self.menuView = QMenu(self.menubar)
        self.menuEdit = QMenu(self.menubar)
        self.menuHelp = QMenu(self.menubar)
        self.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(self)
        self.setStatusBar(self.statusbar)
        self.toolBar = QToolBar(self)
        self.toolBar.setMovable(False)
        self.toolBar.setFloatable(False)
        self.addToolBar(Qt.TopToolBarArea, self.toolBar)

        # Create actions
        self.actionOpenLinkInNewWindow = self.page.action(
            self.page.OpenLinkInNewWindow)
        self.actionOpenLinkInNewWindow.setText(
            tr('BrowserWindow', 'Open in &Browser'))
        self.actionBack = self.page.action(self.page.Back)
        self.actionForward = self.page.action(self.page.Forward)
        self.actionStop = self.page.action(self.page.Stop)
        self.actionReload = self.page.action(self.page.Reload)
        self.actionHome = QAction(self)
        self.actionShowMenu = QAction(self)
        self.actionShowMenu.setCheckable(True)
        self.actionShowToolbar = QAction(self)
        self.actionShowToolbar.setCheckable(True)
        self.actionClose = QAction(self)
        self.actionModifyWebapp = QAction(self)
        self.actionEditPreferences = QAction(self)
        self.actionPrint = QAction(self)
        self.actionSaveLink = self.page.action(self.page.DownloadLinkToDisk)
        self.actionSaveLink.setEnabled(False)
        self.actionAbout = QAction(self)

        # Populate menu and toolbars
        self.menuFile.addAction(self.actionHome)
        self.menuFile.addAction(self.actionBack)
        self.menuFile.addAction(self.actionForward)
        self.menuFile.addAction(self.actionStop)
        self.menuFile.addAction(self.actionReload)
        self.menuFile.addSeparator()
        self.menuFile.addAction(self.actionPrint)
        self.menuFile.addSeparator()
        self.menuFile.addAction(self.actionClose)
        self.menuView.addAction(self.actionShowMenu)
        self.menuView.addAction(self.actionShowToolbar)
        self.menuView.addSeparator()
        self.menuEdit.addAction(self.actionModifyWebapp)
        #self.menuEdit.addAction(self.actionEditPreferences)
        self.menuHelp.addAction(self.actionAbout)
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuEdit.menuAction())
        self.menubar.addAction(self.menuView.menuAction())
        self.menubar.addAction(self.menuHelp.menuAction())
        self.toolBar.addAction(self.actionHome)
        self.toolBar.addAction(self.actionBack)
        self.toolBar.addAction(self.actionForward)
        self.toolBar.addWidget(self.urlLineEdit)

        self.toolBar.addAction(self.actionStop)
        self.toolBar.addAction(self.actionReload)

        self.retranslateUi()
        QMetaObject.connectSlotsByName(self)

        self.setWindowTitle(self.name)

        # Set up cookie jar that persists sessions
        self.cookieJar = PersistableCookieJar(self, identifier=self.appid)
        self.cookieJar.load()
        self.webViewMain.page().networkAccessManager().setCookieJar(
            self.cookieJar)

        # Set up link delegation so that external links open in web browser.
        self.webViewMain.page().setLinkDelegationPolicy(
            QWebPage.DelegateExternalLinks)

        self.desktopEntry = desktop.getEntry(self.appid)

        # Set icons for actions; this can't be done in the designer, AFAICT
        self.actionHome.setIcon(QIcon.fromTheme('go-home'))
        self.actionAbout.setIcon(QIcon.fromTheme('help-about'))

        # Set up shortcuts
        self.actionStop.setShortcut(Qt.Key_Escape)
        self.actionBack.setShortcut(QKeySequence.Back)
        self.actionForward.setShortcut(QKeySequence.Forward)
        self.actionReload.setShortcut(QKeySequence.Refresh)
        self.actionHome.setShortcut('Ctrl+Home')
        self.actionShowMenu.setShortcut('Ctrl+m')
        self.actionShowToolbar.setShortcut('Ctrl+t')
        self.actionPrint.setShortcut(QKeySequence.Print)

        self.backShortcut = QShortcut(self)
        self.backShortcut.setKey(Qt.Key_Back)
        self.backShortcut.activated.connect(self.webViewMain.back)

        self.forwardShortcut = QShortcut(self)
        self.forwardShortcut.setKey(Qt.Key_Forward)
        self.forwardShortcut.activated.connect(self.webViewMain.forward)

        # Set up context menu
        self.webViewMain.setContextMenuPolicy(Qt.CustomContextMenu)
        self.webViewMain.customContextMenuRequested.connect(self.showMenu)

        # Setup statusbar and toolbar
        for c in self.statusBar().children()[0].children():
            c.removeWidget(c)
        self.statusBar().addPermanentWidget(self.progressBar, 1)

        self.actionShowToolbar.setChecked(True)
        self.actionShowMenu.setChecked(True)

        # Icon
        if self.desktopEntry.hasKey('Icon'):
            self.icon = QIcon(self.desktopEntry.get('Icon'))
            self.setWindowIcon(self.icon)
        else:
            self.webViewMain.iconChanged.connect(self.setWindowIcon)

        # Set up events
        if self.desktopEntry.get('X-%s-menu-enabled' % APP_NAME) == '0':
            self.actionShowMenu.setChecked(False)
        else:
            self.actionShowMenu.setChecked(True)
        if self.desktopEntry.get('X-%s-toolbar-enabled' % APP_NAME) == '0':
            self.actionShowToolbar.setChecked(False)
        else:
            self.actionShowToolbar.setChecked(True)

        self.webViewMain.linkClicked.connect(self._onLinkClick)
        self.webViewMain.titleChanged.connect(self.setWindowTitle)
        self.webViewMain.loadProgress.connect(self._setLoadingStatus)
        self.webViewMain.urlChanged.connect(
            lambda x: self.urlLineEdit.setText(x.toString()))
        self.page.printRequested.connect(self._onPrint)
        self.page.loadFinished.connect(self._loadingFinished)
        self.actionHome.triggered.connect(
            lambda x: self.webViewMain.load(QUrl(self.base)))
        self.actionClose.triggered.connect(self.close)
        self.actionPrint.triggered.connect(self._onPrint)
        self.urlLineEdit.returnPressed.connect(self._onUrlEdit)
        self.actionShowToolbar.triggered.connect(self._onShowToolbar)
        self.actionShowMenu.triggered.connect(self._onShowMenu)
        self.actionAbout.triggered.connect(lambda x: about.show(self))
        self.actionModifyWebapp.triggered.connect(self._onModify)

        self._onShowMenu()
        self._onShowToolbar()

        try:
            self.resize(int(self.desktopEntry.getWindowWidth()),
                        int(self.desktopEntry.getWindowHeight()))
        except (ValueError, TypeError):
            self.resize(800, 600)

        # Load first page
        self.webViewMain.load(QUrl(base))

        self.editor = SiteEditorWindow(self.desktopEntry, isNew=False)
Пример #27
0
    def insertLayout(self):
        def createPixmapWidget(self, parent, iconName):
            w = QLabel(parent)
            parent.layout().addWidget(w)
            w.setFixedSize(16, 16)
            w.hide()
            if os.path.exists(iconName):
                w.setPixmap(QPixmap(iconName))
            return w

        self.setLayout(QVBoxLayout())
        self.layout().setMargin(2)

        self.warning_bar = gui.widgetBox(self,
                                         orientation="horizontal",
                                         margin=0,
                                         spacing=0)
        self.warning_icon = gui.widgetLabel(self.warning_bar, "")
        self.warning_label = gui.widgetLabel(self.warning_bar, "")
        self.warning_label.setStyleSheet("padding-top: 5px")
        self.warning_bar.setSizePolicy(QSizePolicy.Ignored,
                                       QSizePolicy.Maximum)
        gui.rubber(self.warning_bar)
        self.warning_bar.setVisible(False)

        self.topWidgetPart = gui.widgetBox(self,
                                           orientation="horizontal",
                                           margin=0)
        self.leftWidgetPart = gui.widgetBox(self.topWidgetPart,
                                            orientation="vertical",
                                            margin=0)
        if self.want_main_area:
            self.leftWidgetPart.setSizePolicy(
                QSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding))
            self.leftWidgetPart.updateGeometry()
            self.mainArea = gui.widgetBox(self.topWidgetPart,
                                          orientation="vertical",
                                          sizePolicy=QSizePolicy(
                                              QSizePolicy.Expanding,
                                              QSizePolicy.Expanding),
                                          margin=0)
            self.mainArea.layout().setMargin(4)
            self.mainArea.updateGeometry()

        if self.want_control_area:
            self.controlArea = gui.widgetBox(self.leftWidgetPart,
                                             orientation="vertical",
                                             margin=4)

        if self.want_graph and self.show_save_graph:
            graphButtonBackground = gui.widgetBox(self.leftWidgetPart,
                                                  orientation="horizontal",
                                                  margin=4)
            self.graphButton = gui.button(graphButtonBackground, self,
                                          "&Save Graph")
            self.graphButton.setAutoDefault(0)

        if self.want_status_bar:
            self.widgetStatusArea = QFrame(self)
            self.statusBarIconArea = QFrame(self)
            self.widgetStatusBar = QStatusBar(self)

            self.layout().addWidget(self.widgetStatusArea)

            self.widgetStatusArea.setLayout(QHBoxLayout(self.widgetStatusArea))
            self.widgetStatusArea.layout().addWidget(self.statusBarIconArea)
            self.widgetStatusArea.layout().addWidget(self.widgetStatusBar)
            self.widgetStatusArea.layout().setMargin(0)
            self.widgetStatusArea.setFrameShape(QFrame.StyledPanel)

            self.statusBarIconArea.setLayout(QHBoxLayout())
            self.widgetStatusBar.setSizeGripEnabled(0)

            self.statusBarIconArea.hide()

            self._warningWidget = createPixmapWidget(
                self.statusBarIconArea,
                os.path.join(environ.widget_install_dir,
                             "icons/triangle-orange.png"))
            self._errorWidget = createPixmapWidget(
                self.statusBarIconArea,
                os.path.join(environ.widget_install_dir,
                             "icons/triangle-red.png"))
Пример #28
0
    def __init__(self, parent=None):
        super().__init__(parent)

        # Load saved application settings
        self.recentNotes = []

        self.numberOfTabs = 0  # keep track of the total number of tabs in the window
        self.currentPage = None
        self.__mediator = MITM.Mediator.Mediator(
        )  # the mediator object. intermediary btwn view and model

        # create a timer
        timer = QTimer(self)
        # dialogs: saved to avoid eating memory by constant cre- and re- creation
        self.findDialog = None
        self.renameDialog = None
        self.helpAboutDialog = HelpAboutDialog(self)
        self.helpHelpDialog = HelpHelpDialog(self)
        self.recentFilesListWidget = QListWidget

        # create menus first
        self.fileMenu = self.menuBar().addMenu("File")
        self.recentNotesMenu = self.fileMenu.addMenu("Open Recent")
        self.editMenu = self.menuBar().addMenu("Edit")
        self.syncMenu = self.menuBar().addMenu("Sync")
        self.helpMenu = self.menuBar().addMenu("Help")

        # region Actions
        # create the menu actions
        # first the file menu actions
        fileNewAct = self.createAction(self,
                                       "&New",
                                       shortcut=QKeySequence.New,
                                       tooltip="Create a new note",
                                       enabled=True,
                                       slot=self.onNewClick)
        fileOpenRecentNotesAct = self.createAction(self,
                                                   "&Open Recent Note",
                                                   tooltip="open recent notes",
                                                   enabled=True,
                                                   slot=self.onOpenRecentNotes)
        fileQuitAct = self.createAction(self,
                                        "&Exit",
                                        shortcut=QKeySequence.Quit,
                                        tooltip="Exit the application",
                                        enabled=True,
                                        slot=self.close)

        # recent files menu actions
        self.recentFilesMenuAct = self.createAction(self.recentNotesMenu,
                                                    "File 1")

        # edit menu actions
        editInsertAct = self.createAction(self,
                                          "Ins&ert...",
                                          shortcut="Ctrl+I",
                                          tooltip="Insert a media file",
                                          enabled=True)
        editPreferencesAct = self.createAction(
            self,
            "&Preferences",
            shortcut="Ctrl+Shift+P",
            tooltip="Set application preferences",
            enabled=True)
        editFindAct = self.createAction(self,
                                        "&Find",
                                        shortcut=QKeySequence.Find,
                                        tooltip="Find a text string",
                                        slot=self.onFind)
        editUndoAct = self.createAction(
            self,
            "&Undo",
            shortcut=QKeySequence.Undo,
            tooltip="Roll back changes to document",
            slot=self.onUndo)
        editRedoAct = self.createAction(self,
                                        "&Redo",
                                        shortcut=QKeySequence.Redo,
                                        tooltip="Repeat the last action",
                                        slot=self.onRedo)
        editRenameAct = self.createAction(self,
                                          "&Rename...",
                                          shortcut="Ctrl+Shift+R",
                                          tooltip="Rename current note",
                                          slot=self.onRenameNote)

        # sync menu actions
        synCloudAcctAct = self.createAction(self,
                                            "Cloud &Account",
                                            shortcut="Alt+A",
                                            tooltip="Sync with cloud accounts",
                                            enabled=True)

        # help menu actions
        helpHelpAct = self.createAction(self,
                                        "Help",
                                        shortcut=QKeySequence.HelpContents,
                                        tooltip="Display help",
                                        enabled=True,
                                        slot=self.onHelpHelp)
        helpAboutAct = self.createAction(self,
                                         "A&bout",
                                         shortcut="Ctrl+Shift+B",
                                         tooltip="About application",
                                         enabled=True,
                                         slot=self.onHelpAbout)

        boldTextAction = self.createAction(self,
                                           "B",
                                           shortcut="Ctrl+B",
                                           tooltip="Bold text")
        italicsTextAction = self.createAction(self,
                                              "<i>I</i>",
                                              shortcut="Ctrl+I",
                                              tooltip="Italics text")
        # endregion

        # add actions to corresponding menu
        self.addActions_(
            self.fileMenu,
            (fileNewAct, fileOpenRecentNotesAct, fileQuitAct))  # to file menu
        self.addActions_(self.editMenu,
                         (editRenameAct, editUndoAct, editRedoAct, editFindAct,
                          editInsertAct, editPreferencesAct))  # to edit menu
        self.addActions_(self.helpMenu,
                         (helpHelpAct, helpAboutAct))  # to help menu
        self.addActions_(self.recentNotesMenu, (self.recentFilesMenuAct, ))
        # create tool bar and add relevant actions
        allToolBar = self.addToolBar(
            "All Tools"
        )  # tool bar that contains all tool;not separated into file/edit/*
        self.addActions_(allToolBar,
                         (fileNewAct, synCloudAcctAct, editInsertAct,
                          editFindAct, editUndoAct, editRedoAct))

        fontDetailsToolBar = self.addToolBar("Font Details")
        self.fontTypeComboBox = QFontComboBox(
            fontDetailsToolBar)  # get font list present on the user system
        self.fontSizeSpinBox = QSpinBox(fontDetailsToolBar)  # size of the font
        self.fontSizeSpinBox.setMinimum(7)
        self.fontSizeSpinBox.setValue(12)
        self.textBoldButton = QPushButton("B")
        self.addNewNoteButton = QPushButton("+")
        self.textItalicsButton = QPushButton("I")
        maskLabel = QLabel(
            fontDetailsToolBar)  # TODO: experimental, to be removed
        pixmap = QPixmap("Asset/guit.png")  # TODO: experimental, remove
        maskLabel.setPixmap(pixmap.mask())  # TODO: experimental, remove
        self.addWidgetToToolBar(fontDetailsToolBar,
                                (self.fontTypeComboBox, self.fontSizeSpinBox,
                                 self.textBoldButton, self.textItalicsButton))
        # self.addActions_(fontDetailsToolBar, (boldTextAction, italicsTextAction))

        # create a QTabWidget
        self.tabWidget = QTabWidget(self)
        self.tabWidget.setMovable(True)
        self.tabWidget.setTabsClosable(True)
        self.tabWidget.setTabPosition(QTabWidget.South)
        # self.setTabPosition(Qt.BottomDockWidgetArea, QTabWidget.South)  # TODO: not working yet. Handled
        self.tabWidgetTabBar = self.tabWidget.tabBar()
        self.tabWidget.setCornerWidget(self.addNewNoteButton,
                                       Qt.TopRightCorner)

        # create pages  # TODO:     let an event handler handle this job: HANDLED
        self.onWindowStartOpenNote()
        # self.page1 = View.TabbedPage.TabbedPage(self, Note("First", "/path"))
        # # add the pages to the tab Widget
        # self.tabWidget.addTab(self.page1, "Note 1 ")
        # self.currentPage = self.tabWidget.currentWidget()
        self.setCurrentPage()
        #        print("count() returned: ", self.tabWidget.count())

        # create "+" bar:  TODO: find a better way to create a plus tab: DONE
        # self.plusTabIndex = self.tabWidgetTabBar.insertTab(self.tabWidget.count() + 1,
        #                                         "+")  # this tab bears the "+" sign that indicates 'create new tab'
        # self.plusTabWidget = self.tabWidget.widget(self.plusTabIndex)  # get a reference to the plus tab widget

        # create Dock widget that holds find dialog
        # self.dockWidget = QDockWidget(self)
        # self.dockWidget.setAllowedAreas(Qt.TopDockWidgetArea)
        # self.dockWidget.setFeatures(QDockWidget.DockWidgetClosable|QDockWidget.DockWidgetMovable)
        # self.dockWidget.setWidget(FindDialog.FindDialog(self.currentPage, self))
        # self.dockWidget.hide()

        # do window namings and other stuffs
        self.statusbar = QStatusBar(self)
        self.statusbar.setSizeGripEnabled(False)
        self.setStatusBar(self.statusbar)
        self.setCentralWidget(self.tabWidget)
        self.setWindowTitle("Notes")

        # region Signal And Slot Bindings
        self.tabWidget.currentChanged.connect(self.setCurrentPage)
        # self.currentPage.firstTime.connect(self.openPageOnFirstNavigation)
        self.tabWidget.currentChanged.connect(
            self.notifyMediatorOfCurrentPageChange)
        # fileNewAct.triggered.connect(self.onNewClick)
        # fileQuitAct.triggered.connect(self.close)
        self.tabWidget.tabCloseRequested.connect(
            self.confirmTabCloseAndCloseTab)
        # self.tabWidget.tabCloseRequested.connect(self.holla)
        self.fontTypeComboBox.currentFontChanged.connect(self.changeFont)
        self.fontSizeSpinBox.valueChanged.connect(self.changeFontSize)
        self.textBoldButton.clicked.connect(self.toggleTextBold)
        self.textItalicsButton.clicked.connect(self.toggleTextItalics)
        timer.timeout.connect(self.onSaveClick)
        timer.timeout.connect(self.timed)
        self.addNewNoteButton.clicked.connect(self.onNewClick)
        self.currentPage.cursorPositionChanged.connect(
            self.reportCurrentCursor)
        self.recentNotesMenu.aboutToShow.connect(self.updateRecentNotesMenu)
        # editUndoAct.triggered.connect(self.currentPage.undo)
        # editRedoAct.triggered.connect(self.currentPage.redo)
        # endregion

        self.readSettings()
        # QTimer.singleShot(5000, self.onSaveClick)
        # Start the timer
        timer.start(1500000)