def setTab(self): self.tab = self.tabBar() self.tab.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.tab.customContextMenuRequested.connect(self.showContextMenu) self.popMenu = QtGui.QMenu(self) self.popMenu.addAction(QtGui.QIcon(":/ico/refresh.svg"), "Reconnect", self.reconnect) self.popMenu.addAction(QtGui.QIcon(":/ico/detach.svg"), "Detach tab", self.detach) actions.addActionWithScreenChose(self.popMenu, self.detachFrameless, ':/ico/frameless.svg', "Connect frameless")
def __init__(self, config): super(MainWindow, self).__init__() self.config = Config(config) db = Database(self.config.getConnectionString()) db.create() self.hosts = Hosts(db) # menu used for each host self.hostMenu = QMenu() self.hostMenu.addAction(QIcon(":/ico/edit.svg"), "Edit", self.editHost) self.hostMenu.addAction(QIcon(":/ico/remove.svg"), "Delete", self.deleteHost) actions.addActionWithScreenChose( self.hostMenu, self.connectFrameless, ":/ico/frameless.svg", "Connect frameless" ) # setup main window self.ui = Ui_MainWindow() self.ui.setupUi(self) # when top level changed, we changing dock title bar self.dockWidgetTileBar = DockWidgetTitleBar() self.ui.hostsDock.setTitleBarWidget(self.dockWidgetTileBar) self.ui.hostsDock.topLevelChanged.connect(self.dockLevelChanged) # set global menu self.globalMenu = QMenu() self.globalMenu.addAction(QIcon(":/ico/add.svg"), "Add host", self.addHost) # disable menu indicator self.ui.menu.setStyleSheet("QPushButton::menu-indicator {image: none;}") self.positionMenu = QMenu("Dock position") self.positionMenu.addAction("Left", lambda: self.setDockPosition(Qt.LeftDockWidgetArea)) self.positionMenu.addAction("Right", lambda: self.setDockPosition(Qt.RightDockWidgetArea)) self.positionMenu.addAction("Float", self.setDockFloat) self.globalMenu.addMenu(self.positionMenu) self.globalMenu.addAction("Change tray icon visibility", self.changeTrayIconVisibility) self.globalMenu.addAction("Quit", self.close) self.ui.menu.setMenu(self.globalMenu) # set events on hosts list self.ui.hostsList.itemDoubleClicked.connect(self.slotConnectHost) self.ui.hostsList.itemClicked.connect(self.slotShowHost) self.ui.hostsList.customContextMenuRequested.connect(self.slotShowHostContextMenu) # set tab widget self.tabWidget = MyTabWidget() self.setCentralWidget(self.tabWidget) # set tray icon self.tray = QSystemTrayIcon(QIcon(":/ico/myrdp.svg")) self.tray.activated.connect(self.trayActivated) self.trayMenu = QMenu() self.trayMenu.addAction("Hide tray icon", self.changeTrayIconVisibility) self.trayMenu.addAction("Quit", self.close) self.tray.setContextMenu(self.trayMenu) # host list self.ui.filter.textChanged.connect(self.setHostList) self.setHostList() self.restoreSettings()