def refresh_gui(self): # populate account info self.set_profile_pic_from_cache() self.set_account_info_from_cache() # populate sync section parent_dir = osp.split(self.mdbx.dropbox_path)[0] relative_path = self.rel_path(parent_dir) folder_icon = get_native_item_icon(parent_dir) self.comboBoxDropboxPath.clear() self.comboBoxDropboxPath.addItem(folder_icon, relative_path) self.comboBoxDropboxPath.insertSeparator(1) self.comboBoxDropboxPath.addItem(QtGui.QIcon(), "Other...") # populate app section self.checkBoxStartup.setChecked(self.autostart.enabled) self.checkBoxNotifications.setChecked(self.mdbx.get_conf("app", "notifications")) self.checkBoxAnalytics.setChecked(self.mdbx.get_conf("app", "analytics")) update_interval = self.mdbx.get_conf("app", "update_notification_interval") closest_key = min( self._update_interval_mapping, key=lambda x: abs(self._update_interval_mapping[x] - update_interval) ) self.comboBoxUpdateInterval.setCurrentIndex(closest_key) # populate about section year = time.localtime().tm_year self.labelVersion.setText(self.labelVersion.text().format(__version__)) self.labelUrl.setText(self.labelUrl.text().format(__url__)) self.labelCopyright.setText(self.labelCopyright.text().format(year, __author__))
def on_new_dbx_folder(self, new_location): self.comboBoxDropboxPath.setCurrentIndex(0) if not new_location == '': self.comboBoxDropboxPath.setItemText(0, self.rel_path(new_location)) self.comboBoxDropboxPath.setItemIcon( 0, get_native_item_icon(new_location)) self.dropbox_location = new_location
def on_new_dbx_folder(self, new_location): self.comboBoxDropboxPath.setCurrentIndex(0) if not new_location == '': self.comboBoxDropboxPath.setItemText(0, self.rel_path(new_location)) self.comboBoxDropboxPath.setItemIcon(0, get_native_item_icon(new_location)) new_path = osp.join(new_location, CONF.get("main", "default_dir_name")) self.mdbx.move_dropbox_directory(new_path)
def update_dark_mode(self): # update style sheet with new colors line_rgb = LINE_COLOR_DARK if isDarkWindow() else LINE_COLOR_LIGHT bg_color = self.palette().color(QtGui.QPalette.Base) bg_color_rgb = [bg_color.red(), bg_color.green(), bg_color.blue()] self.frame.setStyleSheet(""" .QFrame {{ border: 1px solid rgb({0},{1},{2}); background-color: rgb({3},{4},{5}); border-radius: 7px; }}""".format(*line_rgb, *bg_color_rgb)) # update item icons (the system may supply different icons in dark mode) icon = get_native_item_icon(self.sync_err["local_path"]) pixmap = icon_to_pixmap(icon, self.iconLabel.width(), self.iconLabel.height()) self.iconLabel.setPixmap(pixmap)
def setup_combobox(self): parent_dir = osp.split(self.mdbx.sync.dropbox_path)[0] relative_path = self.rel_path(parent_dir) folder_icon = get_native_item_icon(parent_dir) self.comboBoxDropboxPath.addItem(folder_icon, relative_path) self.comboBoxDropboxPath.insertSeparator(1) self.comboBoxDropboxPath.addItem(QtGui.QIcon(), "Other...") self.comboBoxDropboxPath.currentIndexChanged.connect(self.on_combobox) msg = ('Choose a location for your Dropbox. A folder named "{0}" will be ' + 'created inside the folder you select.'.format( CONF.get("main", "default_dir_name"))) self.dropbox_folder_dialog = QtWidgets.QFileDialog(self, caption=msg) self.dropbox_folder_dialog.setModal(True) self.dropbox_folder_dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptOpen) self.dropbox_folder_dialog.setFileMode(QtWidgets.QFileDialog.Directory) self.dropbox_folder_dialog.setOption(QtWidgets.QFileDialog.ShowDirsOnly, True) self.dropbox_folder_dialog.fileSelected.connect(self.on_new_dbx_folder) self.dropbox_folder_dialog.rejected.connect( lambda: self.comboBoxDropboxPath.setCurrentIndex(0))
def __init__(self, pending_link=True, parent=None): super(self.__class__, self).__init__(parent=parent) # load user interface layout from .ui file uic.loadUi(SETUP_DIALOG_PATH, self) self.app_icon = QtGui.QIcon(APP_ICON_PATH) self.labelIcon_0.setPixmap(icon_to_pixmap(self.app_icon, 170)) self.labelIcon_1.setPixmap(icon_to_pixmap(self.app_icon, 70)) self.labelIcon_2.setPixmap(icon_to_pixmap(self.app_icon, 70)) self.labelIcon_3.setPixmap(icon_to_pixmap(self.app_icon, 100)) self.mdbx = None self.folder_items = [] # resize dialog buttons width = self.pushButtonAuthPageCancel.width() * 1.1 for b in (self.pushButtonAuthPageLink, self.pussButtonDropboxPathUnlink, self.pussButtonDropboxPathSelect, self.pushButtonFolderSelectionBack, self.pushButtonFolderSelectionSelect, self.pushButtonAuthPageCancel, self.pussButtonDropboxPathCalcel, self.pushButtonClose): b.setMinimumWidth(width) b.setMaximumWidth(width) # set up combobox self.dropbox_location = osp.dirname(CONF.get( "main", "path")) or get_home_dir() relative_path = self.rel_path(self.dropbox_location) folder_icon = get_native_item_icon(self.dropbox_location) self.comboBoxDropboxPath.addItem(folder_icon, relative_path) self.comboBoxDropboxPath.insertSeparator(1) self.comboBoxDropboxPath.addItem(QtGui.QIcon(), "Other...") self.comboBoxDropboxPath.currentIndexChanged.connect(self.on_combobox) self.dropbox_folder_dialog = QtWidgets.QFileDialog(self) self.dropbox_folder_dialog.setAcceptMode( QtWidgets.QFileDialog.AcceptOpen) self.dropbox_folder_dialog.setFileMode(QtWidgets.QFileDialog.Directory) self.dropbox_folder_dialog.setOption( QtWidgets.QFileDialog.ShowDirsOnly, True) self.dropbox_folder_dialog.fileSelected.connect(self.on_new_dbx_folder) self.dropbox_folder_dialog.rejected.connect( lambda: self.comboBoxDropboxPath.setCurrentIndex(0)) # connect buttons to callbacks self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.pushButtonLink.clicked.connect(self.on_link) self.pushButtonAuthPageCancel.clicked.connect(self.abort) self.pushButtonAuthPageLink.clicked.connect(self.on_auth_clicked) self.pussButtonDropboxPathCalcel.clicked.connect(self.abort) self.pussButtonDropboxPathSelect.clicked.connect( self.on_dropbox_location_selected) self.pussButtonDropboxPathUnlink.clicked.connect( self.unlink_and_go_to_start) self.pushButtonFolderSelectionBack.clicked.connect( self.stackedWidget.slideInPrev) self.pushButtonFolderSelectionSelect.clicked.connect( self.on_folders_selected) self.pushButtonClose.clicked.connect(self.accept) self.listWidgetFolders.itemChanged.connect( self.update_select_all_checkbox) self.selectAllCheckBox.clicked.connect(self.on_select_all_clicked) self.labelDropboxPath.setText(self.labelDropboxPath.text().format( CONF.get("main", "default_dir_name"))) # check if we are already authenticated, skip authentication if yes if not pending_link: self.labelDropboxPath.setText(""" <html><head/><body> <p align="left"> Your Dropbox folder has been moved or deleted from its original location. Maestral will not work properly until you move it back. It used to be located at: </p><p align="left">{0}</p> <p align="left"> To move it back, click "Quit" below, move the Dropbox folder back to its original location, and launch Maestral again. </p> <p align="left"> To re-download your Dropbox, please select a location for your Dropbox folder below. Maestral will create a new folder named "{1}" in the selected location.</p> <p align="left"> To unlink your Dropbox account from Maestral, click "Unlink" below.</p> </body></html> """.format(CONF.get("main", "path"), CONF.get("main", "default_dir_name"))) self.pussButtonDropboxPathCalcel.setText("Quit") self.stackedWidget.setCurrentIndex(2) self.stackedWidgetButtons.setCurrentIndex(2) self.mdbx = Maestral(run=False) self.mdbx.client.get_account_info() else: self.stackedWidget.setCurrentIndex(0) self.stackedWidgetButtons.setCurrentIndex(0)