def __init__(self, parent, name='SettingsWidget'): BaseConfigWidget.__init__(self, parent, name=name) numrows = 2 numcols = 2 margin = 7 space = 10 self.grid = QGridLayout(self, numrows, numcols, margin, space, 'SettingsWidgetLayout') self.myconfig = self.app.myconfig for section in ['filemanagement', 'dosbox', 'externalactions', 'mainwindow']: self.localconfig.add_section(section) # filemanagement area self.filemanagement_groupbox = VerticalGroupBox(self, 'File Management') self.filemanagement_groupbox.setColumns(4) #self.grid.addWidget(self.filemanagement_groupbox, 0, 0) self.grid.addMultiCellWidget(self.filemanagement_groupbox, 0, 0, 0, 1) self.use_rdiff_backup_check = QCheckBox(self.filemanagement_groupbox) self.use_rdiff_backup_check.setText('Use rdiff-backup') self.use_rsync_check = QCheckBox(self.filemanagement_groupbox) self.use_rsync_check.setText('Use rsync') self.overwrite_extras_archives_check = QCheckBox(self.filemanagement_groupbox) self.overwrite_extras_archives_check.setText('Overwrite extras archives') self.archives_groupbox = VerticalGroupBox(self.filemanagement_groupbox, 'Archive Paths') self.archives_groupbox.setColumns(2) #self.grid.addWidget(self.archives_groupbox, 0, 1) self.installed_archives_entry = ConfigKURLSelectWidget(self.archives_groupbox, 'Path to the "install" archives', filetype='dir') self.extras_archives_entry = ConfigKURLSelectWidget(self.archives_groupbox, 'Path to the "extras" archives', filetype='dir') # dosbox area self.dosbox_groupbox = VerticalGroupBox(self, 'Dosbox Options') self.dosbox_groupbox.setColumns(3) #self.grid.addWidget(self.dosbox_groupbox, 1, 0) self.grid.addMultiCellWidget(self.dosbox_groupbox, 1, 1, 0, 1) self.main_dosbox_path_entry = ConfigKURLSelectWidget(self.dosbox_groupbox, 'Path to dosbox area', filetype='dir') self.dosbox_binary_entry = ConfigLineEditWidget(self.dosbox_groupbox, 'Dosbox executable') self.cdrive_is_main_check = QCheckBox(self.dosbox_groupbox) self.cdrive_is_main_check.setText('C: Drive is main dosbox path') # externalactions area self.externalactions_groupbox = VerticalGroupBox(self, 'External Actions') self.externalactions_groupbox.setColumns(2) self.grid.addWidget(self.externalactions_groupbox, 2, 0) self.launch_weblinks_entry = ConfigLineEditWidget(self.externalactions_groupbox, 'Command to handle weblink clicks') self.text_editor_entry = ConfigLineEditWidget(self.externalactions_groupbox, 'Text editor command') # mainwindow area self.mainwindow_groupbox = VerticalGroupBox(self, 'Main Window Options') self.mainwindow_groupbox.setColumns(3) self.grid.addWidget(self.mainwindow_groupbox, 2, 1) self.mainwindow_size_box = ConfigWinSizeWidget(self.mainwindow_groupbox, 'Size of main window') self.flat_tree_box = ConfigComboBoxWidget(self.mainwindow_groupbox, 'Game list style', ['flat', 'tree']) self.name_title_box = ConfigComboBoxWidget(self.mainwindow_groupbox, 'Game list entries', ['name', 'title'])
class SettingsWidget(BaseConfigWidget): def __init__(self, parent, name='SettingsWidget'): BaseConfigWidget.__init__(self, parent, name=name) numrows = 2 numcols = 2 margin = 7 space = 10 self.grid = QGridLayout(self, numrows, numcols, margin, space, 'SettingsWidgetLayout') self.myconfig = self.app.myconfig for section in ['filemanagement', 'dosbox', 'externalactions', 'mainwindow']: self.localconfig.add_section(section) # filemanagement area self.filemanagement_groupbox = VerticalGroupBox(self, 'File Management') self.filemanagement_groupbox.setColumns(4) #self.grid.addWidget(self.filemanagement_groupbox, 0, 0) self.grid.addMultiCellWidget(self.filemanagement_groupbox, 0, 0, 0, 1) self.use_rdiff_backup_check = QCheckBox(self.filemanagement_groupbox) self.use_rdiff_backup_check.setText('Use rdiff-backup') self.use_rsync_check = QCheckBox(self.filemanagement_groupbox) self.use_rsync_check.setText('Use rsync') self.overwrite_extras_archives_check = QCheckBox(self.filemanagement_groupbox) self.overwrite_extras_archives_check.setText('Overwrite extras archives') self.archives_groupbox = VerticalGroupBox(self.filemanagement_groupbox, 'Archive Paths') self.archives_groupbox.setColumns(2) #self.grid.addWidget(self.archives_groupbox, 0, 1) self.installed_archives_entry = ConfigKURLSelectWidget(self.archives_groupbox, 'Path to the "install" archives', filetype='dir') self.extras_archives_entry = ConfigKURLSelectWidget(self.archives_groupbox, 'Path to the "extras" archives', filetype='dir') # dosbox area self.dosbox_groupbox = VerticalGroupBox(self, 'Dosbox Options') self.dosbox_groupbox.setColumns(3) #self.grid.addWidget(self.dosbox_groupbox, 1, 0) self.grid.addMultiCellWidget(self.dosbox_groupbox, 1, 1, 0, 1) self.main_dosbox_path_entry = ConfigKURLSelectWidget(self.dosbox_groupbox, 'Path to dosbox area', filetype='dir') self.dosbox_binary_entry = ConfigLineEditWidget(self.dosbox_groupbox, 'Dosbox executable') self.cdrive_is_main_check = QCheckBox(self.dosbox_groupbox) self.cdrive_is_main_check.setText('C: Drive is main dosbox path') # externalactions area self.externalactions_groupbox = VerticalGroupBox(self, 'External Actions') self.externalactions_groupbox.setColumns(2) self.grid.addWidget(self.externalactions_groupbox, 2, 0) self.launch_weblinks_entry = ConfigLineEditWidget(self.externalactions_groupbox, 'Command to handle weblink clicks') self.text_editor_entry = ConfigLineEditWidget(self.externalactions_groupbox, 'Text editor command') # mainwindow area self.mainwindow_groupbox = VerticalGroupBox(self, 'Main Window Options') self.mainwindow_groupbox.setColumns(3) self.grid.addWidget(self.mainwindow_groupbox, 2, 1) self.mainwindow_size_box = ConfigWinSizeWidget(self.mainwindow_groupbox, 'Size of main window') self.flat_tree_box = ConfigComboBoxWidget(self.mainwindow_groupbox, 'Game list style', ['flat', 'tree']) self.name_title_box = ConfigComboBoxWidget(self.mainwindow_groupbox, 'Game list entries', ['name', 'title']) def set_config(self, configobj): self.mainconfig = configobj # some assignments to help with typing filemanagement = 'filemanagement' dosbox = 'dosbox' externalactions = 'externalactions' mainwindow = 'mainwindow' cfg = self.mainconfig # set the various config widgets # filemanagement section use_rdiff_backup = cfg.getboolean(filemanagement, 'use_rdiff_backup') self.use_rdiff_backup_check.setChecked(use_rdiff_backup) use_rsync = cfg.getboolean(filemanagement, 'use_rsync') self.use_rsync_check.setChecked(use_rsync) overwrite_extras_archives = cfg.getboolean(filemanagement, 'overwrite_extras_archives') self.overwrite_extras_archives_check.setChecked(overwrite_extras_archives) installed_archives_path = cfg.get(filemanagement, 'installed_archives_path') self.installed_archives_entry.set_config_option(installed_archives_path) extras_archives_path = cfg.get(filemanagement, 'extras_archives_path') self.extras_archives_entry.set_config_option(extras_archives_path) # dosbox section dosbox_binary = cfg.get(dosbox, 'dosbox_binary') self.dosbox_binary_entry.set_config_option(dosbox_binary) main_dosbox_path = cfg.get(dosbox, 'main_dosbox_path') self.main_dosbox_path_entry.set_config_option(main_dosbox_path) cdrive_is_main = cfg.getboolean(dosbox, 'cdrive_is_main_dosbox_path') self.cdrive_is_main_check.setChecked(cdrive_is_main) # externalactions section launch_weblink = cfg.get(externalactions, 'launch_weblink') self.launch_weblinks_entry.set_config_option(launch_weblink) text_editor = cfg.get(externalactions, 'text_editor') self.text_editor_entry.set_config_option(text_editor) # mainwindow section mainwindow_size = cfg.get(mainwindow, 'mainwindow_size') self.mainwindow_size_box.set_config_option(mainwindow_size) flat_tree_view = cfg.get(mainwindow, 'flat_tree_view') self.flat_tree_box.set_config_option(flat_tree_view) name_title_view = cfg.get(mainwindow, 'name_title_view') self.name_title_box.set_config_option(name_title_view) def get_config(self): # some assignments to help with typing filemanagement = 'filemanagement' dosbox = 'dosbox' externalactions = 'externalactions' mainwindow = 'mainwindow' cfg = self.localconfig # get config values from the various widgets # filemanagement section use_rdiff_backup = self._get_bool_for_config(self.use_rdiff_backup_check) cfg.set(filemanagement, 'use_rdiff_backup', use_rdiff_backup) use_rsync = self._get_bool_for_config(self.use_rsync_check) cfg.set(filemanagement, 'use_rsync', use_rsync) overwrite_extras = self._get_bool_for_config(self.overwrite_extras_archives_check) cfg.set(filemanagement, 'overwrite_extras_archives', overwrite_extras) installed_archives_path = self.installed_archives_entry.get_config_option() cfg.set(filemanagement, 'installed_archives_path', installed_archives_path) extras_archives_path = self.extras_archives_entry.get_config_option() cfg.set(filemanagement, 'extras_archives_path', extras_archives_path) # dosbox section dosbox_binary = self.dosbox_binary_entry.get_config_option() cfg.set(dosbox, 'dosbox_binary', dosbox_binary) main_dosbox_path = self.main_dosbox_path_entry.get_config_option() cfg.set(dosbox, 'main_dosbox_path', main_dosbox_path) cdrive_is_main = self._get_bool_for_config(self.cdrive_is_main_check) cfg.set(dosbox, 'cdrive_is_main_dosbox_path', cdrive_is_main) # externalactions section launch_weblink = self.launch_weblinks_entry.get_config_option() cfg.set(externalactions, 'launch_weblink', launch_weblink) text_editor = self.text_editor_entry.get_config_option() cfg.set(externalactions, 'text_editor', text_editor) # mainwindow section mainwindow_size = self.mainwindow_size_box.get_config_option() cfg.set(mainwindow, 'mainwindow_size', mainwindow_size) flat_tree_view = self.flat_tree_box.get_config_option() cfg.set(mainwindow, 'flat_tree_view', flat_tree_view) name_title_view = self.name_title_box.get_config_option() cfg.set(mainwindow, 'name_title_view', name_title_view) return cfg