class PythonConsoleWidget(QDockWidget): """ original code pulled from: http://stackoverflow.com/questions/31380457/add-right-click-functionality-to-listwidget-in-pyqt4 http://stackoverflow.com/questions/20951660/creating-a-syntax-highlighter-in-pythonpyqt4 http://eli.thegreenplace.net/2011/04/01/sample-using-qscintilla-with-pyqt """ def __init__(self, parent): self.parent = parent super(PythonConsoleWidget, self).__init__('Python Console', parent=parent) #super(QDockWidget, self).__init__('Python Console', parent=parent) # I think this works by accident in qt4/5 self.listMenu = QMenu() self.execute_python_button = QPushButton('Execute') self.execute_and_clear_python_button = QPushButton('Execute and Clear') if is_pygments and is_scintilla: #self.enter_data = QSyntaxHighlighting() self.enter_data = SimplePythonEditorWidget() else: self.enter_data = QTextEdit() font = QFont() font.setFamily('Courier') self.enter_data.setFont(font) self.setup_connections() self.layout() def layout(self): vbox = QVBoxLayout() hbox = QHBoxLayout() vbox.addWidget(self.enter_data) hbox.addWidget(self.execute_python_button) hbox.addWidget(self.execute_and_clear_python_button) vbox.addLayout(hbox) vbox_widget = QWidget() vbox_widget.setLayout(vbox) self.setWidget(vbox_widget) def setup_connections(self): if qt_version == 4: self.connect(self.execute_python_button, QtCore.SIGNAL('clicked()'), self.on_execute_python_button) self.connect(self.execute_and_clear_python_button, QtCore.SIGNAL('clicked()'), self.on_execute_and_clear_python_button) else: self.execute_python_button.clicked.connect( self.on_execute_python_button) self.execute_and_clear_python_button.clicked.connect( self.on_execute_and_clear_python_button) #self.on_rig # TODO: enables the right click menu # messes up the previous right click menu #self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) #self.connect(self, QtCore.SIGNAL("customContextMenuRequested(QPoint)"), # self.listItemRightClicked) menu_item1 = self.listMenu.addAction("Properties...") menu_item2 = self.listMenu.addAction("Select All...") menu_item3 = self.listMenu.addAction("Copy...") menu_item1.triggered.connect(self.menuItemClicked_1) menu_item2.triggered.connect(self.menuItemClicked_2) menu_item3.triggered.connect(self.menuItemClicked_3) #self.connect(menu_item1, QtCore.SIGNAL("triggered()"), self.menuItemClicked_1) #self.connect(menu_item2, QtCore.SIGNAL("triggered()"), self.menuItemClicked_2) #self.connect(menu_item3, QtCore.SIGNAL("triggered()"), self.menuItemClicked_3) # we have to create a QWidget to put the console vbox into vbox_widget because # self.setLayout(vbox) # is not supported in a QDockWidget def on_execute_and_clear_python_button(self): self.parent._on_execute_python_button(clear=True) def on_execute_python_button(self): self.parent._on_execute_python_button(clear=False) def listItemRightClicked(self, QPos): """ TDOO: not done... """ return parentPosition = self.mapToGlobal(QtCore.QPoint(0, 0)) self.listMenu.move(parentPosition + QPos) self.listMenu.show() def menuItemClicked_1(self): print(1) def menuItemClicked_2(self): print(2) def menuItemClicked_3(self): print(3)
class PythonConsoleWidget(QDockWidget): """ original code pulled from: http://stackoverflow.com/questions/31380457/add-right-click-functionality-to-listwidget-in-pyqt4 http://stackoverflow.com/questions/20951660/creating-a-syntax-highlighter-in-pythonpyqt4 http://eli.thegreenplace.net/2011/04/01/sample-using-qscintilla-with-pyqt """ def __init__(self, parent): self.parent = parent super(PythonConsoleWidget, self).__init__('Python Console', parent=parent) #super(QDockWidget, self).__init__('Python Console', parent=parent) # I think this works by accident in qt4/5 self.listMenu = QMenu() self.execute_python_button = QPushButton('Execute') self.execute_and_clear_python_button = QPushButton('Execute and Clear') if is_pygments and is_scintilla: #self.enter_data = QSyntaxHighlighting() self.enter_data = SimplePythonEditorWidget() else: self.enter_data = QTextEdit() font = QFont() font.setFamily('Courier') self.enter_data.setFont(font) self.setup_connections() self.layout() def layout(self): vbox = QVBoxLayout() hbox = QHBoxLayout() vbox.addWidget(self.enter_data) hbox.addWidget(self.execute_python_button) hbox.addWidget(self.execute_and_clear_python_button) vbox.addLayout(hbox) vbox_widget = QWidget() vbox_widget.setLayout(vbox) self.setWidget(vbox_widget) def setup_connections(self): if qt_version == 4: self.connect(self.execute_python_button, QtCore.SIGNAL('clicked()'), self.on_execute_python_button) self.connect(self.execute_and_clear_python_button, QtCore.SIGNAL('clicked()'), self.on_execute_and_clear_python_button) else: self.execute_python_button.clicked.connect(self.on_execute_python_button) self.execute_and_clear_python_button.clicked.connect( self.on_execute_and_clear_python_button) #self.on_rig # TODO: enables the right click menu # messes up the previous right click menu #self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) #self.connect(self, QtCore.SIGNAL("customContextMenuRequested(QPoint)"), # self.listItemRightClicked) menu_item1 = self.listMenu.addAction("Properties...") menu_item2 = self.listMenu.addAction("Select All...") menu_item3 = self.listMenu.addAction("Copy...") menu_item1.triggered.connect(self.menuItemClicked_1) menu_item2.triggered.connect(self.menuItemClicked_2) menu_item3.triggered.connect(self.menuItemClicked_3) #self.connect(menu_item1, QtCore.SIGNAL("triggered()"), self.menuItemClicked_1) #self.connect(menu_item2, QtCore.SIGNAL("triggered()"), self.menuItemClicked_2) #self.connect(menu_item3, QtCore.SIGNAL("triggered()"), self.menuItemClicked_3) # we have to create a QWidget to put the console vbox into vbox_widget because # self.setLayout(vbox) # is not supported in a QDockWidget def on_execute_and_clear_python_button(self): self.parent._on_execute_python_button(clear=True) def on_execute_python_button(self): self.parent._on_execute_python_button(clear=False) def listItemRightClicked(self, QPos): """ TDOO: not done... """ return parentPosition = self.mapToGlobal(QtCore.QPoint(0, 0)) self.listMenu.move(parentPosition + QPos) self.listMenu.show() def menuItemClicked_1(self): print(1) def menuItemClicked_2(self): print(2) def menuItemClicked_3(self): print(3)