Source code for AlphaHooks.windows.config

from PyQt5 import Qsci
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import QObject, QEvent
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QComboBox, QWidget, QSizePolicy, QPushButton

from AlphaHooks.windows.settings.config import SettingsDialog


[docs]class MainInterface(QObject): def __init__(self, main_window, config): super(MainInterface, self).__init__(main_window) self.config = config # Main Window main_window.setObjectName("main_window") main_window.resize(800, 600) size_policy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred ) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(0) size_policy.setHeightForWidth(main_window.sizePolicy().hasHeightForWidth()) main_window.setSizePolicy(size_policy) main_window.setTabShape(QtWidgets.QTabWidget.Rounded) # Central Widget self.central_widget = QtWidgets.QWidget(main_window) self.central_widget.setObjectName("central_widget") self.central_layout = QtWidgets.QVBoxLayout(self.central_widget) self.central_layout.setObjectName("verticalLayout") # Main Splitter self.main_splitter = QtWidgets.QSplitter(self.central_widget) self.main_splitter.setOrientation(QtCore.Qt.Horizontal) self.main_splitter.setObjectName("main_splitter") # Library Browser self.library_browser = QtWidgets.QTreeWidget(self.main_splitter) self.library_browser.setObjectName("library_browser") # Main Tab Widget self.main_tab_widget = QtWidgets.QTabWidget(self.main_splitter) self.main_tab_widget.setTabPosition(QtWidgets.QTabWidget.North) self.main_tab_widget.setTabShape(QtWidgets.QTabWidget.Rounded) self.main_tab_widget.setElideMode(QtCore.Qt.ElideNone) self.main_tab_widget.setDocumentMode(False) self.main_tab_widget.setTabsClosable(False) self.main_tab_widget.setMovable(True) self.main_tab_widget.setTabBarAutoHide(False) self.main_tab_widget.setObjectName("main_tab_widget") # Code Tab self.code_tab = QtWidgets.QWidget() self.code_tab.setObjectName("code_tab") self.code_tab_layout = QtWidgets.QHBoxLayout(self.code_tab) self.code_tab_layout.setObjectName("horizontalLayout_2") self.code_layout = QtWidgets.QVBoxLayout() self.code_layout.setObjectName("code_layout") self.code_editor = Qsci.QsciScintilla(self.code_tab) self.code_editor.setToolTip("") self.code_editor.setWhatsThis("") self.code_editor.setObjectName("code_editor") self.code_layout.addWidget(self.code_editor) self.code_tab_layout.addLayout(self.code_layout) self.main_tab_widget.addTab(self.code_tab, "") # Console Tab self.console_tab = QtWidgets.QWidget() self.console_tab.setObjectName("console_tab") self.console_tab_layout = QtWidgets.QHBoxLayout(self.console_tab) self.console_tab_layout.setObjectName("horizontalLayout_3") # Console Log self.console_layout = QtWidgets.QVBoxLayout() self.console_layout.setObjectName("console_layout") self.console_log = QtWidgets.QPlainTextEdit(self.console_tab) self.console_log.setReadOnly(True) self.console_log.setObjectName("console_log") self.console_layout.addWidget(self.console_log) # Console Prompt self.prompt_layout = QtWidgets.QHBoxLayout() self.prompt_layout.setObjectName("prompt_layout") self.console_prompt = QtWidgets.QLabel(self.console_tab) self.console_prompt.setText("") self.console_prompt.setObjectName("console_prompt") self.prompt_layout.addWidget(self.console_prompt) # Console Input self.console_input = QtWidgets.QLineEdit(self.console_tab) self.console_input.setFrame(True) self.console_input.setObjectName("console_input") self.prompt_layout.addWidget(self.console_input) self.console_layout.addLayout(self.prompt_layout) self.console_tab_layout.addLayout(self.console_layout) self.main_tab_widget.addTab(self.console_tab, "") self.central_layout.addWidget(self.main_splitter) # Set Central and Index self.main_tab_widget.setCurrentIndex(1) main_window.setCentralWidget(self.central_widget) # Menu Bar self.menu_bar = QtWidgets.QMenuBar(main_window) self.menu_bar.setGeometry(QtCore.QRect(0, 0, 800, 25)) self.menu_bar.setObjectName("menu_bar") main_window.setMenuBar(self.menu_bar) # Menu Bar -> File self.file_menu = self.menu_bar.addMenu('File') # Menu Bar -> File -> Settings self.settings_dialog = SettingsDialog(config) self.settings_action = QtWidgets.QAction('Settings...') self.settings_action.setShortcut('Ctrl+Alt+S') self.file_menu.addAction(self.settings_action) self.settings_action.triggered.connect(self.settings_dialog.show) # Tool Bar self.tool_bar = main_window.addToolBar('Main Tool Bar') self.tool_bar.setMaximumHeight( self.tool_bar.height() / 1.10 ) # Tool Bar Spacer self.tool_bar_spacer = QWidget() self.tool_bar_spacer.setSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) self.tool_bar_spacer.setVisible(True) self.tool_bar.addWidget(self.tool_bar_spacer) # Tool Bar -> Interpreter self.interpreter_combo = QComboBox() self.interpreter_combo.setSizePolicy( QSizePolicy.Preferred, QSizePolicy.Expanding ) self.interpreter_combo.addItems(self.config["Languages"]) self.tool_bar.addWidget(self.interpreter_combo) # Tool Bar -> Run self.interpreter_run = QPushButton() self.interpreter_run.setSizePolicy( QSizePolicy.Preferred, QSizePolicy.Expanding ) self.interpreter_run.setIcon(QIcon(":/icons/interpreter_run")) self.interpreter_run.setFlat(True) self.interpreter_run.installEventFilter(self) self.tool_bar.addWidget(self.interpreter_run) # Status Bar self.status_bar = QtWidgets.QStatusBar(main_window) self.status_bar.setObjectName("status_bar") main_window.setStatusBar(self.status_bar) self.re_translate_ui(main_window) QtCore.QMetaObject.connectSlotsByName(main_window)
[docs] def eventFilter(self, source, event): # Hover Effect hover_items = [ self.interpreter_run ] if source in hover_items: if event.type() == QEvent.HoverEnter: source.setFlat(False) if event.type() == QEvent.HoverLeave: source.setFlat(True) return False return False
[docs] def re_translate_ui(self, main_window): _translate = QtCore.QCoreApplication.translate main_window.setWindowTitle(_translate("main_window", "AlphaHooks")) self.library_browser.headerItem().setText( 0, _translate( "main_window", "Library Browser" ) ) self.main_tab_widget.setTabText( self.main_tab_widget.indexOf(self.code_tab), _translate("main_window", "Code") ) self.main_tab_widget.setTabText( self.main_tab_widget.indexOf(self.console_tab), _translate("main_window", "Console") )