def initUI(self): self.move(400, 400) self.setFixedSize(*SCREEN_SIZE) self.setWindowTitle('Отображение картинки') self.draw = QPixmap(self.image) self.image1 = QLabel(self) self.image1.move(0, 100) self.image1.resize(600, 450) self.image1.setPixmap(self.draw) # self.image1.mouseReleaseEvent = self.myfunction self.searchbar = QTextEdit(self) self.searchbar.setAcceptRichText(False) self.searchbar.setGeometry(0, 0, 250, 50) self.searchbutton = QPushButton(self, text='search') self.searchbutton.setGeometry(250, 0, 60, 25) self.searchbutton.action = 'start_search' self.searchbutton.clicked.connect(self.onClick) key_enter = QShortcut(QKeySequence('enter'), self) key_enter.action = 'search' key_enter.activated.connect(self.onClick) self.zoomup = QPushButton(self, text='+') self.zoomup.setGeometry(250, 25, 30, 25) self.zoomup.action = 'zoomplus' self.zoomup.clicked.connect(self.onClick) key_pageup = QShortcut(QKeySequence('PgUp'), self) key_pageup.action = 'zoomplus' key_pageup.activated.connect(self.onClick) self.zoomdown = QPushButton(self, text='-') self.zoomdown.setGeometry(280, 25, 30, 25) self.zoomdown.action = 'zoomminus' self.zoomdown.clicked.connect(self.onClick) self.map1 = QPushButton(self, text='map') self.map1.setGeometry(310, 0, 30, 25) self.map1.action = 'map' self.map1.clicked.connect(self.onClick) self.map2 = QPushButton(self, text='sat') self.map2.setGeometry(310, 25, 30, 25) self.map2.action = 'sat' self.map2.clicked.connect(self.onClick) self.map3 = QPushButton(self, text='skl') self.map3.setGeometry(340, 0, 30, 25) self.map3.action = 'skl' self.map3.clicked.connect(self.onClick) self.map4 = QPushButton(self, text='trf') self.map4.setGeometry(340, 25, 30, 25) self.map4.action = 'trf' self.map4.clicked.connect(self.onClick) self.up = QPushButton(self, text='^') self.up.setGeometry(400, 0, 30, 25) self.up.action = 'up' self.up.clicked.connect(self.onClick) key_up = QShortcut(QKeySequence('MoveToPreviousLine'), self) key_up.action = 'up' key_up.activated.connect(self.onClick) self.down = QPushButton(self, text='v') self.down.setGeometry(400, 25, 30, 25) self.down.action = 'down' self.down.clicked.connect(self.onClick) key_down = QShortcut(QKeySequence('MoveToNextLine'), self) key_down.action = 'down' key_down.activated.connect(self.onClick) self.right = QPushButton(self, text='>') self.right.setGeometry(430, 25, 30, 25) self.right.action = 'right' self.right.clicked.connect(self.onClick) key_right = QShortcut(QKeySequence('MoveToNextChar'), self) key_right.action = 'right' key_right.activated.connect(self.onClick) self.left = QPushButton(self, text='<') self.left.setGeometry(370, 25, 30, 25) self.left.action = 'left' self.left.clicked.connect(self.onClick) key_left = QShortcut(QKeySequence('MoveToPreviousChar'), self) key_left.action = 'left' key_left.activated.connect(self.onClick) self.clear = QPushButton(self, text='Del flag') self.clear.setGeometry(460, 0, 60, 25) self.clear.action = 'clearflag' self.clear.clicked.connect(self.onClick) self.clear1 = QPushButton(self, text='Clear down') self.clear1.setGeometry(460, 25, 60, 25) self.clear1.action = 'clearaddress' self.clear1.clicked.connect(self.onClick) key_pagedown = QShortcut(QKeySequence('PgDown'), self) key_pagedown.action = 'zoomminus' key_pagedown.activated.connect(self.onClick) self.fullAdress = QTextEdit(self) self.fullAdress.setGeometry(0, 50, SCREEN_SIZE[0], 25) self.fullAdress.setReadOnly(True)
def __init__(self, parent=None): # pylint: disable=too-many-statements super(WatchpointsWidget, self).__init__(parent=parent) self._app_window = parent if self._app_window.dwarf is None: print('WatchpointsWidget created before Dwarf exists') return self._uppercase_hex = True self.setAutoFillBackground(True) # connect to dwarf self._app_window.dwarf.onWatchpointAdded.connect(self._on_watchpoint_added) self._app_window.dwarf.onWatchpointRemoved.connect( self._on_watchpoint_removed) # setup our model self._watchpoints_model = QStandardItemModel(0, 5) self._watchpoints_model.setHeaderData(0, Qt.Horizontal, 'Address') self._watchpoints_model.setHeaderData(1, Qt.Horizontal, 'R') self._watchpoints_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._watchpoints_model.setHeaderData(2, Qt.Horizontal, 'W') self._watchpoints_model.setHeaderData(2, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._watchpoints_model.setHeaderData(3, Qt.Horizontal, 'X') self._watchpoints_model.setHeaderData(3, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._watchpoints_model.setHeaderData(4, Qt.Horizontal, 'S') self._watchpoints_model.setHeaderData(4, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) # setup ui v_box = QVBoxLayout(self) v_box.setContentsMargins(0, 0, 0, 0) self.list_view = DwarfListView() self.list_view.setModel(self._watchpoints_model) self.list_view.header().setSectionResizeMode(0, QHeaderView.Stretch) self.list_view.header().setSectionResizeMode( 1, QHeaderView.ResizeToContents | QHeaderView.Fixed) self.list_view.header().setSectionResizeMode( 2, QHeaderView.ResizeToContents | QHeaderView.Fixed) self.list_view.header().setSectionResizeMode( 3, QHeaderView.ResizeToContents | QHeaderView.Fixed) self.list_view.header().setSectionResizeMode( 4, QHeaderView.ResizeToContents | QHeaderView.Fixed) self.list_view.header().setStretchLastSection(False) self.list_view.doubleClicked.connect(self._on_item_dblclick) self.list_view.setContextMenuPolicy(Qt.CustomContextMenu) self.list_view.customContextMenuRequested.connect(self._on_contextmenu) v_box.addWidget(self.list_view) #header = QHeaderView(Qt.Horizontal, self) h_box = QHBoxLayout() h_box.setContentsMargins(5, 2, 5, 5) btn1 = QPushButton( QIcon(utils.resource_path('assets/icons/plus.svg')), '') btn1.setFixedSize(20, 20) btn1.clicked.connect(self._on_additem_clicked) btn2 = QPushButton( QIcon(utils.resource_path('assets/icons/dash.svg')), '') btn2.setFixedSize(20, 20) btn2.clicked.connect(self.delete_items) btn3 = QPushButton( QIcon(utils.resource_path('assets/icons/trashcan.svg')), '') btn3.setFixedSize(20, 20) btn3.clicked.connect(self.clear_list) h_box.addWidget(btn1) h_box.addWidget(btn2) h_box.addSpacerItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) h_box.addWidget(btn3) # header.setLayout(h_box) # header.setFixedHeight(25) # v_box.addWidget(header) v_box.addLayout(h_box) # create a centered dot icon _section_width = self.list_view.header().sectionSize(2) self._new_pixmap = QPixmap(_section_width, 20) self._new_pixmap.fill(Qt.transparent) painter = QPainter(self._new_pixmap) rect = QRect((_section_width * 0.5), 0, 20, 20) painter.setBrush(QColor('#666')) painter.setPen(QColor('#666')) painter.drawEllipse(rect) self._dot_icon = QIcon(self._new_pixmap) # shortcuts shortcut_add = QShortcut( QKeySequence(Qt.CTRL + Qt.Key_W), self._app_window, self._on_additem_clicked) shortcut_add.setAutoRepeat(False) self.setLayout(v_box)
def __init__(self, aPath, parent=None): super(VideoPlayer, self).__init__(parent) #self.setAttribute(Qt.WA_NoSystemBackground, True) self.colorDialog = None self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.mediaPlayer.setVolume(80) self.videoWidget = QVideoWidget(self) self.lbl = QLineEdit('00:00:00') self.lbl.setReadOnly(True) self.lbl.setEnabled(False) self.lbl.setFixedWidth(60) self.lbl.setUpdatesEnabled(True) #self.lbl.setStyleSheet(stylesheet(self)) self.elbl = QLineEdit('00:00:00') self.elbl.setReadOnly(True) self.elbl.setEnabled(False) self.elbl.setFixedWidth(60) self.elbl.setUpdatesEnabled(True) #self.elbl.setStyleSheet(stylesheet(self)) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedWidth(32) #self.playButton.setStyleSheet("background-color: black") self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) ### pointA button self.apointButton = QPushButton() self.apointButton.setEnabled(False) self.apointButton.setFixedWidth(32) #self.apointButton.setStyleSheet("background-color: black") self.apointButton.setIcon(self.style().standardIcon( QStyle.SP_MediaSeekForward)) self.apointButton.clicked.connect(self.setPointA) ### pointB button self.bpointButton = QPushButton() self.bpointButton.setEnabled(False) self.bpointButton.setFixedWidth(32) #self.bpointButton.setStyleSheet("background-color: black") self.bpointButton.setIcon(self.style().standardIcon( QStyle.SP_MediaSeekBackward)) self.bpointButton.clicked.connect(self.setPointB) ### cut button self.cutButton = QPushButton() self.cutButton.setEnabled(False) self.cutButton.setFixedWidth(32) self.cutButton.setIcon(self.style().standardIcon( QStyle.SP_DriveFDIcon)) self.cutButton.clicked.connect(self.cut) self.positionSlider = QSlider(Qt.Horizontal, self) self.positionSlider.setStyleSheet(stylesheet(self)) self.positionSlider.setRange(0, 100) self.positionSlider.sliderMoved.connect(self.setPosition) self.positionSlider.sliderMoved.connect(self.handle_label) self.positionSlider.setSingleStep(2) self.positionSlider.setPageStep(20) #self.positionSlider.setAttribute(Qt.WA_NoSystemBackground, True) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(5, 0, 5, 0) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.apointButton) controlLayout.addWidget(self.bpointButton) controlLayout.addWidget(self.cutButton) controlLayout.addWidget(self.lbl) controlLayout.addWidget(self.positionSlider) controlLayout.addWidget(self.elbl) layout0 = QVBoxLayout() layout0.setContentsMargins(0, 0, 0, 0) layout0.addWidget(self.videoWidget) layout0.addLayout(controlLayout) self.setLayout(layout0) self.widescreen = True self.setAcceptDrops(True) self.setWindowTitle("QT5 Player") #self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) self.setGeometry(300, 200, 400, 290) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.customContextMenuRequested[QtCore.QPoint].connect( self.contextMenuRequested) #self.hideSlider() self.show() #self.playFromURL() ### shortcuts ### self.shortcut = QShortcut(QKeySequence('q'), self) self.shortcut.activated.connect(self.handleQuit) self.shortcut = QShortcut(QKeySequence('o'), self) self.shortcut.activated.connect(self.openFile) self.shortcut = QShortcut(QKeySequence(' '), self) self.shortcut.activated.connect(self.play) self.shortcut = QShortcut(QKeySequence('s'), self) self.shortcut.activated.connect(self.toggleSlider) self.shortcut = QShortcut(QKeySequence('v'), self) self.shortcut.activated.connect(self.setPointA) self.shortcut = QShortcut(QKeySequence('b'), self) self.shortcut.activated.connect(self.setPointB) self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Up), self) self.shortcut.activated.connect(self.volumeUp) self.shortcut = QShortcut(QKeySequence(Qt.Key_Down), self) self.shortcut.activated.connect(self.volumeDown) self.shortcut = QShortcut( QKeySequence(Qt.ShiftModifier + Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider10) self.shortcut = QShortcut(QKeySequence(Qt.ShiftModifier + Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider10) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.positionChanged.connect(self.handle_label) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) self.apoint = 0 self.bpoint = 0 self.inputfile = pathlib.Path()
elif reply == QMessageBox.Retry: color_pallet() return None # Определение позиции камеры camera_position = define_camera_place() # Привязка нижней панели кнопок к функция interface.buttonExit.clicked.connect(interface.close) interface.homeButton.clicked.connect(set_home_position) interface.cameraButton.clicked.connect(set_camera_position) interface.runButton.clicked.connect(getting_started) # Непосредственное управление роботом QShortcut(QKeySequence("W"), interface).activated.connect(lambda: interface.keyboardControl('W')) QShortcut(QKeySequence("A"), interface).activated.connect(lambda: interface.keyboardControl('A')) QShortcut(QKeySequence("S"), interface).activated.connect(lambda: interface.keyboardControl('S')) QShortcut(QKeySequence("D"), interface).activated.connect(lambda: interface.keyboardControl('D')) QShortcut( QKeySequence("Space"), interface).activated.connect(lambda: interface.keyboardControl('Space')) QShortcut(QKeySequence("C"), interface).activated.connect(lambda: interface.keyboardControl('C')) QShortcut(QKeySequence("Q"), interface).activated.connect(lambda: interface.keyboardControl('Q')) QShortcut(QKeySequence("E"), interface).activated.connect(lambda: interface.keyboardControl('E'))
def __init__(self, aPath, parent=None): super(VideoPlayer, self).__init__(parent) self.setAttribute(Qt.WA_NoSystemBackground, True) self.setAcceptDrops(True) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback) self.mediaPlayer.mediaStatusChanged.connect(self.printMediaData) self.mediaPlayer.setVolume(80) self.videoWidget = QVideoWidget(self) self.lbl = QLineEdit('00:00:00') self.lbl.setReadOnly(True) self.lbl.setFixedWidth(70) self.lbl.setUpdatesEnabled(True) self.lbl.setStyleSheet(stylesheet(self)) self.elbl = QLineEdit('00:00:00') self.elbl.setReadOnly(True) self.elbl.setFixedWidth(70) self.elbl.setUpdatesEnabled(True) self.elbl.setStyleSheet(stylesheet(self)) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedWidth(32) self.playButton.setStyleSheet("background-color: black") self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal, self) self.positionSlider.setStyleSheet(stylesheet(self)) self.positionSlider.setRange(0, 100) self.positionSlider.sliderMoved.connect(self.setPosition) self.positionSlider.sliderMoved.connect(self.handleLabel) self.positionSlider.setSingleStep(2) self.positionSlider.setPageStep(20) self.positionSlider.setAttribute(Qt.WA_TranslucentBackground, True) self.clip = QApplication.clipboard() self.process = QProcess(self) self.process.readyRead.connect(self.dataReady) # self.process.started.connect(lambda: print("grabbing YouTube URL")) self.process.finished.connect(self.playFromURL) self.myurl = "" controlLayout = QHBoxLayout() controlLayout.setContentsMargins(5, 0, 5, 0) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.lbl) controlLayout.addWidget(self.positionSlider) controlLayout.addWidget(self.elbl) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.videoWidget) layout.addLayout(controlLayout) self.setLayout(layout) self.myinfo = "©2016\nAxel Schneider\n\nMouse Wheel = Zoom\nUP = Volume Up\nDOWN = Volume Down\n" + \ "LEFT = < 1 Minute\nRIGHT = > 1 Minute\n" + \ "SHIFT+LEFT = < 10 Minutes\nSHIFT+RIGHT = > 10 Minutes" self.widescreen = True #### shortcuts #### self.shortcut = QShortcut(QKeySequence("q"), self) self.shortcut.activated.connect(self.handleQuit) self.shortcut = QShortcut(QKeySequence("u"), self) self.shortcut.activated.connect(self.playFromURL) self.shortcut = QShortcut(QKeySequence("y"), self) self.shortcut.activated.connect(self.getYTUrl) self.shortcut = QShortcut(QKeySequence("o"), self) self.shortcut.activated.connect(self.openFile) self.shortcut = QShortcut(QKeySequence(" "), self) self.shortcut.activated.connect(self.play) self.shortcut = QShortcut(QKeySequence("f"), self) self.shortcut.activated.connect(self.handleFullscreen) self.shortcut = QShortcut(QKeySequence("i"), self) self.shortcut.activated.connect(self.handleInfo) self.shortcut = QShortcut(QKeySequence("s"), self) self.shortcut.activated.connect(self.toggleSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Up), self) self.shortcut.activated.connect(self.volumeUp) self.shortcut = QShortcut(QKeySequence(Qt.Key_Down), self) self.shortcut.activated.connect(self.volumeDown) self.shortcut = QShortcut( QKeySequence(Qt.ShiftModifier + Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider10) self.shortcut = QShortcut(QKeySequence(Qt.ShiftModifier + Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider10) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.positionChanged.connect(self.handleLabel) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) print("QT5 Player started") self.suspend_screensaver() # msg = QMessageBox.information(self, "Qt5Player", "press o to open file") self.loadFilm("/home/brian/Dokumente/Qt5PlayerIntro.m4v")
def __init__(self, parent=None): super().__init__(parent) # load config self.data = yaml_loader() # load ui self.setupUi(self) # load icons self.setWindowTitle("Sputofy") self.setWindowIcon(QIcon(os.path.join(RES_PATH, "logo.svg"))) loopIcon = QIcon() loopIcon.addPixmap(QPixmap(os.path.join(RES_PATH, "loopIconOFF.svg"))) self.loopBtn.setIcon(loopIcon) prevIcon = QIcon() prevIcon.addPixmap(QPixmap(os.path.join(RES_PATH, "backwardIcon.svg"))) self.prevBtn.setIcon(prevIcon) playIcon = QIcon() playIcon.addPixmap(QPixmap(os.path.join(RES_PATH, "playIcon.svg"))) self.playBtn.setIcon(playIcon) nextIcon = QIcon() nextIcon.addPixmap(QPixmap(os.path.join(RES_PATH, "forwardIcon.svg"))) self.nextBtn.setIcon(nextIcon) randomIcon = QIcon() randomIcon.addPixmap( QPixmap(os.path.join(RES_PATH, "randomIconOFF.svg"))) self.randomBtn.setIcon(randomIcon) volumeIcon = QIcon() volumeIcon.addPixmap(QPixmap(os.path.join(RES_PATH, "volumeIcon.svg"))) self.volumeBtn.setIcon(volumeIcon) # window's settings self.xCor = self.data['last_position']['xPos'] self.yCor = self.data['last_position']['yPos'] self.widthSize = self.data['last_window_size']['width'] self.heightSize = self.data['last_window_size']['height'] self.setGeometry(self.xCor, self.yCor, self.widthSize, self.heightSize) # load YouTubeToMP3 self.YouTubeToMP3 = YouTubeToMP3Window() # open YouTubeToMP3 using button self.actionYT_MP3.triggered.connect(self.YouTubeToMP3.show_window) # info action self.actionInfo.triggered.connect(self.info_handle) #=========================== mediaplayer ============================== # create media player object self.mediaPlayer = QMediaPlayer(None) # open button self.actionOpen_Song.triggered.connect(self.open_song) self.actionOpen_Folder.triggered.connect(self.open_folder) # play button self.playBtn.setEnabled(False) self.playBtn.clicked.connect( self.play_video ) # when btn is pressed: if it is playing it pause, if it is paused it plays # QShortcut(QKeySequence("Space"), self).activated.connect(self.play_video)metodo da ricordare in caso di problemi #TODO # duration slider self.durationSlider.setEnabled(False) self.durationSliderMaxValue = 0 self.durationSlider.valueChanged.connect( self.mediaPlayer.setPosition ) # set mediaPlayer position using the value took from the slider QShortcut('Right', self, lambda: self.durationSlider.setValue( self.durationSlider.value() + 10000)) # 1s = 1000ms QShortcut('Left', self, lambda: self.durationSlider.setValue( self.durationSlider.value() - 10000)) # 1s = 1000ms QShortcut('Shift+Right', self, lambda: self.durationSlider.setValue( self.durationSliderMaxValue - 1000)) # jump to the end-1s of song QShortcut('Shift+Left', self, lambda: self.durationSlider.setValue(0)) # restart song # volumeSlider self.volumeSlider.setProperty("value", 100) self.volumeSlider.setRange(0, 100) self.volumeSlider.setValue( self.data['volume'] if self.data['volume'] != 0 else self.data['volume'] + 1 ) # set slider value | if saved volume is equal to 0 load with volume = 1 else load the saved volume self.mediaPlayer.setVolume( self.data['volume'] if self.data['volume'] != 0 else self.data['volume'] + 1 ) # set mediaPlayer volume | if saved volume is equal to 0 load with volume = 1 else load the saved volume self.volumeLabel.setText( f"{self.data['volume']}%" if self.data['volume'] != 0 else f"{self.data['volume']+1}%" ) # set volume label text | if saved volume is equal to 0 load with volume = 1 else load the saved volume self.volumeSlider.valueChanged.connect( self.mediaPlayer.setVolume ) # set mediaPlayer volume using the value took from the slider QShortcut('Up', self, lambda: self.volumeSlider.setValue( self.volumeSlider.value() + 1)) # volume + 1 QShortcut('Down', self, lambda: self.volumeSlider.setValue( self.volumeSlider.value() - 1)) # volume - 1 QShortcut( 'Shift+Up', self, lambda: self.volumeSlider.setValue(100)) # set maximum volume QShortcut( 'Shift+Down', self, lambda: self.volumeSlider.setValue(0)) # set minimun volume(mute) # volumeBtn self.volumeBtn.clicked.connect( self.volume_toggle) # mute/unmute volume pressing btn self.isMuted = False # starting with a non-muted volume self.previousVolume = self.data[ 'volume'] # loading last registered volume # media player signals self.mediaPlayer.durationChanged.connect( self.duration_changed) # set range of duration slider self.mediaPlayer.positionChanged.connect( self.position_changed) # duration slider progress self.mediaPlayer.stateChanged.connect( self.player_state) # see when it's playing or in pause self.mediaPlayer.volumeChanged.connect( self.volume_icon) # change volumebtn icon #=========================== playlist ============================== # create the playlist self.playlist = QMediaPlaylist() self.playlist.setPlaybackMode(2) self.mediaPlayer.setPlaylist(self.playlist) # clear the playlist self.playlistIsEmpty = True # playlistList model self.model = PlaylistModel(self.playlist) self.playlistView.setModel(self.model) self.playlist.currentIndexChanged.connect( self.playlist_position_changed) selection_model = self.playlistView.selectionModel() selection_model.selectionChanged.connect( self.playlist_selection_changed) #=========================== playlist function ============================== self.mediaList = [] # array of loaded songs self.currentPlaylist = "" # current loaded playlist name self.isCustomPlaylist = False # add song name on title self.playlist.currentMediaChanged.connect(self.set_title) # playlist buttons self.nextBtn.clicked.connect(self.next_song) # seek track forward self.prevBtn.clicked.connect(self.prev_song) # seek track backward self.mediaPlayer.mediaStatusChanged.connect( self.auto_next_track ) # once song is ended seek track forward and play it self.actionLoopIt.triggered.connect( self.loop_song) # (1) loop the same song self.actionShuffle.triggered.connect( self.shuffle_playlist) # change song's order self.loopBtn.clicked.connect(self.loop) # (3) loop the playlist self.randomBtn.clicked.connect( self.random) # (4) play random song without end # create new playlist self.actionCreatePlaylist.triggered.connect(self.custom_playlist) # delete current playlist self.actionDeletePlaylist.triggered.connect(self.delete_playlist) # remove all songs self.actionClearQueue.triggered.connect(self.clear_queue) # load playlist self.actionDict = {} # dictionary of action Objects for action in self.data['playlistList']: self.actionDict[action] = self.menuPlaylist.addAction( action, partial(self.load_playlist, action)) if len(self.data['playlistList']) == 0: self.menuPlaylist.menuAction().setVisible(False)
def _setupUi(self): self.setWindowTitle(tr("Transaction Info")) self.resize(462, 329) self.setModal(True) self.mainLayout = QVBoxLayout(self) self.tabWidget = QTabWidget(self) self.infoTab = QWidget() self.infoLayout = QVBoxLayout(self.infoTab) self.formLayout = QFormLayout() self.formLayout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) self.dateEdit = DateEdit(self.infoTab) self.dateEdit.setMaximumSize(QSize(120, 16777215)) self.formLayout.addRow(tr("Date:"), self.dateEdit) self.descriptionEdit = DescriptionEdit(self.model.completable_edit, self.infoTab) self.formLayout.addRow(tr("Description:"), self.descriptionEdit) self.payeeEdit = PayeeEdit(self.model.completable_edit, self.infoTab) self.formLayout.addRow(tr("Payee:"), self.payeeEdit) self.checkNoEdit = QLineEdit(self.infoTab) self.checkNoEdit.setMaximumSize(QSize(120, 16777215)) self.formLayout.addRow(tr("Check #:"), self.checkNoEdit) self.infoLayout.addLayout(self.formLayout) self.amountLabel = QLabel(tr("Transfers:"), self.infoTab) self.infoLayout.addWidget(self.amountLabel) self.splitTableView = TableView(self.infoTab) self.splitTableView.setAcceptDrops(True) self.splitTableView.setEditTriggers(QAbstractItemView.DoubleClicked | QAbstractItemView.EditKeyPressed) self.splitTableView.setDragEnabled(True) self.splitTableView.setDragDropMode(QAbstractItemView.InternalMove) self.splitTableView.setSelectionMode(QAbstractItemView.SingleSelection) self.splitTableView.setSelectionBehavior(QAbstractItemView.SelectRows) self.splitTableView.horizontalHeader().setDefaultSectionSize(40) self.splitTableView.verticalHeader().setVisible(False) self.splitTableView.verticalHeader().setDefaultSectionSize(18) self.tvShortcut = QShortcut(QKeySequence("Alt+T"), self) self.tvShortcut.activated.connect(self.on_focus_transactions) self.infoLayout.addWidget(self.splitTableView) self.mctButtonsLayout = QHBoxLayout() self.mctButtonsLayout.setContentsMargins(0, 0, 0, 0) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.mctButtonsLayout.addItem(spacerItem) self.mctButton = QPushButton(tr("&Multi-currency balance"), self.infoTab) self.mctButtonsLayout.addWidget(self.mctButton) self.assignImbalanceButton = QPushButton(tr("Assign &imbalance"), self.infoTab) self.mctButtonsLayout.addWidget(self.assignImbalanceButton) self.addSplitButton = QPushButton(self.infoTab) icon = QIcon() icon.addPixmap(QPixmap(":/plus_8"), QIcon.Normal, QIcon.Off) self.addSplitButton.setIcon(icon) self.mctButtonsLayout.addWidget(self.addSplitButton) self.removeSplitButton = QPushButton(self.infoTab) icon1 = QIcon() icon1.addPixmap(QPixmap(":/minus_8"), QIcon.Normal, QIcon.Off) self.removeSplitButton.setIcon(icon1) self.mctButtonsLayout.addWidget(self.removeSplitButton) self.infoLayout.addLayout(self.mctButtonsLayout) self.tabWidget.addTab(self.infoTab, tr("Info")) self.notesTab = QWidget() self.notesLayout = QVBoxLayout(self.notesTab) self.notesEdit = QPlainTextEdit(self.notesTab) self.notesLayout.addWidget(self.notesEdit) self.tabWidget.addTab(self.notesTab, tr("Notes")) self.tabWidget.setCurrentIndex(0) self.mainLayout.addWidget(self.tabWidget) self.buttonBox = QDialogButtonBox(self) self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.addButton(tr("&Save"), QDialogButtonBox.AcceptRole) self.buttonBox.addButton(tr("Cancel"), QDialogButtonBox.RejectRole) self.mainLayout.addWidget(self.buttonBox)
def __init__(self, parent=None): # pylint: disable=too-many-statements super(BookmarksWidget, self).__init__(parent=parent) self._app_window = parent if self._app_window.dwarf is None: print('BookmarksPanel created before Dwarf exists') return self.bookmarks = {} self._bookmarks_list = DwarfListView() self._bookmarks_list.doubleClicked.connect(self._on_double_clicked) self._bookmarks_list.setContextMenuPolicy(Qt.CustomContextMenu) self._bookmarks_list.customContextMenuRequested.connect( self._on_contextmenu) self._bookmarks_model = QStandardItemModel(0, 2) self._bookmarks_model.setHeaderData(0, Qt.Horizontal, 'Address') self._bookmarks_model.setHeaderData(1, Qt.Horizontal, 'Notes') self._bookmarks_list.setModel(self._bookmarks_model) self._bookmarks_list.header().setStretchLastSection(False) self._bookmarks_list.header().setSectionResizeMode( 0, QHeaderView.ResizeToContents | QHeaderView.Interactive) self._bookmarks_list.header().setSectionResizeMode( 1, QHeaderView.Stretch | QHeaderView.Interactive) v_box = QVBoxLayout(self) v_box.setContentsMargins(0, 0, 0, 0) v_box.addWidget(self._bookmarks_list) #header = QHeaderView(Qt.Horizontal, self) h_box = QHBoxLayout() h_box.setContentsMargins(5, 2, 5, 5) self.btn1 = QPushButton( QIcon(utils.resource_path('assets/icons/plus.svg')), '') self.btn1.setFixedSize(20, 20) self.btn1.clicked.connect(lambda: self._create_bookmark(-1)) btn2 = QPushButton(QIcon(utils.resource_path('assets/icons/dash.svg')), '') btn2.setFixedSize(20, 20) btn2.clicked.connect(self.delete_items) btn3 = QPushButton( QIcon(utils.resource_path('assets/icons/trashcan.svg')), '') btn3.setFixedSize(20, 20) btn3.clicked.connect(self.clear_list) h_box.addWidget(self.btn1) h_box.addWidget(btn2) h_box.addSpacerItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) h_box.addWidget(btn3) # header.setLayout(h_box) # header.setFixedHeight(25) # v_box.addWidget(header) v_box.addLayout(h_box) self.setLayout(v_box) self._bold_font = QFont(self._bookmarks_list.font()) self._bold_font.setBold(True) shortcut_addnative = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_B), self._app_window, self._create_bookmark) shortcut_addnative.setAutoRepeat(False)
def __init__(self, parent=None): """ Args: parent: """ super(SearchPanel, self).__init__(parent) self.setContentsMargins(0, 0, 0, 0) self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) fh = QFile( '/home/alexandr/PycharmProjects/Pocket/pocket_articles/css/searchpanel.qss' ) # fh = QFile(':/css/searchpanel.qss') if fh.open(QIODevice.ReadOnly): self.setStyleSheet(fh.readAll().data().decode()) # self.setStyleSheet(_QSS) hbox = QHBoxLayout(self) hbox.setContentsMargins(0, 0, 0, 0) icon_close = QIcon( QPixmap(':/images/window-close.png').scaledToWidth(16)) icon_back = QIcon(':/images/back.png') icon_forward = QIcon(':/images/forward.png') self.nextBtn = QPushButton(icon_forward, 'Следующее') self.nextBtn.clicked.connect(self.search) self.nextBtn.setFixedHeight(20) self.prevBtn = QPushButton(icon_back, 'Предыдущее') self.prevBtn.clicked.connect( lambda: self.search(QWebEnginePage.FindBackward)) self.prevBtn.setFixedHeight(20) self.caseSensitively = QCheckBox('Учитывать регистр') self.search_le = QLineEdit() self.search_le.addAction(QIcon(':/images/search-50.svg'), QLineEdit.LeadingPosition) self.search_le.setClearButtonEnabled(True) self.closeBtn = QPushButton(icon_close, '') self.closeBtn.clicked.connect(self.hide_widget) self.closeBtn.setFixedHeight(20) hbox.addStretch(1) hbox.addWidget(self.closeBtn) hbox.addWidget(self.search_le, 1) hbox.addWidget(self.prevBtn) hbox.addWidget(self.nextBtn) hbox.addWidget(self.caseSensitively) QShortcut(Qt.Key_Escape, self, self.hide_widget) QShortcut(Qt.Key_F3, self, self.search) QShortcut(QKeySequence.FindNext, self, self.search) QShortcut(QKeySequence.FindPrevious, self, lambda: self.search(QWebEnginePage.FindBackward)) QShortcut(QKeySequence(Qt.SHIFT + Qt.Key_F3), self, lambda: self.search(QWebEnginePage.FindBackward)) # ставим фокус на строку ввода self.setFocusProxy(self.search_le) self.search_le.returnPressed.connect(self.search) self.search_le.textChanged.connect(self.search)
def add_shortcuts(self) -> None: self.shortcutCloseI = QShortcut(QKeySequence("I"), self) self.shortcutCloseI.activated.connect(self.close) self.shortcutCloseQ = QShortcut(QKeySequence("Q"), self) self.shortcutCloseQ.activated.connect(self.close)
def __init__(self, aPath, parent=None): super(VideoPlayer, self).__init__(parent) self.setAttribute( Qt.WA_NoSystemBackground, True ) self.colorDialog = None self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.mediaPlayer.setVolume(80) self.videoWidget = QVideoWidget(self) self.lbl = QLineEdit('00:00:00') self.lbl.setReadOnly(True) self.lbl.setEnabled(False) self.lbl.setFixedWidth(60) self.lbl.setUpdatesEnabled(True) self.lbl.setStyleSheet(stylesheet(self)) self.elbl = QLineEdit('00:00:00') self.elbl.setReadOnly(True) self.elbl.setEnabled(False) self.elbl.setFixedWidth(60) self.elbl.setUpdatesEnabled(True) self.elbl.setStyleSheet(stylesheet(self)) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedWidth(32) self.playButton.setStyleSheet("background-color: black") self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal, self) self.positionSlider.setStyleSheet (stylesheet(self)) self.positionSlider.setRange(0, 100) self.positionSlider.sliderMoved.connect(self.setPosition) self.positionSlider.sliderMoved.connect(self.handleLabel) self.positionSlider.setSingleStep(2) self.positionSlider.setPageStep(20) self.positionSlider.setAttribute(Qt.WA_TranslucentBackground, True) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(5, 0, 5, 0) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.lbl) controlLayout.addWidget(self.positionSlider) controlLayout.addWidget(self.elbl) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.videoWidget) layout.addLayout(controlLayout) self.setLayout(layout) self.myinfo = "©2016\nAxel Schneider\n\nMouse Wheel = Zoom\nUP = Volume Up\nDOWN = Volume Down\n" + \ "LEFT = < 1 Minute\nRIGHT = > 1 Minute\n" + \ "SHIFT+LEFT = < 10 Minutes\nSHIFT+RIGHT = > 10 Minutes\nf = Fullscreen On/Off" self.widescreen = True self.setAcceptDrops(True) self.setWindowTitle("QT5 Player") self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) self.setGeometry(700, 400, 400, 290) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu); self.customContextMenuRequested[QtCore.QPoint].connect(self.contextMenuRequested) self.hideSlider() self.show() self.playFromURL() #### shortcuts #### self.shortcut = QShortcut(QKeySequence("q"), self) self.shortcut.activated.connect(self.handleQuit) self.shortcut = QShortcut(QKeySequence("u"), self) self.shortcut.activated.connect(self.playFromURL) self.shortcut = QShortcut(QKeySequence("o"), self) self.shortcut.activated.connect(self.openFile) self.shortcut = QShortcut(QKeySequence(" "), self) self.shortcut.activated.connect(self.play) self.shortcut = QShortcut(QKeySequence("f"), self) self.shortcut.activated.connect(self.handleFullscreen) self.shortcut = QShortcut(QKeySequence("i"), self) self.shortcut.activated.connect(self.handleInfo) self.shortcut = QShortcut(QKeySequence("s"), self) self.shortcut.activated.connect(self.toggleSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Up), self) self.shortcut.activated.connect(self.volumeUp) self.shortcut = QShortcut(QKeySequence(Qt.Key_Down), self) self.shortcut.activated.connect(self.volumeDown) self.shortcut = QShortcut(QKeySequence(Qt.ShiftModifier + Qt.Key_Right) , self) self.shortcut.activated.connect(self.forwardSlider10) self.shortcut = QShortcut(QKeySequence(Qt.ShiftModifier + Qt.Key_Left) , self) self.shortcut.activated.connect(self.backSlider10) self.shortcut = QShortcut(QKeySequence("c") , self) self.shortcut.activated.connect(self.showColorDialog) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.positionChanged.connect(self.handleLabel) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError)
def __init__(self, parent): self.personal_shortcut = QShortcut(QKeySequence(options.personal_shortcut), parent) self.social_shortcut = QShortcut(QKeySequence(options.social_shortcut), parent) self.updates_shortcut = QShortcut(QKeySequence(options.updates_shortcut), parent) self.promotions_shortcut = QShortcut(QKeySequence(options.promotions_shortcut), parent) self.forums_shortcut = QShortcut(QKeySequence(options.forums_shortcut), parent) self.sent_shortcut = QShortcut(QKeySequence(options.sent_shortcut), parent) self.unread_shortcut = QShortcut(QKeySequence(options.unread_shortcut), parent) self.important_shortcut = QShortcut(QKeySequence(options.important_shortcut), parent) self.starred_shortcut = QShortcut(QKeySequence(options.starred_shortcut), parent) self.trash_shortcut = QShortcut(QKeySequence(options.trash_shortcut), parent) self.spam_shortcut = QShortcut(QKeySequence(options.spam_shortcut), parent) self.send_email_shortcut = QShortcut(QKeySequence(options.send_email_shortcut), parent) self.contacts_shortcut = QShortcut(QKeySequence(options.contacts_shortcut), parent) self.settings_shortcut = QShortcut(QKeySequence(options.settings_shortcut), parent) self.personal_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('personal')) self.social_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('social')) self.updates_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('updates')) self.promotions_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('promotions')) self.forums_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('forums')) self.sent_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('sent')) self.unread_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('unread')) self.important_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('important')) self.starred_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('starred')) self.trash_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('trash')) self.spam_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('spam')) self.send_email_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('send_email')) self.contacts_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('contacts')) self.settings_shortcut.activated.connect(lambda: ShortcutEventChannel.publish('settings')) OptionEventChannel.subscribe( 'personal_shortcut', lambda shortcut: self.personal_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'social_shortcut', lambda shortcut: self.social_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'updates_shortcut', lambda shortcut: self.updates_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'promotions_shortcut', lambda shortcut: self.promotions_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'forums_shortcut', lambda shortcut: self.forums_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'sent_shortcut', lambda shortcut: self.sent_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'unread_shortcut', lambda shortcut: self.unread_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'important_shortcut', lambda shortcut: self.important_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'starred_shortcut', lambda shortcut: self.starred_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'trash_shortcut', lambda shortcut: self.trash_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'spam_shortcut', lambda shortcut: self.spam_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'send_email_shortcut', lambda shortcut: self.send_email_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'contacts_shortcut', lambda shortcut: self.contacts_shortcut.setKey(QKeySequence(shortcut))) OptionEventChannel.subscribe( 'settings_shortcut', lambda shortcut: self.settings_shortcut.setKey(QKeySequence(shortcut)))
def __init__(self, core_args=None, core_env=None, api_port=None, api_key=None): QMainWindow.__init__(self) self._logger = logging.getLogger(self.__class__.__name__) QCoreApplication.setOrganizationDomain("nl") QCoreApplication.setOrganizationName("TUDelft") QCoreApplication.setApplicationName("Tribler") self.setWindowIcon(QIcon(QPixmap(get_image_path('tribler.png')))) self.gui_settings = QSettings('nl.tudelft.tribler') api_port = api_port or int(get_gui_setting(self.gui_settings, "api_port", DEFAULT_API_PORT)) api_key = api_key or get_gui_setting(self.gui_settings, "api_key", hexlify(os.urandom(16)).encode('utf-8')) self.gui_settings.setValue("api_key", api_key) api_port = get_first_free_port(start=api_port, limit=100) request_manager.port, request_manager.key = api_port, api_key self.tribler_started = False self.tribler_settings = None # TODO: move version_id to tribler_common and get core version in the core crash message self.tribler_version = version_id self.debug_window = None self.error_handler = ErrorHandler(self) self.core_manager = CoreManager(api_port, api_key, self.error_handler) self.pending_requests = {} self.pending_uri_requests = [] self.download_uri = None self.dialog = None self.create_dialog = None self.chosen_dir = None self.new_version_dialog = None self.start_download_dialog_active = False self.selected_torrent_files = [] self.has_search_results = False self.last_search_query = None self.last_search_time = None self.start_time = time.time() self.token_refresh_timer = None self.shutdown_timer = None self.add_torrent_url_dialog_active = False sys.excepthook = self.error_handler.gui_error uic.loadUi(get_ui_file_path('mainwindow.ui'), self) TriblerRequestManager.window = self self.tribler_status_bar.hide() self.token_balance_widget.mouseReleaseEvent = self.on_token_balance_click def on_state_update(new_state): self.loading_text_label.setText(new_state) connect(self.core_manager.core_state_update, on_state_update) self.magnet_handler = MagnetHandler(self.window) QDesktopServices.setUrlHandler("magnet", self.magnet_handler, "on_open_magnet_link") self.debug_pane_shortcut = QShortcut(QKeySequence("Ctrl+d"), self) connect(self.debug_pane_shortcut.activated, self.clicked_menu_button_debug) self.import_torrent_shortcut = QShortcut(QKeySequence("Ctrl+o"), self) connect(self.import_torrent_shortcut.activated, self.on_add_torrent_browse_file) self.add_torrent_url_shortcut = QShortcut(QKeySequence("Ctrl+i"), self) connect(self.add_torrent_url_shortcut.activated, self.on_add_torrent_from_url) connect(self.top_search_bar.clicked, self.clicked_search_bar) # Remove the focus rect on OS X for widget in self.findChildren(QLineEdit) + self.findChildren(QListWidget) + self.findChildren(QTreeWidget): widget.setAttribute(Qt.WA_MacShowFocusRect, 0) self.menu_buttons = [ self.left_menu_button_downloads, self.left_menu_button_discovered, self.left_menu_button_trust_graph, self.left_menu_button_popular, ] hide_xxx = get_gui_setting(self.gui_settings, "family_filter", True, is_bool=True) self.search_results_page.initialize_content_page(hide_xxx=hide_xxx) self.search_results_page.channel_torrents_filter_input.setHidden(True) self.settings_page.initialize_settings_page() self.downloads_page.initialize_downloads_page() self.loading_page.initialize_loading_page() self.discovering_page.initialize_discovering_page() self.discovered_page.initialize_content_page(hide_xxx=hide_xxx) self.popular_page.initialize_content_page(hide_xxx=hide_xxx) self.trust_page.initialize_trust_page() self.trust_graph_page.initialize_trust_graph() self.stackedWidget.setCurrentIndex(PAGE_LOADING) # Create the system tray icon if QSystemTrayIcon.isSystemTrayAvailable(): self.tray_icon = QSystemTrayIcon() use_monochrome_icon = get_gui_setting(self.gui_settings, "use_monochrome_icon", False, is_bool=True) self.update_tray_icon(use_monochrome_icon) # Create the tray icon menu menu = self.create_add_torrent_menu() show_downloads_action = QAction('Show downloads', self) connect(show_downloads_action.triggered, self.clicked_menu_button_downloads) token_balance_action = QAction('Show token balance', self) connect(token_balance_action.triggered, lambda _: self.on_token_balance_click(None)) quit_action = QAction('Quit Tribler', self) connect(quit_action.triggered, self.close_tribler) menu.addSeparator() menu.addAction(show_downloads_action) menu.addAction(token_balance_action) menu.addSeparator() menu.addAction(quit_action) self.tray_icon.setContextMenu(menu) else: self.tray_icon = None self.left_menu_button_debug.setHidden(True) self.top_menu_button.setHidden(True) self.left_menu.setHidden(True) self.token_balance_widget.setHidden(True) self.settings_button.setHidden(True) self.add_torrent_button.setHidden(True) self.top_search_bar.setHidden(True) # Set various icons self.top_menu_button.setIcon(QIcon(get_image_path('menu.png'))) self.search_completion_model = QStringListModel() completer = QCompleter() completer.setModel(self.search_completion_model) completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.item_delegate = QStyledItemDelegate() completer.popup().setItemDelegate(self.item_delegate) completer.popup().setStyleSheet( """ QListView { background-color: #404040; } QListView::item { color: #D0D0D0; padding-top: 5px; padding-bottom: 5px; } QListView::item:hover { background-color: #707070; } """ ) self.top_search_bar.setCompleter(completer) # Toggle debug if developer mode is enabled self.window().left_menu_button_debug.setHidden( not get_gui_setting(self.gui_settings, "debug", False, is_bool=True) ) # Start Tribler self.core_manager.start(core_args=core_args, core_env=core_env) connect(self.core_manager.events_manager.torrent_finished, self.on_torrent_finished) connect(self.core_manager.events_manager.new_version_available, self.on_new_version_available) connect(self.core_manager.events_manager.tribler_started, self.on_tribler_started) connect(self.core_manager.events_manager.low_storage_signal, self.on_low_storage) connect(self.core_manager.events_manager.tribler_shutdown_signal, self.on_tribler_shutdown_state_update) connect(self.core_manager.events_manager.config_error_signal, self.on_config_error_signal) # Install signal handler for ctrl+c events def sigint_handler(*_): self.close_tribler() signal.signal(signal.SIGINT, sigint_handler) # Resize the window according to the settings center = QApplication.desktop().availableGeometry(self).center() pos = self.gui_settings.value("pos", QPoint(center.x() - self.width() * 0.5, center.y() - self.height() * 0.5)) size = self.gui_settings.value("size", self.size()) self.move(pos) self.resize(size) self.show() self.add_to_channel_dialog = AddToChannelDialog(self.window()) self.add_torrent_menu = self.create_add_torrent_menu() self.add_torrent_button.setMenu(self.add_torrent_menu) self.channels_menu_list = self.findChild(ChannelsMenuListWidget, "channels_menu_list") connect(self.channels_menu_list.itemClicked, self.open_channel_contents_page) # The channels content page is only used to show subscribed channels, so we always show xxx # contents in it. connect( self.core_manager.events_manager.node_info_updated, lambda data: self.channels_menu_list.reload_if_necessary([data]), ) connect(self.left_menu_button_new_channel.clicked, self.create_new_channel)
def setupUi(self): self.centralwidget = QWidget(self) with open("style.css", 'r') as file: self.centralwidget.setStyleSheet(file.read()) self.sidebar = QFrame(self) self.sidebar.setFrameShape(QFrame.StyledPanel) self.sidebar.setGeometry(0, 0, 50, 430) self.sidebar.setProperty('class', 'sidebar') self.refresh_btn = QPushButton(self.sidebar) self.refresh_btn.setGeometry(QRect(0, 0, 51, 51)) self.refresh_btn.setProperty('class', 'sidebar_btns') self.refresh_btn.setIcon(QIcon(':/icon/refresh_icon.png')) self.refresh_btn.setIconSize(QSize(24, 24)) self.refresh_bind = QShortcut(QKeySequence('Ctrl+R'), self) self.store_btn = QPushButton(self.sidebar) self.store_btn.setGeometry(QRect(0, 51, 51, 51)) self.store_btn.setProperty('class', 'sidebar_btns') self.store_btn.setIcon(QIcon(':/icon/store_icon.png')) self.store_btn.setIconSize(QSize(24, 24)) self.store_bind = QShortcut(QKeySequence('Ctrl+S'), self) self.homepage_btn = QPushButton(self.sidebar) self.homepage_btn.setGeometry(QRect(0, 102, 51, 51)) self.homepage_btn.setProperty('class', 'sidebar_btns') self.homepage_btn.setIcon(QIcon(':/icon/github_icon.png')) self.homepage_btn.setIconSize(QSize(24, 24)) self.homepage_bind = QShortcut(QKeySequence('Ctrl+G'), self) self.about_btn = QPushButton(self.sidebar) self.about_btn.setGeometry(QRect(0, 153, 51, 51)) self.about_btn.setProperty('class', 'sidebar_btns') self.about_btn.setIcon(QIcon(':/icon/about_icon.png')) self.about_btn.setIconSize(QSize(24, 24)) self.about_bind = QShortcut(QKeySequence('Ctrl+A'), self) self.quit_btn = QPushButton(self.sidebar) self.quit_btn.setGeometry(QRect(0, 380, 51, 51)) self.quit_btn.setProperty('class', 'sidebar_btns_quit') self.quit_btn.setIcon(QIcon(':/icon/quit_icon.png')) self.quit_btn.setIconSize(QSize(24, 24)) self.quit_bind = QShortcut(QKeySequence('Ctrl+Q'), self) self.label_refresh = QLabel(self.centralwidget) self.label_refresh.setGeometry(QRect(70, 10, 441, 15)) self.label_info = QLabel(self.centralwidget) self.label_info.setGeometry(QRect(70, 15, 441, 30)) self.progressbar = QProgressBar(self.centralwidget) self.progressbar.setGeometry(QRect(70, 35, 441, 20)) self.verticalLayoutWidget = QWidget(self.centralwidget) self.verticalLayoutWidget.setGeometry(QRect(70, 55, 121, 271)) self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.checkBox = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox) self.checkBox_2 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_2) self.checkBox_3 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_3) self.checkBox_4 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_4) self.checkBox_5 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_5) self.checkBox_6 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_6) self.checkBox_7 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_7) self.checkBox_8 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_8) self.checkBox_9 = QCheckBox(self.verticalLayoutWidget) self.verticalLayout.addWidget(self.checkBox_9) self.verticalLayoutWidget_2 = QWidget(self.centralwidget) self.verticalLayoutWidget_2.setGeometry(QRect(220, 55, 131, 271)) self.verticalLayout_2 = QVBoxLayout(self.verticalLayoutWidget_2) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.checkBox_10 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_10) self.checkBox_11 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_11) self.checkBox_12 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_12) self.checkBox_13 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_13) self.checkBox_14 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_14) self.checkBox_15 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_15) self.checkBox_16 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_16) self.checkBox_17 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_17) self.checkBox_18 = QCheckBox(self.verticalLayoutWidget_2) self.verticalLayout_2.addWidget(self.checkBox_18) self.verticalLayoutWidget_3 = QWidget(self.centralwidget) self.verticalLayoutWidget_3.setGeometry(QRect(380, 55, 131, 271)) self.verticalLayout_3 = QVBoxLayout(self.verticalLayoutWidget_3) self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) self.checkBox_19 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_19) self.checkBox_20 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_20) self.checkBox_21 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_21) self.checkBox_22 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_22) self.checkBox_23 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_23) self.checkBox_24 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_24) self.checkBox_25 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_25) self.checkBox_26 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_26) self.checkBox_27 = QCheckBox(self.verticalLayoutWidget_3) self.verticalLayout_3.addWidget(self.checkBox_27) self.label_note = QLabel(self.centralwidget) self.label_note.setGeometry(QRect(70, 330, 350, 16)) self.label_space = QLabel(self.centralwidget) self.label_space.setGeometry(QRect(70, 350, 350, 16)) self.label_size = QLabel(self.centralwidget) self.label_size.setGeometry(QRect(205, 350, 350, 16)) self.horizontalLayoutWidget_2 = QWidget(self.centralwidget) self.horizontalLayoutWidget_2.setGeometry(QRect(70, 380, 220, 31)) self.horizontalLayout_2 = QHBoxLayout(self.horizontalLayoutWidget_2) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.button_select_all = QPushButton(self.horizontalLayoutWidget_2) self.button_select_all.setIcon(QIcon(':/icon/no_check_icon.png')) self.button_select_all.setIconSize(QSize(18, 18)) self.button_select_all.setLayoutDirection(Qt.RightToLeft) self.horizontalLayout_2.addWidget(self.button_select_all) self.button_select_all.setMinimumSize(100, 30) self.button_select_all.setProperty('class', 'Aqua') self.button_deselect_all = QPushButton(self.horizontalLayoutWidget_2) self.button_deselect_all.setIcon(QIcon(':/icon/no_cancel_icon.png')) self.button_deselect_all.setIconSize(QSize(18, 18)) self.button_deselect_all.setLayoutDirection(Qt.RightToLeft) self.horizontalLayout_2.addWidget(self.button_deselect_all) self.button_deselect_all.setMinimumSize(100, 30) self.button_deselect_all.setProperty('class', 'Aqua') self.horizontalLayoutWidget = QWidget(self.centralwidget) self.horizontalLayoutWidget.setGeometry(QRect(404, 380, 107, 31)) self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.button_uninstall = QPushButton(self.horizontalLayoutWidget) self.button_uninstall.setIcon(QIcon(':/icon/no_trash_icon.png')) self.button_uninstall.setIconSize(QSize(18, 18)) self.button_uninstall.setLayoutDirection(Qt.RightToLeft) self.horizontalLayout.addWidget(self.button_uninstall) self.button_uninstall.setMinimumSize(100, 30) self.button_uninstall.setProperty('class', 'Grapefruit') with open("style.css", 'r') as file: self.sidebar.setStyleSheet(file.read()) self.refresh_btn.setStyleSheet(file.read()) self.homepage_btn.setStyleSheet(file.read()) self.about_btn.setStyleSheet(file.read()) self.quit_btn.setStyleSheet(file.read()) self.progressbar.setStyleSheet(file.read()) self.button_select_all.setStyleSheet(file.read()) self.button_deselect_all.setStyleSheet(file.read()) self.button_uninstall.setStyleSheet(file.read()) self.setCentralWidget(self.centralwidget) self.retranslateUi() QMetaObject.connectSlotsByName(self)
def __init__(self, aPath, parent=None): super(VideoPlayer, self).__init__(parent) self.setAttribute(Qt.WA_NoSystemBackground, True) self.setAcceptDrops(True) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback) self.mediaPlayer.setVolume(80) self.videoWidget = QVideoWidget(self) self.videoWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.videoWidget.setMinimumSize(QSize(640, 360)) self.lbl = QLineEdit('00:00:00') self.lbl.setReadOnly(True) self.lbl.setFixedWidth(70) self.lbl.setUpdatesEnabled(True) self.lbl.setStyleSheet(stylesheet(self)) self.elbl = QLineEdit('00:00:00') self.elbl.setReadOnly(True) self.elbl.setFixedWidth(70) self.elbl.setUpdatesEnabled(True) self.elbl.setStyleSheet(stylesheet(self)) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedWidth(32) self.playButton.setStyleSheet("background-color: black") self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal, self) self.positionSlider.setStyleSheet(stylesheet(self)) self.positionSlider.setRange(0, 100) self.positionSlider.sliderMoved.connect(self.setPosition) self.positionSlider.sliderMoved.connect(self.handleLabel) self.positionSlider.setSingleStep(2) self.positionSlider.setPageStep(20) self.positionSlider.setAttribute(Qt.WA_TranslucentBackground, True) self.clip = QApplication.clipboard() self.process = QProcess(self) self.process.readyRead.connect(self.dataReady) self.process.finished.connect(self.playFromURL) self.myurl = "" # channel list self.channelList = QListView(self) self.channelList.setMinimumSize(QSize(150, 0)) self.channelList.setMaximumSize(QSize(150, 4000)) self.channelList.setFrameShape(QFrame.Box) self.channelList.setObjectName("channelList") self.channelList.setStyleSheet("background-color: black; color: #585858;") self.channelList.setFocus() # for adding items to list must create a model self.model = QStandardItemModel() self.channelList.setModel(self.model) self.controlLayout = QHBoxLayout() self.controlLayout.setContentsMargins(5, 0, 5, 0) self.controlLayout.addWidget(self.playButton) self.controlLayout.addWidget(self.lbl) self.controlLayout.addWidget(self.positionSlider) self.controlLayout.addWidget(self.elbl) self.mainLayout = QHBoxLayout() # contains video and cotrol widgets to the left side self.layout = QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.addWidget(self.videoWidget) self.layout.addLayout(self.controlLayout) # adds channels list to the right self.mainLayout.addLayout(self.layout) self.mainLayout.addWidget(self.channelList) self.setLayout(self.mainLayout) self.myinfo = "©2020\nTIVOpy v1.0" self.widescreen = True #### shortcuts #### self.shortcut = QShortcut(QKeySequence("q"), self) self.shortcut.activated.connect(self.handleQuit) self.shortcut = QShortcut(QKeySequence("u"), self) self.shortcut.activated.connect(self.playFromURL) self.shortcut = QShortcut(QKeySequence(Qt.Key_Space), self) self.shortcut.activated.connect(self.play) self.shortcut = QShortcut(QKeySequence(Qt.Key_F), self) self.shortcut.activated.connect(self.handleFullscreen) self.shortcut = QShortcut(QKeySequence(Qt.Key_Escape), self) self.shortcut.activated.connect(self.exitFullscreen) self.shortcut.activated.connect(self.handleFullscreen) self.shortcut = QShortcut(QKeySequence("i"), self) self.shortcut.activated.connect(self.handleInfo) self.shortcut = QShortcut(QKeySequence("s"), self) self.shortcut.activated.connect(self.toggleSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.positionChanged.connect(self.handleLabel) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) self.populateChannelList() self.selectChannel() self.initialPlay()
def __init__(self, parent=None): super(Tree, self).__init__(parent) self.model = myStandardItemModel() self.setModel(self.model) # DATA # sampleTable = np.array([["S12345", "11", "12", "13", "14"], # ["S2", "21", "22", "23", "24"], # ["S3", "31", "32", "33", "34"], ]) self.sampleTable = [["S1", "100", "1", "1", "1", "1", "1", "1", "1"], ["S2", "200", "2", "2", "2", "2", "2", "2", "2"], ["S3", "300", "3", "3", "3", "3", "3", "3", "3"], ["S4", "400", "4", "4", "4", "4", "4", "4", "4"], ["", "", " ", " ", " ", " ", " ", " ", " "], ["", "", " ", " ", " ", " ", " ", " ", " "], ["", "", " ", " ", " ", " ", " ", " ", " "]] self.headerLabels_sampTable = ["Sample/Title", "Trans", "Height", "Phi Offset",\ "Psi", "Footprint", "Resolution", "Coarse_noMirror", "Switch"] self.tableModel = TableModel(self, self.sampleTable, self.headerLabels_sampTable) self.delegate = ComboBoxDelegate(self, self.sampleTable) self.setItemDelegateForColumn(1, self.delegate) self.tableModel.dataChanged.connect(self.delegate.updateCombo) self.tableModel.layoutChanged.connect(self.delegate.updateCombo) self.tableModel.dataChanged.connect(self.update_summary) self.model.dataChanged.connect(self.update_runtime) self.dur_delegate = ProgressDelegate(self) self.setItemDelegateForColumn(4, self.dur_delegate) #self.setEditTriggers(QtWidgets.QAbstractItemView.AllEditTriggers)#CurrentChanged) self.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove | QtWidgets.QAbstractItemView.DragDrop) self.setDragEnabled(True) self.setAcceptDrops(True) self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) self.resizeColumnToContents(0) self.setAlternatingRowColors(True) font = QtGui.QFont("Verdana", 10) font.setWeight(QtGui.QFont.Bold) self.header().setFont(font) self.resize(self.sizeHint().height(), self.minimumHeight()) self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.open_menu) self.collapsed.connect(self.show_summary) self.expanded.connect(self.remove_summary) self.shortcut = QShortcut(QKeySequence("Del"), self) self.shortcut.activated.connect(self.del_action) self.update_summary() # define shortcuts self.menu = QtWidgets.QMenu() self.sub_menu = QtWidgets.QMenu("Insert Action") self.menu.addMenu(self.sub_menu) # actions = NRActions.actions actions = [ cls.__name__ for cls in NRActions.ScriptActionClass.ActionClass.__subclasses__() ] for name in actions: shortcut = "Ctrl+" + name[0].lower() action = self.sub_menu.addAction(name) #action.setShortcut(QtGui.QKeySequence(shortcut)) short = QtWidgets.QShortcut(QtGui.QKeySequence(shortcut), self) short.activated.connect(partial(self.menu_action, action)) action.triggered.connect(partial(self.menu_action, action))
def create_widget_instance(self, node): """ Create a OWWidget instance for the node. """ desc = node.description klass = name_lookup(desc.qualified_name) log.info("Creating %r instance.", klass) widget = klass.__new__(klass, None, signal_manager=self.signal_manager(), stored_settings=node.properties) # Init the node/widget mapping and state before calling __init__ # Some OWWidgets might already send data in the constructor # (should this be forbidden? Raise a warning?) triggering the signal # manager which would request the widget => node mapping or state self.__widget_for_node[node] = widget self.__node_for_widget[widget] = node self.__widget_processing_state[widget] = 0 widget.__init__() widget.setCaption(node.title) widget.widgetInfo = desc widget.setWindowIcon(icon_loader.from_description(desc).get(desc.icon)) widget.setVisible(node.properties.get("visible", False)) node.title_changed.connect(widget.setCaption) # Widget's info/warning/error messages. widget.widgetStateChanged.connect(self.__on_widget_state_changed) # Widget's statusTip node.set_status_message(widget.statusMessage()) widget.statusMessageChanged.connect(node.set_status_message) # Widget's progress bar value state. widget.progressBarValueChanged.connect(node.set_progress) # Widget processing state (progressBarInit/Finished) # and the blocking state. widget.processingStateChanged.connect( self.__on_processing_state_changed) widget.blockingStateChanged.connect(self.__on_blocking_state_changed) if widget.isBlocking(): # A widget can already enter blocking state in __init__ self.__widget_processing_state[widget] |= self.BlockingUpdate if widget.processingState != 0: # It can also start processing (initialization of resources, ...) self.__widget_processing_state[widget] |= self.ProcessingUpdate node.set_processing_state(1) node.set_progress(widget.progressBarValue) # Install a help shortcut on the widget help_shortcut = QShortcut(QKeySequence("F1"), widget) help_shortcut.activated.connect(self.__on_help_request) # Up shortcut (activate/open parent) up_shortcut = QShortcut(QKeySequence(Qt.ControlModifier + Qt.Key_Up), widget) up_shortcut.activated.connect(self.__on_activate_parent) owactions = [ action for action in widget.actions() if isinstance(action, OWAction) ] node.setProperty("ext-menu-actions", owactions) return widget
def __init__(self): super().__init__() self.appname = "PKD" # Default app (Paan Ki Dukaan) self._setWindowtitle() self.resize(580, 270) textfont = QtGui.QFont("Arial", 14) btnfont = QtGui.QFont("OldEnglish", 12) alertfont = QtGui.QFont("Times", 12) headerfont = QtGui.QFont("Serif", 10) self.shouldtweet = False # No apparent use of this flag right now. self.tweettext = "" self.charlim = 280 self.charwarn = 260 mainlayout = QVBoxLayout() lowerlayout = QHBoxLayout() lowerleftlayout = QVBoxLayout() btnlayout = QGridLayout() self.charcount = QLabel("Char Limit:" + str(self.charlim)) self.charcount.setFont(headerfont) self.charcount.setAlignment(Qt.AlignRight) mainlayout.addWidget(self.charcount) self.txtbox = QtWidgets.QPlainTextEdit(self) self.txtbox.setFont(textfont) self.txtbox.setFocus() self.txtbox.setAutoFillBackground(True) self.txtbox.textChanged.connect(self.typing) mainlayout.addWidget(self.txtbox) mainlayout.addLayout(lowerlayout) lowerlayout.addLayout(lowerleftlayout) lowerleftlayout.addLayout(btnlayout) self.tweetbtn = QtWidgets.QPushButton('Tweet', self) self.tweetbtn.setShortcut("Ctrl+Return") self.tweetbtn.clicked.connect(self.tweetit) self.tweetbtn.setFont(btnfont) self.tweetbtn.resize(2 * self.tweetbtn.sizeHint()) # mainlayout.addWidget(self.tweetbtn) self.cancelbtn = QtWidgets.QPushButton('Clear', self) self.cancelbtn.clicked.connect(self.cleanup) self.cancelbtn.setFont(btnfont) self.cancelbtn.resize(2 * self.cancelbtn.sizeHint()) # mainlayout.addWidget(self.cancelbtn) btnlayout.addWidget(self.tweetbtn, 0, 0) btnlayout.addWidget(self.cancelbtn, 0, 1) self.pkd = QtWidgets.QRadioButton("Paan Ki Dukaan", self) self.gkm = QtWidgets.QRadioButton("Gori Ka Makaan", self) self.pkd.toggled.connect(self.pkdfunk) self.gkm.toggled.connect(self.gkmfunc) self.pkd.setChecked(True) lowerleftlayout.addWidget(self.pkd) lowerleftlayout.addWidget(self.gkm) self.notiflabel = QLabel() self.notiflabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.notiflabel.setFont(alertfont) self.cleanup() lowerlayout.addWidget(self.notiflabel) widget = QWidget() widget.setLayout(mainlayout) self.setCentralWidget(widget) # ====== KEYBOARD SHORTCUTS ====== self.sexyshorts = QShortcut(QKeySequence("Ctrl+U"), self) self.sexyshorts.activated.connect(self.sexyshout) # self.topkd = QShortcut(QKeySequence("Ctrl+P",self)) # self.topkd.activated.connect(self.enpkd) # self.topkd = QShortcut(QKeySequence("Ctrl+G",self)) # self.topkd.activated.connect(self.engkm) self.topkd = QShortcut(QKeySequence("Ctrl+K"), self) self.topkd.activated.connect(self.appflick)
def __init__(self, *args, **kwargs): QtWidgets.QMainWindow.__init__(self, *args, **kwargs) self.setupUi(self) self.btn_entrar.clicked.connect(self.entrar) self.shortcut = QShortcut(QKeySequence("Return"), self) self.shortcut.activated.connect(self.entrar)
def __init__(self): super().__init__() self.ui = Ui_Form() self.ui.setupUi(self) self.bg_colour = '#FFFFFF' self.neumorphismEffect() self.databaseConnect() self.ui.button_start0.clicked.connect(lambda: self.display(1)) self.ui.button_back1.clicked.connect(lambda: self.display(0)) self.ui.button_back2.clicked.connect(lambda: self.projectPageButtons("back")) self.ui.button_back4.clicked.connect(lambda: self.display(1)) self.ui.button_back3.clicked.connect(lambda: self.stepPageButtons("back")) self.ui.button_projects1.clicked.connect(lambda: self.updateProjectList()) self.ui.button_refresh2_1.clicked.connect(lambda: self.updateProjectList()) self.ui.button_tutorials1.clicked.connect(lambda: self.updateTutorialsList()) self.ui.button_refresh2_2.clicked.connect(lambda: self.updateTutorialsList()) self.ui.button_settings1.clicked.connect(lambda: self.clearLayout(self.ui.verticalLayout_project_list,"projects")) self.ui.button_refresh2.clicked.connect(lambda: self.projectPageButtons("refresh")) self.ui.button_refresh3.clicked.connect(lambda: self.stepPageButtons("refresh")) self.ui.button_refresh4.clicked.connect(lambda: self.updateTutorialSteps(self.current_tutorial_index, self.tutorials[self.current_tutorial_index][0])) self.ui.button_run2.clicked.connect(lambda: self.projectPageButtons("run")) self.ui.button_run3.clicked.connect(lambda: self.stepPageButtons("run")) self.ui.button_power0.clicked.connect(lambda: self.display(5)) self.ui.button_power1.clicked.connect(lambda: self.display(5)) self.ui.button_power2.clicked.connect(lambda: self.display(5)) self.ui.button_power3.clicked.connect(lambda: self.display(5)) self.ui.button_power4.clicked.connect(lambda: self.display(5)) self.ui.button_wakeup.clicked.connect(lambda: self.display(0)) self.shortcut = QShortcut(QKeySequence("Ctrl+E"), self) self.shortcut.activated.connect(sys.exit) self.threadpool = QThreadPool() QtWidgets.QScroller.grabGesture(self.ui.scrollArea_project_list.viewport(), QtWidgets.QScroller.LeftMouseButtonGesture) QtWidgets.QScroller.grabGesture(self.ui.scrollArea.viewport(), QtWidgets.QScroller.LeftMouseButtonGesture) QtWidgets.QScroller.grabGesture(self.ui.scrollArea_2.viewport(), QtWidgets.QScroller.LeftMouseButtonGesture) self.list_projectframe = [] self.list_projecttitle = [] self.list_projectdesc = [] self.list_projectbutton = [] self.list_projectgrid = [] self.project_frame_count=0 self.list_tutorialsframe = [] self.list_tutorialsbutton = [] self.list_tutorialstitle = [] self.list_tutorialsdesc = [] self.list_tutorialsgrid = [] self.tutorials_frame_count = 0 self.code_running = 0 self.list_stepframe = [] self.list_stepno = [] self.list_stepdesc = [] self.list_stepbutton = [] self.list_stepgrid = [] self.tutorials = [] self.step_frame_count=0 self.user_id = 3 self.updateProjectList() self.setName() self.ui.scrollArea_project_list.setStyleSheet("background-colour: transparent;") self.ui.scrollArea_tutorials_list.setStyleSheet("background-colour: transparent;") self.ui.scrollArea.setStyleSheet("background-colour: transparent;") self.ui.scrollArea_2.setStyleSheet("background-colour: transparent;")
def initUI(self): self.setGeometry(300, 300, 1200, 600) self.setWindowTitle('CrossCobra - Python IDE') # splitters splitter1 = QSplitter(Qt.Vertical) splitter2 = QSplitter(Qt.Horizontal) # widgets self.notebook = TabWidget(self) self.codeView = CodeView(self, self.notebook) self.notebook.newTab(codeView=self.codeView) self.textPad = self.notebook.textPad self.fileBrowser = FileBrowser(self, self.textPad, self.notebook, self.codeView) self.textPad.fileBrowser = self.fileBrowser # add widgets to splitters splitter1.addWidget(self.fileBrowser) splitter1.addWidget(self.codeView) w = splitter1.width() splitter1.setSizes([w//2, w//2]) splitter2.addWidget(splitter1) splitter2.addWidget(self.notebook) hbox = QHBoxLayout() hbox.addWidget(splitter2) splitter1.setStretchFactor(1, 1) splitter2.setStretchFactor(1, 10) self.setCentralWidget(splitter2) # actions newAction = QAction(QIcon(self.HOME + 'images/new.png'), 'New', self) newAction.setShortcut('Ctrl+N') newAction.triggered.connect(self.new) openAction = QAction(QIcon(self.HOME + 'images/open.png'), 'Open', self) openAction.setShortcut('Ctrl+O') openAction.triggered.connect(self.open) saveAction = QAction(QIcon(self.HOME + 'images/save.png'), 'Save', self) saveAction.setShortcut('Ctrl+S') saveAction.triggered.connect(self.save) saveAsAction = QAction(QIcon(self.HOME + 'images/saveAs.png'), 'Save As', self) saveAsAction.setShortcut('Ctrl+Shift+S') saveAsAction.triggered.connect(self.saveAs) printAction = QAction(QIcon(self.HOME + 'images/print.png'), 'Print', self) printAction.setShortcut('Ctrl+P') printAction.triggered.connect(self.onPrint) undoAction = QAction(QIcon(self.HOME + 'images/undo.png'), 'Undo', self) undoAction.setShortcut('Ctrl+Z') undoAction.triggered.connect(self.undo) redoAction = QAction(QIcon(self.HOME + 'images/redo.png'), 'Redo', self) redoAction.setShortcut('Ctrl+Shift+Z') redoAction.triggered.connect(self.redo) zoomInAction = QAction(QIcon(self.HOME + 'images/zoomIn.png'), 'ZoomIn', self) zoomInAction.setShortcut('Ctrl++') zoomInAction.triggered.connect(self.zoomIn) zoomOutAction = QAction(QIcon(self.HOME + 'images/zoomOut.png'), 'ZoomOut', self) zoomOutAction.setShortcut('Ctrl+-') zoomOutAction.triggered.connect(self.zoomOut) settingsAction = QAction(QIcon(self.HOME + 'images/settings.png'), 'Settings', self) settingsAction.setShortcut('F9') settingsAction.triggered.connect(self.showSettings) interpreterAction = QAction(QIcon(self.HOME + 'images/interpreter.png'), 'Start Python Interpreter', self) interpreterAction.setShortcut('F10') interpreterAction.triggered.connect(self.interpreter) terminalAction = QAction(QIcon(self.HOME + 'images/terminal.png'), 'Start Terminal', self) terminalAction.setShortcut('F11') terminalAction.triggered.connect(self.terminal) runAction = QAction(QIcon(self.HOME + 'images/run.png'), 'Run File', self) runAction.setShortcut('F12') runAction.triggered.connect(self.run) searchShortcut = QShortcut(self) searchShortcut.setKey('Ctrl+F') searchShortcut.activated.connect(self.onSearch) spacer = QWidget() spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # make toolbar self.toolbar = QToolBar() self.toolbar.setStyleSheet(''' QToolButton::hover { background-color: darkgreen;} ''') self.toolbar.setContextMenuPolicy(Qt.PreventContextMenu) self.addToolBar(Qt.RightToolBarArea, self.toolbar) self.toolbar.addSeparator() self.toolbar.addAction(newAction) self.toolbar.addSeparator() self.toolbar.addAction(openAction) self.toolbar.addSeparator() self.toolbar.addAction(saveAction) self.toolbar.addSeparator() self.toolbar.addAction(saveAsAction) self.toolbar.addSeparator() self.toolbar.addAction(printAction) self.toolbar.addSeparator() self.toolbar.addAction(undoAction) self.toolbar.addSeparator() self.toolbar.addAction(redoAction) self.toolbar.addSeparator() self.toolbar.addAction(zoomInAction) self.toolbar.addSeparator() self.toolbar.addAction(zoomOutAction) self.toolbar.addSeparator() self.toolbar.addAction(settingsAction) self.toolbar.addSeparator() self.toolbar.addWidget(spacer) self.toolbar.addAction(interpreterAction) self.toolbar.addSeparator() self.toolbar.addAction(terminalAction) self.toolbar.addSeparator() self.toolbar.addAction(runAction) # make statusbar self.statusBar = QStatusBar() self.searchEdit = QLineEdit() spacer2 = QWidget() self.searchEdit.setStyleSheet( ''' background-color: white; color: black; ''') self.searchEdit.returnPressed.connect(self.onSearch) self.searchButton = QPushButton(QIcon(self.HOME + 'images/search.png'), 'Search', self) self.searchButton.setStyleSheet( ''' QPushButton::hover { background-color: darkgreen;} ''') self.searchButton.clicked.connect(self.onSearch) self.statusBar.addPermanentWidget(spacer2) self.statusBar.addPermanentWidget(self.searchEdit) self.statusBar.addPermanentWidget(self.searchButton) self.setStatusBar(self.statusBar) # show all self.textPad.setFocus() self.show()
def createFormGroupMapstats(self): self.formGroupMapstats = QWidget() mainLayout = QVBoxLayout() box = QGroupBox(_("General")) layout = QFormLayout() container = QHBoxLayout() self.qb_boxStyle = StyleComboBox( scctool.settings.casting_html_dir + "/src/css/mapstats", "mapstats") self.qb_boxStyle.connect2WS(self.controller, 'mapstats') label = QLabel(_("Style:")) label.setMinimumWidth(120) button = QPushButton(_("Show in Browser")) button.clicked.connect(lambda: self.openHTML( scctool.settings.casting_html_dir + "/mapstats.html")) container.addWidget(self.qb_boxStyle, 2) container.addWidget(button, 1) layout.addRow(label, container) self.cb_mappool = QComboBox() self.cb_mappool.addItem(_("Current Ladder Map Pool")) self.cb_mappool.addItem(_("Custom Map Pool (defined below)")) self.cb_mappool.addItem(_("Currently entered Maps only")) self.cb_mappool.setCurrentIndex( self.controller.mapstatsManager.getMapPoolType()) self.cb_mappool.currentIndexChanged.connect(self.changed) layout.addRow(QLabel(_("Map Pool:")), self.cb_mappool) self.cb_autoset_map = QCheckBox(_("Select the next map automatically")) self.cb_autoset_map.setChecked( scctool.settings.config.parser.getboolean( "Mapstats", "autoset_next_map")) self.cb_autoset_map.stateChanged.connect(self.changed) label = QLabel(_("Next Map:")) label.setMinimumWidth(120) layout.addRow(label, self.cb_autoset_map) self.cb_mark_played = QCheckBox(_("Mark already played maps")) self.cb_mark_played.setChecked( scctool.settings.config.parser.getboolean( "Mapstats", "mark_played")) self.cb_mark_played.stateChanged.connect(self.changed) label = QLabel(_("Mark:")) label.setMinimumWidth(120) layout.addRow(label, self.cb_mark_played) box.setLayout(layout) mainLayout.addWidget(box) box = QGroupBox(_("Custom Map Pool")) layout = QGridLayout() self.maplist = QListWidget() self.maplist.setSortingEnabled(True) ls = list(self.controller.mapstatsManager.getCustomMapPool()) self.maplist.addItems(ls) self.maplist.setCurrentItem(self.maplist.item(0)) layout.addWidget(self.maplist, 0, 0, 3, 1) qb_add = QPushButton() pixmap = QIcon( scctool.settings.getResFile('add.png')) qb_add.setIcon(pixmap) qb_add.clicked.connect(self.addMap) layout.addWidget(qb_add, 0, 1) qb_remove = QPushButton() pixmap = QIcon( scctool.settings.getResFile('delete.png')) qb_remove.clicked.connect(self.removeMap) qb_remove.setIcon(pixmap) layout.addWidget(qb_remove, 1, 1) self.sc_removeMap = QShortcut(QKeySequence("Del"), self) self.sc_removeMap.setAutoRepeat(False) self.sc_removeMap.activated.connect(self.removeMap) box.setLayout(layout) mainLayout.addWidget(box) mainLayout.addItem(QSpacerItem( 0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding)) self.formGroupMapstats.setLayout(mainLayout)
def __init__(self): super().__init__() # map keyboard shortcuts for key in settings.keyboardshortcut.get('Home', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_home) for key in settings.keyboardshortcut.get('Backspace', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_backspace) for key in settings.keyboardshortcut.get('Enter', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_enter) for key in settings.keyboardshortcut.get('PageUp', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_pageup) for key in settings.keyboardshortcut.get('PageDown', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_pagedown) for key in settings.keyboardshortcut.get('F1', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_F1) for key in settings.keyboardshortcut.get('F2', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_F2) for key in settings.keyboardshortcut.get('F3', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_F3) for key in settings.keyboardshortcut.get('F4', '').split('|'): QShortcut(self.getQKeySequence(key), self, self.key_F4) for key in settings.keyboardshortcut.get('switchchannel', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.switchChannel) for key in settings.keyboardshortcut.get('playnextsong', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.playNextSong) for key in settings.keyboardshortcut.get('pitchup', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.setPitchUp) for key in settings.keyboardshortcut.get('pitchflat', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.setPitchFlat) for key in settings.keyboardshortcut.get('pitchdown', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.setPitchDown) for key in settings.keyboardshortcut.get('jumpforward', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.jumpForward).setAutoRepeat(True) for key in settings.keyboardshortcut.get('jumpbackward', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.jumpBackward).setAutoRepeat(True) for key in settings.keyboardshortcut.get('playpause', '').split('|'): QShortcut(self.getQKeySequence(key), self, playlist.playpause)
def __init__(self, core_args=None, core_env=None, api_port=None): QMainWindow.__init__(self) QCoreApplication.setOrganizationDomain("nl") QCoreApplication.setOrganizationName("TUDelft") QCoreApplication.setApplicationName("Tribler") QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) self.gui_settings = QSettings() api_port = api_port or int(get_gui_setting(self.gui_settings, "api_port", DEFAULT_API_PORT)) dispatcher.update_worker_settings(port=api_port) self.navigation_stack = [] self.tribler_started = False self.tribler_settings = None self.debug_window = None self.core_manager = CoreManager(api_port) self.pending_requests = {} self.pending_uri_requests = [] self.download_uri = None self.dialog = None self.new_version_dialog = None self.start_download_dialog_active = False self.request_mgr = None self.search_request_mgr = None self.search_suggestion_mgr = None self.selected_torrent_files = [] self.vlc_available = True self.has_search_results = False self.last_search_query = None self.last_search_time = None self.start_time = time.time() self.exception_handler_called = False self.token_refresh_timer = None sys.excepthook = self.on_exception uic.loadUi(get_ui_file_path('mainwindow.ui'), self) TriblerRequestManager.window = self self.tribler_status_bar.hide() # Load dynamic widgets uic.loadUi(get_ui_file_path('torrent_channel_list_container.ui'), self.channel_page_container) self.channel_torrents_list = self.channel_page_container.items_list self.channel_torrents_detail_widget = self.channel_page_container.details_tab_widget self.channel_torrents_detail_widget.initialize_details_widget() self.channel_torrents_list.itemSelectionChanged.connect(self.channel_page.clicked_item) uic.loadUi(get_ui_file_path('torrent_channel_list_container.ui'), self.search_page_container) self.search_results_list = self.search_page_container.items_list self.search_torrents_detail_widget = self.search_page_container.details_tab_widget self.search_torrents_detail_widget.initialize_details_widget() self.search_results_list.itemClicked.connect(self.on_channel_item_click) self.search_results_list.itemSelectionChanged.connect(self.search_results_page.clicked_item) self.token_balance_widget.mouseReleaseEvent = self.on_token_balance_click def on_state_update(new_state): self.loading_text_label.setText(new_state) self.core_manager.core_state_update.connect(on_state_update) self.magnet_handler = MagnetHandler(self.window) QDesktopServices.setUrlHandler("magnet", self.magnet_handler, "on_open_magnet_link") self.debug_pane_shortcut = QShortcut(QKeySequence("Ctrl+d"), self) self.debug_pane_shortcut.activated.connect(self.clicked_menu_button_debug) # Remove the focus rect on OS X for widget in self.findChildren(QLineEdit) + self.findChildren(QListWidget) + self.findChildren(QTreeWidget): widget.setAttribute(Qt.WA_MacShowFocusRect, 0) self.menu_buttons = [self.left_menu_button_home, self.left_menu_button_search, self.left_menu_button_my_channel, self.left_menu_button_subscriptions, self.left_menu_button_video_player, self.left_menu_button_downloads, self.left_menu_button_discovered] self.video_player_page.initialize_player() self.search_results_page.initialize_search_results_page() self.settings_page.initialize_settings_page() self.subscribed_channels_page.initialize() self.edit_channel_page.initialize_edit_channel_page() self.downloads_page.initialize_downloads_page() self.home_page.initialize_home_page() self.loading_page.initialize_loading_page() self.discovering_page.initialize_discovering_page() self.discovered_page.initialize_discovered_page() self.trust_page.initialize_trust_page() self.stackedWidget.setCurrentIndex(PAGE_LOADING) # Create the system tray icon if QSystemTrayIcon.isSystemTrayAvailable(): self.tray_icon = QSystemTrayIcon() use_monochrome_icon = get_gui_setting(self.gui_settings, "use_monochrome_icon", False, is_bool=True) self.update_tray_icon(use_monochrome_icon) # Create the tray icon menu menu = self.create_add_torrent_menu() show_downloads_action = QAction('Show downloads', self) show_downloads_action.triggered.connect(self.clicked_menu_button_downloads) token_balance_action = QAction('Show token balance', self) token_balance_action.triggered.connect(lambda: self.on_token_balance_click(None)) quit_action = QAction('Quit Tribler', self) quit_action.triggered.connect(self.close_tribler) menu.addSeparator() menu.addAction(show_downloads_action) menu.addAction(token_balance_action) menu.addSeparator() menu.addAction(quit_action) self.tray_icon.setContextMenu(menu) else: self.tray_icon = None self.hide_left_menu_playlist() self.left_menu_button_debug.setHidden(True) self.top_menu_button.setHidden(True) self.left_menu.setHidden(True) self.token_balance_widget.setHidden(True) self.settings_button.setHidden(True) self.add_torrent_button.setHidden(True) self.top_search_bar.setHidden(True) # Set various icons self.top_menu_button.setIcon(QIcon(get_image_path('menu.png'))) self.search_completion_model = QStringListModel() completer = QCompleter() completer.setModel(self.search_completion_model) completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.item_delegate = QStyledItemDelegate() completer.popup().setItemDelegate(self.item_delegate) completer.popup().setStyleSheet(""" QListView { background-color: #404040; } QListView::item { color: #D0D0D0; padding-top: 5px; padding-bottom: 5px; } QListView::item:hover { background-color: #707070; } """) self.top_search_bar.setCompleter(completer) # Toggle debug if developer mode is enabled self.window().left_menu_button_debug.setHidden( not get_gui_setting(self.gui_settings, "debug", False, is_bool=True)) # Start Tribler self.core_manager.start(core_args=core_args, core_env=core_env) self.core_manager.events_manager.received_search_result_channel.connect( self.search_results_page.received_search_result_channel) self.core_manager.events_manager.received_search_result_torrent.connect( self.search_results_page.received_search_result_torrent) self.core_manager.events_manager.torrent_finished.connect(self.on_torrent_finished) self.core_manager.events_manager.new_version_available.connect(self.on_new_version_available) self.core_manager.events_manager.tribler_started.connect(self.on_tribler_started) self.core_manager.events_manager.events_started.connect(self.on_events_started) self.core_manager.events_manager.low_storage_signal.connect(self.on_low_storage) # Install signal handler for ctrl+c events def sigint_handler(*_): self.close_tribler() signal.signal(signal.SIGINT, sigint_handler) self.installEventFilter(self.video_player_page) # Resize the window according to the settings center = QApplication.desktop().availableGeometry(self).center() pos = self.gui_settings.value("pos", QPoint(center.x() - self.width() * 0.5, center.y() - self.height() * 0.5)) size = self.gui_settings.value("size", self.size()) self.move(pos) self.resize(size) self.show()
def __init__(self): QWidget.__init__(self) logger.info("Starting %s" % nw.__package__) logger.debug("Initialising GUI ...") self.mainConf = nw.CONFIG self.theTheme = Theme(self) self.theProject = NWProject(self) self.theIndex = NWIndex(self.theProject, self) self.hasProject = False logger.info("Qt5 Version: %s (%d)" % (self.mainConf.verQtString, self.mainConf.verQtValue)) logger.info("PyQt5 Version: %s (%d)" % (self.mainConf.verPyQtString, self.mainConf.verPyQtValue)) self.resize(*self.mainConf.winGeometry) self._setWindowTitle() self.setWindowIcon(QIcon(path.join(self.mainConf.appIcon))) # Main GUI Elements self.statusBar = GuiMainStatus(self) self.docEditor = GuiDocEditor(self, self.theProject) self.docViewer = GuiDocViewer(self, self.theProject) self.docDetails = GuiDocDetails(self, self.theProject) self.treeView = GuiDocTree(self, self.theProject) self.mainMenu = GuiMainMenu(self, self.theProject) # Minor Gui Elements self.statusIcons = [] self.importIcons = [] # Assemble Main Window self.treePane = QFrame() self.treeBox = QVBoxLayout() self.treeBox.addWidget(self.treeView) self.treeBox.addWidget(self.docDetails) self.treePane.setLayout(self.treeBox) self.splitView = QSplitter(Qt.Horizontal) self.splitView.addWidget(self.docEditor) self.splitView.addWidget(self.docViewer) self.splitView.splitterMoved.connect(self._splitViewMove) self.splitMain = QSplitter(Qt.Horizontal) self.splitMain.addWidget(self.treePane) self.splitMain.addWidget(self.splitView) self.splitMain.setSizes(self.mainConf.mainPanePos) self.splitMain.splitterMoved.connect(self._splitMainMove) self.setCentralWidget(self.splitMain) self.idxTree = self.splitMain.indexOf(self.treePane) self.idxMain = self.splitMain.indexOf(self.splitView) self.idxEditor = self.splitView.indexOf(self.docEditor) self.idxViewer = self.splitView.indexOf(self.docViewer) self.splitMain.setCollapsible(self.idxTree, False) self.splitMain.setCollapsible(self.idxMain, False) self.splitView.setCollapsible(self.idxEditor, False) self.splitView.setCollapsible(self.idxViewer, True) self.docViewer.setVisible(False) # Build The Tree View self.treeView.itemSelectionChanged.connect(self._treeSingleClick) self.treeView.itemDoubleClicked.connect(self._treeDoubleClick) self.rebuildTree() # Set Main Window Elements self.setMenuBar(self.mainMenu) self.setStatusBar(self.statusBar) self.statusBar.setStatus("Ready") # Set Up Autosaving Project Timer self.asProjTimer = QTimer() self.asProjTimer.timeout.connect(self._autoSaveProject) # Set Up Autosaving Document Timer self.asDocTimer = QTimer() self.asDocTimer.timeout.connect(self._autoSaveDocument) # Keyboard Shortcuts QShortcut(Qt.Key_Return, self.treeView, context=Qt.WidgetShortcut, activated=self._treeKeyPressReturn) # Forward Functions self.setStatus = self.statusBar.setStatus self.setProjectStatus = self.statusBar.setProjectStatus if self.mainConf.showGUI: self.show() self.initMain() self.asProjTimer.start() self.asDocTimer.start() self.statusBar.clearStatus() logger.debug("GUI initialisation complete") return
def create_app(self): self.layout = QVBoxLayout() self.toolbar = QWidget() self.toolbar.setObjectName("toolbar") self.toolbar_layout = QHBoxLayout() self.layout.setSpacing(0) self.layout.setContentsMargins(0, 0, 0, 0) self.shortcutNewTab = QShortcut(QKeySequence("Ctrl+T"), self) self.shortcutNewTab.activated.connect(self.add_tab) self.shortcutReload = QShortcut(QKeySequence("Ctrl+R"), self) self.shortcutReload.activated.connect(self.reload_page) # Create Tabs self.tab_bar = QTabBar(movable=True, tabsClosable=True) self.tab_bar.tabCloseRequested.connect(self.close_tab) self.tab_bar.tabBarClicked.connect(self.switch_tab) self.tab_bar.setCurrentIndex(0) self.tab_bar.setDrawBase(False) # Keep track of tabs self.tab_count = 0 self.tabs = [] # Add Tab Button self.AddTabButton = QPushButton("+") self.AddTabButton.clicked.connect(self.add_tab) # Create address bar self.address_bar = Address_Bar() self.address_bar.returnPressed.connect(self.browse_to) # Set Toolbar Buttons self.back_button = QPushButton("<") self.back_button.clicked.connect(self.go_back) self.forward_button = QPushButton(">") self.forward_button.clicked.connect(self.go_forward) self.reload_button = QPushButton("R") self.reload_button.clicked.connect(self.reload_page) #Build Toolbar self.toolbar.setLayout(self.toolbar_layout) self.toolbar_layout.addWidget(self.back_button) self.toolbar_layout.addWidget(self.forward_button) self.toolbar_layout.addWidget(self.reload_button) self.toolbar_layout.addWidget(self.address_bar) self.toolbar_layout.addWidget(self.AddTabButton) # Set Main View self.container = QWidget() self.container.layout = QStackedLayout() self.container.setLayout(self.container.layout) self.layout.addWidget(self.tab_bar) self.layout.addWidget(self.toolbar) self.layout.addWidget(self.container) self.setLayout(self.layout) self.add_tab() self.show()
def install_shortcuts(obj, actions, ide): short = resources.get_shortcut for action in actions: short_key = action.get("shortcut", None) action_data = action.get("action", None) connect = action.get("connect", None) shortcut = None item_ui = None func = None if connect is not None: func = getattr(obj, connect, None) if short_key and not action_data: if isinstance(short_key, QKeySequence): shortcut = QShortcut(short_key, ide) else: if short(short_key) is None: logger.warning("Not shorcut for %s" % short_key) continue shortcut = QShortcut(short(short_key), ide) shortcut.setContext(Qt.ApplicationShortcut) if isinstance(func, collections.Callable): shortcut.activated.connect(func) if action_data: is_menu = action_data.get('is_menu', False) if is_menu: item_ui = QMenu(action_data['text'], ide) else: item_ui = QAction(action_data['text'], ide) object_name = "%s.%s" % (obj.__class__.__name__, connect) item_ui.setObjectName(object_name) # FIXME: Configurable item_ui.setIconVisibleInMenu(False) image_name = action_data.get('image', None) section = action_data.get('section', None) weight = action_data.get('weight', None) keysequence = action_data.get('keysequence', None) if image_name: if isinstance(image_name, int): icon = ide.style().standardIcon(image_name) item_ui.setIcon(icon) elif isinstance(image_name, str): if image_name.startswith("/home"): icon = QIcon(image_name) else: icon = QIcon(":img/" + image_name) item_ui.setIcon(icon) if short_key and not is_menu: if short(short_key) is None: logger.warning("Not shortcut for %s" % short_key) continue item_ui.setShortcut(short(short_key)) # Add tooltip with append shortcut item_ui.setToolTip( tooltip_with_shortcut(item_ui.text(), short(short_key))) item_ui.setShortcutContext(Qt.ApplicationShortcut) elif keysequence and not is_menu: item_ui.setShortcut(short(keysequence)) item_ui.setShortcutContext(Qt.ApplicationShortcut) if isinstance(func, collections.Callable) and not is_menu: item_ui.triggered.connect(lambda _, func=func: func()) if section and section[0] is not None and weight: ide.register_menuitem(item_ui, section, weight) if image_name and not is_menu: ide.register_toolbar(item_ui, section, weight) if short_key and shortcut: ide.register_shortcut(short_key, shortcut, item_ui)
def __setupKeyShortcuts(self, widget): widgetName=widget.objectName(); self.__keyShortcuts[widgetName]=[]; self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("V")), widget, self.plotPoints)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("C")), widget, self.plotLargePoints)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("Shift+D")), widget, self.deleteCluster)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("F")), widget, self.refineCluster)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("A")), widget, self.addCluster)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("S")), widget, self.copyCluster)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("Shift+G")), widget, self.undoCluster)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("Z")), widget, self.stepBackBoundary)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("X")), widget, self.toggleReport)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("Q")), widget, self.drawPrevWaves)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("W")), widget, self.drawNextWaves)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("E")), widget, self.clearWavePlots)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("R")), widget, self.resetWaveInd)); self.__keyShortcuts[widgetName].append(QShortcut(QKeySequence(self.tr("T")), widget, self.toggleRefWaveChs));
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() horizontal_splitter = QSplitter(Qt.Horizontal) vertical_splitter = QSplitter(Qt.Vertical) # 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 = QCheckBox(self) limit_verticalLayout.addWidget(self.after_checkBox) # after_frame self.after_frame = QFrame(self) self.after_frame.setFrameShape(QFrame.StyledPanel) self.after_frame.setFrameShadow(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) horizontal_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) # download_table self.download_table = DownloadTableWidget(self) vertical_splitter.addWidget(self.download_table) horizontal_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) horizontal_splitter.setStretchFactor(0, 3) # category_tree width horizontal_splitter.setStretchFactor(1, 10) # ratio of tables's width # video_finder_widget self.video_finder_widget = QWidget(self) video_finder_horizontalLayout = QHBoxLayout(self.video_finder_widget) self.muxing_pushButton = QPushButton(self) self.muxing_pushButton.setIcon(QIcon(icons + 'video_finder')) video_finder_horizontalLayout.addWidget(self.muxing_pushButton) video_finder_horizontalLayout.addSpacing(20) video_audio_verticalLayout = QVBoxLayout() self.video_label = QLabel(self) video_audio_verticalLayout.addWidget(self.video_label) self.audio_label = QLabel(self) video_audio_verticalLayout.addWidget(self.audio_label) video_finder_horizontalLayout.addLayout(video_audio_verticalLayout) status_muxing_verticalLayout = QVBoxLayout() self.video_finder_status_label = QLabel(self) status_muxing_verticalLayout.addWidget(self.video_finder_status_label) self.muxing_status_label = QLabel(self) status_muxing_verticalLayout.addWidget(self.muxing_status_label) video_finder_horizontalLayout.addLayout(status_muxing_verticalLayout) vertical_splitter.addWidget(self.video_finder_widget) download_table_content_widget_verticalLayout.addWidget(vertical_splitter) download_table_horizontalLayout.addWidget(horizontal_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", 'V&ideo 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(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(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.persepolis_setting.beginGroup('settings/shortcuts') # videoFinderAddLinkAction 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) self.videoFinderAddLinkAction_shortcut = QShortcut(self.persepolis_setting.value('video_finder_shortcut'), self, self.showVideoFinderAddLinkWindow) videoFinderMenu.addAction(self.videoFinderAddLinkAction) # stopAllAction 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) # sort_file_name_Action self.sort_file_name_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'File name'), self, triggered=self.sortByName) sortMenu.addAction(self.sort_file_name_Action) # sort_file_size_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) # sort_first_try_date_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) # sort_last_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) # sort_download_status_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) # trayAction 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) # showMenuBarAction 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) # showSidePanelAction 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) # minimizeAction self.minimizeAction = QAction(QIcon(icons + 'minimize'), QCoreApplication.translate("mainwindow_ui_tr", 'Minimize to system tray'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Minimize to system tray"), triggered=self.minMaxTray) self.minimizeAction_shortcut = QShortcut(self.persepolis_setting.value('hide_window_shortcut'), self, self.minMaxTray) viewMenu.addAction(self.minimizeAction) # addlinkAction self.addlinkAction = QAction(QIcon(icons + 'add'), QCoreApplication.translate("mainwindow_ui_tr", 'Add New Download Link'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Add New Download Link"), triggered=self.addLinkButtonPressed) self.addlinkAction_shortcut = QShortcut(self.persepolis_setting.value('add_new_download_shortcut'), self, self.addLinkButtonPressed) fileMenu.addAction(self.addlinkAction) # importText 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) self.addtextfileAction_shortcut = QShortcut(self.persepolis_setting.value('import_text_shortcut'), self, self.importText) fileMenu.addAction(self.addtextfileAction) # resumeAction self.resumeAction = QAction(QIcon(icons + 'play'), QCoreApplication.translate("mainwindow_ui_tr", 'Resume Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Resume Download"), triggered=self.resumeButtonPressed) downloadMenu.addAction(self.resumeAction) # pauseAction self.pauseAction = QAction(QIcon(icons + 'pause'), QCoreApplication.translate("mainwindow_ui_tr", 'Pause Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Pause Download"), triggered=self.pauseButtonPressed) downloadMenu.addAction(self.pauseAction) # stopAction self.stopAction = QAction(QIcon(icons + 'stop'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Stop/Cancel Download"), triggered=self.stopButtonPressed) downloadMenu.addAction(self.stopAction) # propertiesAction self.propertiesAction = QAction(QIcon(icons + 'setting'), QCoreApplication.translate("mainwindow_ui_tr", 'Properties'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Properties"), triggered=self.propertiesButtonPressed) downloadMenu.addAction(self.propertiesAction) # progressAction self.progressAction = QAction(QIcon(icons + 'window'), QCoreApplication.translate("mainwindow_ui_tr", 'Progress'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Progress"), triggered=self.progressButtonPressed) downloadMenu.addAction(self.progressAction) # openFileAction 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) # openDownloadFolderAction 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) # openDefaultDownloadFolderAction 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) # exitAction self.exitAction = QAction(QIcon(icons + 'exit'), QCoreApplication.translate("mainwindow_ui_tr", 'Exit'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Exit"), triggered=self.closeAction) self.exitAction_shortcut = QShortcut(self.persepolis_setting.value('quit_shortcut'), self, self.closeAction) fileMenu.addAction(self.exitAction) # clearAction 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) # removeSelectedAction 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) self.removeSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('remove_shortcut'), self, self.removeSelected) editMenu.addAction(self.removeSelectedAction) self.removeSelectedAction.setEnabled(False) # deleteSelectedAction 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) self.deleteSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('delete_shortcut'), self, self.deleteSelected) editMenu.addAction(self.deleteSelectedAction) self.deleteSelectedAction.setEnabled(False) # moveSelectedDownloadsAction self.moveSelectedDownloadsAction = QAction(QIcon(icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'move selected download files to another destination'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'move selected download files to another destination'), triggered=self.moveSelectedDownloads) editMenu.addAction(self.moveSelectedDownloadsAction) self.moveSelectedDownloadsAction.setEnabled(False) # createQueueAction 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) # removeQueueAction 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) # startQueueAction 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) # stopQueueAction 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) # moveUpSelectedAction 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) self.moveUpSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('move_up_selection_shortcut'), self, self.moveUpSelected) queueMenu.addAction(self.moveUpSelectedAction) # moveDownSelectedAction 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) self.moveDownSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('move_down_selection_shortcut'), self, self.moveDownSelected) queueMenu.addAction(self.moveDownSelectedAction) # preferencesAction 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) # aboutAction 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) # issueAction 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) # updateAction 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) # logAction 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) # helpAction 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.persepolis_setting.endGroup() 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")) self.muxing_pushButton.setText(QCoreApplication.translate("mainwindow_ui_tr", "start muxing")) self.video_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Video file status: </b>")) self.audio_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Audio file status: </b>")) self.video_finder_status_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Status: </b>")) self.muxing_status_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Muxing status: </b>"))
def __init__(self, parent=None): # pylint: disable=too-many-statements super(HooksWidget, self).__init__(parent=parent) self._app_window = parent if self._app_window.dwarf is None: print('HooksPanel created before Dwarf exists') return # connect to dwarf self._app_window.dwarf.onAddJavaHook.connect(self._on_add_hook) self._app_window.dwarf.onAddNativeHook.connect(self._on_add_hook) self._app_window.dwarf.onAddNativeOnLoadHook.connect(self._on_add_hook) self._app_window.dwarf.onAddJavaOnLoadHook.connect(self._on_add_hook) self._app_window.dwarf.onHitNativeOnLoad.connect( self._on_hit_native_on_load) self._app_window.dwarf.onHitJavaOnLoad.connect( self._on_hit_java_on_load) self._app_window.dwarf.onDeleteHook.connect(self._on_hook_deleted) self._hooks_list = DwarfListView() self._hooks_list.doubleClicked.connect(self._on_double_clicked) self._hooks_list.setContextMenuPolicy(Qt.CustomContextMenu) self._hooks_list.customContextMenuRequested.connect( self._on_context_menu) self._hooks_model = QStandardItemModel(0, 5) self._hooks_model.setHeaderData(0, Qt.Horizontal, 'Address') self._hooks_model.setHeaderData(1, Qt.Horizontal, 'T') self._hooks_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._hooks_model.setHeaderData(2, Qt.Horizontal, 'Input') self._hooks_model.setHeaderData(3, Qt.Horizontal, '{}') self._hooks_model.setHeaderData(3, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._hooks_model.setHeaderData(4, Qt.Horizontal, '<>') self._hooks_model.setHeaderData(4, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._hooks_list.setModel(self._hooks_model) self._hooks_list.header().setStretchLastSection(False) self._hooks_list.header().setSectionResizeMode( 0, QHeaderView.ResizeToContents | QHeaderView.Interactive) self._hooks_list.header().setSectionResizeMode( 1, QHeaderView.ResizeToContents) self._hooks_list.header().setSectionResizeMode(2, QHeaderView.Stretch) self._hooks_list.header().setSectionResizeMode( 3, QHeaderView.ResizeToContents) self._hooks_list.header().setSectionResizeMode( 4, QHeaderView.ResizeToContents) v_box = QVBoxLayout(self) v_box.setContentsMargins(0, 0, 0, 0) v_box.addWidget(self._hooks_list) #header = QHeaderView(Qt.Horizontal, self) h_box = QHBoxLayout() h_box.setContentsMargins(5, 2, 5, 5) self.btn1 = QPushButton( QIcon(utils.resource_path('assets/icons/plus.svg')), '') self.btn1.setFixedSize(20, 20) self.btn1.clicked.connect(self._on_additem_clicked) btn2 = QPushButton(QIcon(utils.resource_path('assets/icons/dash.svg')), '') btn2.setFixedSize(20, 20) btn2.clicked.connect(self.delete_items) btn3 = QPushButton( QIcon(utils.resource_path('assets/icons/trashcan.svg')), '') btn3.setFixedSize(20, 20) btn3.clicked.connect(self.clear_list) h_box.addWidget(self.btn1) h_box.addWidget(btn2) h_box.addSpacerItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) h_box.addWidget(btn3) # header.setLayout(h_box) # header.setFixedHeight(25) # v_box.addWidget(header) v_box.addLayout(h_box) self.setLayout(v_box) self._bold_font = QFont(self._hooks_list.font()) self._bold_font.setBold(True) shortcut_addnative = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_N), self._app_window, self._on_addnative) shortcut_addnative.setAutoRepeat(False) shortcut_addjava = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_J), self._app_window, self._on_addjava) shortcut_addjava.setAutoRepeat(False) shortcut_add_native_on_load = QShortcut( QKeySequence(Qt.CTRL + Qt.Key_O), self._app_window, self._on_add_native_on_load) shortcut_add_native_on_load.setAutoRepeat(False) # new menu self.new_menu = QMenu('New') self.new_menu.addAction('Native', self._on_addnative) self.new_menu.addAction('Java', self._on_addjava) self.new_menu.addAction('Module loading', self._on_add_native_on_load)