def __init__(self): super().__init__() self.searcher = SvgSearch(BLOCK_DIR) SvgSource.Search = self.searcher SvgSource.Parent = self self.loader = Loader() # self.loader.addTask("MFADEf") self.setWindowTitle(APP_NAME) self.setGeometry(0, 0, 800, 500) bar = QStatusBar(self) self.barPosition = QLabel(bar) bar.addWidget(self.barPosition, 1) self.barSelection = QLabel(bar) bar.addWidget(self.barSelection, 1) self.barZoom = QLabel(bar) bar.addWidget(self.barZoom, 1) self.barCursor = QLabel(bar) bar.addWidget(self.barCursor, 1) self.barHistory = QLabel(bar) bar.addWidget(self.barHistory, 1) self.setStatusBar(bar) main = QWidget(self) vbox = QVBoxLayout() vbox.setContentsMargins(0, 0, 0, 0) self.propertyPanel = Property(main) self.searchBox = QLineEdit(self) self.searchBox.setPlaceholderText(TR('Search blocks')) self.searchBox.textChanged.connect(self.updateSearches) # self.searchBox.returnPressed.connect(self.searchBlocks) self.searchResults = SvgBar(self) vbox.addWidget( Property._genVBox(self, self.searchBox, self.searchResults, 8)) main.setLayout(vbox) self.setCentralWidget(main) splitter = QSplitter(QtCore.Qt.Orientation.Horizontal) splitter.addWidget(self.propertyPanel) self.mapview = Map(main) self._updateCurrentFile('') splitter.addWidget(self.mapview) splitter.setStretchFactor(1, 2) splitter.setSizes([100, 100]) vbox.addWidget(splitter, 255) self.topMenus = {} self._addMenu(TR('&File'), TR('&New'), 'Ctrl+N', self.doNew) self._addMenu(TR('&File'), TR('&New Window'), 'Ctrl+Shift+N', lambda x: startNew()) self._addMenu(TR('&File'), '-') self._addMenu(TR('&File'), TR('&Open'), 'Ctrl+O', self.doOpen) self._addMenu(TR('&File'), '-') self._addMenu(TR('&File'), TR('&Save'), 'Ctrl+S', self.doSave) self._addMenu(TR('&File'), TR('&Save As...'), 'Ctrl+Shift+S', self.doSaveAs) self._addMenu(TR('&File'), '-') self._addMenu(TR('&File'), TR('&Export PNG...'), '', lambda x: self.doExportPngSvg(png=True)) self._addMenu(TR('&File'), TR('E&xport SVG...'), '', lambda x: self.doExportPngSvg(png=False)) self._addMenu(TR('&File'), '-') self._addMenu(TR('&File'), TR('&File Properties...'), 'F3', lambda x: FileProperty(self, self.fileMeta).exec_()) self._addMenu(TR('&File'), '-') self._addMenu( TR('&File'), TR('&Open Data Folder'), '', lambda x: QtGui.QDesktopServices.openUrl( QtCore.QUrl.fromLocalFile(BLOCK_DIR))) self._addMenu(TR('&File'), TR('&Download SVG Blocks'), '', self.actDownloadBlocks) self._addMenu(TR('&File'), '-') self._addMenu(TR('&File'), TR('&Quit'), '', lambda x: self._askSave(thenQuit=True)) self._addMenu(TR('&Edit'), TR('&Undo'), '', lambda x: self.mapview.actUndoRedo()) self._addMenu(TR('&Edit'), TR('&Redo'), '', lambda x: self.mapview.actUndoRedo(redo=True)) self._addMenu(TR('&Edit'), '-') self._addMenu(TR('&Edit'), TR('&Cut'), '', lambda x: self.mapview.actCut()) self._addMenu(TR('&Edit'), TR('&Copy'), '', lambda x: self.mapview.actCopy()) self._addMenu(TR('&Edit'), TR('&Paste'), '', lambda x: self.mapview.actPaste()) self._addMenu(TR('&Edit'), '-') self._addMenu(TR('&Edit'), TR('&Clear History'), 'Ctrl+K', lambda x: self.mapview.data.clearHistory()) self._addMenu(TR('&Edit'), '-') self._addMenu(TR('&Edit'), TR('&Select by Text'), 'Ctrl+F', lambda x: self.mapview.actSelectByText()) self._addMenu(TR('&View'), TR('&Center'), '', lambda x: self.mapview.center()) self._addMenu(TR('&View'), TR('Center &Selected'), 'Ctrl+Shift+H', lambda x: self.mapview.center(selected=True)) self._addMenu(TR('&View'), TR('100% &Zoom'), '', lambda x: self.mapview.center(resetzoom=True)) self._addMenu(TR('&View'), '-') self.showRuler = self._addMenu(TR('&View'), TR('&Ruler'), '', self.actShowRuler) self.showRuler.setCheckable(True) self.mapview.showRuler = not FLAGS["hide_ruler"] self.showRuler.setChecked(self.mapview.showRuler) self._addMenu(TR('&View'), '-') self._addMenu(TR('&View'), TR('&Logs'), '', lambda x: Logger(self, logfile).exec_()) self._addMenu(TR('&Help'), TR('&About'), '', lambda x: About(self).exec_()).setMenuRole( QAction.MenuRole.AboutRole) self.propertyPanel.update() self.showMaximized() self.fileMeta = {} import socket self.resetFileMeta = lambda: self.__setattr__( "fileMeta", { "author": socket.gethostname(), "desc": APP_NAME }) self.resetFileMeta() self.load(args.file or '') if args.convert: self.setVisible(False) if args.convert.endswith('.svg'): exportMapDataSvg(self, args.convert, self.mapview.data) else: self.mapview.scale = float(args.png_scale) exportMapDataPng(self, args.convert, self.mapview.data) print('Successfully export to {}'.format(args.convert)) sys.exit(0)
def _createStatusBar(self): status = QStatusBar() status.showMessage("") self.setStatusBar(status)
def _createLowerbar(self): status = QStatusBar() status.showMessage("I'm the Status Bar") self.setStatusBar(status)
def _setupUi(self): self.setWindowTitle(tr("{} Results").format(self.app.NAME)) self.resize(630, 514) self.centralwidget = QWidget(self) self.verticalLayout = QVBoxLayout(self.centralwidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setSpacing(0) self.actionsButton = QPushButton(tr("Actions")) self.detailsButton = QPushButton(tr("Details")) self.dupesOnlyCheckBox = QCheckBox(tr("Dupes Only")) self.deltaValuesCheckBox = QCheckBox(tr("Delta Values")) self.searchEdit = SearchEdit() self.searchEdit.setMaximumWidth(300) self.horizontalLayout = horizontalWrap( [ self.actionsButton, self.detailsButton, self.dupesOnlyCheckBox, self.deltaValuesCheckBox, None, self.searchEdit, 8, ] ) self.horizontalLayout.setSpacing(8) self.verticalLayout.addLayout(self.horizontalLayout) self.resultsView = ResultsView(self.centralwidget) self.resultsView.setSelectionMode(QAbstractItemView.ExtendedSelection) self.resultsView.setSelectionBehavior(QAbstractItemView.SelectRows) self.resultsView.setSortingEnabled(True) self.resultsView.setWordWrap(False) self.resultsView.verticalHeader().setVisible(False) h = self.resultsView.horizontalHeader() h.setHighlightSections(False) h.setSectionsMovable(True) h.setStretchLastSection(False) h.setDefaultAlignment(Qt.AlignLeft) self.verticalLayout.addWidget(self.resultsView) self.setCentralWidget(self.centralwidget) self._setupActions() self._setupMenu() self.statusbar = QStatusBar(self) self.statusbar.setSizeGripEnabled(True) self.setStatusBar(self.statusbar) self.statusLabel = QLabel(self) self.statusbar.addPermanentWidget(self.statusLabel, 1) if self.app.prefs.resultWindowIsMaximized: self.setWindowState(self.windowState() | Qt.WindowMaximized) else: if self.app.prefs.resultWindowRect is not None: self.setGeometry(self.app.prefs.resultWindowRect) # if not on any screen move to center of default screen # moves to center of closest screen if partially off screen frame = self.frameGeometry() if QDesktopWidget().screenNumber(self) == -1: moveToScreenCenter(self) elif QDesktopWidget().availableGeometry(self).contains(frame) is False: frame.moveCenter(QDesktopWidget().availableGeometry(self).center()) self.move(frame.topLeft()) else: moveToScreenCenter(self)
def __init__(self): super(PasswordChangeWrappedUI, self).__init__() self.setupUi(self) self.statusBar = QStatusBar() print("PasswordChangeWrappedUI", self.label_avatar.text())
def __init__(self, main_client_window): main_client_window.setObjectName("MainClientWindow") main_client_window.resize(756, 534) main_client_window.setMinimumSize(QSize(756, 534)) self.centralwidget = QWidget(main_client_window) self.centralwidget.setObjectName("centralwidget") self.label_contacts = QLabel(self.centralwidget) self.label_contacts.setGeometry(QRect(10, 0, 101, 16)) self.label_contacts.setObjectName("label_contacts") self.btn_add_contact = QPushButton(self.centralwidget) self.btn_add_contact.setGeometry(QRect(10, 450, 121, 31)) self.btn_add_contact.setObjectName("btn_add_contact") self.btn_remove_contact = QPushButton(self.centralwidget) self.btn_remove_contact.setGeometry(QRect(140, 450, 121, 31)) self.btn_remove_contact.setObjectName("btn_remove_contact") self.label_history = QLabel(self.centralwidget) self.label_history.setGeometry(QRect(300, 0, 391, 21)) self.label_history.setObjectName("label_history") self.text_message = QTextEdit(self.centralwidget) self.text_message.setGeometry(QRect(300, 360, 441, 71)) self.text_message.setObjectName("text_message") self.label_new_message = QLabel(self.centralwidget) self.label_new_message.setGeometry(QRect(300, 270, 450, 76)) self.label_new_message.setObjectName("label_new_message") self.text_menu = QMenuBar(self.label_new_message) self.text_menu.move(0, 51) self.action_bold = QAction(QIcon(os.path.join(STATIC, 'img/b.jpg')), 'Bold', self.text_message) self.action_italic = QAction(QIcon(os.path.join(STATIC, 'img/i.jpg')), 'Italic', self.text_message) self.action_underlined = QAction( QIcon(os.path.join(STATIC, 'img/u.jpg')), 'Underlined', self.text_message) self.action_smile = QAction( QIcon(os.path.join(STATIC, 'img/smile.gif')), 'smile', self.text_message) self.list_contacts = QListView(self.centralwidget) self.list_contacts.setGeometry(QRect(10, 20, 251, 411)) self.list_contacts.setObjectName("list_contacts") self.list_messages = QListView(self.centralwidget) self.list_messages.setGeometry(QRect(300, 20, 441, 271)) self.list_messages.setObjectName("list_messages") self.btn_send = QPushButton(self.centralwidget) self.btn_send.setGeometry(QRect(610, 450, 131, 31)) self.btn_send.setObjectName("btn_send") self.btn_clear = QPushButton(self.centralwidget) self.btn_clear.setGeometry(QRect(460, 450, 131, 31)) self.btn_clear.setObjectName("btn_clear") main_client_window.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(main_client_window) self.menubar.setGeometry(QRect(0, 0, 756, 21)) self.menubar.setObjectName("menubar") self.menu_file = QMenu(self.menubar) self.menu_file.setObjectName("file") self.menu_contacts = QMenu(self.menubar) self.menu_contacts.setObjectName("contacts") self.menu_profile = QMenu(self.menubar) self.menu_profile.setObjectName("profile") main_client_window.setMenuBar(self.menubar) self.statusBar = QStatusBar(main_client_window) self.statusBar.setObjectName("statusBar") main_client_window.setStatusBar(self.statusBar) self.menu_exit = QAction(main_client_window) self.menu_exit.setObjectName("menu_exit") self.menu_add_contact = QAction(main_client_window) self.menu_add_contact.setObjectName("menu_add_contact") self.menu_del_contact = QAction(main_client_window) self.menu_del_contact.setObjectName("menu_del_contact") self.menu_file.addAction(self.menu_exit) self.menu_contacts.addAction(self.menu_add_contact) self.menu_contacts.addAction(self.menu_del_contact) self.menu_contacts.addSeparator() self.menu_profile_avatar = QAction(main_client_window) self.menu_profile_avatar.setObjectName("menu_profile_avatar") self.menu_profile.addAction(self.menu_profile_avatar) self.menu_profile.addSeparator() self.menubar.addAction(self.menu_file.menuAction()) self.menubar.addAction(self.menu_contacts.menuAction()) self.menubar.addAction(self.menu_profile.menuAction()) self.retranslate_ui(main_client_window) self.btn_clear.clicked.connect(self.text_message.clear) QMetaObject.connectSlotsByName(main_client_window)
def __init__(self, model, controller): super().__init__() self._model = model self._controller = controller self.segmentcursor = False self.togglecolors = {"#1f77b4": "m", "m": "#1f77b4"} ################################################################# # define GUI layout and connect input widgets to external slots # ################################################################# self.setWindowTitle("biopeaks") self.setGeometry(50, 50, 1750, 750) self.setWindowIcon(QIcon(":/python_icon.png")) # figure0 for signal self.figure0 = Figure() self.canvas0 = FigureCanvas(self.figure0) self.ax00 = self.figure0.add_subplot(1, 1, 1) self.ax00.set_frame_on(False) self.figure0.subplots_adjust(left=0.04, right=0.98, bottom=0.25) self.line00 = None self.scat = None self.segmentspan = None # figure1 for marker self.figure1 = Figure() self.canvas1 = FigureCanvas(self.figure1) self.ax10 = self.figure1.add_subplot(1, 1, 1, sharex=self.ax00) self.ax10.get_xaxis().set_visible(False) self.ax10.set_frame_on(False) self.figure1.subplots_adjust(left=0.04, right=0.98) self.line10 = None # figure2 for statistics self.figure2 = Figure() self.canvas2 = FigureCanvas(self.figure2) self.ax20 = self.figure2.add_subplot(3, 1, 1, sharex=self.ax00) self.ax20.get_xaxis().set_visible(False) self.ax20.set_frame_on(False) self.line20 = None self.ax21 = self.figure2.add_subplot(3, 1, 2, sharex=self.ax00) self.ax21.get_xaxis().set_visible(False) self.ax21.set_frame_on(False) self.line21 = None self.ax22 = self.figure2.add_subplot(3, 1, 3, sharex=self.ax00) self.ax22.get_xaxis().set_visible(False) self.ax22.set_frame_on(False) self.line22 = None self.figure2.subplots_adjust(left=0.04, right=0.98) # navigation bar self.navitools = CustomNavigationToolbar(self.canvas0, self) # peak editing self.editcheckbox = QCheckBox("editable", self) self.editcheckbox.stateChanged.connect(self._model.set_peakseditable) # peak saving batch self.savecheckbox = QCheckBox("save during batch processing", self) self.savecheckbox.stateChanged.connect(self._model.set_savebatchpeaks) # peak auto-correction batch self.correctcheckbox = QCheckBox("correct during batch processing", self) self.correctcheckbox.stateChanged.connect( self._model.set_correctbatchpeaks) # selecting stats for saving self.periodcheckbox = QCheckBox("period", self) self.periodcheckbox.stateChanged.connect( lambda: self.select_stats("period")) self.ratecheckbox = QCheckBox("rate", self) self.ratecheckbox.stateChanged.connect( lambda: self.select_stats("rate")) self.tidalampcheckbox = QCheckBox("tidal amplitude", self) self.tidalampcheckbox.stateChanged.connect( lambda: self.select_stats("tidalamp")) # channel selection self.sigchanmenulabel = QLabel("biosignal") self.sigchanmenu = QComboBox(self) self.sigchanmenu.addItem("A1") self.sigchanmenu.addItem("A2") self.sigchanmenu.addItem("A3") self.sigchanmenu.addItem("A4") self.sigchanmenu.addItem("A5") self.sigchanmenu.addItem("A6") self.sigchanmenu.currentTextChanged.connect(self._model.set_signalchan) # initialize with default value self._model.set_signalchan(self.sigchanmenu.currentText()) self.markerchanmenulabel = QLabel("marker") self.markerchanmenu = QComboBox(self) self.markerchanmenu.addItem("none") self.markerchanmenu.addItem("I1") self.markerchanmenu.addItem("I2") self.markerchanmenu.addItem("A1") self.markerchanmenu.addItem("A2") self.markerchanmenu.addItem("A3") self.markerchanmenu.addItem("A4") self.markerchanmenu.addItem("A5") self.markerchanmenu.addItem("A6") self.markerchanmenu.currentTextChanged.connect( self._model.set_markerchan) # initialize with default value self._model.set_markerchan(self.markerchanmenu.currentText()) # processing mode (batch or single file) self.batchmenulabel = QLabel("mode") self.batchmenu = QComboBox(self) self.batchmenu.addItem("single file") self.batchmenu.addItem("multiple files") self.batchmenu.currentTextChanged.connect(self._model.set_batchmode) self.batchmenu.currentTextChanged.connect(self.toggle_options) # initialize with default value self._model.set_batchmode(self.batchmenu.currentText()) self.toggle_options(self.batchmenu.currentText()) # modality selection self.modmenulabel = QLabel("modality") self.modmenu = QComboBox(self) self.modmenu.addItem("ECG") self.modmenu.addItem("PPG") self.modmenu.addItem("RESP") self.modmenu.currentTextChanged.connect(self._model.set_modality) self.modmenu.currentTextChanged.connect(self.toggle_options) # initialize with default value self._model.set_modality(self.modmenu.currentText()) self.toggle_options(self.modmenu.currentText()) # segment selection; this widget can be openend / set visible from # the menu and closed from within itself (see mapping of segmentermap); # it provides utilities to select a segment from the signal self.segmentermap = QSignalMapper(self) self.segmenter = QDockWidget("select a segment", self) # disable closing such that widget can only be closed by confirming # selection or custom button self.segmenter.setFeatures(QDockWidget.NoDockWidgetFeatures) # Limit number of decimals to four. regex = QRegExp("[0-9]*\.?[0-9]{4}") validator = QRegExpValidator(regex) self.startlabel = QLabel("start") self.startedit = QLineEdit() self.startedit.setValidator(validator) self.endlabel = QLabel("end") self.endedit = QLineEdit() self.endedit.setValidator(validator) segmentfromcursor = QAction(QIcon(":/mouse_icon.png"), "select with mouse", self) segmentfromcursor.triggered.connect(self.enable_segmentedit) self.startedit.addAction(segmentfromcursor, 1) self.endedit.addAction(segmentfromcursor, 1) self.previewedit = QPushButton("preview segment") lambdafn = lambda: self._model.set_segment( [self.startedit.text(), self.endedit.text()]) self.previewedit.clicked.connect(lambdafn) self.confirmedit = QPushButton("confirm segment") self.confirmedit.clicked.connect(self._controller.segment_signal) self.confirmedit.clicked.connect(self.segmentermap.map) self.segmentermap.setMapping(self.confirmedit, 0) self.abortedit = QPushButton("abort segmentation") self.abortedit.clicked.connect(self.segmentermap.map) # reset the segment to None self.segmentermap.setMapping(self.abortedit, 2) self.segmenterlayout = QFormLayout() self.segmenterlayout.addRow(self.startlabel, self.startedit) self.segmenterlayout.addRow(self.endlabel, self.endedit) self.segmenterlayout.addRow(self.previewedit) self.segmenterlayout.addRow(self.confirmedit) self.segmenterlayout.addRow(self.abortedit) self.segmenterwidget = QWidget() self.segmenterwidget.setLayout(self.segmenterlayout) self.segmenter.setWidget(self.segmenterwidget) self.segmenter.setVisible(False) self.segmenter.setAllowedAreas(Qt.RightDockWidgetArea) self.addDockWidget(Qt.RightDockWidgetArea, self.segmenter) # set up menubar menubar = self.menuBar() # signal menu signalmenu = menubar.addMenu("biosignal") openSignal = QAction("load", self) openSignal.triggered.connect(self._controller.get_fpaths) signalmenu.addAction(openSignal) segmentSignal = QAction("select segment", self) segmentSignal.triggered.connect(self.segmentermap.map) self.segmentermap.setMapping(segmentSignal, 1) signalmenu.addAction(segmentSignal) self.segmentermap.mapped.connect(self.toggle_segmenter) saveSignal = QAction("save", self) saveSignal.triggered.connect(self._controller.get_wpathsignal) signalmenu.addAction(saveSignal) # peak menu peakmenu = menubar.addMenu("peaks") findPeaks = QAction("find", self) findPeaks.triggered.connect(self._controller.find_peaks) peakmenu.addAction(findPeaks) autocorrectPeaks = QAction("autocorrect", self) autocorrectPeaks.triggered.connect(self._controller.autocorrect_peaks) peakmenu.addAction(autocorrectPeaks) savePeaks = QAction("save", self) savePeaks.triggered.connect(self._controller.get_wpathpeaks) peakmenu.addAction(savePeaks) loadPeaks = QAction("load", self) loadPeaks.triggered.connect(self._controller.get_rpathpeaks) peakmenu.addAction(loadPeaks) # stats menu statsmenu = menubar.addMenu("statistics") calculateStats = QAction("calculate", self) calculateStats.triggered.connect(self._controller.calculate_stats) statsmenu.addAction(calculateStats) saveStats = QAction("save", self) saveStats.triggered.connect(self._controller.get_wpathstats) statsmenu.addAction(saveStats) # set up status bar to display error messages and current file path self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) self.progressBar = QProgressBar(self) self.progressBar.setRange(0, 1) self.statusBar.addPermanentWidget(self.progressBar) self.currentFile = QLabel() self.statusBar.addPermanentWidget(self.currentFile) # set up the central widget containing the plot and navigationtoolbar self.centwidget = QWidget() self.setCentralWidget(self.centwidget) # connect canvas0 to keyboard and mouse input for peak editing; # only widgets (e.g. canvas) that currently have focus capture # keyboard input: "You must enable keyboard focus for a widget if # it processes keyboard events." self.canvas0.setFocusPolicy(Qt.ClickFocus) self.canvas0.setFocus() self.canvas0.mpl_connect("key_press_event", self._controller.edit_peaks) self.canvas0.mpl_connect("button_press_event", self.get_xcursor) # arrange the three figure canvases in splitter object self.splitter = QSplitter(Qt.Vertical) # setting opaque resizing to false is important, since resizing gets # very slow otherwise once axes are populated self.splitter.setOpaqueResize(False) self.splitter.addWidget(self.canvas0) self.splitter.addWidget(self.canvas1) self.splitter.addWidget(self.canvas2) # define GUI layout self.vlayout0 = QVBoxLayout(self.centwidget) self.vlayout1 = QVBoxLayout() self.vlayoutA = QFormLayout() self.vlayoutB = QFormLayout() self.vlayoutC = QVBoxLayout() self.vlayoutD = QVBoxLayout() self.hlayout0 = QHBoxLayout() self.hlayout1 = QHBoxLayout() self.optionsgroupA = QGroupBox("processing options") self.vlayoutA.addRow(self.modmenulabel, self.modmenu) self.vlayoutA.addRow(self.batchmenulabel, self.batchmenu) self.optionsgroupA.setLayout(self.vlayoutA) self.optionsgroupB = QGroupBox("channels") self.vlayoutB.addRow(self.sigchanmenulabel, self.sigchanmenu) self.vlayoutB.addRow(self.markerchanmenulabel, self.markerchanmenu) self.optionsgroupB.setLayout(self.vlayoutB) self.optionsgroupC = QGroupBox("peak options") self.vlayoutC.addWidget(self.editcheckbox) self.vlayoutC.addWidget(self.savecheckbox) self.vlayoutC.addWidget(self.correctcheckbox) self.optionsgroupC.setLayout(self.vlayoutC) self.optionsgroupD = QGroupBox("select statistics for saving") self.vlayoutD.addWidget(self.periodcheckbox) self.vlayoutD.addWidget(self.ratecheckbox) self.vlayoutD.addWidget(self.tidalampcheckbox) self.optionsgroupD.setLayout(self.vlayoutD) self.vlayout1.addWidget(self.optionsgroupA) self.vlayout1.addWidget(self.optionsgroupB) self.vlayout1.addWidget(self.optionsgroupC) self.vlayout1.addWidget(self.optionsgroupD) self.hlayout0.addLayout(self.vlayout1) self.hlayout0.addWidget(self.splitter) self.hlayout0.setStretch(0, 1) self.hlayout0.setStretch(1, 15) self.vlayout0.addLayout(self.hlayout0) self.hlayout1.addWidget(self.navitools) self.vlayout0.addLayout(self.hlayout1) ############################################## # connect output widgets to external signals # ############################################## self._model.signal_changed.connect(self.plot_signal) self._model.marker_changed.connect(self.plot_marker) self._model.peaks_changed.connect(self.plot_peaks) self._model.period_changed.connect(self.plot_period) self._model.rate_changed.connect(self.plot_rate) self._model.tidalamp_changed.connect(self.plot_tidalamp) self._model.path_changed.connect(self.display_path) self._model.segment_changed.connect(self.plot_segment) self._model.status_changed.connect(self.display_status) self._model.progress_changed.connect(self.display_progress) self._model.model_reset.connect(self.reset_plot)
def __setup_ui__(self): self.setWindowTitle("测试") #窗口大小 self.resize(1400, 800) # 工具栏 self.frame_tool = QFrame(self) self.frame_tool.setObjectName("frame_tool") self.frame_tool.setGeometry(0, 0, self.width(), 25) self.frame_tool.setStyleSheet("border-color: rgb(0, 0, 0);") self.frame_tool.setFrameShape(QFrame.Panel) self.frame_tool.setFrameShadow(QFrame.Raised) # 1.1 界面1按钮 self.window1_btn = QToolButton(self.frame_tool) self.window1_btn.setCheckable(True) self.window1_btn.setText("window1") self.window1_btn.setObjectName("menu_btn") self.window1_btn.resize(100, 25) self.window1_btn.clicked.connect(self.click_window1) self.window1_btn.setAutoRaise(True) # 1.2 界面2按钮 self.window2_btn = QToolButton(self.frame_tool) self.window2_btn.setCheckable(True) self.window2_btn.setText("window2") self.window2_btn.setObjectName("menu_btn") self.window2_btn.resize(100, 25) self.window2_btn.move(self.window1_btn.width(), 0) self.window2_btn.clicked.connect(self.click_window2) self.window2_btn.setAutoRaise(True) self.btn_group = QButtonGroup(self.frame_tool) self.btn_group.addButton(self.window1_btn, 1) self.btn_group.addButton(self.window2_btn, 2) # 2. 工作区域 self.main_frame = QFrame(self) self.main_frame.setGeometry(0, 25, self.width(), self.height() - self.frame_tool.height()) # self.main_frame.setStyleSheet("background-color: rgb(65, 95, 255)") # 创建堆叠布局 self.stacked_layout = QStackedLayout(self.main_frame) # 第一个布局界面 self.main_frame1 = QMainWindow() self.frame1_bar = QStatusBar() self.frame1_bar.setObjectName("frame1_bar") self.main_frame1.setStatusBar(self.frame1_bar) self.frame1_bar.showMessage("欢迎进入frame1") rom_frame = QFrame(self.main_frame1) rom_frame.setGeometry(0, 0, self.width(), self.main_frame.height() - 25) rom_frame.setFrameShape(QFrame.Panel) rom_frame.setFrameShadow(QFrame.Raised) frame1_bar_frame = QFrame(self.main_frame1) frame1_bar_frame.setGeometry(0, self.main_frame.height(), self.width(), 25) # 第二个布局界面 self.main_frame2 = QMainWindow() self.frame2_bar = QStatusBar() self.frame2_bar.setObjectName("frame2_bar") self.main_frame2.setStatusBar(self.frame2_bar) self.frame2_bar.showMessage("欢迎进入frame2") custom_frame = QFrame(self.main_frame2) custom_frame.setGeometry(0, 0, self.width(), self.main_frame.height() - 25) custom_frame.setFrameShape(QFrame.Panel) custom_frame.setFrameShadow(QFrame.Raised) frame2_bar_frame = QFrame(self.main_frame2) frame2_bar_frame.setGeometry(0, self.main_frame.height(), self.width(), 25) # 把两个布局界面放进去 self.stacked_layout.addWidget(self.main_frame1) self.stacked_layout.addWidget(self.main_frame2)
def __init__(self): super(RegisterWrappedUI, self).__init__() self.setupUi(self) self.statusBar = QStatusBar() self.verticalLayout.addWidget(self.statusBar)
def createBottomArea(self): status = QStatusBar() self.setStatusBar(status)
def __init__(self, MainWin): # Main Window MainWin.setObjectName("UploadWindow") MainWin.setWindowTitle(MainWin.tr(self.title)) MainWin.resize(800, 600) self.centralWidget = QWidget(MainWin) self.centralWidget.setObjectName("centralWidget") MainWin.setCentralWidget(self.centralWidget) self.verticalLayout = QVBoxLayout(self.centralWidget) self.verticalLayout.setContentsMargins(11, 11, 11, 11) self.verticalLayout.setSpacing(6) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QHBoxLayout() self.pathLabel = QLabel("Directory:") self.horizontalLayout.addWidget(self.pathLabel) self.pathTextBox = QLineEdit() self.pathTextBox.setReadOnly(True) self.horizontalLayout.addWidget(self.pathTextBox) self.browseButton = QPushButton("Browse", self.centralWidget) self.browseButton.clicked.connect(MainWin.on_actionBrowse_triggered) self.horizontalLayout.addWidget(self.browseButton) self.verticalLayout.addLayout(self.horizontalLayout) # Splitter for Upload list/Log self.splitter = QSplitter(Qt.Vertical) # Table View (Upload list) self.uploadList = TableWidget(self.centralWidget) self.uploadList.setObjectName("uploadList") self.uploadList.setStyleSheet(""" QTableWidget { border: 2px solid grey; border-radius: 5px; } """) self.uploadList.setEditTriggers( QAbstractItemView.NoEditTriggers ) # use NoEditTriggers to disable editing self.uploadList.setAlternatingRowColors(True) self.uploadList.setSelectionBehavior(QAbstractItemView.SelectRows) self.uploadList.setSelectionMode(QAbstractItemView.NoSelection) self.uploadList.verticalHeader().setDefaultSectionSize( 18) # tighten up the row size self.uploadList.horizontalHeader().setStretchLastSection(True) self.uploadList.setSortingEnabled(True) # allow sorting self.splitter.addWidget(self.uploadList) # Log Widget self.logTextBrowser = QPlainTextEditLogger(self.centralWidget) self.logTextBrowser.widget.setObjectName("logTextBrowser") self.logTextBrowser.widget.setStyleSheet(""" QPlainTextEdit { border: 2px solid grey; border-radius: 5px; background-color: lightgray; } """) self.splitter.addWidget(self.logTextBrowser.widget) # add splitter self.splitter.setSizes([400, 200]) self.verticalLayout.addWidget(self.splitter) # Actions # Browse self.actionBrowse = QAction(MainWin) self.actionBrowse.setObjectName("actionBrowse") self.actionBrowse.setText(MainWin.tr("Browse")) self.actionBrowse.setToolTip(MainWin.tr("Set the upload directory")) self.actionBrowse.setShortcut(MainWin.tr("Ctrl+B")) # Upload self.actionUpload = QAction(MainWin) self.actionUpload.setObjectName("actionUpload") self.actionUpload.setText(MainWin.tr("Upload")) self.actionUpload.setToolTip(MainWin.tr("Upload files")) self.actionUpload.setShortcut(MainWin.tr("Ctrl+L")) self.actionUpload.setEnabled(False) # Rescan self.actionRescan = QAction(MainWin) self.actionRescan.setObjectName("actionRescan") self.actionRescan.setText(MainWin.tr("Rescan")) self.actionRescan.setToolTip(MainWin.tr("Rescan the upload directory")) self.actionRescan.setShortcut(MainWin.tr("Ctrl+R")) self.actionRescan.setEnabled(False) # Cancel self.actionCancel = QAction(MainWin) self.actionCancel.setObjectName("actionCancel") self.actionCancel.setText(MainWin.tr("Cancel")) self.actionCancel.setToolTip( MainWin.tr("Cancel any upload(s) in-progress")) self.actionCancel.setShortcut(MainWin.tr("Ctrl+C")) # Options self.actionOptions = QAction(MainWin) self.actionOptions.setObjectName("actionOptions") self.actionOptions.setText(MainWin.tr("Options")) self.actionOptions.setToolTip(MainWin.tr("Configuration Options")) self.actionOptions.setShortcut(MainWin.tr("Ctrl+P")) # Login self.actionLogin = QAction(MainWin) self.actionLogin.setObjectName("actionLogin") self.actionLogin.setText(MainWin.tr("Login")) self.actionLogin.setToolTip(MainWin.tr("Login to the server")) self.actionLogin.setShortcut(MainWin.tr("Ctrl+G")) self.actionLogin.setEnabled(False) # Logout self.actionLogout = QAction(MainWin) self.actionLogout.setObjectName("actionLogout") self.actionLogout.setText(MainWin.tr("Logout")) self.actionLogout.setToolTip(MainWin.tr("Logout of the server")) self.actionLogout.setShortcut(MainWin.tr("Ctrl+O")) self.actionLogout.setEnabled(False) # Exit self.actionExit = QAction(MainWin) self.actionExit.setObjectName("actionExit") self.actionExit.setText(MainWin.tr("Exit")) self.actionExit.setToolTip(MainWin.tr("Exit the application")) self.actionExit.setShortcut(MainWin.tr("Ctrl+Z")) # Help self.actionHelp = QAction(MainWin) self.actionHelp.setObjectName("actionHelp") self.actionHelp.setText(MainWin.tr("Help")) self.actionHelp.setToolTip(MainWin.tr("Help")) self.actionHelp.setShortcut(MainWin.tr("Ctrl+H")) # Menu Bar """ self.menuBar = QMenuBar(MainWin) self.menuBar.setObjectName("menuBar") MainWin.setMenuBar(self.menuBar) self.menuBar.setStyleSheet( "QMenuBar{font-family: Arial;font-style: normal;font-size: 10pt;font-weight: bold;};") """ # Tool Bar self.mainToolBar = QToolBar(MainWin) self.mainToolBar.setObjectName("mainToolBar") self.mainToolBar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) MainWin.addToolBar(Qt.TopToolBarArea, self.mainToolBar) # Upload self.mainToolBar.addAction(self.actionUpload) self.actionUpload.setIcon(qApp.style().standardIcon( QStyle.SP_FileDialogToParent)) # Rescan self.mainToolBar.addAction(self.actionRescan) self.actionRescan.setIcon(qApp.style().standardIcon( QStyle.SP_BrowserReload)) # Cancel self.mainToolBar.addAction(self.actionCancel) self.actionCancel.setIcon(qApp.style().standardIcon( QStyle.SP_BrowserStop)) self.actionCancel.setEnabled(False) # Options self.mainToolBar.addAction(self.actionOptions) self.actionOptions.setIcon(qApp.style().standardIcon( QStyle.SP_FileDialogDetailedView)) # this spacer right justifies everything that comes after it spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.mainToolBar.addWidget(spacer) # Login self.mainToolBar.addAction(self.actionLogin) self.actionLogin.setIcon(qApp.style().standardIcon( QStyle.SP_DialogApplyButton)) # Logout self.mainToolBar.addAction(self.actionLogout) self.actionLogout.setIcon(qApp.style().standardIcon( QStyle.SP_DialogOkButton)) # Help #self.mainToolBar.addAction(self.actionHelp) self.actionHelp.setIcon(qApp.style().standardIcon( QStyle.SP_MessageBoxQuestion)) # Exit self.mainToolBar.addAction(self.actionExit) self.actionExit.setIcon(qApp.style().standardIcon( QStyle.SP_DialogCancelButton)) # Status Bar self.statusBar = QStatusBar(MainWin) self.statusBar.setToolTip("") self.statusBar.setStatusTip("") self.statusBar.setObjectName("statusBar") MainWin.setStatusBar(self.statusBar) # configure logging self.logTextBrowser.widget.log_update_signal.connect(MainWin.updateLog) self.logTextBrowser.setFormatter( logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) logging.getLogger().addHandler(self.logTextBrowser) # finalize UI setup QMetaObject.connectSlotsByName(MainWin)
def __init__(self,MainWindow, headers, apiKey,checkBoxState): super(Ui_OtherWindow,self).__init__() self.ScRate = GetSystemMetrics(0)/1920 self.mainWindow = MainWindow self.headers = headers self.mainWindow.setObjectName("MainWindow") self.mainWindow.resize(350*self.ScRate, 393*self.ScRate) self.mainWindow.setMinimumSize(QSize(350*self.ScRate, 393*self.ScRate)) self.mainWindow.setMaximumSize(QSize(350*self.ScRate, 393*self.ScRate)) self.mainWindow.setWindowFlags(self.mainWindow.windowFlags() & ~Qt.WindowCloseButtonHint) self.mainWindow.setWindowIcon(QIcon(Icons["Standart"])) self.mainWindow = MainWindow self.headers = headers self.centralwidget = QWidget(self.mainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.verticalLayout = QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout_4 = QVBoxLayout() self.verticalLayout_4.setObjectName("verticalLayout_4") self.label = QLabel(self.centralwidget) font = QFont() font.setPointSize(10*self.ScRate) self.label.setFont(font) self.label.setObjectName("label") self.verticalLayout_4.addWidget(self.label) self.lineEdit = QLineEdit(self.centralwidget) self.lineEdit.setObjectName("lineEdit") self.verticalLayout_4.addWidget(self.lineEdit) self.verticalLayout.addLayout(self.verticalLayout_4) self.label_2 = QLabel(self.centralwidget) font = QFont() font.setPointSize(10*self.ScRate) self.label_2.setFont(font) self.label_2.setObjectName("label_2") self.verticalLayout.addWidget(self.label_2) self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.treeWidget = QTreeWidget(self.centralwidget) self.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu) self.treeWidget.customContextMenuRequested.connect(self.on_context_menu) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.treeWidget.sizePolicy().hasHeightForWidth()) self.treeWidget.setSizePolicy(sizePolicy) self.treeWidget.setObjectName("treeWidget") for i in range(len(self.headers)): item_0 = QTreeWidgetItem(self.treeWidget) item_0.setFlags(item_0.flags() | Qt.ItemIsEditable) self.horizontalLayout.addWidget(self.treeWidget) self.verticalLayout_2 = QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.horizontalLayout.addLayout(self.verticalLayout_2) self.verticalLayout.addLayout(self.horizontalLayout) self.gridLayout.addLayout(self.verticalLayout, 0, 0, 3, 1) self.horizontalLayout_2 = QHBoxLayout() self.horizontalLayout_2.setContentsMargins(150, -1, -1, -1) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButton_2 = QPushButton(self.centralwidget) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth()) self.pushButton_2.setSizePolicy(sizePolicy) self.pushButton_2.setObjectName("pushButton_2") self.horizontalLayout_2.addWidget(self.pushButton_2) self.pushButton = QPushButton(self.centralwidget) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth()) self.pushButton.setSizePolicy(sizePolicy) self.pushButton.setObjectName("pushButton") self.horizontalLayout_2.addWidget(self.pushButton) self.gridLayout.addLayout(self.horizontalLayout_2, 7, 0, 1, 1) spacerItem = QSpacerItem(20, 10, QSizePolicy.Minimum, QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 4, 0, 1, 1) self.checkBox = QCheckBox(self.centralwidget) self.checkBox.setChecked(eval(checkBoxState)) font = QFont() font.setFamily("MS Shell Dlg 2") font.setPointSize(9) font.setItalic(False) self.checkBox.setFont(font) self.checkBox.setObjectName("checkBox") self.gridLayout.addWidget(self.checkBox, 3, 0, 1, 1) self.mainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(self.mainWindow) self.menubar.setGeometry(QRect(0, 0, 350*self.ScRate, 26*self.ScRate)) self.menubar.setObjectName("menubar") self.mainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(self.mainWindow) self.statusbar.setObjectName("statusbar") self.mainWindow.setStatusBar(self.statusbar) self.create_popup_menu() self.pushButton.clicked.connect(self.saveBtn) self.pushButton_2.clicked.connect(self.cancel) self.mainWindow.keyPressEvent = self.keyPressEvent if type(apiKey) == list: try: self.lineEdit.setText(apiKey[0]) except IndexError: self.lineEdit.setText("") else: self.lineEdit.setText(apiKey) self.retranslateUi(self.mainWindow) self.treeWidget.resizeColumnToContents(0) root = self.treeWidget.invisibleRootItem() child_count = root.childCount() for i in range(child_count): item = root.child(i) url = item.text(0) if url == "İsim" or url == "Telefon No (Örn 9053xx..)": item.setFlags(item.flags() & ~Qt.ItemIsEditable) if url == "Mesaj Durumu": item.setHidden(True) QMetaObject.connectSlotsByName(self.mainWindow)
def __init__(self): super().__init__() # Configure self.isConnected = True self.isCleanUp = True self.setWindowTitle("TargetUpdateApp") self.createMenu() self.extractThread = ExtractThread() self.ftpThread = FtpThread() self.telnetThread = TelnetThread() self.labelHost = QLabel("Host:") self.inputHost = QLineEdit(self) self.labelPort = QLabel("Port:") self.inputPort = QLineEdit(self) self.labelUsername = QLabel("Username:"******"Password:"******"Test connections") self.testConnectionsBtn.clicked.connect(lambda:self.connectionsTest()) self.syncRsetBtn = QPushButton("Sync / Rset") self.syncRsetBtn.clicked.connect(lambda:self.syncRset()) self.hBoxLayout = QHBoxLayout() self.hBoxLayout.addWidget(self.labelHost) self.hBoxLayout.addWidget(self.inputHost) self.hBoxLayout.addWidget(self.labelPort) self.hBoxLayout.addWidget(self.inputPort) self.hBoxLayout.addWidget(self.labelUsername) self.hBoxLayout.addWidget(self.inputUsername) self.hBoxLayout.addWidget(self.labelPassword) self.hBoxLayout.addWidget(self.inputPassword) self.hBoxLayout.addWidget(self.testConnectionsBtn) self.hBoxLayout.addWidget(self.syncRsetBtn) # Set default connection params self.inputHost.setText(global_ftpHost) self.inputPort.setText(str(global_ftpPort)) self.inputUsername.setText(global_ftpUsername) self.inputPassword.setText(global_ftpPassword) # Log self.logOutput = QTextBrowser() self.logOutput.verticalScrollBar().setValue(self.logOutput.verticalScrollBar().maximum()) # Status bar self.statusBar = QStatusBar() # Layout self.widget = QWidget(self) self.setCentralWidget(self.widget) self.vBoxlayout = QVBoxLayout() self.vBoxlayout.addLayout(self.hBoxLayout) self.vBoxlayout.addWidget(self.logOutput) self.vBoxlayout.addWidget(self.statusBar) self.widget.setLayout(self.vBoxlayout) self.resize(800, 500) self.show()
def __init__(self): super(MSCollection, self).__init__() css = 'styles/style.qss' with open(css, 'r') as fh: self.setStyleSheet(fh.read()) self.setWindowTitle(texts.main_widow) screen = QDesktopWidget().screenGeometry() s_width = screen.width() s_heigth = screen.height() x = int(0.10 * s_width) y = int(0.10 * s_heigth) width = int(0.8 * s_width) height = int(0.8 * s_heigth) self.setGeometry(x, y, width, height) self.mdi_area = QMdiArea() brush = QBrush(QColor(250, 248, 224)) brush.setStyle(Qt.SolidPattern) self.mdi_area.setBackground(brush) self.setCentralWidget(self.mdi_area) self.menubar = QMenuBar(self) self.setMenuBar(self.menubar) self.statusbar = QStatusBar(self) self.setStatusBar(self.statusbar) # Menu and Submenu self.menu_insert = QMenu(self.menubar) self.menu_insert.setTitle(texts.insert) self.menu_edit = QMenu(self.menubar) self.menu_edit.setTitle(texts.edit) self.menu_edit_movie_others = QMenu(self.menu_edit) self.menu_edit_movie_others.setTitle(texts.menu_movie_others) self.menu_edit_series_others = QMenu(self.menu_edit) self.menu_edit_series_others.setTitle(texts.menu_series_others) self.menu_edit_season = QMenu(self.menu_edit) self.menu_edit_season.setTitle(texts.season_p) self.menu_edit_general = QMenu(self.menu_insert) self.menu_edit_general.setTitle(texts.general) self.menu_delete_orphans = QMenu(texts.delete_orphans) self.menu_search = QMenu(self.menubar) self.menu_search.setTitle(texts.search) self.menu_search_movies = QMenu(self.menu_search) self.menu_search_movies.setTitle(texts.movie_p) self.menu_search_series = QMenu(self.menu_search) self.menu_search_series.setTitle(texts.series_p) # Actions Insert ###################################################### self.action_insert_movie = QAction(texts.movie_p, self, triggered=self.insert_movie) self.action_insert_series = QAction(texts.series_p, self, triggered=self.insert_series) self.action_insert_season = QAction(texts.season_p, self, triggered=self.insert_season) # AddAction Insert self.menu_insert.addAction(self.action_insert_movie) self.menu_insert.addAction(self.action_insert_series) self.menu_insert.addAction(self.action_insert_season) # Actions Edit ###################################################### self.action_edit_movie = QAction(texts.movie_p, self, triggered=self.edit_movie) self.action_edit_series = QAction(texts.series_p, self, triggered=self.edit_series) self.action_edit_season = QAction(texts.season_p, self, triggered=self.edit_season) self.action_edit_rewrite_html = QAction(texts.rewrite_html, self, triggered=self.rewrite_html) self.action_edit_movie_cast = QAction(texts.cast_s, self, triggered=self.edit_movie_cast) self.action_edit_series_cast = QAction(texts.cast_s, self, triggered=self.edit_series_cast) self.action_edit_director = QAction(texts.director_s, self, triggered=self.edit_director) self.action_edit_creator = QAction(texts.creator_s, self, triggered=self.edit_creator) self.action_edit_box = QAction(texts.box, self) self.action_edit_box.triggered.connect(lambda: self.edit_others('box')) self.action_edit_category = QAction(texts.category_p, self) self.action_edit_category.triggered.connect( lambda: self.edit_others('category')) self.action_edit_media = QAction(texts.media_s, self) self.action_edit_media.triggered.connect( lambda: self.edit_others('media')) self.action_edit_actor = QAction(texts.actor_s, self) self.action_edit_actor.triggered.connect( lambda: self.edit_others('actor')) self.action_edit_character = QAction(texts.character_s, self) self.action_edit_character.triggered.connect( lambda: self.edit_others('character')) self.action_edit_keyword = QAction(texts.keyword, self) self.action_edit_keyword.triggered.connect( lambda: self.edit_others('keyword')) text = texts.season_s + ' ' + texts.cast_s self.action_edit_season_cast = QAction(text, self, triggered=self.edit_season_cast) # AddAction Edit self.menu_edit.addAction(self.action_edit_movie) self.menu_edit.addAction(self.menu_edit_movie_others.menuAction()) self.menu_edit_movie_others.addAction(self.action_edit_movie_cast) self.menu_edit_movie_others.addAction(self.action_edit_director) self.menu_edit_movie_others.addAction(self.action_edit_box) self.menu_edit.addAction(self.action_edit_series) self.menu_edit.addAction(self.menu_edit_series_others.menuAction()) self.menu_edit_series_others.addAction(self.action_edit_series_cast) self.menu_edit_series_others.addAction(self.action_edit_creator) self.menu_edit.addAction(self.menu_edit_general.menuAction()) self.menu_edit_general.addAction(self.action_edit_category) self.menu_edit_general.addAction(self.action_edit_media) self.menu_edit_general.addAction(self.action_edit_actor) self.menu_edit_general.addAction(self.action_edit_character) self.menu_edit_general.addAction(self.action_edit_keyword) self.menu_edit.addAction(self.action_edit_season) self.menu_edit.addAction(self.action_edit_season_cast) # Actions Search ###################################################### self.actions_view_movie_web_url = QAction( texts.lb_url, self, triggered=self.view_movie_web_url) self.actions_view_series_web_url = QAction( texts.lb_url, self, triggered=self.view_series_web_url) self.actions_search_movie_box = QAction( texts.box, self, triggered=self.search_movie_box) self.actions_search_movie_title = QAction(texts.title_p, self) self.actions_search_movie_title.triggered.connect( lambda: self.search_ms_title('movie')) self.actions_search_series_title = QAction(texts.title_p, self) self.actions_search_series_title.triggered.connect( lambda: self.search_ms_title('series')) self.actions_search_movie_category = QAction(texts.category_p, self) self.actions_search_movie_category.triggered.connect( lambda: self.search_ms_category('movie')) self.actions_search_series_category = QAction(texts.category_p, self) self.actions_search_series_category.triggered.connect( lambda: self.search_ms_category('series')) self.actions_search_movie_keyword = QAction(texts.keyword, self) self.actions_search_movie_keyword.triggered.connect( lambda: self.search_ms_keyword('movie')) self.actions_search_series_keyword = QAction(texts.keyword, self) self.actions_search_series_keyword.triggered.connect( lambda: self.search_ms_keyword('series')) text = texts.media_s + '/' + texts.year_s self.actions_search_movie_my = QAction(text, self) self.actions_search_movie_my.triggered.connect( lambda: self.search_ms_my('movie')) self.actions_search_series_my = QAction(text, self) self.actions_search_series_my.triggered.connect( lambda: self.search_ms_my('series')) # AddAction Search self.menu_search_movies.addAction(self.actions_search_movie_title) self.menu_search_movies.addAction(self.actions_search_movie_box) self.menu_search_movies.addAction(self.actions_search_movie_category) self.menu_search_movies.addAction(self.actions_search_movie_keyword) self.menu_search_movies.addAction(self.actions_search_movie_my) self.menu_search_series.addAction(self.actions_search_series_title) self.menu_search_series.addAction(self.actions_search_series_category) self.menu_search_series.addAction(self.actions_search_series_keyword) self.menu_search_series.addAction(self.actions_search_series_my) self.menu_search.addAction(self.menu_search_movies.menuAction()) self.menu_search.addAction(self.menu_search_series.menuAction()) # Actions Delete Orphans ############################################## self.action_delete_orphans_director = QAction( texts.director_p, self, triggered=self.delete_orphans_director) self.action_delete_orphans_creator = QAction( texts.creator_p, self, triggered=self.delete_orphans_creator) self.action_delete_orphans_cast = QAction( texts.cast_p, self, triggered=self.delete_orphans_cast) self.action_delete_orphans_actors = QAction( texts.actor_p, self, triggered=self.delete_orphans_actors) self.action_delete_orphans_character = QAction( texts.character_p, self, triggered=self.delete_orphans_character) self.action_delete_orphans_media = QAction( texts.media_p, self, triggered=self.delete_orphans_media) self.action_delete_orphans_category = QAction( texts.category_p, self, triggered=self.delete_orphans_category) # AddAction Search self.menu_delete_orphans.addAction(self.action_delete_orphans_director) self.menu_delete_orphans.addAction(self.action_delete_orphans_creator) self.menu_delete_orphans.addAction(self.action_delete_orphans_cast) self.menu_delete_orphans.addAction(self.action_delete_orphans_actors) self.menu_delete_orphans.addAction( self.action_delete_orphans_character) self.menu_delete_orphans.addAction(self.action_delete_orphans_media) self.menu_delete_orphans.addAction(self.action_delete_orphans_category) self.menu_edit.addAction(self.menu_delete_orphans.menuAction()) self.menu_edit.addAction(self.action_edit_rewrite_html) # AddAction Menu ###################################################### self.menubar.addAction(self.menu_insert.menuAction()) self.menubar.addAction(self.menu_edit.menuAction()) self.menubar.addAction(self.menu_search.menuAction())
def _build_ui(self): #each group has an empty widget at the bottom so they resize the way I want while also having the #labels where I want them layout = QGridLayout() self.tab_widget = QTabWidget() layout.addWidget(self.tab_widget) #layout for absolute thermo stuff absolute_widget = QWidget() absolute_layout = QGridLayout(absolute_widget) #box for sp sp_area_widget = QGroupBox("Single-point") sp_layout = QGridLayout(sp_area_widget) self.sp_selector = FilereaderComboBox(self.session, otherItems=['energy']) self.sp_selector.currentIndexChanged.connect(self.set_sp) sp_layout.addWidget(self.sp_selector, 0, 0, 1, 3, Qt.AlignTop) nrg_label = QLabel("E =") sp_layout.addWidget(nrg_label, 1, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.sp_nrg_line = QLineEdit() self.sp_nrg_line.setReadOnly(True) self.sp_nrg_line.setToolTip("electronic energy") sp_layout.addWidget(self.sp_nrg_line, 1, 1, 1, 1, Qt.AlignTop) sp_layout.addWidget(QLabel("E<sub>h</sub>"), 1, 2, 1, 1, Qt.AlignVCenter) sp_layout.addWidget(QWidget(), 2, 0) sp_layout.setColumnStretch(0, 0) sp_layout.setColumnStretch(1, 1) sp_layout.setRowStretch(0, 0) sp_layout.setRowStretch(1, 0) sp_layout.setRowStretch(2, 1) row = 0 #box for thermo therm_area_widget = QGroupBox("Thermal corrections") thermo_layout = QGridLayout(therm_area_widget) self.thermo_selector = FilereaderComboBox(self.session, otherItems=['frequency']) self.thermo_selector.currentIndexChanged.connect(self.set_thermo_mdl) thermo_layout.addWidget(self.thermo_selector, row, 0, 1, 3, Qt.AlignTop) row += 1 thermo_layout.addWidget(QLabel("T ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.temperature_line = QDoubleSpinBox() self.temperature_line.setMaximum(2**31 - 1) self.temperature_line.setValue(298.15) self.temperature_line.setSingleStep(10) self.temperature_line.setSuffix(" K") self.temperature_line.setMinimum(0) self.temperature_line.valueChanged.connect(self.set_thermo) thermo_layout.addWidget(self.temperature_line, row, 1, 1, 2, Qt.AlignTop) row += 1 thermo_layout.addWidget(QLabel("𝜔<sub>0</sub> ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.v0_edit = QDoubleSpinBox() self.v0_edit.setMaximum(4000) self.v0_edit.setValue(self.settings.w0) self.v0_edit.setSingleStep(25) self.v0_edit.setSuffix(" cm\u207b\u00b9") self.v0_edit.valueChanged.connect(self.set_thermo) self.v0_edit.setMinimum(0) self.v0_edit.setToolTip( "frequency parameter for quasi treatments of entropy") thermo_layout.addWidget(self.v0_edit, row, 1, 1, 2, Qt.AlignTop) row += 1 thermo_layout.addWidget(QLabel("𝛿ZPE ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.zpe_line = QLineEdit() self.zpe_line.setReadOnly(True) self.zpe_line.setToolTip("zero-point energy correction") thermo_layout.addWidget(self.zpe_line, row, 1, 1, 1, Qt.AlignTop) thermo_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 thermo_layout.addWidget(QLabel("𝛿H<sub>RRHO</sub> ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.enthalpy_line = QLineEdit() self.enthalpy_line.setReadOnly(True) self.enthalpy_line.setToolTip("RRHO enthalpy correction") thermo_layout.addWidget(self.enthalpy_line, row, 1, 1, 1, Qt.AlignTop) thermo_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 thermo_layout.addWidget(QLabel("𝛿G<sub>RRHO</sub> ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.rrho_g_line = QLineEdit() self.rrho_g_line.setReadOnly(True) self.rrho_g_line.setToolTip( """RRHO free energy correction\nRotational motion is completely independent from vibrations\nNormal mode vibrations behave like harmonic oscillators""" ) thermo_layout.addWidget(self.rrho_g_line, row, 1, 1, 1, Qt.AlignTop) thermo_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 dqrrho_g_label = QLabel() dqrrho_g_label.setText( "<a href=\"Grimme's Quasi-RRHO\" style=\"text-decoration: none;\">𝛿G<sub>Quasi-RRHO</sub></a> =" ) dqrrho_g_label.setTextFormat(Qt.RichText) dqrrho_g_label.setTextInteractionFlags(Qt.TextBrowserInteraction) dqrrho_g_label.linkActivated.connect(self.open_link) dqrrho_g_label.setToolTip("click to open a relevant reference\n" + \ "see the \"Computation of internal (gas‐phase) entropies\" section for a description of the method") thermo_layout.addWidget(dqrrho_g_label, row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.qrrho_g_line = QLineEdit() self.qrrho_g_line.setReadOnly(True) self.qrrho_g_line.setToolTip("Quasi-RRHO free energy correction\n" + \ "Vibrational entropy of each mode is weighted and complemented with rotational entropy\n" + \ "The weighting is much lower for modes with frequencies less than 𝜔\u2080") thermo_layout.addWidget(self.qrrho_g_line, row, 1, 1, 1, Qt.AlignTop) thermo_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 dqharm_g_label = QLabel("") dqharm_g_label.setText( "<a href=\"Truhlar's Quasi-Harmonic\" style=\"text-decoration: none;\">𝛿G<sub>Quasi-Harmonic</sub></a> =" ) dqharm_g_label.setTextFormat(Qt.RichText) dqharm_g_label.setTextInteractionFlags(Qt.TextBrowserInteraction) dqharm_g_label.linkActivated.connect(self.open_link) dqharm_g_label.setToolTip("click to open a relevant reference\n" + \ "see the \"Computations\" section for a description of the method") thermo_layout.addWidget(dqharm_g_label, row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.qharm_g_line = QLineEdit() self.qharm_g_line.setReadOnly(True) self.qharm_g_line.setToolTip("Quasi-hamonic free energy correction\n" + \ "For entropy, real vibrational modes lower than 𝜔\u2080 are treated as 𝜔\u2080") thermo_layout.addWidget(self.qharm_g_line, row, 1, 1, 1, Qt.AlignTop) thermo_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) thermo_layout.addWidget(QWidget(), row + 1, 0) thermo_layout.setColumnStretch(0, 0) thermo_layout.setColumnStretch(1, 1) for i in range(0, row): thermo_layout.setRowStretch(i, 0) thermo_layout.setRowStretch(row + 1, 1) row = 0 # for for total sum_area_widget = QGroupBox("Thermochemistry") sum_layout = QGridLayout(sum_area_widget) sum_layout.addWidget(QLabel("ZPE ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.zpe_sum_line = QLineEdit() self.zpe_sum_line.setReadOnly(True) self.zpe_sum_line.setToolTip( "sum of electronic energy and ZPE correction") sum_layout.addWidget(self.zpe_sum_line, row, 1, 1, 1, Qt.AlignTop) sum_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 sum_layout.addWidget(QLabel("H<sub>RRHO</sub> ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.h_sum_line = QLineEdit() self.h_sum_line.setReadOnly(True) self.h_sum_line.setToolTip( "sum of electronic energy and RRHO enthalpy correction") sum_layout.addWidget(self.h_sum_line, row, 1, 1, 1, Qt.AlignTop) sum_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 sum_layout.addWidget(QLabel("G<sub>RRHO</sub> ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.rrho_g_sum_line = QLineEdit() self.rrho_g_sum_line.setReadOnly(True) self.rrho_g_sum_line.setToolTip( "sum of electronic energy and RRHO free energy correction\nRotational motion is completely independent from vibrations\nNormal mode vibrations behave like harmonic oscillators" ) sum_layout.addWidget(self.rrho_g_sum_line, row, 1, 1, 1, Qt.AlignTop) sum_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 sum_layout.addWidget(QLabel("G<sub>Quasi-RRHO</sub> ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.qrrho_g_sum_line = QLineEdit() self.qrrho_g_sum_line.setReadOnly(True) self.qrrho_g_sum_line.setToolTip("Sum of electronic energy and quasi-RRHO free energy correction\n" + \ "Vibrational entropy of each mode is weighted and complemented with rotational entropy\n" + \ "The weighting is much lower for modes with frequencies less than 𝜔\u2080") sum_layout.addWidget(self.qrrho_g_sum_line, row, 1, 1, 1, Qt.AlignTop) sum_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) row += 1 sum_layout.addWidget(QLabel("G<sub>Quasi-Harmonic</sub> ="), row, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) self.qharm_g_sum_line = QLineEdit() self.qharm_g_sum_line.setReadOnly(True) self.qharm_g_sum_line.setToolTip("Sum of electronic energy and quasi-harmonic free energy correction\n" + \ "For entropy, real vibrational modes lower than 𝜔\u2080 are treated as 𝜔\u2080") sum_layout.addWidget(self.qharm_g_sum_line, row, 1, 1, 1, Qt.AlignTop) sum_layout.addWidget(QLabel("E<sub>h</sub>"), row, 2, 1, 1, Qt.AlignVCenter) sum_layout.addWidget(QWidget(), row + 1, 0) sum_layout.setColumnStretch(0, 0) for i in range(0, row): sum_layout.setRowStretch(i, 0) sum_layout.setRowStretch(row + 1, 1) splitter = QSplitter(Qt.Horizontal) splitter.setChildrenCollapsible(False) splitter.addWidget(sp_area_widget) splitter.addWidget(therm_area_widget) splitter.addWidget(sum_area_widget) absolute_layout.addWidget(splitter) self.status = QStatusBar() self.status.setSizeGripEnabled(False) self.status.setStyleSheet("color: red") absolute_layout.addWidget(self.status, 1, 0, 1, 1, Qt.AlignTop) self.tab_widget.addTab(absolute_widget, "absolute") relative_widget = QWidget() relative_layout = QGridLayout(relative_widget) size = [self.settings.ref_col_1, self.settings.ref_col_2] self.ref_group = ThermoGroup("reference group", self.session, self.nrg_fr, self.thermo_co, size) self.ref_group.changes.connect(self.calc_relative_thermo) relative_layout.addWidget(self.ref_group, 0, 0, 1, 3, Qt.AlignTop) size = [self.settings.other_col_1, self.settings.other_col_2] self.other_group = ThermoGroup("other group", self.session, self.nrg_fr, self.thermo_co, size) self.other_group.changes.connect(self.calc_relative_thermo) relative_layout.addWidget(self.other_group, 0, 3, 1, 3, Qt.AlignTop) self.relative_temperature = QDoubleSpinBox() self.relative_temperature.setMaximum(2**31 - 1) self.relative_temperature.setValue(self.settings.rel_temp) self.relative_temperature.setSingleStep(10) self.relative_temperature.setSuffix(" K") self.relative_temperature.setMinimum(0) self.relative_temperature.valueChanged.connect( self.calc_relative_thermo) relative_layout.addWidget(QLabel("T ="), 1, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) relative_layout.addWidget(self.relative_temperature, 1, 1, 1, 5, Qt.AlignLeft | Qt.AlignVCenter) self.relative_v0 = QDoubleSpinBox() self.relative_v0.setMaximum(2**31 - 1) self.relative_v0.setValue(self.settings.w0) self.relative_v0.setSingleStep(25) self.relative_v0.setSuffix(" cm\u207b\u00b9") self.relative_v0.setMinimum(0) self.relative_v0.setToolTip( "frequency parameter for quasi treatments of entropy") self.relative_v0.valueChanged.connect(self.calc_relative_thermo) relative_layout.addWidget(QLabel("𝜔<sub>0</sub> ="), 2, 0, 1, 1, Qt.AlignRight | Qt.AlignVCenter) relative_layout.addWidget(self.relative_v0, 2, 1, 1, 5, Qt.AlignLeft | Qt.AlignVCenter) relative_layout.addWidget( QLabel("Boltzmann-weighted relative energies in kcal/mol:"), 3, 0, 1, 6, Qt.AlignVCenter | Qt.AlignLeft) relative_layout.addWidget(QLabel("ΔE"), 4, 0, Qt.AlignTop | Qt.AlignVCenter) self.relative_dE = QLineEdit() self.relative_dE.setReadOnly(True) relative_layout.addWidget(self.relative_dE, 5, 0, Qt.AlignTop | Qt.AlignVCenter) relative_layout.addWidget(QLabel("ΔZPE"), 4, 1, Qt.AlignTop | Qt.AlignVCenter) self.relative_dZPVE = QLineEdit() self.relative_dZPVE.setReadOnly(True) relative_layout.addWidget(self.relative_dZPVE, 5, 1, Qt.AlignTop | Qt.AlignVCenter) relative_layout.addWidget(QLabel("ΔH<sub>RRHO</sub>"), 4, 2, Qt.AlignTop | Qt.AlignVCenter) self.relative_dH = QLineEdit() self.relative_dH.setReadOnly(True) relative_layout.addWidget(self.relative_dH, 5, 2, Qt.AlignTop | Qt.AlignVCenter) relative_layout.addWidget(QLabel("ΔG<sub>RRHO</sub>"), 4, 3, Qt.AlignTop | Qt.AlignVCenter) self.relative_dG = QLineEdit() self.relative_dG.setReadOnly(True) relative_layout.addWidget(self.relative_dG, 5, 3, Qt.AlignTop | Qt.AlignVCenter) relative_layout.addWidget(QLabel("ΔG<sub>Quasi-RRHO</sub>"), 4, 4, Qt.AlignTop | Qt.AlignVCenter) self.relative_dQRRHOG = QLineEdit() self.relative_dQRRHOG.setReadOnly(True) relative_layout.addWidget(self.relative_dQRRHOG, 5, 4, Qt.AlignTop | Qt.AlignVCenter) relative_layout.addWidget(QLabel("ΔG<sub>Quasi-Harmonic</sub>"), 4, 5, Qt.AlignTop | Qt.AlignVCenter) self.relative_dQHARMG = QLineEdit() self.relative_dQHARMG.setReadOnly(True) relative_layout.addWidget(self.relative_dQHARMG, 5, 5, Qt.AlignTop | Qt.AlignVCenter) relative_layout.setRowStretch(0, 1) relative_layout.setRowStretch(1, 0) relative_layout.setRowStretch(2, 0) relative_layout.setRowStretch(3, 0) relative_layout.setRowStretch(4, 0) relative_layout.setRowStretch(5, 0) self.tab_widget.addTab(relative_widget, "relative") #menu stuff menu = QMenuBar() export = menu.addMenu("&Export") copy = QAction("&Copy CSV to clipboard", self.tool_window.ui_area) copy.triggered.connect(self.copy_csv) shortcut = QKeySequence(Qt.CTRL + Qt.Key_C) copy.setShortcut(shortcut) export.addAction(copy) self.copy = copy save = QAction("&Save CSV...", self.tool_window.ui_area) save.triggered.connect(self.save_csv) #this shortcut interferes with main window's save shortcut #I've tried different shortcut contexts to no avail #thanks Qt... #shortcut = QKeySequence(Qt.CTRL + Qt.Key_S) #save.setShortcut(shortcut) #save.setShortcutContext(Qt.WidgetShortcut) export.addAction(save) delimiter = export.addMenu("Delimiter") comma = QAction("comma", self.tool_window.ui_area, checkable=True) comma.setChecked(self.settings.delimiter == "comma") comma.triggered.connect(lambda *args, delim="comma": self.settings. __setattr__("delimiter", delim)) delimiter.addAction(comma) tab = QAction("tab", self.tool_window.ui_area, checkable=True) tab.setChecked(self.settings.delimiter == "tab") tab.triggered.connect(lambda *args, delim="tab": self.settings. __setattr__("delimiter", delim)) delimiter.addAction(tab) space = QAction("space", self.tool_window.ui_area, checkable=True) space.setChecked(self.settings.delimiter == "space") space.triggered.connect(lambda *args, delim="space": self.settings. __setattr__("delimiter", delim)) delimiter.addAction(space) semicolon = QAction("semicolon", self.tool_window.ui_area, checkable=True) semicolon.setChecked(self.settings.delimiter == "semicolon") semicolon.triggered.connect(lambda *args, delim="semicolon": self. settings.__setattr__("delimiter", delim)) delimiter.addAction(semicolon) add_header = QAction("&Include CSV header", self.tool_window.ui_area, checkable=True) add_header.setChecked(self.settings.include_header) add_header.triggered.connect(self.header_check) export.addAction(add_header) comma.triggered.connect( lambda *args, action=tab: action.setChecked(False)) comma.triggered.connect( lambda *args, action=space: action.setChecked(False)) comma.triggered.connect( lambda *args, action=semicolon: action.setChecked(False)) tab.triggered.connect( lambda *args, action=comma: action.setChecked(False)) tab.triggered.connect( lambda *args, action=space: action.setChecked(False)) tab.triggered.connect( lambda *args, action=semicolon: action.setChecked(False)) space.triggered.connect( lambda *args, action=comma: action.setChecked(False)) space.triggered.connect( lambda *args, action=tab: action.setChecked(False)) space.triggered.connect( lambda *args, action=semicolon: action.setChecked(False)) semicolon.triggered.connect( lambda *args, action=comma: action.setChecked(False)) semicolon.triggered.connect( lambda *args, action=tab: action.setChecked(False)) semicolon.triggered.connect( lambda *args, action=space: action.setChecked(False)) menu.setNativeMenuBar(False) self._menu = menu layout.setMenuBar(menu) self.tool_window.ui_area.setLayout(layout) self.tool_window.manage(None)
def setup_ui(self): self.setObjectName("MainWindow") self.resize(820, 760) self.setMinimumSize(QSize(720, 560)) self.setWindowTitle("Yugioh Duelist of Roses - Deck Edit") self.centralwidget = QWidget(self) self.centralwidget.setObjectName("centralwidget") self.setCentralWidget(self.centralwidget) self.horizontalLayout = QHBoxLayout(self.centralwidget) self.horizontalLayout.setObjectName("horizontalLayout") self.deck_list = QListWidget(self.centralwidget) self.horizontalLayout.addWidget(self.deck_list) self.vertLayoutWidget = QWidget(self.centralwidget) self.verticalLayout = QVBoxLayout(self.vertLayoutWidget) self.button_set_deck = QPushButton(self.centralwidget) self.button_set_deck.setText("Set Deck") self.leader_layoutwidget = QWidget(self.centralwidget) self.leader_layout = QHBoxLayout(self.leader_layoutwidget) self.leader_layoutwidget.setLayout(self.leader_layout) self.lineedit_leader = QLineEdit(self.centralwidget) self.leader_label = QLabel(self.centralwidget) self.leader_layout.addWidget(self.lineedit_leader) self.leader_layout.addWidget(self.leader_label) self.lineedit_leader_rank = QLineEdit(self.centralwidget) for widget in (self.button_set_deck, self.leader_layoutwidget, self.lineedit_leader_rank): self.verticalLayout.addWidget(widget) self.cards_scroll = QScrollArea(self.centralwidget) self.cards_scroll.setWidgetResizable(True) self.card_slots = [] self.cards_verticalWidget = QWidget(self.centralwidget) self.cards_vertical = QVBoxLayout(self.centralwidget) self.cards_verticalWidget.setLayout(self.cards_vertical) self.cards_scroll.setWidget(self.cards_verticalWidget) for i in range(40): layoutwidget = QWidget(self.centralwidget) layout = QHBoxLayout(layoutwidget) layoutwidget.setLayout(layout) index_text = QLabel(self.centralwidget) index_text.setText("{0:>2}".format(i)) textedit = QLineEdit(self.centralwidget) textedit.setMinimumSize(20, 20) textedit.setMaximumSize(100, 5000) card_name_text = QLabel(self.centralwidget) card_name_text.setText("---") card_name_text.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) layout.addWidget(index_text) layout.addWidget(textedit) layout.addWidget(card_name_text) self.card_slots.append((textedit, index_text, card_name_text, layout, layoutwidget)) self.cards_vertical.addWidget(layoutwidget) self.verticalLayout.addWidget(self.cards_scroll) self.horizontalLayout.addWidget(self.vertLayoutWidget) self.menubar = self.menuBar() self.file_menu = self.menubar.addMenu("File") self.file_menu.setObjectName("menuLoad") self.file_load_action = QAction("Load", self) self.file_load_action.triggered.connect(self.button_load_decks) self.file_menu.addAction(self.file_load_action) self.file_save_action = QAction("Save", self) self.file_save_action.triggered.connect(self.button_save_decks) self.file_menu.addAction(self.file_save_action) self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) print("done")
def create_main_frame(self): self.main_frame = QWidget() # Default Fonts button_default_font = QtGui.QFont('SansSerif', 16) item_default_font = QtGui.QFont('SansSerif', 12) # Update Button self.refresh_button = QPushButton('Refresh', parent=self.main_frame) self.refresh_button.setFont(button_default_font) self.refresh_button.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_BrowserReload)) self.refresh_button.clicked.connect(self.refresh) # Delete button self.delete_button = QPushButton('Delete', parent=self.main_frame) self.delete_button.setFont(button_default_font) self.delete_button.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_TrashIcon)) self.delete_button.clicked.connect(self.delete_selected_shot) # Plot button self.plot_button = QPushButton('Plot', parent=self.main_frame) self.plot_button.setFont(button_default_font) self.plot_button.clicked.connect(self.update_plot) self.plot_button.setIcon(self.style().standardIcon( QtWidgets.QStyle.SP_MediaPlay)) # Shots List self.shot_list_widget = QListWidget() self.shot_list_widget.setFont(item_default_font) self.shot_list_widget.itemClicked.connect(self.on_shot_list_clicked) # Layout construction vbox_shots = QVBoxLayout() vbox_shots.addWidget(self.refresh_button) vbox_shots.addWidget(self.delete_button) vbox_shots.addWidget(self.shot_list_widget) vbox_shots.addWidget(self.plot_button) self.l = pg.GraphicsLayoutWidget(border=(100, 100, 100)) # 1st row : RF power self.PowQ1 = self.l.addPlot( row=0, col=0, name='Pow1', title= 'Q1 Power (<font color="blue">PiG</font>, <font color="red">PrG</font>, <font color="green">PiD</font>, <font color="magenta">PrD</font>)' ) #plotItem self.PowQ2 = self.l.addPlot( row=0, col=1, name='Pow2', title= 'Q2 Power (<font color="blue">PiG</font>, <font color="red">PrG</font>, <font color="green">PiD</font>, <font color="magenta">PrD</font>)' ) self.PowQ4 = self.l.addPlot( row=0, col=2, name='Pow4', title= 'Q4 Power (<font color="blue">PiG</font>, <font color="red">PrG</font>, <font color="green">PiD</font>, <font color="magenta">PrD</font>)' ) # 2nd row : VSWR self.VSWRQ1 = self.l.addPlot( row=1, col=0, name='VSWRQ1', title= 'Q1 VSWR (<font color="blue">Gauche</font>, <font color="red">Droite</font>)' ) self.VSWRQ2 = self.l.addPlot( row=1, col=1, name='VSWRQ2', title= 'Q2 VSWR (<font color="blue">gauche</font>, <font color="red">Droite</font>)' ) self.VSWRQ4 = self.l.addPlot( row=1, col=2, name='VSWRQ4', title= 'Q4 VSWR (<font color="blue">Gauche</font>, <font color="red">Droite</font>)' ) self.VSWRQ1.setXLink(self.PowQ1) self.VSWRQ2.setXLink(self.PowQ2) self.VSWRQ4.setXLink(self.PowQ4) # 3nd row : RF voltages self.VolQ1 = self.l.addPlot( row=2, col=0, name='Vol1', title= 'Q1 Voltages (<font color="blue">V1</font>, <font color="red">V2</font>, <font color="green">V3</font>, <font color="magenta">V4</font>)' ) self.VolQ2 = self.l.addPlot( row=2, col=1, name='Vol2', title= 'Q2 Voltages (<font color="blue">V1</font>, <font color="red">V2</font>, <font color="green">V3</font>, <font color="magenta">V4</font>)' ) self.VolQ4 = self.l.addPlot( row=2, col=2, name='Vol4', title= 'Q4 Voltages (<font color="blue">V1</font>, <font color="red">V2</font>, <font color="green">V3</font>, <font color="magenta">V4</font>)' ) self.VolQ1.setXLink(self.PowQ1) self.VolQ2.setXLink(self.PowQ2) self.VolQ4.setXLink(self.PowQ4) # 4rd row : RF phase self.PhaQ1 = self.l.addPlot( row=3, col=0, name='Pha1', title='Q1 Phase (Ph4+Ph1-Ph6, Ph5+Ph1-Ph7)') self.PhaQ2 = self.l.addPlot( row=3, col=1, name='Pha2', title='Q2 Phase (Ph4+Ph1-Ph6, Ph5+Ph1-Ph7)') self.PhaQ4 = self.l.addPlot( row=3, col=2, name='Pha4', title='Q4 Phase (Ph4+Ph1-Ph6, Ph5+Ph1-Ph7)') self.PhaQ1.setXLink(self.PowQ1) self.PhaQ2.setXLink(self.PowQ2) self.PhaQ4.setXLink(self.PowQ4) # Layout assembly vbox_canvas = QVBoxLayout() vbox_canvas.addWidget(self.l) hbox = QHBoxLayout() hbox.addLayout(vbox_shots, 1) hbox.addLayout(vbox_canvas, 15) self.main_frame.setLayout(hbox) self.setCentralWidget(self.main_frame) # Status bar self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) self.cross = CrossHairManager() self.cross.linkWithPlotItem(self.PowQ2) self.cross.linkWithPlotItem(self.VolQ2) self.cross.linkWithPlotItem(self.PhaQ2)
def __init__(self): super().__init__() self.setGeometry(50, 50, 1920, 1080) self.setWindowTitle("Ground Truthing") # self.setWindowIcon(QtGui.QIcon('pythonlogo.png')) self.frame_counter = self.images_handler() # self.statusbar_init() LOGGER.info("initialised status bar") # menubar_init() vboxlayout = QVBoxLayout() hboxlayout = QHBoxLayout() # vboxlayout.addStretch(2) # vboxlayout.setStretch(1,2) self.topwid = ImageWindow() self.topwid.resize(self.topwid.sizeHint()) self.botwid = ButtonWindow() self.botwid.resize(self.botwid.sizeHint()) self.printer = DataDisplayWindow() self.topwid.image(self.frame_counter, self.printer) self.botwid.gridstruct(self.frame_counter, self.printer) self.printer.show_data(self.frame_counter) self.wid = QWidget(self) extractAction = QAction("Exit", self) extractAction.setShortcut("Ctrl+Q") extractAction.setStatusTip('Leave The App') extractAction.triggered.connect(self.close_application) saveFile = QAction("Save", self) saveFile.setShortcut("Ctrl+S") saveFile.setStatusTip('Save To Location') saveFile.triggered.connect(self.save_application) LOGGER.debug("frame Length = " + str(len(self.frame_counter.display_all()))) extractNextImage = QAction("Next Frame", self) # extractNextImage.setShortcut("Alt+n") extractNextImage.setShortcut("Right") extractNextImage.setStatusTip("Next Frame...") extractNextImage.triggered.connect(lambda: self.topwid.changeimage("n", self.frame_counter, self.printer)) extractPrevImage = QAction("Previous Frame", self) # extractPrevImage.setShortcut("Alt+b") extractPrevImage.setShortcut("Left") extractPrevImage.setStatusTip("Previous Frame...") extractPrevImage.triggered.connect(lambda: self.topwid.changeimage("b", self.frame_counter, self.printer)) getshortcuts = QAction("Shortcuts", self) getshortcuts.setShortcut("Ctrl+K") getshortcuts.setStatusTip("Shortcuts List") getshortcuts.triggered.connect(lambda: self.short()) reportBugs = QAction("Report", self) reportBugs.setShortcut("Ctrl+R") reportBugs.setStatusTip("Please report bugs") reportBugs.triggered.connect(lambda: self.bugreport()) author = QLabel("Prajwal Rao\[email protected]") author.setStyleSheet("color : grey") self.statusBar = QStatusBar() self.statusBar.addPermanentWidget(author) self.setStatusBar(self.statusBar) mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('&File') helpMenu = mainMenu.addMenu('&Help') fileMenu.addAction(extractNextImage) fileMenu.addAction(extractPrevImage) fileMenu.addAction(saveFile) fileMenu.addAction(extractAction) helpMenu.addAction(getshortcuts) helpMenu.addAction(reportBugs) self.setCentralWidget(self.wid) # vboxlayout.setAlignment(QtCore.Qt.AlignCenter) hboxlayout.addWidget(self.topwid) hboxlayout.addWidget(self.printer) vboxlayout.addLayout(hboxlayout) # vboxlayout.addWidget(self.topwid) # print("vbox size hint: ",vboxlayout.sizeHint()) vboxlayout.addWidget(self.botwid.groupbox) self.wid.setLayout(vboxlayout) LOGGER.info("initialised menubar") # self.home() self.show()
def __init__(self): """View initializer.""" super().__init__() self.number_point = 1 self.function_type = 0 self.firstpointvalue = "" self.secondpointvalue = "" self.thirdpointvalue = "" self.fourthpointvalue = "" self.firstendpointvalue = "" self.secondendpointvalue = "" self.thirdendpointvalue = "" self.fourthendpointvalue = "" self.first_link = 1 self.second_link = 2 self.third_link = 3 self.fourth_link = 4 # Set some main window's properties self.setWindowTitle('Function Image') self.setWindowIcon(QtGui.QIcon('Draw.ico')) self.setFixedSize(900, 600) # Set the central widget self._centralWidget = QWidget(self) self.setCentralWidget(self._centralWidget) #Set the Grid Layout self.layout = QGridLayout() #Set the First Part Outer Layout self.sublayout_1 = QVBoxLayout() self.sublayout_1.setContentsMargins(10, 0, 50, 0) self.basic_groupbox = QGroupBox("Basic Configuration") self.basic_groupbox.setContentsMargins(40, 0, 0, 0) self.basic_groupbox.setLayout(self.sublayout_1) #Set the The First Part of Inner Layout self.leftlayout_1 = QHBoxLayout() self.function_type_group_box = QGroupBox("Function Type :") self.function_type_group_box.setFixedHeight(60) self.function_type_group_box.setContentsMargins(100, 0, 0, 0) self.function_type_group_box.setLayout(self.leftlayout_1) self.type_radiobutton_1 = QRadioButton("A/B") self.type_radiobutton_1.setChecked(True) self.type_radiobutton_2 = QRadioButton("x - f(x)") self.type_radiobutton_3 = QRadioButton("None") #Place the Radiobutton self.leftlayout_1.addWidget(self.type_radiobutton_1) self.leftlayout_1.addWidget(self.type_radiobutton_2) self.leftlayout_1.addWidget(self.type_radiobutton_3) #Set the Second part of Inner Layout self.leftlayout_2 = QFormLayout() self.leftlayout_2.setHorizontalSpacing(20) self.function_info_group_box = QGroupBox("Function Info :") self.function_info_group_box.setFixedHeight(60) self.function_info_group_box.setContentsMargins(100, 10, 0, 0) self.function_info_group_box.setLayout(self.leftlayout_2) #Set and Place the Component for the form layout self.function_name = QLineEdit() self.function_name.setFixedWidth(200) self.leftlayout_2.addRow("Function Name:", self.function_name) #Set the Third Part of Inner Layout self.leftlayout_3 = QHBoxLayout() self.point_number = QGroupBox("Point Number :") self.point_number.setFixedHeight(60) self.point_number.setContentsMargins(100, 10, 0, 0) self.point_number.setLayout(self.leftlayout_3) self.number_1 = QRadioButton("1") self.number_2 = QRadioButton("2") self.number_3 = QRadioButton("3") self.number_4 = QRadioButton("4") self.number_1.setChecked(True) #Place the Radiobutton self.leftlayout_3.addWidget(self.number_1) self.leftlayout_3.addWidget(self.number_2) self.leftlayout_3.addWidget(self.number_3) self.leftlayout_3.addWidget(self.number_4) #Place all the Inner Layout for First Part of Outer Layout self.sublayout_1.addWidget(self.function_type_group_box) self.sublayout_1.addWidget(self.function_info_group_box) self.sublayout_1.addWidget(self.point_number) #Set the Second Part Outer Layout self.sublayout_2 = QHBoxLayout() self.advanced_groupbox = QGroupBox("Advanced Configuration") self.advanced_groupbox.setContentsMargins(40, 0, 0, 0) self.advanced_groupbox.setLayout(self.sublayout_2) #Create the stacked Layout self.stackedLayout = QStackedLayout() #Place the Page to Stacked Layout self.stackedLayout.addWidget(self.Page1()) self.stackedLayout.addWidget(self.Page2()) self.stackedLayout.addWidget(self.Page3()) self.stackedLayout.addWidget(self.Page4()) #Place the Stacked Layout self.sublayout_2.addLayout(self.stackedLayout) #Set the Third Part Outer Layout self.sublayout_3 = QVBoxLayout() self.preview_button = QPushButton('Preview') self.sublayout_3.addWidget(self.preview_button) #Place all the Outer Layout self.layout.addWidget(self.basic_groupbox, 0, 0, 3, 2) self.layout.addWidget(self.advanced_groupbox, 0, 2, 2, 1) self.layout.addLayout(self.sublayout_3, 2, 2, 1, 1) #Place the Grid layout to Central Widget self._centralWidget.setLayout(self.layout) #Connect all Function self.number_1.clicked.connect(lambda: self.switchPage(self.number_1)) self.number_2.clicked.connect(lambda: self.switchPage(self.number_2)) self.number_3.clicked.connect(lambda: self.switchPage(self.number_3)) self.number_4.clicked.connect(lambda: self.switchPage(self.number_4)) self.preview_button.clicked.connect(self.CreateImage) self.type_radiobutton_1.clicked.connect(self.setFunctionType) self.type_radiobutton_2.clicked.connect(self.setFunctionType) self.type_radiobutton_3.clicked.connect(self.setFunctionType) #Set the Status Bar status = QStatusBar() status.showMessage("Welcome to the Creating function image tool") self.setStatusBar(status)
def __init__(self, parent=None): super(UIMainWindow, self).__init__(parent) currentDir = os.getcwd() dataDir = os.path.join(currentDir, "app_data") workFileDir = os.path.join(dataDir, "workfiles") self._outPutDir = os.path.join(currentDir, "savedfiles") self._interface_lang_file = os.path.join( workFileDir, 'interface_language_setting.txt') self._interface_lang_dict = os.path.join( workFileDir, 'interface_language_dict.json') self.fc_lg, self.fc_dict = self.set_lang() self._prompt_frame = QGroupBox( self.fc_dict["frame_prompt"][self.fc_lg]) self._prompt_frame.setAlignment(Qt.AlignCenter) self.initial_prompt = self.fc_dict["pmt_1_start"][ self.fc_lg] + "\n" + self.fc_dict["pmt_1_a"][ self.fc_lg] + "\n" + self.fc_dict["pmt_1_b"][self.fc_lg] self._prompt_2 = self.fc_dict["pmt_2_start"][ self.fc_lg] + "\n " + self.fc_dict["pmt_2_a"][ self.fc_lg] + "\n " + self.fc_dict["pmt_2_b"][self.fc_lg] self._prompt_3 = self.fc_dict["pmt_3_start"][ self.fc_lg] + "\n " + self.fc_dict["pmt_3_a"][self.fc_lg] self._prompt_5 = self.fc_dict["pmt_5"][self.fc_lg] self._prompt_frame_layout = QHBoxLayout() self._promptBox = QLabel() self._promptBox.setText(self.initial_prompt) self._promptBox.setFixedHeight(80) self._promptBox.setWordWrap(True) self._prompt_frame_layout.addWidget(self._promptBox) self._prompt_frame.setLayout(self._prompt_frame_layout) self._fileloader_frame = QGroupBox( self.fc_dict["frame_load"][self.fc_lg]) self._fileloader_frame.setAlignment(Qt.AlignCenter) self._fileloader_src_layout = QHBoxLayout() self._file_openBox = QLineEdit() self._file_openBox.setFixedWidth(500) self._file_openBox.setReadOnly(True) self._file_openButton = QPushButton() self._file_openButton.setText(self.fc_dict["open_s"][self.fc_lg]) self._file_openButton.setFixedWidth(80) self._file_openButton.clicked[bool].connect(self.open_file) self._file_reloadButton = QPushButton( self.fc_dict["r_load"][self.fc_lg]) self._file_reloadButton.setFixedWidth(80) self._file_reloadButton.clicked[bool].connect(self.reload_file) self._fileloader_src_layout.addWidget(self._file_openBox) self._fileloader_src_layout.addWidget(self._file_openButton) self._fileloader_src_layout.addWidget(self._file_reloadButton) self._fileloader_opt_layout = QGridLayout() self._file_type_label = QLabel(self.fc_dict["f_type"][self.fc_lg]) self._file_type_label.setFixedWidth(60) self._file_type_box = QComboBox() self._file_type_box.setFixedWidth(100) self._file_type_box.addItem('txt') self._file_type_box.addItem('docx') self._file_type_box.addItem('xlsx') self._file_bind_label = QLabel(self.fc_dict["bi_loc"][self.fc_lg]) self._file_bind_label.setFixedWidth(80) self._file_bind_box = QComboBox() self._file_bind_box.setFixedWidth(120) self._file_bind_box.addItem(self.fc_dict["bind_sig"][self.fc_lg]) self._file_bind_box.addItem(self.fc_dict["bind_mul"][self.fc_lg]) self._file_num_label = QLabel(self.fc_dict["f_num"][self.fc_lg]) self._file_num_label.setFixedWidth(80) self._file_num_box = QDoubleSpinBox() self._file_num_box.setFixedWidth(80) self._file_num_box.setMinimum(1) self._file_num_box.setDecimals(0) self._file_num_box.setDisabled(True) self._file_portion_label = QLabel(self.fc_dict["bi_rate"][self.fc_lg]) self._file_portion_label.setFixedWidth(80) self._file_portion_label.setStatusTip( self.fc_dict["tip_portion"][self.fc_lg]) self._file_portion_box = QDoubleSpinBox() self._file_portion_box.setDisabled(True) self._file_portion_box.setFixedWidth(80) self._file_portion_box.setMinimum(0) self._file_portion_box.setDecimals(0) self._file_portion_box.setPrefix("1:") self._file_portion_box.setValue(1) self._file_pos_label = QLabel(self.fc_dict["bi_pos"][self.fc_lg]) self._file_pos_label.setFixedWidth(80) self._file_pos_box = QComboBox() self._file_pos_box.setDisabled(True) self._file_pos_box.setFixedWidth(120) self._file_pos_box.addItem(self.fc_dict["u_d"][self.fc_lg]) self._file_pos_box.addItem(self.fc_dict["l_r"][self.fc_lg]) self._file_pos_box.addItem(self.fc_dict["bi-sep"][self.fc_lg]) self._fileloader_mark_layout = QGridLayout() self._fileloader_mark_label = QLabel( self.fc_dict["conc_mk"][self.fc_lg]) self._fileloader_mark_label.setFixedWidth(80) self._file_num_mark_box = QCheckBox(self.fc_dict["l_num"][self.fc_lg]) self._file_num_mark_box.setFixedWidth(80) self._file_num_mark_box.setStatusTip( self.fc_dict["tip_num"][self.fc_lg]) self._file_num_mark_box.clicked[bool].connect(self.mark_num) self._file_num_mark_box.setDisabled(True) self._file_chapt_num_box = QCheckBox( self.fc_dict["title_ch"][self.fc_lg]) self._file_chapt_num_box.setFixedWidth(100) self._file_chapt_num_box.setStatusTip( self.fc_dict["tip_format"][self.fc_lg]) self._file_chapt_num_box.clicked[bool].connect(self.mark_chapter) self._file_chapt_num_box.setDisabled(True) self._file_tab_mark_box = QCheckBox(self.fc_dict["mk_tab"][self.fc_lg]) self._file_tab_mark_box.setFixedWidth(100) self._file_tab_mark_box.setStatusTip( self.fc_dict["tip_tab"][self.fc_lg]) self._file_tab_mark_box.clicked[bool].connect(self.mark_tab) self._file_tab_mark_box.setDisabled(True) self._file_cuc_mark_box = QCheckBox(self.fc_dict["mk_seg"][self.fc_lg]) self._file_cuc_mark_box.setFixedWidth(100) self._file_cuc_mark_box.setStatusTip( self.fc_dict["tip_seg"][self.fc_lg]) self._file_cuc_mark_box.clicked[bool].connect(self.mark_cuc) self._file_cuc_mark_box.setDisabled(True) self._file_table_mark_box = QCheckBox( self.fc_dict["mk_table"][self.fc_lg]) self._file_table_mark_box.setFixedWidth(100) self._file_table_mark_box.setStatusTip( self.fc_dict["tip_table"][self.fc_lg]) self._file_table_mark_box.clicked[bool].connect(self.mark_table) self._file_table_mark_box.setDisabled(True) self._fileloader_mark_layout.addWidget(self._fileloader_mark_label, 0, 0) self._fileloader_mark_layout.addWidget(self._file_num_mark_box, 0, 1) self._fileloader_mark_layout.addWidget(self._file_chapt_num_box, 0, 2) self._fileloader_mark_layout.addWidget(self._file_tab_mark_box, 0, 3) self._fileloader_mark_layout.addWidget(self._file_cuc_mark_box, 0, 4) self._fileloader_mark_layout.addWidget(self._file_table_mark_box, 0, 5) self._fileloader_opt_layout.addWidget(self._file_type_label, 0, 0) self._fileloader_opt_layout.addWidget(self._file_type_box, 0, 1) self._fileloader_opt_layout.addWidget(self._file_bind_label, 0, 2) self._fileloader_opt_layout.addWidget(self._file_bind_box, 0, 3) self._fileloader_opt_layout.addWidget(self._file_pos_label, 0, 4) self._fileloader_opt_layout.addWidget(self._file_pos_box, 0, 5) self._fileloader_opt_layout.addWidget(self._file_num_label, 0, 6) self._fileloader_opt_layout.addWidget(self._file_num_box, 0, 7) self._fileloader_opt_layout.addLayout(self._fileloader_mark_layout, 1, 0, 1, 6) self._fileloader_opt_layout.addWidget(self._file_portion_label, 1, 6) self._fileloader_opt_layout.addWidget(self._file_portion_box, 1, 7) self._fileloader_frame_layout = QVBoxLayout() self._fileloader_frame_layout.addLayout(self._fileloader_opt_layout) self._fileloader_frame_layout.addLayout(self._fileloader_mark_layout) self._fileloader_frame_layout.addLayout(self._fileloader_src_layout) self._fileloader_frame_layout.setAlignment(Qt.AlignCenter) self._fileloader_frame.setLayout(self._fileloader_frame_layout) self._fileloader_frame_layout.setAlignment(Qt.AlignCenter) self._generator_frame = QGroupBox( self.fc_dict["frame_profile"][self.fc_lg]) self._generator_frame.setAlignment(Qt.AlignCenter) self._ss_book_frame = QGroupBox(self.fc_dict["win_sl"][self.fc_lg]) self._ss_book_frame.setAlignment(Qt.AlignCenter) self._ss_book_frame_layout = QGridLayout() self._ss_book_title = QLabel(self.fc_dict["title_book"][self.fc_lg]) self._ss_book_title.setFixedWidth(80) self._ss_book_title.setStatusTip( self.fc_dict["tip_fill_title"][self.fc_lg]) self._ss_book_titleBox = QLineEdit() self._ss_book_version = QLabel(self.fc_dict["vn_num"][self.fc_lg]) self._ss_book_version.setFixedWidth(80) self._ss_book_versionBox = QLineEdit() self._ss_book_versionBox.setFixedWidth(120) self._ss_book_versionBox.setText('s0') self._ss_book_versionBox.setReadOnly(True) self._ss_book_versionBox.setEnabled(False) self._ss_book_language = QLabel(self.fc_dict["corp_lang"][self.fc_lg]) self._ss_book_language.setFixedWidth(80) self._ss_book_languageBox = QLineEdit() self._ss_book_languageBox.setFixedWidth(120) self._ss_book_languageBox.setText('en') self._ss_book_author = QLabel(self.fc_dict["ar_id"][self.fc_lg]) self._ss_book_author.setFixedWidth(80) self._ss_book_author.setStatusTip( self.fc_dict["tip_fill_author"][self.fc_lg]) self._ss_book_authorBox = QLineEdit() self._ss_book_authorBox.setFixedWidth(120) self._ss_book_translator = QLabel(self.fc_dict["tr_id"][self.fc_lg]) self._ss_book_translator.setFixedWidth(80) self._ss_book_translatorBox = QLineEdit() self._ss_book_translatorBox.setFixedWidth(120) self._ss_book_translatorBox.setEnabled(False) self._ss_book_date = QLabel(self.fc_dict["issue_date"][self.fc_lg]) self._ss_book_date.setFixedWidth(80) self._ss_book_date.setStatusTip( self.fc_dict["tip_fill_date"][self.fc_lg]) self._ss_book_dateBox = QLineEdit() self._ss_book_dateBox.setFixedWidth(120) self._ss_book_genre = QLabel(self.fc_dict["issue_genre"][self.fc_lg]) self._ss_book_genre.setFixedWidth(80) self._ss_book_genre.setStatusTip( self.fc_dict["tip_fill_genre"][self.fc_lg]) self._ss_book_genreBox = QLineEdit() self._ss_book_genreBox.setFixedWidth(120) self._ss_book_contents = QLabel( self.fc_dict["win_preview"][self.fc_lg]) self._ss_book_contents.setFixedWidth(120) self._ss_book_contentsBox = QTextEdit() self._ss_book_contentsBox.setReadOnly(True) self._ss_book_buttonLayout = QHBoxLayout() self._ss_book_redoButton = QPushButton( self.fc_dict["btn_refill"][self.fc_lg]) self._ss_book_redoButton.setFixedWidth(80) self._ss_book_redoButton.setEnabled(False) self._ss_book_redoButton.clicked[bool].connect(self.json_sl_refiller) self._ss_book_uploadButton = QPushButton( self.fc_dict["btn_submit"][self.fc_lg]) self._ss_book_uploadButton.setFixedWidth(80) self._ss_book_uploadButton.clicked[bool].connect(self.json_sl_filler) self._ss_book_buttonLayout.addWidget(self._ss_book_redoButton) self._ss_book_buttonLayout.addWidget(self._ss_book_uploadButton) self._ss_book_frame_layout.addWidget(self._ss_book_title, 0, 0) self._ss_book_frame_layout.addWidget(self._ss_book_titleBox, 0, 1, 1, 3) self._ss_book_frame_layout.addWidget(self._ss_book_version, 1, 0) self._ss_book_frame_layout.addWidget(self._ss_book_versionBox, 1, 1) self._ss_book_frame_layout.addWidget(self._ss_book_language, 1, 2) self._ss_book_frame_layout.addWidget(self._ss_book_languageBox, 1, 3) self._ss_book_frame_layout.addWidget(self._ss_book_author, 2, 0) self._ss_book_frame_layout.addWidget(self._ss_book_authorBox, 2, 1) self._ss_book_frame_layout.addWidget(self._ss_book_translator, 2, 2) self._ss_book_frame_layout.addWidget(self._ss_book_translatorBox, 2, 3) self._ss_book_frame_layout.addWidget(self._ss_book_date, 3, 0) self._ss_book_frame_layout.addWidget(self._ss_book_dateBox, 3, 1) self._ss_book_frame_layout.addWidget(self._ss_book_genre, 3, 2) self._ss_book_frame_layout.addWidget(self._ss_book_genreBox, 3, 3) self._ss_book_frame_layout.addWidget(self._ss_book_contents, 4, 0, 1, 2) self._ss_book_frame_layout.addWidget(self._ss_book_contentsBox, 5, 0, 8, 4) self._ss_book_frame_layout.addLayout(self._ss_book_buttonLayout, 15, 0, 1, 4) self._ss_book_frame.setLayout(self._ss_book_frame_layout) self._tt_book_frame = QGroupBox(self.fc_dict["win_tl"][self.fc_lg]) self._tt_book_frame.setAlignment(Qt.AlignCenter) self._tt_book_frame_layout = QGridLayout() self._tt_book_title = QLabel(self.fc_dict["title_book"][self.fc_lg]) self._tt_book_title.setFixedWidth(80) self._tt_book_title.setStatusTip( self.fc_dict["tip_fill_title_tl"][self.fc_lg]) self._tt_book_titleBox = QLineEdit() self._tt_book_version = QLabel(self.fc_dict["vn_num"][self.fc_lg]) self._tt_book_version.setFixedWidth(80) self._tt_book_version.setStatusTip( self.fc_dict["tip_fill_vn"][self.fc_lg]) self._tt_book_versionBox = QLineEdit() self._tt_book_versionBox.setFixedWidth(120) self._tt_book_versionBox.setText('t1') self._tt_book_language = QLabel(self.fc_dict["corp_lang"][self.fc_lg]) self._tt_book_language.setFixedWidth(80) self._tt_book_languageBox = QLineEdit() self._tt_book_languageBox.setFixedWidth(120) self._tt_book_languageBox.setText('zh') self._tt_book_author = QLabel(self.fc_dict["ar_id"][self.fc_lg]) self._tt_book_author.setFixedWidth(80) self._tt_book_author.setStatusTip( self.fc_dict["tip_fill_author_tl"][self.fc_lg]) self._tt_book_authorBox = QLineEdit() self._tt_book_authorBox.setFixedWidth(120) self._tt_book_translator = QLabel(self.fc_dict["tr_id"][self.fc_lg]) self._tt_book_translator.setFixedWidth(80) self._tt_book_translator.setStatusTip( self.fc_dict["tip_fill_trans"][self.fc_lg]) self._tt_book_translatorBox = QLineEdit() self._tt_book_translatorBox.setFixedWidth(120) self._tt_book_date = QLabel(self.fc_dict["issue_date"][self.fc_lg]) self._tt_book_date.setFixedWidth(80) self._tt_book_date.setStatusTip( self.fc_dict["tip_fill_date_tl"][self.fc_lg]) self._tt_book_dateBox = QLineEdit() self._tt_book_dateBox.setFixedWidth(120) self._tt_book_genre = QLabel(self.fc_dict["issue_genre"][self.fc_lg]) self._tt_book_genre.setFixedWidth(80) self._tt_book_genre.setStatusTip( self.fc_dict["tip_fill_genre_tl"][self.fc_lg]) self._tt_book_genreBox = QLineEdit() self._tt_book_genreBox.setFixedWidth(120) self._tt_book_contents = QLabel( self.fc_dict["win_preview"][self.fc_lg]) self._tt_book_contents.setFixedWidth(120) self._tt_book_contentsBox = QTextEdit() self._tt_book_contentsBox.setReadOnly(True) self._tt_book_buttonLayout = QHBoxLayout() self._tt_book_redoButton = QPushButton( self.fc_dict["btn_refill"][self.fc_lg]) self._tt_book_redoButton.setEnabled(False) self._tt_book_redoButton.setFixedWidth(80) self._tt_book_redoButton.clicked[bool].connect(self.json_tl_refiller) self._tt_book_uploadButton = QPushButton( self.fc_dict["btn_submit"][self.fc_lg]) self._tt_book_uploadButton.setFixedWidth(80) self._tt_book_uploadButton.clicked[bool].connect(self.json_tl_filler) self._tt_book_uploadButton.setEnabled(False) self._tt_book_nextButton = QPushButton( self.fc_dict["btn_next"][self.fc_lg]) self._tt_book_nextButton.setFixedWidth(80) self._tt_book_nextButton.setEnabled(False) self._tt_book_nextButton.clicked[bool].connect(self.load_next_version) self._tt_book_buttonLayout.addWidget(self._tt_book_redoButton) self._tt_book_buttonLayout.addWidget(self._tt_book_nextButton) self._tt_book_buttonLayout.addWidget(self._tt_book_uploadButton) self._tt_book_frame_layout.addWidget(self._tt_book_title, 0, 0) self._tt_book_frame_layout.addWidget(self._tt_book_titleBox, 0, 1, 1, 3) self._tt_book_frame_layout.addWidget(self._tt_book_version, 1, 0) self._tt_book_frame_layout.addWidget(self._tt_book_versionBox, 1, 1) self._tt_book_frame_layout.addWidget(self._tt_book_language, 1, 2) self._tt_book_frame_layout.addWidget(self._tt_book_languageBox, 1, 3) self._tt_book_frame_layout.addWidget(self._tt_book_author, 2, 0) self._tt_book_frame_layout.addWidget(self._tt_book_authorBox, 2, 1) self._tt_book_frame_layout.addWidget(self._tt_book_translator, 2, 2) self._tt_book_frame_layout.addWidget(self._tt_book_translatorBox, 2, 3) self._tt_book_frame_layout.addWidget(self._tt_book_date, 3, 0) self._tt_book_frame_layout.addWidget(self._tt_book_dateBox, 3, 1) self._tt_book_frame_layout.addWidget(self._tt_book_genre, 3, 2) self._tt_book_frame_layout.addWidget(self._tt_book_genreBox, 3, 3) self._tt_book_frame_layout.addWidget(self._tt_book_contents, 4, 0, 1, 2) self._tt_book_frame_layout.addWidget(self._tt_book_contentsBox, 5, 0, 8, 4) self._tt_book_frame_layout.addLayout(self._tt_book_buttonLayout, 15, 0, 1, 4) self._tt_book_frame.setLayout(self._tt_book_frame_layout) self._generator_frame_layout = QHBoxLayout() self._generator_frame_layout.addWidget(self._ss_book_frame) self._generator_frame_layout.addWidget(self._tt_book_frame) self._generator_frame.setLayout(self._generator_frame_layout) self._convert_layout = QHBoxLayout() self._bi_book_convertButton = QPushButton( self.fc_dict["btn_conv"][self.fc_lg]) self._bi_book_convertButton.clicked[bool].connect(self.write_to_json) self._bi_book_convertButton.setFixedWidth(120) self._bi_book_convertButton.setStyleSheet("font:bold") self._convert_layout.addWidget(self._bi_book_convertButton) self._convert_layout.setAlignment(Qt.AlignCenter) mainWidget = QWidget() mainLayout = QVBoxLayout(mainWidget) mainLayout.setSpacing(2) mainLayout.addWidget(self._prompt_frame, 0) mainLayout.addWidget(self._fileloader_frame, 0) mainLayout.addWidget(self._generator_frame, 9) mainLayout.addLayout(self._convert_layout, 1) self.setCentralWidget(mainWidget) #----------创建主窗口状态栏---------- self._statusBar = QStatusBar() self._statusBar.showMessage(self.fc_dict["greeting"][self.fc_lg]) self._copyRightLabel = QLabel(self.fc_dict["copyright"][self.fc_lg]) self._statusBar.addPermanentWidget(self._copyRightLabel) self.setStatusBar(self._statusBar) #----------设置页面尺寸及标题等---------- self.setGeometry(200, 50, 800, 600) self.setObjectName("MainWindow") currentDir = os.getcwd() self.setWindowTitle(self.fc_dict["soft_title"][self.fc_lg]) self.setWindowIcon(QIcon(currentDir + "/app_data/workfiles/myIcon.png")) self.setIconSize(QSize(100, 40)) self._file_type_box.activated[str].connect(self._type_index_info) self._file_bind_box.activated[str].connect(self._bind_index_info) self._file_pos_box.activated[str].connect(self._pos_index_info) self._file_type_box.currentIndexChanged.connect( self._type_index_sender) self._file_bind_box.currentIndexChanged.connect( self._bind_index_sender) self._file_pos_box.currentIndexChanged.connect(self._pos_index_sender)
def InitWindow(self): mainMenu = self.menuBar() mainMenu.setToolTip('This is a <b>MenuBar</b> widget') self.menuBarLayout.addWidget(mainMenu) fileMenu = mainMenu.addMenu('File') OpenFile = QAction('Open File', self) fileMenu.addAction(OpenFile) fileMenu.addAction('Open Folder') fileMenu.addAction('Save File') fileMenu.addAction('Save File as') fileMenu.addAction('Exit') editMenu = mainMenu.addMenu('Edit') editMenu.addAction('Cut') editMenu.addAction('Copy') editMenu.addAction('Paste') editMenu.addAction('Delete') editMenu.addAction('Preferences') viewMenu = mainMenu.addMenu('View') viewMenu.addAction('Rotate View') viewMenu.addAction('Page Navigation') viewMenu.addAction('Page Display') viewMenu.addAction('Zoom') viewMenu.addAction("Set Interface Font...", lambda: self.setFont(QFontDialog.getFont(self)[0])) viewMenu.addAction("Take ScreenShoot...", lambda: self.grab().save( QFileDialog.getSaveFileName(self, "Save", os.path.expanduser("~"), "(*.png) PNG image file", "png")[0])) windowMenu = mainMenu.addMenu('Window') windowMenu.addAction('New Window') windowMenu.addAction('Minimize All') helpMenu = mainMenu.addMenu('Help') helpMenu.addAction('About App') helpMenu.addAction('About Developers') helpMenu.addAction("About Qt 5", lambda: QMessageBox.aboutQt(self)) helpMenu.addAction("About Python 3", lambda: open_new_tab('https://www.python.org/about')) self.setLayout(self.menuBarLayout) toolbar_layout = QVBoxLayout() self.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) self.setIconSize(QSize(50, 30)) toolbar = self.addToolBar("File") toolbar.setMovable(False) openfile = QAction(self, icon=QIcon("icons/File1.png"), text="Open File ") openfile.triggered.connect(self.OpenFile) toolbar.addAction(openfile) openfolder = QAction(self, icon=QIcon('icons/Folder1.png'), text="Open Folder") openfolder.triggered.connect(self.OpenFolder) openwebpage = QAction(self, icon=QIcon('icons/webpage.png'), text="Open Webpage") # openwebpage.triggered.connect(self.OpenFolder) toolbar.addAction(openfolder) toolbar.addAction(openwebpage) exit = QAction(self, icon=QIcon('icons/Exit2.png'), text="Exit") toolbar.addAction(exit) exit.triggered.connect(sys.exit) restart = QAction(self, icon=QIcon('icons/Restart1.png'), text="Restart") toolbar.addAction(restart) # exit.triggered.connect(restartMe) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # Study this later toolbar.addWidget(spacer) setting = QAction(self, icon=QIcon('icons/Support3.png'), text="Preferences") toolbar.addAction(setting) help = QAction(self, icon=QIcon('icons/Help1.png'), text="Get Assistance") toolbar.addAction(help) self.setLayout(toolbar_layout) self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) self.statusBar.showMessage(" This is My Status Bar's Message") self.setWindowTitle(self.title) self.setGeometry(self.top, self.left, self.width, self.height)
def initUI(self): self.setGeometry(600, 300, 1000, 600) self.center() self.setWindowTitle("Plot Trajectory") mainMenu = self.menuBar() fileMenu = mainMenu.addMenu("File") saveAction = QAction("Save as...") saveAction.setShortcut("Ctrl+S") saveAction.setStatusTip("Save plot to file") saveAction.setMenuRole(QAction.NoRole) saveAction.triggered.connect(self.file_save) fileMenu.addAction(saveAction) exitAction = QAction("&Exit", self) exitAction.setShortcut("Ctrl+Q") exitAction.setStatusTip("Exit Application") exitAction.setMenuRole(QAction.NoRole) exitAction.triggered.connect(self.close) fileMenu.addAction(exitAction) settingsMenu = mainMenu.addMenu("Settings") self.setStyleMenu = QMenu("Set Style", self) settingsMenu.addMenu(self.setStyleMenu) for style_name in ["default", "fast", "ggplot", "grayscale", "seaborn"]: styleAction = QAction(style_name, self, checkable=True) if style_name is CUR_STYLE: styleAction.setChecked(True) styleAction.triggered.connect(partial(self.set_style, style_name)) self.setStyleMenu.addAction(styleAction) self.setTimeWindowMenu = QMenu("Set Time Window", self) settingsMenu.addMenu(self.setTimeWindowMenu) for window_str in ["None", "s", "30s", "H", "D"]: windowAction = QAction(window_str, self, checkable=True) if window_str is TIME_WINDOW: windowAction.setChecked(True) windowAction.triggered.connect(partial(self.set_time_window, window_str)) self.setTimeWindowMenu.addAction(windowAction) # Grid Layout grid = QtWidgets.QGridLayout() widget = QtWidgets.QWidget(self) self.setCentralWidget(widget) widget.setLayout(grid) # Import CSV Button btn1 = QtWidgets.QPushButton("Import CSV", self) btn1.resize(btn1.sizeHint()) btn1.clicked.connect(self.getCSV) grid.addWidget(btn1, 1, 0) # Canvas and Toolbar self.figure = plt.figure(figsize=(15, 5)) self.canvas = FigureCanvas(self.figure) self.canvas.setContextMenuPolicy(Qt.CustomContextMenu) self.canvas.customContextMenuRequested.connect(self.popup) grid.addWidget(self.canvas, 2, 0, 1, 2) # DropDown mean / comboBox self.df = pd.DataFrame() self.columns = [] self.plot_list = [] self.comboBox = QtWidgets.QComboBox(self) self.comboBox.addItems(self.columns) grid.addWidget(self.comboBox, 0, 0) self.comboBox2 = QtWidgets.QComboBox(self) self.comboBox2.addItems(self.plot_list) grid.addWidget(self.comboBox2, 0, 1) # Plot Button btn2 = QtWidgets.QPushButton("Plot", self) btn2.resize(btn2.sizeHint()) btn2.clicked.connect(self.plot) grid.addWidget(btn2, 1, 1) # Progress bar self.progress = QProgressBar(self) # self.progress.setRange(0, 1) grid.addWidget(self.progress, 3, 0, 1, 2) self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) self.show()
def __init__(self): """ Class constructor. .. codeauthor:: Bouthayna Haltout """ super(MainWindow, self).__init__() self.MainUi = Ui.Ui_MainWindow() self.MainUi.setupUi(self) self.setGeometry(self.MainUi.left, self.MainUi.top, self.MainUi.width, self.MainUi.height) self.manage = Management.Mana() self.scaleFactor = 1.0 self.fitScaleFactor = 1.0 self.x = -1 # Setting x and y to -1, as long as the coordinates of the apex are not chosen. self.y = -1 self.apexS = False # We set it to false to desactivate the choice of the apex. # Connecting the menu items to their respective functions. self.MainUi.actionNew.triggered.connect(self.new) self.MainUi.actionSave.triggered.connect(self.save) self.MainUi.actionOpen.triggered.connect(self.open) self.MainUi.actionExport.triggered.connect(self.export) self.MainUi.actionClose.triggered.connect(self.close) ## Connecting each action of the Toolbar to the its function ## # We connect the icons to the assigned functions. self.MainUi.playAction.triggered.connect(self.play) self.MainUi.fitToWindowAction.triggered.connect(self.scaleToFit) self.MainUi.zoominAction.triggered.connect(self.zoomIn) self.MainUi.zoomoutAction.triggered.connect(self.zoomOut) self.MainUi.truesizeAction.triggered.connect(self.trueSize) self.MainUi.nextAction.triggered.connect(self.nextImg) self.MainUi.previousAction.triggered.connect(self.previousImg) self.MainUi.nextAnalyseAction.triggered.connect(self.nextAnalysisImg) self.MainUi.previousAnalysisAction.triggered.connect( self.previousAnalysisImg) # titleAfterAnalysis and titleBeforeAnalysis showing the total number of images before and after the analysis. titleAfterAnalysis = QLabel("Steps Navigation") #ou analysis titleBeforeAnalysis = QLabel("Images Navigation") self.totalNumberOfImg = QLabel(" / 0") self.totalNumberOfStep = QLabel(" / 0") # Connecting the QLineEdit to the pushOk functions allowing the user to go to the desired image. self.numberImg = QLineEdit(self) self.numberImg.setFixedWidth(25) self.numberImg.returnPressed.connect(self.pushOkImg) self.numberStep = QLineEdit(self) self.numberStep.setFixedWidth(25) self.numberStep.returnPressed.connect(self.pushOkStep) # Creating and connecting a QprogressBar that will allow the user to know that the analysis is running. self.progressBar = QProgressBar(self) self.progressBar.setRange(0, 100) # Creating the toolBar and adding all the widgets to it. self.toolbar = self.addToolBar("Options") self.toolbar.addWidget(titleBeforeAnalysis) self.toolbar.addAction(self.MainUi.previousAction) self.toolbar.addWidget(self.numberImg) self.toolbar.addWidget(self.totalNumberOfImg) self.toolbar.addAction(self.MainUi.nextAction) self.toolbar.addSeparator() self.toolbar.addAction(self.MainUi.playAction) self.toolbar.addAction(self.MainUi.fitToWindowAction) self.toolbar.addAction(self.MainUi.zoomoutAction) self.toolbar.addAction(self.MainUi.truesizeAction) self.toolbar.addAction(self.MainUi.zoominAction) self.toolbar.addSeparator() self.toolbar.addWidget(titleAfterAnalysis) self.toolbar.addAction(self.MainUi.previousAnalysisAction) self.toolbar.addWidget(self.numberStep) self.toolbar.addWidget(self.totalNumberOfStep) self.toolbar.addAction(self.MainUi.nextAnalyseAction) self.toolbar.addSeparator() self.toolbar.addWidget(self.progressBar) self.addToolBarBreak() ## Image area and scroll area ## self.imageLabel = MouseTracker() self.imageLabel.resize(self.MainUi.width - self.MainUi.padding, self.MainUi.height - self.MainUi.padding) # Sets the scroll area where the images are going to be opened. self.scrollArea = QScrollArea() self.scrollArea.setBackgroundRole(QPalette.Dark) self.scrollArea.setWidget(self.imageLabel) self.setCentralWidget(self.scrollArea) # Setting the Status bar self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) self.statusMessage = QLabel('Please create or open a project.') self.statusBar.addWidget(self.statusMessage, 1) self.mouseCoordinates = QLabel() self.statusBar.addWidget(self.mouseCoordinates, 0) # Connecting the progressBar to the function confirm that will update the Value self.myLongTask = TaskBar() self.myLongTask.taskFinished.connect(self.confirm)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(784, 600) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.Time = QLCDNumber(self.centralwidget) self.Time.setGeometry(QRect(260, 80, 271, 121)) self.Time.setFrameShape(QFrame.Box) self.Time.setFrameShadow(QFrame.Sunken) self.Time.setLineWidth(1) self.Time.setMidLineWidth(0) self.Time.setSmallDecimalPoint(False) self.Time.setDigitCount(8) self.Time.setObjectName("lcdNumber") self.label = QLabel(self.centralwidget) self.label.setGeometry(QRect(220, 0, 341, 61)) font = QFont() font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setFocusPolicy(Qt.NoFocus) self.label.setFrameShape(QFrame.NoFrame) self.label.setTextFormat(Qt.AutoText) self.label.setScaledContents(False) self.label.setAlignment(Qt.AlignCenter) self.label.setIndent(-1) self.label.setObjectName("label") self.line = QFrame(self.centralwidget) self.line.setGeometry(QRect(0, 40, 831, 31)) self.line.setFrameShape(QFrame.HLine) self.line.setFrameShadow(QFrame.Sunken) self.line.setObjectName("line") self.line_2 = QFrame(self.centralwidget) self.line_2.setGeometry(QRect(0, 220, 801, 31)) self.line_2.setFrameShape(QFrame.HLine) self.line_2.setFrameShadow(QFrame.Sunken) self.line_2.setObjectName("line_2") self.Melody = QPushButton(self.centralwidget) self.Melody.setGeometry(QRect(-270, 240, 1091, 61)) self.Melody.setObjectName("pushButton") self.Pause = QPushButton(self.centralwidget) self.Pause.setGeometry(QRect(520, 370, 81, 81)) self.Pause.setDefault(True) self.Pause.setFlat(False) self.Pause.setObjectName("pushButton_2") self.Stop = QPushButton(self.centralwidget) self.Stop.setGeometry(QRect(190, 370, 81, 81)) self.Stop.setDefault(True) self.Stop.setObjectName("pushButton_3") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setGeometry(QRect(0, 0, 784, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow)
def initUI(self): self.resize(800,800) self.setWindowTitle('特征选择窗口') self.setWindowIcon(QIcon('./image/选择.png')) self.all_dict = None self.model = None self.y_predict = None self.df = None self.res_list = None self.var_list = [] self.tool_bar = QToolBar() self.set_parameter = QAction(QIcon('./image/参数.png'),'设置参数',self) self.run = QAction(QIcon('./image/运行程序.png'),'运行程序',self) self.save = QAction(QIcon('./image/下载保存.png'),'保存结果',self) self.analysis = QAction(QIcon('./image/对比分析.png'),'分析预测',self) self.tool_bar.addAction(self.set_parameter) self.tool_bar.addAction(self.run) self.tool_bar.addAction(self.analysis) self.tool_bar.addAction(self.save) self.status_bar = QStatusBar() self.lable = QLabel('选择算法:') self.comb1 = QComboBox() algorithm_list = ['FSFS','Lasso'] self.comb1.addItems(algorithm_list) # self.comb2 = QComboBox() # self.comb2.addItems(['算法','内容']) self.completer = QCompleter(algorithm_list) self.completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.line_edit = QLineEdit() self.line_edit.setCompleter(self.completer) self.button = QPushButton('搜索') hlayout = QHBoxLayout() hlayout.addWidget(self.lable) hlayout.addWidget(self.comb1) # hlayout.addWidget(self.comb2) hlayout.addWidget(self.line_edit) hlayout.addWidget(self.button) hlayout.addWidget(self.tool_bar) hlayout.addStretch(3) hlayout.setSpacing(10) self.text_edit = QTextEdit() file_name = "./other/aboutFSFS.txt" with open(file_name, 'r', encoding='utf-8') as f: text = f.read() self.text_edit.setText(text) self.text_edit.setReadOnly(True) self.run.setEnabled(False) vlayout = QVBoxLayout() vlayout.addItem(hlayout) vlayout.addWidget(self.text_edit) vlayout.addWidget(self.status_bar) self.setLayout(vlayout) self.comb1.currentIndexChanged.connect(self.selectionChange1) # self.comb2.currentIndexChanged(self.selecttionChange2) self.button.clicked.connect(self.clickSearch) self.set_parameter.triggered.connect(self.getParameter) self.run.triggered.connect(self.runProcess) self.analysis.triggered.connect(self.runAnalysis) self.save.triggered.connect(self.triggeredSave)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(784, 600) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QLabel(self.centralwidget) self.label.setGeometry(QRect(220, 0, 341, 61)) font = QFont() font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setFocusPolicy(Qt.NoFocus) self.label.setFrameShape(QFrame.NoFrame) self.label.setTextFormat(Qt.AutoText) self.label.setScaledContents(False) self.label.setAlignment(Qt.AlignCenter) self.label.setIndent(-1) self.label.setObjectName("label") self.line = QFrame(self.centralwidget) self.line.setGeometry(QRect(0, 40, 831, 31)) self.line.setFrameShape(QFrame.HLine) self.line.setFrameShadow(QFrame.Sunken) self.line.setObjectName("line") self.line_2 = QFrame(self.centralwidget) self.line_2.setGeometry(QRect(0, 220, 801, 31)) self.line_2.setFrameShape(QFrame.HLine) self.line_2.setFrameShadow(QFrame.Sunken) self.line_2.setObjectName("line_2") self.Melody1 = QPushButton(self.centralwidget) self.Melody1.setGeometry(QRect(-270, 240, 1091, 61)) self.Melody1.setObjectName("pushButton") self.start = QPushButton(self.centralwidget) self.start.setGeometry(QRect(520, 370, 81, 81)) self.start.setDefault(True) self.start.setFlat(False) self.start.setObjectName("pushButton_2") self.stop1 = QPushButton(self.centralwidget) self.stop1.setGeometry(QRect(190, 370, 81, 81)) self.stop1.setCheckable(False) self.stop1.setAutoExclusive(True) self.stop1.setDefault(True) self.stop1.setObjectName("pushButton_3") self.hours = QSpinBox(self.centralwidget) self.hours.setGeometry(QRect(150, 120, 71, 31)) self.hours.setObjectName("spinBox") self.mins = QSpinBox(self.centralwidget) self.mins.setGeometry(QRect(350, 120, 71, 31)) self.mins.setObjectName("spinBox_2") self.sec = QSpinBox(self.centralwidget) self.sec.setGeometry(QRect(550, 120, 71, 31)) self.sec.setObjectName("spinBox_3") self.label_h = QLabel(self.centralwidget) self.label_h.setGeometry(QRect(240, 130, 41, 16)) self.label_h.setTextFormat(Qt.AutoText) self.label_h.setObjectName("label_3") self.label_m = QLabel(self.centralwidget) self.label_m.setGeometry(QRect(440, 130, 41, 16)) self.label_m.setTextFormat(Qt.AutoText) self.label_m.setObjectName("label_4") self.label_s = QLabel(self.centralwidget) self.label_s.setGeometry(QRect(640, 130, 41, 16)) self.label_s.setTextFormat(Qt.AutoText) self.label_s.setObjectName("label_5") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setGeometry(QRect(0, 0, 784, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.setngsButton = QPushButton(self.centralwidget) self.setngsButton.resize(100, 25) self.setngsButton.move(600, 20) self.setngsButton.setText("Доп. Настройки") self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow)
def __init__(self, persepolis_setting): super().__init__() # MainWindow self.persepolis_setting = persepolis_setting icons = ':/' + \ str(self.persepolis_setting.value('settings/icons')) + '/' self.setWindowTitle("Persepolis Download Manager") self.setWindowIcon( QIcon.fromTheme('persepolis', QIcon(':/persepolis.svg'))) self.centralwidget = QWidget(self) self.verticalLayout = QVBoxLayout(self.centralwidget) # enable drag and drop self.setAcceptDrops(True) # frame self.frame = QFrame(self.centralwidget) # download_table_horizontalLayout download_table_horizontalLayout = QHBoxLayout() tabels_splitter = QSplitter(Qt.Horizontal) # category_tree self.category_tree_qwidget = QWidget(self) category_tree_verticalLayout = QVBoxLayout() self.category_tree = CategoryTreeView(self) category_tree_verticalLayout.addWidget(self.category_tree) self.category_tree_model = QStandardItemModel() self.category_tree.setModel(self.category_tree_model) category_table_header = ['Category'] self.category_tree_model.setHorizontalHeaderLabels( category_table_header) self.category_tree.header().setStretchLastSection(True) # inserting items in category_tree for item in ['All Downloads', 'Single Downloads']: qstandarditem = QStandardItem(item) font = QtGui.QFont() font.setBold(True) qstandarditem.setFont(font) qstandarditem.setEditable(False) self.category_tree_model.appendRow(qstandarditem) # queue_panel self.queue_panel_widget = QWidget(self) queue_panel_verticalLayout_main = QVBoxLayout(self.queue_panel_widget) # queue_panel_show_button self.queue_panel_show_button = QPushButton(self) queue_panel_verticalLayout_main.addWidget(self.queue_panel_show_button) # queue_panel_widget_frame self.queue_panel_widget_frame = QFrame(self) self.queue_panel_widget_frame.setFrameShape(QFrame.StyledPanel) self.queue_panel_widget_frame.setFrameShadow(QFrame.Raised) queue_panel_verticalLayout_main.addWidget( self.queue_panel_widget_frame) queue_panel_verticalLayout = QVBoxLayout(self.queue_panel_widget_frame) queue_panel_verticalLayout_main.setContentsMargins(50, -1, 50, -1) # start_end_frame self.start_end_frame = QFrame(self) # start time start_verticalLayout = QVBoxLayout(self.start_end_frame) self.start_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.start_checkBox) self.start_frame = QFrame(self) self.start_frame.setFrameShape(QFrame.StyledPanel) self.start_frame.setFrameShadow(QFrame.Raised) start_frame_verticalLayout = QVBoxLayout(self.start_frame) horizontalLayout_5 = QHBoxLayout() self.start_hour_spinBox = QSpinBox(self.start_frame) self.start_hour_spinBox.setMaximum(23) horizontalLayout_5.addWidget(self.start_hour_spinBox) self.start_label = QLabel(self.start_frame) horizontalLayout_5.addWidget(self.start_label) self.start_minute_spinBox = QSpinBox(self.start_frame) self.start_minute_spinBox.setMaximum(59) horizontalLayout_5.addWidget(self.start_minute_spinBox) start_frame_verticalLayout.addLayout(horizontalLayout_5) start_verticalLayout.addWidget(self.start_frame) # end time self.end_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.end_checkBox) self.end_frame = QFrame(self) self.end_frame.setFrameShape(QFrame.StyledPanel) self.end_frame.setFrameShadow(QFrame.Raised) end_frame_verticalLayout = QVBoxLayout(self.end_frame) horizontalLayout_6 = QHBoxLayout() self.end_hour_spinBox = QSpinBox(self.end_frame) self.end_hour_spinBox.setMaximum(23) horizontalLayout_6.addWidget(self.end_hour_spinBox) self.end_label = QLabel(self.end_frame) horizontalLayout_6.addWidget(self.end_label) self.end_minute_spinBox = QSpinBox(self.end_frame) self.end_minute_spinBox.setMaximum(59) horizontalLayout_6.addWidget(self.end_minute_spinBox) end_frame_verticalLayout.addLayout(horizontalLayout_6) start_verticalLayout.addWidget(self.end_frame) self.reverse_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.reverse_checkBox) queue_panel_verticalLayout.addWidget(self.start_end_frame) # limit_after_frame self.limit_after_frame = QFrame(self) # limit_checkBox limit_verticalLayout = QVBoxLayout(self.limit_after_frame) self.limit_checkBox = QCheckBox(self) limit_verticalLayout.addWidget(self.limit_checkBox) # limit_frame self.limit_frame = QFrame(self) self.limit_frame.setFrameShape(QFrame.StyledPanel) self.limit_frame.setFrameShadow(QFrame.Raised) limit_verticalLayout.addWidget(self.limit_frame) limit_frame_verticalLayout = QVBoxLayout(self.limit_frame) # limit_spinBox limit_frame_horizontalLayout = QHBoxLayout() self.limit_spinBox = QSpinBox(self) self.limit_spinBox.setMinimum(1) self.limit_spinBox.setMaximum(1023) limit_frame_horizontalLayout.addWidget(self.limit_spinBox) # limit_comboBox self.limit_comboBox = QComboBox(self) self.limit_comboBox.addItem("") self.limit_comboBox.addItem("") limit_frame_horizontalLayout.addWidget(self.limit_comboBox) limit_frame_verticalLayout.addLayout(limit_frame_horizontalLayout) # limit_pushButton self.limit_pushButton = QPushButton(self) limit_frame_verticalLayout.addWidget(self.limit_pushButton) # after_checkBox self.after_checkBox = QtWidgets.QCheckBox(self) limit_verticalLayout.addWidget(self.after_checkBox) # after_frame self.after_frame = QtWidgets.QFrame(self) self.after_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.after_frame.setFrameShadow(QtWidgets.QFrame.Raised) limit_verticalLayout.addWidget(self.after_frame) after_frame_verticalLayout = QVBoxLayout(self.after_frame) # after_comboBox self.after_comboBox = QComboBox(self) self.after_comboBox.addItem("") after_frame_verticalLayout.addWidget(self.after_comboBox) # after_pushButton self.after_pushButton = QPushButton(self) after_frame_verticalLayout.addWidget(self.after_pushButton) queue_panel_verticalLayout.addWidget(self.limit_after_frame) category_tree_verticalLayout.addWidget(self.queue_panel_widget) # keep_awake_checkBox self.keep_awake_checkBox = QCheckBox(self) queue_panel_verticalLayout.addWidget(self.keep_awake_checkBox) self.category_tree_qwidget.setLayout(category_tree_verticalLayout) tabels_splitter.addWidget(self.category_tree_qwidget) # download table widget self.download_table_content_widget = QWidget(self) download_table_content_widget_verticalLayout = QVBoxLayout( self.download_table_content_widget) self.download_table = DownloadTableWidget(self) download_table_content_widget_verticalLayout.addWidget( self.download_table) tabels_splitter.addWidget(self.download_table_content_widget) self.download_table.setColumnCount(13) self.download_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.download_table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.download_table.verticalHeader().hide() # self.download_table.setSortingEnabled(True) # hide gid and download dictioanry section self.download_table.setColumnHidden(8, True) self.download_table.setColumnHidden(9, True) download_table_header = [ 'File Name', 'Status', 'Size', 'Downloaded', 'Percentage', 'Connections', 'Transfer rate', 'Estimate time left', 'Gid', 'Info', 'First try date', 'Last try date', 'Category' ] self.download_table.setHorizontalHeaderLabels(download_table_header) # fixing the size of download_table when window is Maximized! self.download_table.horizontalHeader().setSectionResizeMode(0) self.download_table.horizontalHeader().setStretchLastSection(True) tabels_splitter.setStretchFactor(0, 3) # category_tree width tabels_splitter.setStretchFactor(1, 10) # ratio of tables's width download_table_horizontalLayout.addWidget(tabels_splitter) self.frame.setLayout(download_table_horizontalLayout) self.verticalLayout.addWidget(self.frame) self.setCentralWidget(self.centralwidget) # menubar self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 600, 24)) self.setMenuBar(self.menubar) fileMenu = self.menubar.addMenu('&File') editMenu = self.menubar.addMenu('&Edit') viewMenu = self.menubar.addMenu('&View') downloadMenu = self.menubar.addMenu('&Download') queueMenu = self.menubar.addMenu('&Queue') helpMenu = self.menubar.addMenu('&Help') # viewMenu submenus sortMenu = viewMenu.addMenu('Sort by') # statusbar self.statusbar = QStatusBar(self) self.setStatusBar(self.statusbar) self.statusbar.showMessage("Persepolis Download Manager") # toolBar self.toolBar2 = QToolBar(self) self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar2) self.toolBar2.setWindowTitle('Menu') self.toolBar2.setIconSize(QSize(38, 38)) self.toolBar2.setFloatable(False) self.toolBar2.setMovable(False) self.toolBar = QToolBar(self) self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.toolBar.setWindowTitle('Toolbar') self.toolBar.setIconSize(QSize(38, 38)) self.toolBar.setFloatable(False) self.toolBar.setMovable(False) #toolBar and menubar and actions self.stopAllAction = QAction(QIcon(icons + 'stop_all'), 'Stop all active downloads', self, statusTip='Stop all active downloads', triggered=self.stopAllDownloads) downloadMenu.addAction(self.stopAllAction) self.sort_file_name_Action = QAction('File name', self, triggered=self.sortByName) sortMenu.addAction(self.sort_file_name_Action) self.sort_file_size_Action = QAction('File size', self, triggered=self.sortBySize) sortMenu.addAction(self.sort_file_size_Action) self.sort_first_try_date_Action = QAction( 'First try date', self, triggered=self.sortByFirstTry) sortMenu.addAction(self.sort_first_try_date_Action) self.sort_last_try_date_Action = QAction('Last try date', self, triggered=self.sortByLastTry) sortMenu.addAction(self.sort_last_try_date_Action) self.sort_download_status_Action = QAction('Download status', self, triggered=self.sortByStatus) sortMenu.addAction(self.sort_download_status_Action) self.trayAction = QAction('Show system tray icon', self, statusTip="Show/Hide system tray icon", triggered=self.showTray) self.trayAction.setCheckable(True) viewMenu.addAction(self.trayAction) self.showMenuBarAction = QAction('Show menubar', self, statusTip='Show menubar', triggered=self.showMenuBar) self.showMenuBarAction.setCheckable(True) viewMenu.addAction(self.showMenuBarAction) self.showSidePanelAction = QAction('Show side panel', self, statusTip='Show side panel', triggered=self.showSidePanel) self.showSidePanelAction.setCheckable(True) viewMenu.addAction(self.showSidePanelAction) self.minimizeAction = QAction(QIcon(icons + 'minimize'), 'Minimize to system tray', self, shortcut="Ctrl+W", statusTip="Minimize to system tray", triggered=self.minMaxTray) viewMenu.addAction(self.minimizeAction) self.addlinkAction = QAction(QIcon(icons + 'add'), 'Add New Download Link', self, shortcut="Ctrl+N", statusTip="Add New Download Link", triggered=self.addLinkButtonPressed) fileMenu.addAction(self.addlinkAction) self.addtextfileAction = QAction( QIcon(icons + 'file'), 'Import links from text file', self, statusTip='Create a Text file and put links in it.line by line!', triggered=self.importText) fileMenu.addAction(self.addtextfileAction) self.resumeAction = QAction(QIcon(icons + 'play'), 'Resume Download', self, shortcut="Ctrl+R", statusTip="Resume Download", triggered=self.resumeButtonPressed) downloadMenu.addAction(self.resumeAction) self.pauseAction = QAction(QIcon(icons + 'pause'), 'Pause Download', self, shortcut="Ctrl+C", statusTip="Pause Download", triggered=self.pauseButtonPressed) downloadMenu.addAction(self.pauseAction) self.stopAction = QAction(QIcon(icons + 'stop'), 'Stop Download', self, shortcut="Ctrl+S", statusTip="Stop/Cancel Download", triggered=self.stopButtonPressed) downloadMenu.addAction(self.stopAction) self.removeAction = QAction(QIcon(icons + 'remove'), 'Remove Download', self, shortcut="Ctrl+D", statusTip="Remove Download", triggered=self.removeButtonPressed) downloadMenu.addAction(self.removeAction) self.propertiesAction = QAction(QIcon(icons + 'setting'), 'Properties', self, shortcut="Ctrl+P", statusTip="Properties", triggered=self.propertiesButtonPressed) downloadMenu.addAction(self.propertiesAction) self.progressAction = QAction(QIcon(icons + 'window'), 'Progress', self, shortcut="Ctrl+Z", statusTip="Progress", triggered=self.progressButtonPressed) downloadMenu.addAction(self.progressAction) self.openFileAction = QAction(QIcon(icons + 'file'), 'Open file', self, statusTip='Open file', triggered=self.openFile) fileMenu.addAction(self.openFileAction) self.openDownloadFolderAction = QAction( QIcon(icons + 'folder'), 'Open download folder', self, statusTip='Open download folder', triggered=self.openDownloadFolder) fileMenu.addAction(self.openDownloadFolderAction) self.deleteFileAction = QAction(QIcon(icons + 'trash'), 'Delete file', self, statusTip='Delete file', triggered=self.deleteFile) fileMenu.addAction(self.deleteFileAction) self.openDefaultDownloadFolderAction = QAction( QIcon(icons + 'folder'), 'Open default download folder', self, statusTip='Open default download folder', triggered=self.openDefaultDownloadFolder) fileMenu.addAction(self.openDefaultDownloadFolderAction) self.exitAction = QAction(QIcon(icons + 'exit'), 'Exit', self, shortcut="Ctrl+Q", statusTip="Exit", triggered=self.closeEvent) fileMenu.addAction(self.exitAction) self.selectAction = QAction('Select multiple items ', self, statusTip='Select multiple items', triggered=self.selectDownloads) self.selectAction.setCheckable(True) editMenu.addAction(self.selectAction) self.selectAllAction = QAction(QIcon(icons + 'select_all'), 'Select All', self, statusTip='Select All', triggered=self.selectAll) editMenu.addAction(self.selectAllAction) self.selectAllAction.setEnabled(False) self.removeSelectedAction = QAction( QIcon(icons + 'multi_remove'), 'Remove selected downloads form list', self, statusTip='Remove selected downloads form list', triggered=self.removeSelected) editMenu.addAction(self.removeSelectedAction) self.removeSelectedAction.setEnabled(False) self.deleteSelectedAction = QAction( QIcon(icons + 'multi_trash'), 'Delete selected download files', self, statusTip='Delete selected download files', triggered=self.deleteSelected) editMenu.addAction(self.deleteSelectedAction) self.deleteSelectedAction.setEnabled(False) self.createQueueAction = QAction(QIcon(icons + 'add_queue'), 'Create new queue', self, statusTip='Create new download queue', triggered=self.createQueue) queueMenu.addAction(self.createQueueAction) self.removeQueueAction = QAction(QIcon(icons + 'remove_queue'), 'Remove this queue', self, statusTip='Remove this queue', triggered=self.removeQueue) queueMenu.addAction(self.removeQueueAction) self.startQueueAction = QAction(QIcon(icons + 'start_queue'), 'Start this queue', self, statusTip='Start this queue', triggered=self.startQueue) queueMenu.addAction(self.startQueueAction) self.stopQueueAction = QAction(QIcon(icons + 'stop_queue'), 'Stop this queue', self, statusTip='Stop this queue', triggered=self.stopQueue) queueMenu.addAction(self.stopQueueAction) self.moveUpAction = QAction( QIcon(icons + 'up'), 'Move up this item', self, statusTip='Move currently selected item up by one row', triggered=self.moveUp) queueMenu.addAction(self.moveUpAction) self.moveDownAction = QAction( QIcon(icons + 'down'), 'Move down this item', self, statusTip='Move currently selected item down by one row', triggered=self.moveDown) queueMenu.addAction(self.moveDownAction) self.moveUpSelectedAction = QAction( QIcon(icons + 'multi_up'), 'Move up selected items', self, statusTip='Move currently selected items up by one row', triggered=self.moveUpSelected) queueMenu.addAction(self.moveUpSelectedAction) self.moveDownSelectedAction = QAction( QIcon(icons + 'multi_down'), 'Move down selected items', self, statusTip='Move currently selected items down by one row', triggered=self.moveDownSelected) queueMenu.addAction(self.moveDownSelectedAction) self.preferencesAction = QAction(QIcon(icons + 'preferences'), 'Preferences', self, statusTip='Preferences', triggered=self.openPreferences, menuRole=5) editMenu.addAction(self.preferencesAction) self.aboutAction = QAction(QIcon(icons + 'about'), 'About', self, statusTip='About', triggered=self.openAbout, menuRole=4) helpMenu.addAction(self.aboutAction) self.issueAction = QAction(QIcon(icons + 'about'), 'Report an issue', self, statusTip='Report an issue', triggered=self.reportIssue) helpMenu.addAction(self.issueAction) self.updateAction = QAction(QIcon(icons + 'about'), 'Check for newer version', self, statusTip='Check for newer release', triggered=self.newUpdate) helpMenu.addAction(self.updateAction) self.browserAction = QAction(QIcon(icons + 'browser'), 'Browser integration', self, statusTip='Browser inegration', triggered=self.browserIntegration) helpMenu.addAction(self.browserAction) self.helpAction = QAction(QIcon(icons + 'about'), 'Help', self, statusTip='Help', triggered=self.persepolisHelp) helpMenu.addAction(self.helpAction) self.qmenu = MenuWidget(self) self.toolBar2.addWidget(self.qmenu) # labels self.queue_panel_show_button.setText("Hide options") self.start_checkBox.setText("Start Time") self.start_label.setText(":") self.end_checkBox.setText("End Time") self.end_label.setText(":") self.reverse_checkBox.setText("Download bottom of\n the list first") self.limit_checkBox.setText("Limit Speed") self.limit_comboBox.setItemText(0, "KB/S") self.limit_comboBox.setItemText(1, "MB/S") self.limit_pushButton.setText("Apply") self.after_checkBox.setText("After download") self.after_comboBox.setItemText(0, "Shut Down") self.keep_awake_checkBox.setText("Keep system awake!") self.keep_awake_checkBox.setToolTip( "<html><head/><body><p>This option is preventing system from going to sleep.\ This is necessary if your power manager is suspending system automatically. </p></body></html>" ) self.after_pushButton.setText("Apply")
def __init__(self, persepolis_setting): super().__init__() # MainWindow self.persepolis_setting = persepolis_setting # add support for other languages locale = str(self.persepolis_setting.value('settings/locale')) QLocale.setDefault(QLocale(locale)) self.translator = QTranslator() if self.translator.load(':/translations/locales/ui_' + locale, 'ts'): QCoreApplication.installTranslator(self.translator) # set ui direction ui_direction = self.persepolis_setting.value('ui_direction') if ui_direction == 'rtl': self.setLayoutDirection(Qt.RightToLeft) elif ui_direction in 'ltr': self.setLayoutDirection(Qt.LeftToRight) icons = ':/' + \ str(self.persepolis_setting.value('settings/icons')) + '/' self.setWindowTitle( QCoreApplication.translate("mainwindow_ui_tr", "Persepolis Download Manager")) self.setWindowIcon( QIcon.fromTheme('persepolis', QIcon(':/persepolis.svg'))) self.centralwidget = QWidget(self) self.verticalLayout = QVBoxLayout(self.centralwidget) # enable drag and drop self.setAcceptDrops(True) # frame self.frame = QFrame(self.centralwidget) # download_table_horizontalLayout download_table_horizontalLayout = QHBoxLayout() tabels_splitter = QSplitter(Qt.Horizontal) # category_tree self.category_tree_qwidget = QWidget(self) category_tree_verticalLayout = QVBoxLayout() self.category_tree = CategoryTreeView(self) category_tree_verticalLayout.addWidget(self.category_tree) self.category_tree_model = QStandardItemModel() self.category_tree.setModel(self.category_tree_model) category_table_header = [ QCoreApplication.translate("mainwindow_ui_tr", 'Category') ] self.category_tree_model.setHorizontalHeaderLabels( category_table_header) self.category_tree.header().setStretchLastSection(True) self.category_tree.header().setDefaultAlignment(Qt.AlignCenter) # queue_panel self.queue_panel_widget = QWidget(self) queue_panel_verticalLayout_main = QVBoxLayout(self.queue_panel_widget) # queue_panel_show_button self.queue_panel_show_button = QPushButton(self) queue_panel_verticalLayout_main.addWidget(self.queue_panel_show_button) # queue_panel_widget_frame self.queue_panel_widget_frame = QFrame(self) self.queue_panel_widget_frame.setFrameShape(QFrame.StyledPanel) self.queue_panel_widget_frame.setFrameShadow(QFrame.Raised) queue_panel_verticalLayout_main.addWidget( self.queue_panel_widget_frame) queue_panel_verticalLayout = QVBoxLayout(self.queue_panel_widget_frame) queue_panel_verticalLayout_main.setContentsMargins(50, -1, 50, -1) # start_end_frame self.start_end_frame = QFrame(self) # start time start_verticalLayout = QVBoxLayout(self.start_end_frame) self.start_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.start_checkBox) self.start_frame = QFrame(self) self.start_frame.setFrameShape(QFrame.StyledPanel) self.start_frame.setFrameShadow(QFrame.Raised) start_frame_verticalLayout = QVBoxLayout(self.start_frame) self.start_time_qDataTimeEdit = QDateTimeEdit(self.start_frame) self.start_time_qDataTimeEdit.setDisplayFormat('H:mm') start_frame_verticalLayout.addWidget(self.start_time_qDataTimeEdit) start_verticalLayout.addWidget(self.start_frame) # end time self.end_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.end_checkBox) self.end_frame = QFrame(self) self.end_frame.setFrameShape(QFrame.StyledPanel) self.end_frame.setFrameShadow(QFrame.Raised) end_frame_verticalLayout = QVBoxLayout(self.end_frame) self.end_time_qDateTimeEdit = QDateTimeEdit(self.end_frame) self.end_time_qDateTimeEdit.setDisplayFormat('H:mm') end_frame_verticalLayout.addWidget(self.end_time_qDateTimeEdit) start_verticalLayout.addWidget(self.end_frame) self.reverse_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.reverse_checkBox) queue_panel_verticalLayout.addWidget(self.start_end_frame) # limit_after_frame self.limit_after_frame = QFrame(self) # limit_checkBox limit_verticalLayout = QVBoxLayout(self.limit_after_frame) self.limit_checkBox = QCheckBox(self) limit_verticalLayout.addWidget(self.limit_checkBox) # limit_frame self.limit_frame = QFrame(self) self.limit_frame.setFrameShape(QFrame.StyledPanel) self.limit_frame.setFrameShadow(QFrame.Raised) limit_verticalLayout.addWidget(self.limit_frame) limit_frame_verticalLayout = QVBoxLayout(self.limit_frame) # limit_spinBox limit_frame_horizontalLayout = QHBoxLayout() self.limit_spinBox = QDoubleSpinBox(self) self.limit_spinBox.setMinimum(1) self.limit_spinBox.setMaximum(1023) limit_frame_horizontalLayout.addWidget(self.limit_spinBox) # limit_comboBox self.limit_comboBox = QComboBox(self) self.limit_comboBox.addItem("") self.limit_comboBox.addItem("") limit_frame_horizontalLayout.addWidget(self.limit_comboBox) limit_frame_verticalLayout.addLayout(limit_frame_horizontalLayout) # limit_pushButton self.limit_pushButton = QPushButton(self) limit_frame_verticalLayout.addWidget(self.limit_pushButton) # after_checkBox self.after_checkBox = QtWidgets.QCheckBox(self) limit_verticalLayout.addWidget(self.after_checkBox) # after_frame self.after_frame = QtWidgets.QFrame(self) self.after_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.after_frame.setFrameShadow(QtWidgets.QFrame.Raised) limit_verticalLayout.addWidget(self.after_frame) after_frame_verticalLayout = QVBoxLayout(self.after_frame) # after_comboBox self.after_comboBox = QComboBox(self) self.after_comboBox.addItem("") after_frame_verticalLayout.addWidget(self.after_comboBox) # after_pushButton self.after_pushButton = QPushButton(self) after_frame_verticalLayout.addWidget(self.after_pushButton) queue_panel_verticalLayout.addWidget(self.limit_after_frame) category_tree_verticalLayout.addWidget(self.queue_panel_widget) # keep_awake_checkBox self.keep_awake_checkBox = QCheckBox(self) queue_panel_verticalLayout.addWidget(self.keep_awake_checkBox) self.category_tree_qwidget.setLayout(category_tree_verticalLayout) tabels_splitter.addWidget(self.category_tree_qwidget) # download table widget self.download_table_content_widget = QWidget(self) download_table_content_widget_verticalLayout = QVBoxLayout( self.download_table_content_widget) self.download_table = DownloadTableWidget(self) download_table_content_widget_verticalLayout.addWidget( self.download_table) tabels_splitter.addWidget(self.download_table_content_widget) self.download_table.setColumnCount(13) self.download_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.download_table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.download_table.verticalHeader().hide() # hide gid and download dictioanry section self.download_table.setColumnHidden(8, True) self.download_table.setColumnHidden(9, True) download_table_header = [ QCoreApplication.translate("mainwindow_ui_tr", 'File Name'), QCoreApplication.translate("mainwindow_ui_tr", 'Status'), QCoreApplication.translate("mainwindow_ui_tr", 'Size'), QCoreApplication.translate("mainwindow_ui_tr", 'Downloaded'), QCoreApplication.translate("mainwindow_ui_tr", 'Percentage'), QCoreApplication.translate("mainwindow_ui_tr", 'Connections'), QCoreApplication.translate("mainwindow_ui_tr", 'Transfer rate'), QCoreApplication.translate("mainwindow_ui_tr", 'Estimated time left'), 'Gid', QCoreApplication.translate("mainwindow_ui_tr", 'Link'), QCoreApplication.translate("mainwindow_ui_tr", 'First try date'), QCoreApplication.translate("mainwindow_ui_tr", 'Last try date'), QCoreApplication.translate("mainwindow_ui_tr", 'Category') ] self.download_table.setHorizontalHeaderLabels(download_table_header) # fixing the size of download_table when window is Maximized! self.download_table.horizontalHeader().setSectionResizeMode(0) self.download_table.horizontalHeader().setStretchLastSection(True) tabels_splitter.setStretchFactor(0, 3) # category_tree width tabels_splitter.setStretchFactor(1, 10) # ratio of tables's width download_table_horizontalLayout.addWidget(tabels_splitter) self.frame.setLayout(download_table_horizontalLayout) self.verticalLayout.addWidget(self.frame) self.setCentralWidget(self.centralwidget) # menubar self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 600, 24)) self.setMenuBar(self.menubar) fileMenu = self.menubar.addMenu( QCoreApplication.translate("mainwindow_ui_tr", '&File')) editMenu = self.menubar.addMenu( QCoreApplication.translate("mainwindow_ui_tr", '&Edit')) viewMenu = self.menubar.addMenu( QCoreApplication.translate("mainwindow_ui_tr", '&View')) downloadMenu = self.menubar.addMenu( QCoreApplication.translate("mainwindow_ui_tr", '&Download')) queueMenu = self.menubar.addMenu( QCoreApplication.translate("mainwindow_ui_tr", '&Queue')) videoFinderMenu = self.menubar.addMenu( QCoreApplication.translate("mainwindow_ui_tr", '&Video Finder')) helpMenu = self.menubar.addMenu( QCoreApplication.translate("mainwindow_ui_tr", '&Help')) # viewMenu submenus sortMenu = viewMenu.addMenu( QCoreApplication.translate("mainwindow_ui_tr", 'Sort by')) # statusbar self.statusbar = QStatusBar(self) self.setStatusBar(self.statusbar) self.statusbar.showMessage( QCoreApplication.translate("mainwindow_ui_tr", "Persepolis Download Manager")) # toolBar self.toolBar2 = QToolBar(self) self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar2) self.toolBar2.setWindowTitle( QCoreApplication.translate("mainwindow_ui_tr", 'Menu')) self.toolBar2.setFloatable(False) self.toolBar2.setMovable(False) self.toolBar = QToolBar(self) self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.toolBar.setWindowTitle( QCoreApplication.translate("mainwindow_ui_tr", 'Toolbar')) self.toolBar.setFloatable(False) self.toolBar.setMovable(False) #toolBar and menubar and actions self.videoFinderAddLinkAction = QAction( QIcon(icons + 'video_finder'), QCoreApplication.translate("mainwindow_ui_tr", 'Find Video Links'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Download video or audio from Youtube, Vimeo, etc...'), triggered=self.showVideoFinderAddLinkWindow) videoFinderMenu.addAction(self.videoFinderAddLinkAction) self.stopAllAction = QAction(QIcon(icons + 'stop_all'), QCoreApplication.translate( "mainwindow_ui_tr", 'Stop all active downloads'), self, statusTip='Stop all active downloads', triggered=self.stopAllDownloads) downloadMenu.addAction(self.stopAllAction) self.sort_file_name_Action = QAction(QCoreApplication.translate( "mainwindow_ui_tr", 'File name'), self, triggered=self.sortByName) sortMenu.addAction(self.sort_file_name_Action) self.sort_file_size_Action = QAction(QCoreApplication.translate( "mainwindow_ui_tr", 'File size'), self, triggered=self.sortBySize) sortMenu.addAction(self.sort_file_size_Action) self.sort_first_try_date_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'First try date'), self, triggered=self.sortByFirstTry) sortMenu.addAction(self.sort_first_try_date_Action) self.sort_last_try_date_Action = QAction(QCoreApplication.translate( "mainwindow_ui_tr", 'Last try date'), self, triggered=self.sortByLastTry) sortMenu.addAction(self.sort_last_try_date_Action) self.sort_download_status_Action = QAction(QCoreApplication.translate( "mainwindow_ui_tr", 'Download status'), self, triggered=self.sortByStatus) sortMenu.addAction(self.sort_download_status_Action) self.trayAction = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Show system tray icon'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Show/Hide system tray icon"), triggered=self.showTray) self.trayAction.setCheckable(True) viewMenu.addAction(self.trayAction) self.showMenuBarAction = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Show menubar'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Show menubar'), triggered=self.showMenuBar) self.showMenuBarAction.setCheckable(True) viewMenu.addAction(self.showMenuBarAction) self.showSidePanelAction = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Show side panel'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Show side panel'), triggered=self.showSidePanel) self.showSidePanelAction.setCheckable(True) viewMenu.addAction(self.showSidePanelAction) self.minimizeAction = QAction( QIcon(icons + 'minimize'), QCoreApplication.translate("mainwindow_ui_tr", 'Minimize to system tray'), self, shortcut="Ctrl+W", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Minimize to system tray"), triggered=self.minMaxTray) viewMenu.addAction(self.minimizeAction) self.addlinkAction = QAction( QIcon(icons + 'add'), QCoreApplication.translate("mainwindow_ui_tr", 'Add New Download Link'), self, shortcut="Ctrl+N", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Add New Download Link"), triggered=self.addLinkButtonPressed) fileMenu.addAction(self.addlinkAction) self.addtextfileAction = QAction( QIcon(icons + 'file'), QCoreApplication.translate("mainwindow_ui_tr", 'Import links from text file'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Create a Text file and put links in it.line by line!'), triggered=self.importText) fileMenu.addAction(self.addtextfileAction) self.resumeAction = QAction( QIcon(icons + 'play'), QCoreApplication.translate("mainwindow_ui_tr", 'Resume Download'), self, shortcut="Ctrl+R", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Resume Download"), triggered=self.resumeButtonPressed) downloadMenu.addAction(self.resumeAction) self.pauseAction = QAction( QIcon(icons + 'pause'), QCoreApplication.translate("mainwindow_ui_tr", 'Pause Download'), self, shortcut="Ctrl+C", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Pause Download"), triggered=self.pauseButtonPressed) downloadMenu.addAction(self.pauseAction) self.stopAction = QAction( QIcon(icons + 'stop'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop Download'), self, shortcut="Ctrl+S", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Stop/Cancel Download"), triggered=self.stopButtonPressed) downloadMenu.addAction(self.stopAction) self.propertiesAction = QAction( QIcon(icons + 'setting'), QCoreApplication.translate("mainwindow_ui_tr", 'Properties'), self, shortcut="Ctrl+P", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Properties"), triggered=self.propertiesButtonPressed) downloadMenu.addAction(self.propertiesAction) self.progressAction = QAction( QIcon(icons + 'window'), QCoreApplication.translate("mainwindow_ui_tr", 'Progress'), self, shortcut="Ctrl+Z", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Progress"), triggered=self.progressButtonPressed) downloadMenu.addAction(self.progressAction) self.openFileAction = QAction( QIcon(icons + 'file'), QCoreApplication.translate("mainwindow_ui_tr", 'Open file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open file'), triggered=self.openFile) fileMenu.addAction(self.openFileAction) self.openDownloadFolderAction = QAction( QIcon(icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'Open download folder'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open download folder'), triggered=self.openDownloadFolder) fileMenu.addAction(self.openDownloadFolderAction) self.openDefaultDownloadFolderAction = QAction( QIcon(icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'Open default download folder'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Open default download folder'), triggered=self.openDefaultDownloadFolder) fileMenu.addAction(self.openDefaultDownloadFolderAction) self.exitAction = QAction( QIcon(icons + 'exit'), QCoreApplication.translate("mainwindow_ui_tr", 'Exit'), self, shortcut="Ctrl+Q", statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Exit"), triggered=self.closeEvent) fileMenu.addAction(self.exitAction) self.clearAction = QAction(QIcon(icons + 'multi_remove'), QCoreApplication.translate( "mainwindow_ui_tr", 'Clear download list'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Clear all items in download list'), triggered=self.clearDownloadList) editMenu.addAction(self.clearAction) self.removeSelectedAction = QAction( QIcon(icons + 'remove'), QCoreApplication.translate("mainwindow_ui_tr", 'Remove selected downloads from list'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Remove selected downloads form list'), triggered=self.removeSelected) editMenu.addAction(self.removeSelectedAction) self.removeSelectedAction.setEnabled(False) self.deleteSelectedAction = QAction( QIcon(icons + 'trash'), QCoreApplication.translate("mainwindow_ui_tr", 'Delete selected download files'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Delete selected download files'), triggered=self.deleteSelected) editMenu.addAction(self.deleteSelectedAction) self.deleteSelectedAction.setEnabled(False) self.createQueueAction = QAction( QIcon(icons + 'add_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Create new queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Create new download queue'), triggered=self.createQueue) queueMenu.addAction(self.createQueueAction) self.removeQueueAction = QAction( QIcon(icons + 'remove_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Remove this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Remove this queue'), triggered=self.removeQueue) queueMenu.addAction(self.removeQueueAction) self.startQueueAction = QAction( QIcon(icons + 'start_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Start this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Start this queue'), triggered=self.startQueue) queueMenu.addAction(self.startQueueAction) self.stopQueueAction = QAction( QIcon(icons + 'stop_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Stop this queue'), triggered=self.stopQueue) queueMenu.addAction(self.stopQueueAction) self.moveUpSelectedAction = QAction( QIcon(icons + 'multi_up'), QCoreApplication.translate("mainwindow_ui_tr", 'Move up selected items'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Move currently selected items up by one row'), triggered=self.moveUpSelected) queueMenu.addAction(self.moveUpSelectedAction) self.moveDownSelectedAction = QAction( QIcon(icons + 'multi_down'), QCoreApplication.translate("mainwindow_ui_tr", 'Move down selected items'), self, statusTip=QCoreApplication.translate( "mainwindow_ui_tr", 'Move currently selected items down by one row'), triggered=self.moveDownSelected) queueMenu.addAction(self.moveDownSelectedAction) self.preferencesAction = QAction( QIcon(icons + 'preferences'), QCoreApplication.translate("mainwindow_ui_tr", 'Preferences'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Preferences'), triggered=self.openPreferences, menuRole=5) editMenu.addAction(self.preferencesAction) self.aboutAction = QAction( QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'About'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'About'), triggered=self.openAbout, menuRole=4) helpMenu.addAction(self.aboutAction) self.issueAction = QAction( QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Report an issue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Report an issue'), triggered=self.reportIssue) helpMenu.addAction(self.issueAction) self.updateAction = QAction( QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Check for newer version'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Check for newer release'), triggered=self.newUpdate) helpMenu.addAction(self.updateAction) self.logAction = QAction( QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Show log file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Help'), triggered=self.showLog) helpMenu.addAction(self.logAction) self.helpAction = QAction( QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Help'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Help'), triggered=self.persepolisHelp) helpMenu.addAction(self.helpAction) self.qmenu = MenuWidget(self) self.toolBar2.addWidget(self.qmenu) # labels self.queue_panel_show_button.setText( QCoreApplication.translate("mainwindow_ui_tr", "Hide options")) self.start_checkBox.setText( QCoreApplication.translate("mainwindow_ui_tr", "Start Time")) self.end_checkBox.setText( QCoreApplication.translate("mainwindow_ui_tr", "End Time")) self.reverse_checkBox.setText( QCoreApplication.translate("mainwindow_ui_tr", "Download bottom of\n the list first")) self.limit_checkBox.setText( QCoreApplication.translate("mainwindow_ui_tr", "Limit Speed")) self.limit_comboBox.setItemText(0, "KiB/s") self.limit_comboBox.setItemText(1, "MiB/s") self.limit_pushButton.setText( QCoreApplication.translate("mainwindow_ui_tr", "Apply")) self.after_checkBox.setText( QCoreApplication.translate("mainwindow_ui_tr", "After download")) self.after_comboBox.setItemText( 0, QCoreApplication.translate("mainwindow_ui_tr", "Shut Down")) self.keep_awake_checkBox.setText( QCoreApplication.translate("mainwindow_ui_tr", "Keep system awake!")) self.keep_awake_checkBox.setToolTip( QCoreApplication.translate( "mainwindow_ui_tr", "<html><head/><body><p>This option is preventing system from going to sleep.\ This is necessary if your power manager is suspending system automatically. </p></body></html>" )) self.after_pushButton.setText( QCoreApplication.translate("mainwindow_ui_tr", "Apply"))
def __init__(self, dwarf_args, flags=None): super(AppWindow, self).__init__(flags) self.dwarf_args = dwarf_args self.session_manager = SessionManager(self) self.session_manager.sessionCreated.connect(self.session_created) self.session_manager.sessionStopped.connect(self.session_stopped) self.session_manager.sessionClosed.connect(self.session_closed) self._tab_order = [ 'debug', 'modules', 'ranges', 'jvm-inspector', 'jvm-debugger' ] self._is_newer_dwarf = False self.q_settings = QSettings(utils.home_path() + "dwarf_window_pos.ini", QSettings.IniFormat) self.menu = self.menuBar() self.view_menu = None # dockwidgets self.watchpoints_dwidget = None self.breakpoint_dwiget = None self.bookmarks_dwiget = None self.registers_dock = None self.console_dock = None self.backtrace_dock = None self.threads_dock = None # panels self.asm_panel = None self.backtrace_panel = None self.bookmarks_panel = None self.console_panel = None self.context_panel = None self.debug_panel = None self.contexts_list_panel = None self.data_panel = None self.ftrace_panel = None self.breakpoints_panel = None self.objc_inspector_panel = None self.java_inspector_panel = None self.java_explorer_panel = None self.java_trace_panel = None self.modules_panel = None self.ranges_panel = None self.search_panel = None self.smali_panel = None self.watchpoints_panel = None self._ui_elems = [] self.setWindowTitle( 'Dwarf - A debugger for reverse engineers, crackers and security analyst' ) # load external assets _app = QApplication.instance() # themes self.prefs = Prefs() utils.set_theme(self.prefs.get('dwarf_ui_theme', 'dark'), self.prefs) # load font if os.path.exists(utils.resource_path('assets/Anton.ttf')): QFontDatabase.addApplicationFont( utils.resource_path('assets/Anton.ttf')) else: QFontDatabase.addApplicationFont(':/assets/Anton.ttf') if os.path.exists(utils.resource_path('assets/OpenSans-Regular.ttf')): QFontDatabase.addApplicationFont( utils.resource_path('assets/OpenSans-Regular.ttf')) else: QFontDatabase.addApplicationFont(':/assets/OpenSans-Regular.ttf') if os.path.exists(utils.resource_path('assets/OpenSans-Bold.ttf')): QFontDatabase.addApplicationFont( utils.resource_path('assets/OpenSans-Bold.ttf')) else: QFontDatabase.addApplicationFont(':/assets/OpenSans-Bold.ttf') font = QFont("OpenSans", 9, QFont.Normal) # TODO: add settingsdlg font_size = self.prefs.get('dwarf_ui_font_size', 12) font.setPixelSize(font_size) _app.setFont(font) # mainwindow statusbar self.progressbar = QProgressBar() self.progressbar.setRange(0, 0) self.progressbar.setVisible(False) self.progressbar.setFixedHeight(15) self.progressbar.setFixedWidth(100) self.progressbar.setTextVisible(False) self.progressbar.setValue(30) self.statusbar = QStatusBar(self) self.statusbar.setAutoFillBackground(False) self.statusbar.addPermanentWidget(self.progressbar) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.main_tabs = QTabWidget(self) self.main_tabs.setMovable(False) self.main_tabs.setTabsClosable(True) self.main_tabs.setAutoFillBackground(True) self.main_tabs.tabCloseRequested.connect(self._on_close_tab) self.setCentralWidget(self.main_tabs) # pluginmanager self.plugin_manager = PluginManager(self) self.plugin_manager.reload_plugins() self.welcome_window = None if dwarf_args.any == '': self.welcome_window = WelcomeDialog(self) self.welcome_window.setModal(True) self.welcome_window.onIsNewerVersion.connect( self._enable_update_menu) self.welcome_window.onUpdateComplete.connect( self._on_dwarf_updated) self.welcome_window.setWindowTitle( 'Welcome to Dwarf - A debugger for reverse engineers, crackers and security analyst' ) self.welcome_window.onSessionSelected.connect(self._start_session) # wait for welcome screen self.hide() self.welcome_window.show() else: print('* Starting new Session') self._start_session(dwarf_args.target)
def set_status(self, msg): status = QStatusBar() status.showMessage(msg) self.setStatusBar(status)