def open_settings_window(self): """ Opens a window where we can review and change program settings """ self.settings_window = QtGui.QWidget() self.settings_form = Ui_setup_form() self.settings_form.setupUi(self.settings_window) self.settings_window.setStyleSheet(self.style) self.settings_window.show() # Sets the checkboxes if self.saveHistory: self.settings_form.cb_save_history.setChecked(True) else: self.settings_form.cb_save_history.setChecked(False) if self.readNetLogs: self.settings_form.cb_read_netlogs.setChecked(True) else:self.settings_form.cb_read_netlogs.setChecked(False) # Connects the NetLogs checkbox to function that enables/disables the file picker self.settings_form.cb_read_netlogs.stateChanged.connect(self._checkbox_response) # File picker label and button for NetLogs folder if self.NetLogFolder.startswith(os.path.expanduser('~')): self.settings_form.lbl_netlogs_path.setText('~' + self.NetLogFolder[len(os.path.expanduser('~')):]) else: self.settings_form.lbl_netlogs_path.setText(self.NetLogFolder) self.settings_form.btn_netlogs_picker.clicked.connect(self._file_dialog_response) # Apply / Cancel buttons self.settings_form.btn_apply.clicked.connect(self._apply_settings) self.settings_form.btn_cancel.clicked.connect(self._cancel_settings) if self.readNetLogs: self.settings_form.lbl_netlogs_path.setEnabled(True) self.settings_form.btn_netlogs_picker.setEnabled(True) else: self.settings_form.lbl_netlogs_path.setEnabled(False) self.settings_form.btn_netlogs_picker.setEnabled(False)
class Settings: def __init__(self, style): """ Class to read, write and update the program's settings """ self.read_settings() self.style = style def read_settings(self): """ Uses QSettings, which will store the setting in different locations depending on OS For Linux normally in ~/.config/.config/OJ/EDreporter.conf For Windows in the registry at \HKEY_CURRENT_USER\Software\OJ\EDreporter """ config = QSettings('OJ', 'EDreporter') # (organization, application name) if not config.contains('saveHistory'): # If config are not defined, we're in the first run and save defaults print('no config - making one') config.setValue('saveHistory', True) # Save data between runs to make statistics config.setValue('authenticated', False) # Are we authenticated with the API yet? config.setValue('readNetLogs', True) # Should we analyse the NetLog folder and all logs? (must be enabled in Elite's settings) config.setValue('systemsDataFile', '.\eddb_data\systems.json') # JOSN data for systems (downloaded) config.setValue('stationsDataFile', '.\eddb_data\stations.json') # JOSN data for stations (downloaded) config.setValue('systemsDataURL', 'https://eddb.io/archive/v4/systems.json') # URL for systems JSON download config.setValue('stationsDataURL', 'https://eddb.io/archive/v4/stations.json') # URL for stations JSON download config.setValue('NetLogFolder', os.path.expanduser("~") + '\AppData\Local\Frontier_Developments\Products\elite-dangerous-64\Logs') # E:D Horizons default config.setValue('historyDatabase', '.\history.db') self.saveHistory = config.value('saveHistory', type=bool) self.authenticated= config.value('authenticated', type=bool) self.readNetLogs = config.value('readNetLogs', type=bool) self.NetLogFolder = config.value('NetLogFolder', type=str) self.historyDatabase = config.value('historyDatabase', type=str) self.stationsDataFile= config.value('stationsDataFile', type=str) self.systemsDataFile = config.value('systemsDataFile', type=str) self.stationsDataURL = config.value('stationsDataURL', type=str) self.systemsDataURL = config.value('systemsDataURL', type=str) def save_settings(self): config = QSettings('OJ', 'EDreporter') # (organization, application name) config.setValue('saveHistory', self.saveHistory) # Save data between runs to make statistics config.setValue('authenticated', self.authenticated) # Are we authenticated with the API yet? config.setValue('readNetLogs', self.readNetLogs) # Should we analyse the NetLog folder and all logs? (must be enabled in Elite's settings) config.setValue('systemsDataFile', self.systemsDataFile) # JOSN data for systems (downloaded) config.setValue('stationsDataFile', self.stationsDataFile) # JOSN data for stations (downloaded) config.setValue('systemsDataURL', self.systemsDataURL) # URL for systems JSON download config.setValue('stationsDataURL', self.stationsDataURL) # URL for stations JSON download config.setValue('NetLogFolder', self.NetLogFolder) # E:D Horizons default config.setValue('historyDatabase', self.historyDatabase) def open_settings_window(self): """ Opens a window where we can review and change program settings """ self.settings_window = QtGui.QWidget() self.settings_form = Ui_setup_form() self.settings_form.setupUi(self.settings_window) self.settings_window.setStyleSheet(self.style) self.settings_window.show() # Sets the checkboxes if self.saveHistory: self.settings_form.cb_save_history.setChecked(True) else: self.settings_form.cb_save_history.setChecked(False) if self.readNetLogs: self.settings_form.cb_read_netlogs.setChecked(True) else:self.settings_form.cb_read_netlogs.setChecked(False) # Connects the NetLogs checkbox to function that enables/disables the file picker self.settings_form.cb_read_netlogs.stateChanged.connect(self._checkbox_response) # File picker label and button for NetLogs folder if self.NetLogFolder.startswith(os.path.expanduser('~')): self.settings_form.lbl_netlogs_path.setText('~' + self.NetLogFolder[len(os.path.expanduser('~')):]) else: self.settings_form.lbl_netlogs_path.setText(self.NetLogFolder) self.settings_form.btn_netlogs_picker.clicked.connect(self._file_dialog_response) # Apply / Cancel buttons self.settings_form.btn_apply.clicked.connect(self._apply_settings) self.settings_form.btn_cancel.clicked.connect(self._cancel_settings) if self.readNetLogs: self.settings_form.lbl_netlogs_path.setEnabled(True) self.settings_form.btn_netlogs_picker.setEnabled(True) else: self.settings_form.lbl_netlogs_path.setEnabled(False) self.settings_form.btn_netlogs_picker.setEnabled(False) def _checkbox_response(self): if self.settings_form.cb_read_netlogs.isChecked(): self.settings_form.btn_netlogs_picker.setEnabled(True) self.settings_form.lbl_netlogs_path.setEnabled(True) else: self.settings_form.btn_netlogs_picker.setEnabled(False) self.settings_form.lbl_netlogs_path.setEnabled(False) def _file_dialog_response(self): # Note that we only update the label, so if we want to save, we need to read the label self.chosen_folder = QtGui.QFileDialog.getExistingDirectory(self.settings_window, 'Please select folder where there NetLogs are saved', self.NetLogFolder) print(self.chosen_folder) if not self.chosen_folder == '': if self.chosen_folder.startswith(os.path.expanduser('~')): self.settings_form.lbl_netlogs_path.setText('~' + self.chosen_folder[len(os.path.expanduser('~')):]) else: self.settings_form.lbl_netlogs_path.setText(self.chosen_folder) def _apply_settings(self): """ Reads the values from the form and saves into settings """ self.NetLogFolder = self.settings_form.lbl_netlogs_path.text() self.saveHistory = self.settings_form.cb_save_history.isChecked() self.readNetLogs = self.settings_form.cb_read_netlogs.isChecked() self.save_settings() # We save all variables in the form self.settings_window.close() def _cancel_settings(self): """ Closes settings window discarding values (no changes) """ self.settings_window.close()