class MainBoxAutoUpdater(AutoUpdater): def __init__(self, options_configurator): super().__init__( lambda: self._bind(options_configurator), lambda: self._update_model(options_configurator), lambda: self._update_gui(options_configurator), lambda: self._init_gui(options_configurator) ) self.serializer = BasicJsonizer([ AddingRulesConfiguration, CrowdingConfiguration, ElitismConfiguration, AlgorithmConfiguration, RuleConfiguration, Symbol, EvolutionConfiguration, EvolutionOperatorConfiguration, EvolutionOperatorsConfiguration, EvolutionSelectorConfiguration, CoverageConfiguration, CoverageOperatorConfiguration, CoverageOperatorsConfiguration, CykConfiguration, GrammarCorrection, ClassicalStatisticsConfiguration, EvolutionRandomSelectorConfiguration, EvolutionTournamentSelectorConfiguration, EvolutionRouletteSelectorConfiguration ]) @staticmethod def _init_gui(options_configurator): pass def _bind(self, options_configurator): options_configurator.ui.buttonBox.button(QtGui.QDialogButtonBox.Reset).clicked.connect( lambda: self.on_reset_clicked(options_configurator)) options_configurator.ui.buttonBox.button(QtGui.QDialogButtonBox.Save).clicked.connect( lambda: self.on_save_clicked(options_configurator)) options_configurator.ui.buttonBox.button(QtGui.QDialogButtonBox.Open).clicked.connect( lambda: self.on_open_clicked(options_configurator)) @staticmethod def on_reset_clicked(options_configurator): options_configurator.on_variant_changed(options_configurator.current_variant.name) def on_save_clicked(self, options_configurator): selected_filename = QtGui.QFileDialog.getSaveFileName( options_configurator.widget, 'Save configuration as...', options_configurator.last_directory, "*.parconf") if selected_filename: options_configurator.last_directory = os.path.dirname(selected_filename) with open(selected_filename, 'w+') as f: json.dump(self.serializer.to_json(options_configurator.configuration), f, sort_keys=True, indent=4) def on_open_clicked(self, options_configurator): selected_filename = QtGui.QFileDialog.getOpenFileName( options_configurator.widget, 'Load configuration...', options_configurator.last_directory, "*.parconf") if selected_filename: options_configurator.last_directory = os.path.dirname(selected_filename) with open(selected_filename) as f: configuration = self.serializer.from_json(json.load(f)) options_configurator.on_variant_changed(configuration.algorithm_variant) options_configurator.configuration = configuration options_configurator.variant_changed__reset_gui() @staticmethod def _update_model(options_configurator): pass @staticmethod def _update_gui(options_configurator): pass