예제 #1
0
    def save_settings(self,
                      component: TabGroupComponent) -> Tuple[bool, List[str]]:
        ti = time.time()
        save_threads, warnings, success_map = [], [], {}

        save_core = Thread(target=self._save_core_settings,
                           args=(component, success_map, warnings),
                           daemon=True)
        save_core.start()
        save_threads.append(save_core)

        for man in self.managers:
            if man:
                modname = man.__module__.split('.')[-2]
                tab = component.get_tab(modname)

                if not tab:
                    self.logger.warning("Tab for {} was not found".format(
                        man.__class__.__name__))
                else:
                    save_man = Thread(target=self._save_manager_settings(
                        man, tab.content, success_map, warnings),
                                      daemon=True)
                    save_man.start()
                    save_threads.append(save_man)

        for t in save_threads:
            t.join()

        success = all(success_map.values())

        tf = time.time()
        self.logger.info("Saving all settings took {0:.8f} seconds".format(tf -
                                                                           ti))
        return success, warnings
예제 #2
0
    def save_settings(self,
                      component: TabGroupComponent) -> Tuple[bool, List[str]]:

        saved, warnings = True, []

        bkp = component.get_tab('core.bkp')
        success, errors = self._save_settings(
            general=component.get_tab('core.gen').content,
            advanced=component.get_tab('core.adv').content,
            tray=component.get_tab('core.tray').content,
            backup=bkp.content if bkp else None,
            ui=component.get_tab('core.ui').content,
            gems_panel=component.get_tab('core.types').content)

        if not success:
            saved = False

        if errors:
            warnings.extend(errors)

        for man in self.managers:
            if man:
                modname = man.__module__.split('.')[-2]
                tab = component.get_tab(modname)

                if not tab:
                    self.logger.warning("Tab for {} was not found".format(
                        man.__class__.__name__))
                else:
                    res = man.save_settings(tab.content)

                    if res:
                        success, errors = res[0], res[1]

                        if not success:
                            saved = False

                        if errors:
                            warnings.extend(errors)

        return saved, warnings
예제 #3
0
    def _save_core_settings(self, root_component: TabGroupComponent,
                            success_map: Dict[str, bool], warnings: List[str]):
        success = False

        try:
            bkp = root_component.get_tab('core.bkp')
            success, errors = self._save_settings(
                general=root_component.get_tab('core.gen').content,
                advanced=root_component.get_tab('core.adv').content,
                tray=root_component.get_tab('core.tray').content,
                backup=bkp.content if bkp else None,
                ui=root_component.get_tab('core.ui').content,
                gems_panel=root_component.get_tab('core.types').content)
            if errors:
                warnings.extend(errors)

        except:
            self.logger.error(
                "An exception happened while saving the core settings")
            traceback.print_exc()
        finally:
            success_map[self.__class__.__name__] = success
예제 #4
0
파일: settings.py 프로젝트: vinifmor/bauh
    def _save_core_settings(self, tabs: TabGroupComponent,
                            success_list: List[bool], warnings: List[str]):
        success = False

        try:
            bkp = tabs.get_tab('core.bkp')
            success, errors = self._save_settings(
                general=tabs.get_tab('core.gen').get_content(PanelComponent),
                advanced=tabs.get_tab('core.adv').get_content(PanelComponent),
                tray=tabs.get_tab('core.tray').get_content(PanelComponent),
                backup=bkp.get_content(PanelComponent) if bkp else None,
                ui=tabs.get_tab('core.ui').get_content(PanelComponent),
                gems_panel=tabs.get_tab('core.types').get_content(
                    PanelComponent))
            if errors:
                warnings.extend(errors)

        except Exception:
            self.logger.error(
                "An exception happened while saving the core settings")
            traceback.print_exc()
        finally:
            success_list.append(success)