def brushChanged(self): style = Qt.BrushStyle(self.brushStyleComboBox.itemData( self.brushStyleComboBox.currentIndex(), IdRole)) if style == Qt.LinearGradientPattern: linearGradient = QLinearGradient(0, 0, 100, 100) linearGradient.setColorAt(0.0, Qt.white) linearGradient.setColorAt(0.2, Qt.green) linearGradient.setColorAt(1.0, Qt.black) self.renderArea.setBrush(QBrush(linearGradient)) elif style == Qt.RadialGradientPattern: radialGradient = QRadialGradient(50, 50, 50, 70, 70) radialGradient.setColorAt(0.0, Qt.white) radialGradient.setColorAt(0.2, Qt.green) radialGradient.setColorAt(1.0, Qt.black) self.renderArea.setBrush(QBrush(radialGradient)) elif style == Qt.ConicalGradientPattern: conicalGradient = QConicalGradient(50, 50, 150) conicalGradient.setColorAt(0.0, Qt.white) conicalGradient.setColorAt(0.2, Qt.green) conicalGradient.setColorAt(1.0, Qt.black) self.renderArea.setBrush(QBrush(conicalGradient)) elif style == Qt.TexturePattern: self.renderArea.setBrush(QBrush(QPixmap(':/images/brick.png'))) else: self.renderArea.setBrush(QBrush(Qt.green, style))
def __init__(self, widget): QMainWindow.__init__(self) self.setWindowTitle("Login to Backend Discord GUI") grad = QPalette() gradient = QConicalGradient(QPointF(400, -10), 200) gradient.setColorAt(0.0, QColor(30, 30, 30)) gradient.setColorAt(0.5, QColor(50, 50, 50)) gradient.setColorAt(0.95, QColor(50, 13, 150)) gradient.setColorAt(1.0, QColor(106, 13, 173)) gradient.setSpread(QGradient.RepeatSpread) grad.setBrush(QPalette.Window, QBrush(gradient)) self.setPalette(grad) # Status Bar self.statusbar = self.statusBar() self.statusbar.showMessage("Looking for data...") self.searchData() frameGm = self.frameGeometry() screen = QApplication.desktop().screenNumber( QApplication.desktop().cursor().pos()) centerPoint = QApplication.desktop().screenGeometry(screen).center() frameGm.moveCenter(centerPoint) self.move(frameGm.topLeft()) self.setCentralWidget(widget)
def rebuildDataBrushIfNeeded(self): if self.rebuildBrush: self.rebuildBrush = False dataBrush = QConicalGradient() dataBrush.setCenter(0.5, 0.5) dataBrush.setCoordinateMode(QGradient.StretchToDeviceMode) for pos, color in self.gradientData: dataBrush.setColorAt(1.0 - pos, color) # angle dataBrush.setAngle(self.nullPosition) p = self.palette() p.setBrush(QPalette.Highlight, dataBrush) self.setPalette(p)
def brushChanged(self): style = Qt.BrushStyle( self.brushStyleComboBox.itemData( self.brushStyleComboBox.currentIndex(), IdRole)) if style == Qt.LinearGradientPattern: linearGradient = QLinearGradient(0, 0, 100, 100) linearGradient.setColorAt(0.0, Qt.white) linearGradient.setColorAt(0.2, Qt.green) linearGradient.setColorAt(1.0, Qt.black) self.renderArea.setBrush(QBrush(linearGradient)) elif style == Qt.RadialGradientPattern: radialGradient = QRadialGradient(50, 50, 50, 70, 70) radialGradient.setColorAt(0.0, Qt.white) radialGradient.setColorAt(0.2, Qt.green) radialGradient.setColorAt(1.0, Qt.black) self.renderArea.setBrush(QBrush(radialGradient)) elif style == Qt.ConicalGradientPattern: conicalGradient = QConicalGradient(50, 50, 150) conicalGradient.setColorAt(0.0, Qt.white) conicalGradient.setColorAt(0.2, Qt.green) conicalGradient.setColorAt(1.0, Qt.black) self.renderArea.setBrush(QBrush(conicalGradient)) elif style == Qt.TexturePattern: self.renderArea.setBrush(QBrush(QPixmap(':/images/brick.png'))) else: self.renderArea.setBrush(QBrush(Qt.green, style))
def createRightSide(self): self.topRightGroupBox = QGroupBox() self.totalLength = 0 self.elems = 0 self.elems_list = [] self.overall_layout = QVBoxLayout() grad = QPalette() gradient = QConicalGradient(QPointF(1100, 150), -190) gradient.setColorAt(0.0, QColor(30, 30, 30)) gradient.setColorAt(0.5, QColor(50, 50, 50)) gradient.setColorAt(0.97, QColor(50, 13, 150)) gradient.setColorAt(1.0, QColor(106, 13, 173)) gradient.setSpread(QGradient.RepeatSpread) grad.setBrush(QPalette.Window, QBrush(gradient)) self.setPalette(grad) self.scrollarea = QScrollArea() self.scrollarea.setWidgetResizable(True) self.widget = QWidget() self.scrollarea.setWidget(self.widget) self.layout = QVBoxLayout(self.widget) self.add_elem = QPushButton("Add Element") if PLATFORM == "darwin": self.add_elem.setToolTip("Shortcut: ⌘E") else: self.add_elem.setToolTip("Shortcut: Ctrl+E") self.add_elem.setStyleSheet( "QToolTip { border: 0px; border-radius: 3px }") self.add_elem.clicked.connect(lambda: ElementPopup()) self.add_elem.setFixedWidth(300) shortcut = QShortcut(QKeySequence("Ctrl+E"), self.add_elem) shortcut.activated.connect(lambda: ElementPopup()) shortcut.setEnabled(True) self.layout.addWidget(self.add_elem) self.layout.setAlignment(self.add_elem, Qt.AlignCenter | Qt.AlignTop) self.overall_layout.addWidget(self.scrollarea) self.topRightGroupBox.setLayout(self.overall_layout)
def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(painter.Antialiasing) #painter.setBrush(QBrush(Qt.black, Qt.NoBrush)) #painter.drawRect(self.winBox) # border # value selector indicator painter.setBrush(QBrush(Qt.black, Qt.SolidPattern)) painter.drawPie(self.vIdBox, 16 * (degrees(self.vIdAng) - 22.5), 720) # value selector arc painter.setClipPath(self.vArcPath) painter.setPen(Qt.NoPen) arc = QConicalGradient(self.cen, self.e_ang) color = QColor() color.setHsv(self.hue, self.sat, 255) arc.setColorAt(1 - (self.e_ang - self.s_ang) / 360.0, color) arc.setColorAt(1, Qt.black) arc.setColorAt(0, Qt.black) painter.setBrush(arc) painter.drawPath(self.vArcPath) painter.setClipPath(self.vArcPath, Qt.NoClip) # color wheel painter.setPen(Qt.NoPen) painter.setBrush(self.cWhlBrush1) painter.drawEllipse(self.cWhBox) painter.setBrush(self.cWhlBrush2) painter.drawEllipse(self.cWhBox) # crosshairs painter.setClipPath(self.colWhlPath) painter.setBrush(QBrush(Qt.black, Qt.SolidPattern)) chVert = QRectF(0, 0, 2, 20) chHort = QRectF(0, 0, 20, 2) chVert.moveCenter(self.chPt) chHort.moveCenter(self.chPt) painter.drawRect(chVert) painter.drawRect(chHort) # named color locations if self._showNames: painter.setClipPath(self.vArcPath, Qt.NoClip) painter.setPen(Qt.SolidLine) try: painter.drawPoints(*self._namedColorPts) # PyQt except: painter.drawPoints(self._namedColorPts) # PySide
def setup(self): "sets bounds on value arc and color wheel" # bounding boxes self.winBox = QRectF(self.rect()) self.vIoBox = QRectF() # value indicator arc outer self.vIdBox = QRectF() # value indicator box self.vAoBox = QRectF() # value arc outer self.vAiBox = QRectF() # value arc inner self.cWhBox = QRectF() # color wheel self.vIdBox.setSize(QSizeF(15, 15)) self.vIoBox.setSize(self.winBox.size()) self.vAoBox.setSize(self.winBox.size() - self.vIdBox.size() / 2.0) self.vAiBox.setSize(self.vAoBox.size() - QSizeF(20, 20)) self.cWhBox.setSize(self.vAiBox.size() - QSizeF(20, 20)) # center - shifted to the right slightly x = self.winBox.width() - (self.vIdBox.width() + self.vAiBox.width()) / 2.0 self.cen = QPointF(x, self.winBox.height() / 2.0) # positions and initial settings self.vAoBox.moveCenter(self.cen) self.vAiBox.moveCenter(self.cen) self.cWhBox.moveCenter(self.cen) self.vIdBox.moveCenter(self.vIdCen) self.cW_rad = self.cWhBox.width() / 2.0 self.ang_w = radians(self.s_ang) - radians(self.e_ang) # gradients colWhl = QConicalGradient(self.cen, self.o_ang) whl_cols = [ Qt.red, Qt.magenta, Qt.blue, Qt.cyan, Qt.green, Qt.yellow, Qt.red ] for i, c in enumerate(whl_cols[::self.rot_d]): colWhl.setColorAt(i / 6.0, c) rad = min(self.cWhBox.width() / 2.0, self.cWhBox.height() / 2.0) cWhlFade = QRadialGradient(self.cen, rad, self.cen) cWhlFade.setColorAt(0, Qt.white) cWhlFade.setColorAt(1, QColor(255, 255, 255, 0)) self.cWhlBrush1 = QBrush(colWhl) self.cWhlBrush2 = QBrush(cWhlFade) # painter paths (arcs, wheel) rad = self.vAoBox.width() / 2.0 x, y = rad * cos(radians(self.s_ang)), -rad * sin(radians(self.s_ang)) x += self.cen.x() y += self.cen.y() self.vArcPath = QPainterPath(QPointF(x, y)) # value arc (for color) self.vArcPath.arcTo(self.vAoBox, self.s_ang, self.e_ang - self.s_ang) self.vArcPath.arcTo(self.vAiBox, self.e_ang, self.s_ang - self.e_ang) self.vArcPath.closeSubpath() self.vInArcPath = QPainterPath(QPointF(x, y)) # value arc (for mouse) self.vInArcPath.arcTo(self.vIoBox, self.s_ang, self.e_ang - self.s_ang) self.vInArcPath.arcTo(self.vAiBox, self.e_ang, self.s_ang - self.e_ang) self.vInArcPath.closeSubpath() self.colWhlPath = QPainterPath() self.colWhlPath.addEllipse(self.cWhBox)
def __init__(self, widget): QMainWindow.__init__(self) self.setWindowTitle("Backend Discord GUI") grad = QPalette() gradient = QConicalGradient(QPointF(700, -10), 195) gradient.setColorAt(0.0, QColor(30, 30, 30)) gradient.setColorAt(0.5, QColor(50, 50, 50)) gradient.setColorAt(0.97, QColor(50, 13, 150)) gradient.setColorAt(1.0, QColor(106, 13, 173)) gradient.setSpread(QGradient.RepeatSpread) grad.setBrush(QPalette.Window, QBrush(gradient)) self.setPalette(grad) # Status Bar self.statusbar = self.statusBar() self.statusbar.showMessage("Preparing Window...") qtRectangle = self.frameGeometry() centerPoint = QDesktopWidget().availableGeometry().center() qtRectangle.moveCenter(centerPoint) self.move(qtRectangle.topLeft()) # Menu self.menu = self.menuBar() file_menu = self.menu.addMenu("File") new_bot_proj = QAction("New Bot Project", self) new_bot_proj.setShortcut("Ctrl+P") new_bot_proj.setStatusTip('Create a new Bot') new_bot_proj.triggered.connect(self.do_nothing) new_bot_file = QAction("New Bot File", self) new_bot_file.setShortcut("Ctrl+N") new_bot_file.setStatusTip('Create a new Command file') new_bot_file.triggered.connect(self.do_nothing) new_int_play = QAction("New Interactive Playground", self) new_int_play.setStatusTip('Create a Test App') new_int_play.triggered.connect(self.do_nothing) open_bot_proj = QAction("Open Bot Project", self) open_bot_proj.setShortcut("Ctrl+O") open_bot_proj.setStatusTip('Open a Bot Project') open_bot_proj.triggered.connect(self.do_nothing) open_bot_file = QAction("Open Bot File", self) open_bot_file.setStatusTip('Open a Command file') open_bot_file.triggered.connect(self.do_nothing) open_bot_iplay = QAction("Open Interactive Playground", self) open_bot_iplay.setStatusTip('Open a Test App') open_bot_iplay.triggered.connect(self.do_nothing) add_bot_file = QAction("Add Bot File", self) add_bot_file.setStatusTip('Add existing Command file') add_bot_file.triggered.connect(self.do_nothing) save_bot_proj = QAction("Save Bot Project", self) save_bot_proj.setStatusTip('Save a Bot Project') save_bot_proj.triggered.connect(self.do_nothing) save_bot_file = QAction("Save Bot File", self) save_bot_file.setStatusTip('Save a Command file') save_bot_file.triggered.connect(self.do_nothing) save_all = QAction("Save All", self) save_all.setShortcut("Ctrl+S") save_all.triggered.connect(self.do_nothing) close_editor = QAction("Close Editor", self) close_editor.setStatusTip('Close the editor only') close_editor.triggered.connect(self.do_nothing) close_workspace = QAction("Close Workspace", self) close_workspace.setShortcut("Ctrl+Q") close_workspace.setStatusTip('Close everything') close_workspace.triggered.connect(self.do_nothing) file_menu.addAction(new_bot_proj) file_menu.addAction(new_bot_file) file_menu.addAction(new_int_play) file_menu.addSeparator() file_menu.addAction(open_bot_proj) file_menu.addAction(open_bot_file) file_menu.addAction(open_bot_iplay) file_menu.addAction(add_bot_file) file_menu.addSeparator() file_menu.addAction(save_bot_proj) file_menu.addAction(save_bot_file) file_menu.addAction(save_all) file_menu.addSeparator() file_menu.addAction(close_editor) file_menu.addAction(close_workspace) edit_menu = self.menu.addMenu("Edit") find_file = QAction("Find File", self) find_file.setShortcut("Ctrl+F") find_file.setStatusTip("Find a Command") find_file.triggered.connect(self.do_nothing) file_settings = QAction("Open Find Settings", self) file_settings.setShortcut("Ctrl+Shift+S") file_settings.setStatusTip("Find a Command") file_settings.triggered.connect(self.do_nothing) toggle_file = QAction("Toggle File", self, checkable=True) toggle_file.setStatusTip("Toggles a Command file to be used") toggle_file.setChecked(True) toggle_file.triggered.connect(self.do_nothing) delete_file = QAction("Delete File", self) delete_file.setShortcut("Ctrl+Backspace") delete_file.setStatusTip("Delete a Command file") delete_file.triggered.connect(self.do_nothing) remove_file = QAction("Remove File", self) remove_file.setStatusTip("Removes a Command file from workspace") remove_file.triggered.connect(self.do_nothing) edit_menu.addAction(find_file) edit_menu.addAction(file_settings) edit_menu.addAction(toggle_file) edit_menu.addSeparator() edit_menu.addAction(delete_file) edit_menu.addAction(remove_file) viewMenu = self.menu.addMenu('View') command_palette = QAction("Command Palette", self) command_palette.setShortcut("Ctrl+Shift+P") command_palette.setStatusTip("Delete a Command file") command_palette.triggered.connect(self.do_nothing) open_view = QAction("Open View", self) open_view.setStatusTip("Delete a Command file") open_view.triggered.connect(self.do_nothing) appearance_settings = QAction("Appearance Settings", self) appearance_settings.setStatusTip("Delete a Command file") appearance_settings.triggered.connect(self.do_nothing) output_console = QAction("Output Console", self) output_console.setStatusTip("Delete a Command file") output_console.triggered.connect(self.do_nothing) debug_console = QAction("Debug Console", self) debug_console.setStatusTip("Delete a Command file") debug_console.triggered.connect(self.do_nothing) error_log = QAction("Error Log", self) error_log.setStatusTip("Delete a Command file") error_log.triggered.connect(self.do_nothing) view_logs = QAction("View All Logs", self) view_logs.setStatusTip("Delete a Command file") view_logs.triggered.connect(self.do_nothing) viewStatAct = QAction('View statusbar', self, checkable=True) viewStatAct.setStatusTip('View statusbar') viewStatAct.setChecked(True) viewStatAct.triggered.connect(self.toggleMenu) viewMenu.addAction(command_palette) viewMenu.addAction(open_view) viewMenu.addSeparator() viewMenu.addAction(appearance_settings) viewMenu.addSeparator() viewMenu.addAction(output_console) viewMenu.addAction(debug_console) viewMenu.addAction(error_log) viewMenu.addAction(view_logs) viewMenu.addSeparator() viewMenu.addAction(viewStatAct) runMenu = self.menu.addMenu('Run') start = QAction("Start", self) start.setShortcut("Ctrl+R") start.setStatusTip("Begin to start Command") start.triggered.connect(self.do_nothing) stop = QAction("Stop", self) stop.setShortcut("Ctrl+T") stop.setStatusTip("Terminate the Command") stop.triggered.connect(self.do_nothing) test_file = QAction("Test File", self) test_file.setStatusTip("Test the Command open on test server") test_file.triggered.connect(self.do_nothing) test_server = QAction("Test Server Connect", self) test_server.setShortcut("Ctrl+Shift+R") test_server.setStatusTip("Test server connection") test_server.triggered.connect(self.do_nothing) test_ping = QAction("Test Activity Ping", self) test_ping.setStatusTip("Test Bot API connection") test_ping.triggered.connect(self.do_nothing) test_commands = QAction("Test Ping Commands", self) test_commands.setStatusTip("Test all commands received") test_commands.triggered.connect(self.do_nothing) open_test_logs = QAction("View Test Logs", self) open_test_logs.setStatusTip("Open the logs for testing") open_test_logs.triggered.connect(self.do_nothing) runMenu.addAction(start) runMenu.addAction(stop) runMenu.addSeparator() runMenu.addAction(test_file) runMenu.addAction(test_server) runMenu.addAction(test_ping) runMenu.addAction(test_commands) runMenu.addAction(open_test_logs) terminalMenu = self.menu.addMenu('Terminal') start_bot = QAction("Start Bot", self) start_bot.setStatusTip("Begin to start Bot") start_bot.triggered.connect(self.do_nothing) stop_bot = QAction("Stop Bot", self) stop_bot.setStatusTip("Terminate the Bot") stop_bot.triggered.connect(self.do_nothing) terminal_logs = QAction("View Terminal Logs", self) terminal_logs.setStatusTip("Opens the Terminal logs") terminal_logs.triggered.connect(self.do_nothing) python_discord = QAction("Build Task as Python Discord", self) python_discord.setStatusTip( "Builds the Bot in Python Programming Language") python_discord.triggered.connect(self.do_nothing) javascript_discord = QAction("Build Task as Javascript Discord", self) javascript_discord.setStatusTip( "Builds the Bot in Javascript Programming Language") javascript_discord.triggered.connect(self.do_nothing) discordGUI_discord = QAction("Build Task as Discord-GUI", self) discordGUI_discord.setShortcut("Ctrl+Shift+W") discordGUI_discord.setStatusTip( "Builds the Bot in Discord-GUI Readable Language") discordGUI_discord.triggered.connect(self.do_nothing) build_errors = QAction("View Build Errors", self) build_errors.setStatusTip("Opens the Build Error Log") build_errors.triggered.connect(self.do_nothing) terminalMenu.addAction(start_bot) terminalMenu.addAction(stop_bot) terminalMenu.addSeparator() terminalMenu.addAction(terminal_logs) terminalMenu.addSeparator() terminalMenu.addAction(python_discord) terminalMenu.addAction(javascript_discord) terminalMenu.addAction(discordGUI_discord) terminalMenu.addAction(build_errors) windowMenu = self.menu.addMenu('Window') hide = QAction("Hide", self) hide.setStatusTip("Hide the Window") hide.triggered.connect(self.do_nothing) minimise = QAction("Minimise", self) minimise.setStatusTip("Minimise the Window") minimise.triggered.connect(self.do_nothing) maximise = QAction("Maximise", self) maximise.setStatusTip("Maximise the Window") maximise.triggered.connect(self.do_nothing) settings = QAction("Discord-GUI Settings", self) settings.setShortcut("Ctrl+L") settings.setStatusTip("Opens Discord-GUI's Settings") settings.triggered.connect(self.do_nothing) directory = QAction("Open Discord-GUI Directory", self) directory.setStatusTip("Goto the Discord-GUI Directory") directory.triggered.connect(self.do_nothing) windowMenu.addAction(hide) windowMenu.addAction(minimise) windowMenu.addAction(maximise) windowMenu.addSeparator() windowMenu.addAction(settings) windowMenu.addAction(directory) helpMenu = self.menu.addMenu('Help') welcome = QAction("Welcome", self) welcome.setStatusTip("Displays Welcome Message") welcome.triggered.connect(self.do_nothing) int_play = QAction("Interactive Playground", self) int_play.setStatusTip("Displays Interactive Playground Help") int_play.triggered.connect(self.do_nothing) docs = QAction("Documentation", self) docs.setStatusTip("Redirects to the Documentation of the app") docs.triggered.connect(self.do_nothing) keys_shorts = QAction("Keyboard Shortcuts", self) keys_shorts.setStatusTip("Displays Keyboard Shortcuts") keys_shorts.triggered.connect(self.do_nothing) report_issue = QAction("Report Issue", self) report_issue.setStatusTip("Redirects to Reporting an Issue") report_issue.triggered.connect(self.do_nothing) more_help = QAction("More Help", self) more_help.setStatusTip("Redirects to More Help Page") more_help.triggered.connect(self.do_nothing) helpMenu.addAction(welcome) helpMenu.addAction(int_play) helpMenu.addAction(docs) helpMenu.addSeparator() helpMenu.addAction(keys_shorts) helpMenu.addAction(report_issue) helpMenu.addAction(more_help) self.setCentralWidget(widget)