def draw(self, polish=False): self.HeaderLayout = QHBoxLayout() self.HeaderLayout.setContentsMargins(1, 1, 1, 0) self.HeaderLayout.setSpacing(0) self.CentralLayout.addLayout(self.HeaderLayout) self.SettingsButton = \ QPushButton(QIcon(":resources/icons/settings.svg"), "") self.SettingsButton.setIconSize(QSize(20, 20)) self.SettingsButton.setFixedSize(36, 32) self.SettingsButton.setToolTip("Show settings window") self.WikiButton = \ QPushButton(QIcon(":resources/icons/wiki.svg"), "") self.WikiButton.setIconSize(QSize(20, 20)) self.WikiButton.setFixedSize(36, 32) self.WikiButton.setToolTip("Open documentation") self.MinimizeButton = \ QPushButton(QIcon(":resources/icons/minimize.svg"), "") self.MinimizeButton.setIconSize(QSize(20, 20)) self.MinimizeButton.setFixedSize(36, 32) self.CloseButton = \ QPushButton(QIcon(":resources/icons/close.svg"), "") self.CloseButton.setIconSize(QSize(20, 20)) self.CloseButton.setFixedSize(36, 32) self.HeaderLabel = QLabel("Blender Launcher") self.HeaderLabel.setAlignment(Qt.AlignCenter) self.HeaderLayout.addWidget(self.SettingsButton, 0, Qt.AlignLeft) self.HeaderLayout.addWidget(self.WikiButton, 0, Qt.AlignLeft) self.HeaderLayout.addWidget(self.HeaderLabel, 1) self.HeaderLayout.addWidget(self.MinimizeButton, 0, Qt.AlignRight) self.HeaderLayout.addWidget(self.CloseButton, 0, Qt.AlignRight) self.SettingsButton.setProperty("HeaderButton", True) self.WikiButton.setProperty("HeaderButton", True) self.MinimizeButton.setProperty("HeaderButton", True) self.CloseButton.setProperty("HeaderButton", True) self.CloseButton.setProperty("CloseButton", True) # Tab layout self.TabWidget = QTabWidget() self.CentralLayout.addWidget(self.TabWidget) self.LibraryTab = QWidget() self.LibraryTabLayout = QVBoxLayout() self.LibraryTabLayout.setContentsMargins(0, 0, 0, 0) self.LibraryTab.setLayout(self.LibraryTabLayout) self.TabWidget.addTab(self.LibraryTab, "Library") self.DownloadsTab = QWidget() self.DownloadsTabLayout = QVBoxLayout() self.DownloadsTabLayout.setContentsMargins(0, 0, 0, 0) self.DownloadsTab.setLayout(self.DownloadsTabLayout) self.TabWidget.addTab(self.DownloadsTab, "Downloads") self.LibraryToolBox = BaseToolBoxWidget(self) self.LibraryStableListWidget = \ self.LibraryToolBox.add_list_widget( "Stable Releases", "LibraryStableListWidget", "Nothing to show yet", "Commit Time", extended_selection=True) self.LibraryDailyListWidget = \ self.LibraryToolBox.add_list_widget( "Daily Builds", "LibraryDailyListWidget", "Nothing to show yet", "Commit Time", extended_selection=True) self.LibraryExperimentalListWidget = \ self.LibraryToolBox.add_list_widget( "Experimental Branches", "LibraryExperimentalListWidget", "Nothing to show yet", "Commit Time", extended_selection=True) self.LibraryCustomListWidget = \ self.LibraryToolBox.add_list_widget( "Custom Builds", "LibraryCustomListWidget", "Nothing to show yet", "Commit Time", show_reload=True, extended_selection=True) self.LibraryTab.layout().addWidget(self.LibraryToolBox) self.DownloadsToolBox = BaseToolBoxWidget(self) self.DownloadsStableListWidget = \ self.DownloadsToolBox.add_list_widget( "Stable Releases", "DownloadsStableListWidget", "No new builds available", "Upload Time", False) self.DownloadsDailyListWidget = \ self.DownloadsToolBox.add_list_widget( "Daily Builds", "DownloadsDailyListWidget", "No new builds available", "Upload Time",) self.DownloadsExperimentalListWidget = \ self.DownloadsToolBox.add_list_widget( "Experimental Branches", "DownloadsExperimentalListWidget", "No new builds available", "Upload Time",) self.DownloadsTab.layout().addWidget(self.DownloadsToolBox) self.LibraryToolBox.setCurrentIndex(get_default_library_page()) self.DownloadsToolBox.setCurrentIndex(get_default_downloads_page()) # Connect buttons self.SettingsButton.clicked.connect(self.show_settings_window) self.WikiButton.clicked.connect(lambda: webbrowser.open( "https://github.com/DotBow/Blender-Launcher/wiki")) self.MinimizeButton.clicked.connect(self.showMinimized) self.CloseButton.clicked.connect(self.close) self.StatusBar.setContentsMargins(0, 0, 0, 2) self.StatusBar.setFont(self.font) self.statusbarLabel = QLabel() self.statusbarLabel.setIndent(8) self.NewVersionButton = QPushButton() self.NewVersionButton.hide() self.NewVersionButton.clicked.connect(self.show_update_window) self.statusbarVersion = QLabel(self.app.applicationVersion()) self.statusbarVersion.setToolTip( "The version of Blender Laucnher that is currently run") self.StatusBar.addPermanentWidget(self.statusbarLabel, 1) self.StatusBar.addPermanentWidget(self.NewVersionButton) self.StatusBar.addPermanentWidget(self.statusbarVersion) # Draw library self.draw_library() # Setup tray icon context Menu quit_action = QAction("Quit", self) quit_action.triggered.connect(self.quit) hide_action = QAction("Hide", self) hide_action.triggered.connect(self.close) show_action = QAction("Show", self) show_action.triggered.connect(self._show) launch_favorite_action = QAction( QIcon(":resources/icons/favorite.svg"), "Blender", self) launch_favorite_action.triggered.connect(self.launch_favorite) tray_menu = QMenu() tray_menu.setFont(self.font) tray_menu.addAction(launch_favorite_action) tray_menu.addAction(show_action) tray_menu.addAction(hide_action) tray_menu.addAction(quit_action) # Setup tray icon self.tray_icon = QSystemTrayIcon(self) self.tray_icon.setIcon( QIcon(taskbar_icon_paths[get_taskbar_icon_color()])) self.tray_icon.setToolTip("Blender Launcher") self.tray_icon.activated.connect(self.tray_icon_activated) self.tray_icon.setContextMenu(tray_menu) self.tray_icon.messageClicked.connect(self._show) self.tray_icon.show() # Forse style update if polish is True: self.style().unpolish(self.app) self.style().polish(self.app) # Show window if get_launch_minimized_to_tray() is False: self._show()
def __init__(self, parent): super().__init__() self.setWindowFlag(Qt.SubWindow) self.parent = parent self.setupUi(self) self.setWindowTitle("Settings") self.HeaderLayout = QHBoxLayout() self.HeaderLayout.setContentsMargins(36, 1, 1, 0) self.HeaderLayout.setSpacing(0) self.CentralLayout.addLayout(self.HeaderLayout) self.CloseButton = \ QPushButton(QIcon(":resources/icons/close.svg"), "") self.CloseButton.setIconSize(QSize(20, 20)) self.CloseButton.setFixedSize(36, 32) self.CloseButton.setProperty("HeaderButton", True) self.CloseButton.setProperty("CloseButton", True) self.CloseButton.clicked.connect(self.close) self.HeaderLabel = QLabel("Settings") self.HeaderLabel.setAlignment(Qt.AlignCenter) self.HeaderLayout.addWidget(self.HeaderLabel, 1) self.HeaderLayout.addWidget(self.CloseButton, 0, Qt.AlignRight) # Library Folder self.LibraryFolderLineEdit = QLineEdit() self.LibraryFolderLineEdit.setText(str(get_library_folder())) self.LibraryFolderLineEdit.setContextMenuPolicy(Qt.NoContextMenu) self.LibraryFolderLineEdit.setReadOnly(True) self.LibraryFolderLineEdit.setCursorPosition(0) self.SetLibraryFolderButton = \ QPushButton(QIcon(":resources/icons/folder.svg"), "") self.SetLibraryFolderButton.clicked.connect(self.set_library_folder) self.ReloadLibraryFolderContentButton = QPushButton( "Reload Library Folder Content") self.ReloadLibraryFolderContentButton.clicked.connect( lambda: self.parent.draw_library(True)) self.LibraryFolderLayout = QHBoxLayout() self.LibraryFolderLayout.setContentsMargins(0, 0, 0, 0) self.LibraryFolderLayout.setSpacing(0) self.LibraryFolderLayout.addWidget(self.LibraryFolderLineEdit) self.LibraryFolderLayout.addWidget(self.SetLibraryFolderButton) # Launch When System Starts self.LaunchWhenSystemStartsCheckBox = QCheckBox( "Launch When System Starts") self.LaunchWhenSystemStartsCheckBox.setChecked( get_launch_when_system_starts()) self.LaunchWhenSystemStartsCheckBox.clicked.connect( self.toggle_launch_when_system_starts) # Launch Minimized To Tray self.LaunchMinimizedToTrayCheckBox = QCheckBox( "Launch Minimized To Tray") self.LaunchMinimizedToTrayCheckBox.setChecked( get_launch_minimized_to_tray()) self.LaunchMinimizedToTrayCheckBox.clicked.connect( self.toggle_launch_minimized_to_tray) # High Dpi Scaling self.EnableHighDpiScalingCheckBox = \ QCheckBox("Enable High DPI Scaling") self.EnableHighDpiScalingCheckBox.clicked.connect( self.toggle_enable_high_dpi_scaling) self.EnableHighDpiScalingCheckBox.setChecked( get_enable_high_dpi_scaling()) # Taskbar Icon Color self.TaskbarIconColorComboBox = QComboBox() self.TaskbarIconColorComboBox.addItems(taskbar_icon_colors.keys()) self.TaskbarIconColorComboBox.setCurrentIndex( get_taskbar_icon_color()) self.TaskbarIconColorComboBox.activated[str].connect( self.change_taskbar_icon_color) # Default Library Page self.DefaultLibraryPageComboBox = QComboBox() self.DefaultLibraryPageComboBox.addItems(library_pages.keys()) self.DefaultLibraryPageComboBox.setCurrentIndex( get_default_library_page()) self.DefaultLibraryPageComboBox.activated[str].connect( self.change_default_library_page) # Default Downloads Page self.DefaultDownloadsPageComboBox = QComboBox() self.DefaultDownloadsPageComboBox.addItems(downloads_pages.keys()) self.DefaultDownloadsPageComboBox.setCurrentIndex( get_default_downloads_page()) self.DefaultDownloadsPageComboBox.activated[str].connect( self.change_default_downloads_page) # Notifications self.EnableNewBuildsNotifications = QCheckBox( "When New Builds Are Available") self.EnableNewBuildsNotifications.clicked.connect( self.toggle_enable_new_builds_notifications) self.EnableNewBuildsNotifications.setChecked( get_enable_new_builds_notifications()) self.EnableDownloadNotifications = QCheckBox( "When Downloading Is Finished") self.EnableDownloadNotifications.clicked.connect( self.toggle_enable_download_notifications) self.EnableDownloadNotifications.setChecked( get_enable_download_notifications()) # Mark As Favorite self.MarkAsFavorite = QComboBox() self.MarkAsFavorite.addItems(favorite_pages.keys()) self.MarkAsFavorite.setCurrentIndex( get_mark_as_favorite()) self.MarkAsFavorite.activated[str].connect( self.change_mark_as_favorite) # Layout self.SettingsLayout = QFormLayout() self.SettingsLayout.setContentsMargins(6, 6, 6, 6) self.SettingsLayout.setSpacing(6) self.SettingsLayout.setRowWrapPolicy(QFormLayout.DontWrapRows) self.SettingsLayout.setFieldGrowthPolicy( QFormLayout.AllNonFixedFieldsGrow) self.SettingsLayout.setLabelAlignment(Qt.AlignLeft) self.CentralLayout.addLayout(self.SettingsLayout) self.SettingsLayout.addRow(QLabel("Library Folder:")) self.SettingsLayout.addRow(self.LibraryFolderLayout) self.SettingsLayout.addRow( self.ReloadLibraryFolderContentButton) self.SettingsLayout.addRow(QLabel("System:")) if get_platform() == 'Windows': self.SettingsLayout.addRow(self.LaunchWhenSystemStartsCheckBox) self.SettingsLayout.addRow(self.LaunchMinimizedToTrayCheckBox) self.SettingsLayout.addRow(self.EnableHighDpiScalingCheckBox) self.SettingsLayout.addRow(QLabel("Interface:")) self.SettingsLayout.addRow( "Taskbar Icon Color", self.TaskbarIconColorComboBox) self.SettingsLayout.addRow( "Default Library Page", self.DefaultLibraryPageComboBox) self.SettingsLayout.addRow( "Default Downloads Page", self.DefaultDownloadsPageComboBox) self.SettingsLayout.addRow(QLabel("Notifications:")) self.SettingsLayout.addRow(self.EnableNewBuildsNotifications) self.SettingsLayout.addRow(self.EnableDownloadNotifications) self.SettingsLayout.addRow(QLabel("Service:")) self.SettingsLayout.addRow( "Mark New Build As Favorite", self.MarkAsFavorite) self.resize(self.sizeHint()) self.show()