Beispiel #1
0
    def _change_user(self, user_name):
        if user_name == self.user.name:
            return
        self.user_manager.set_user(user_name)
        self.user = self.user_manager.user
        self.info_popup = gui.InformationPopup(self)

        tk.Tk.wm_title(self, 'SHARKtools, user: {}'.format(self.user.name))

        # Save startup user in settings
        self.user_manager.set_app_settings('user', 'startup', user_name)

        # Make updates
        self.make_user_updates()
Beispiel #2
0
    def _change_user(self, user_name):
        if user_name == self.user.name:
            return
        self.user_manager.set_user(user_name)
        self.user = self.user_manager.user
        self.info_popup = gui.InformationPopup(self)

        tk.Tk.wm_title(self, 'GISMO Toolbox, user: {}'.format(self.user.name))

        # Save startup user in settings
        self.settings.change_setting('user', 'Startup user', user_name)
        self.settings.save_settings()

        # Make updates
        self.make_user_updats()
Beispiel #3
0
    def __init__(self,
                 user='******',
                 users_directory='',
                 root_directory='',
                 log_directory='',
                 mapping_files_directory='',
                 settings_files_directory='',
                 default_settings_file_path='',
                 sampling_types_factory=None,
                 qc_routines_factory=None,
                 *args,
                 **kwargs):
        """
        Updated 20181002
        """

        tk.Tk.__init__(self, *args, **kwargs)

        self.withdraw()

        if not all([
                users_directory, root_directory, log_directory,
                sampling_types_factory, qc_routines_factory
        ]):
            raise AttributeError

        # Load settings and constants (singletons)
        self.app_directory = os.path.dirname(os.path.abspath(__file__))
        self.root_directory = root_directory
        self.users_directory = users_directory
        self.log_directory = log_directory
        self.mapping_files_directory = mapping_files_directory
        self.settings_files_directory = settings_files_directory

        # Load paths
        self.paths = core.Paths(self.app_directory)

        # Load settings files object
        self.settings_files = core.SettingsFiles(
            self.paths.directory_settings_files)

        # Initiate logging
        log_file = os.path.join(self.log_directory, 'gismo.log')
        logging.basicConfig(filename=log_file,
                            filemode='w',
                            level=logging.DEBUG)
        logging.info('=== NEW RUN ===')

        self.settings = core.Settings(
            default_settings_file_path=default_settings_file_path,
            root_directory=self.root_directory)

        # Load user
        self.user_manager = core.UserManager(
            os.path.join(self.root_directory, 'users'))
        self.computer_name = 'my_computer'
        try:
            self.computer_name = socket.gethostname()
        except:
            pass
        startup_user = self.settings.get('user',
                                         {}).get('Startup user',
                                                 self.computer_name)
        if startup_user == 'default':  #not in self.user_manager.get_user_list():
            self.user_manager.set_user('default', create_if_missing=True)
            self.settings.change_setting('user', 'Startup user',
                                         self.computer_name)
            self.settings.save_settings()
        self.user_manager.set_user(self.computer_name, create_if_missing=True)
        self.user = self.user_manager.user
        self.info_popup = gui.InformationPopup(self)
        plt.style.use(
            self.user.layout.setdefault(
                'plotstyle',
                self.user.layout.setdefault(
                    'plotstyle', self.settings['default']['plotstyle'])))

        # self.boxen = Boxen(open_directory=self.settings['directory']['Input directory'])
        # self.boxen = core.Boxen(self, root_directory=self.root_directory)
        self.session = GISMOsession(
            root_directory=self.root_directory,
            users_directory=self.users_directory,
            log_directory=self.log_directory,
            mapping_files_directory=self.mapping_files_directory,
            settings_files_directory=self.settings_files_directory,
            user=user,
            sampling_types_factory=sampling_types_factory,
            qc_routines_factory=qc_routines_factory,
            save_pkl=False)

        #        CMEMSparameters(self.settings['directory']['CMEMS parameters'])
        #        CMEMSstations(self.settings['directory']['CMEMS stations'])
        self.default_platform_settings = None
        # self.default_platform_settings = gismo.sampling_types.SamplingTypeSettings(self.settings['directory']['Default ferrybox settings'],
        #                                                                            root_directory=self.root_directory)

        screen_padx = self.settings['general']['Main window indent x']
        screen_pady = self.settings['general']['Main window indent y']

        # Override "close window (x)".
        # Override "close window (x)".
        # If this is not implemented the program is not properly closed.
        self.protocol('WM_DELETE_WINDOW', self.quit_toolbox)

        # Set geometry, title etc.
        #        self.geometry(u'%sx%s+0+0' % (self.winfo_screenwidth(),
        #                                     self.winfo_screenheight()))
        self.geometry('%sx%s+0+0' % (self.winfo_screenwidth() - screen_padx,
                                     self.winfo_screenheight() - screen_pady))
        #         tk.Tk.iconbitmap(self, default=u'D:/Utveckling/w_sharktoolbox/data/logo.ico')
        # TODO: Icon does not work
        self._create_titles()

        self.all_ok = True

        self.active_page = None
        self.previous_page = None
        self.admin_mode = False
        self.progress_running = False
        self.progress_running_toplevel = False

        self.latest_loaded_sampling_type = ''

        #        self.sv = tk.StringVar()
        self._set_frame()

        # Make menu at the top
        self._set_menubar()

        self.startup_pages()

        # Show start page given in settings.ini
        self.page_history = [gui.PageStart]
        # self.show_frame(gui.PageStart)
        # self.show_frame(gui.PageUser)
        # self.show_frame(gui.PageFerrybox)
        # self.show_frame(gui.PageFixedPlatforms)
        self.show_frame(gui.PageTimeSeries)

        self.update_all()
        self.deiconify()
Beispiel #4
0
    def __init__(self,
                 users_directory='',
                 root_directory='',
                 log_directory='',
                 # mapping_files_directory='',
                 # default_settings_file_path='',
                 *args, **kwargs):
        """
        Updated 20181002
        """
        self.all_ok = True
        self.version = '2019.10.1'

        tk.Tk.__init__(self, *args, **kwargs)
        self.withdraw()

        if not all([users_directory, root_directory, log_directory]):
            raise AttributeError

        # Save paths
        self.app_directory = Path(os.path.dirname(os.path.abspath(__file__)))
        self.root_directory = Path(root_directory)
        self.users_directory = Path(users_directory)
        self.log_directory = Path(log_directory)

        # Setting upp GUI logger
        if not self.log_directory.exists():
            os.makedirs(self.log_directory)

        self._set_user_settings()

        self.computer_name = self._get_computer_name()
        self.user_manager = core.UserManager(users_root_directory=self.users_directory, app_root_directory=self.root_directory)

        self._load_user()
        # self.all_ok = False
        # return

        # logging.config.fileConfig(Path(ROOT_PATH, 'logging.conf'))
        # self.logger = logging.getLogger('mainapptimedrotating')

        self.logger = None
        # self.logging_level = 'WARNING'
        self.logging_level = self.user_manager.get_app_settings('logging', 'level', 'WARNING')
        self.logging_format = '%(asctime)s [%(levelname)10s]    %(pathname)s [%(lineno)d] => %(funcName)s():    %(message)s'
        self._setup_logger(**kwargs)

        self.logger.debug('===== START ======')

        # Load paths
        self.paths = core.Paths(self.app_directory)

        # TODO: See if root directory and Settings are necessary
        # self.settings = core.Settings(default_settings_file_path=default_settings_file_path,
        #                               root_directory=self.root_directory)

        def_geo = '1480x950+0+0'
        geo = self.user_manager.get_app_settings('main window', 'geometry', def_geo)
        if len(screeninfo.get_monitors()) == 1:
            monitor = screeninfo.get_monitors()[0]
            sc, lr, ud = geo.split('+')
            w, h = sc.split('x')
            if lr[0] == '-':
                geo = def_geo
            elif ud[0] == '-':
                geo = def_geo
            elif (int(lr) + int(w)) > monitor.width:
                geo = def_geo
            elif (int(ud) + int(h)) > monitor.height:
                geo = def_geo



        self.info_popup = gui.InformationPopup(self)

        # If this is not implemented the program is not properly closed.
        self.protocol('WM_DELETE_WINDOW', self.quit_toolbox)

        self.geometry(geo)

        self._create_titles()

        self.active_page = None
        self.previous_page = None
        self.progress_running = False
        self.progress_running_toplevel = False

        self._set_frame()

        # Make menu at the top
        self._set_menubar()
        self.selected_logging_level.set(self.logging_level)

        self.startup_pages()
        self.user_manager.set_users_directory(self.users_directory)

        # Show start page given in settings.ini
        self.page_history = ['PageAbout']
        self.show_default_subframe()
        # self.show_subframe('SHARKtools_svea_ctd', 'PageBasic')
        # self.show_frame('PageStart')

        self.update_all()
        self.deiconify()
Beispiel #5
0
    def __init__(self,
                 users_directory='',
                 root_directory='',
                 log_directory='',
                 mapping_files_directory='',
                 default_settings_file_path='',
                 *args, **kwargs):
        """
        Updated 20181002
        """
        self.version = '2019.10.1'

        tk.Tk.__init__(self, *args, **kwargs)
        self.withdraw()

        if not all([users_directory, root_directory, log_directory]):
            raise AttributeError

        self._set_user_settings()

        # Load settings and constants (singletons)
        self.app_directory = os.path.dirname(os.path.abspath(__file__))
        self.root_directory = root_directory
        self.users_directory = users_directory
        self.log_directory = log_directory
        self.mapping_files_directory = mapping_files_directory

        # Setting upp GUI logger
        if not os.path.exists(self.log_directory):
            os.makedirs(self.log_directory)

        # TODO: When to clear log files?
        self.logger = loglib.get_logger(name='gismo_main',
                                        logfiles=[dict(level='DEBUG',
                                                       file_path=os.path.join(self.log_directory,
                                                                              'main_debug.log')),
                                                  dict(level='WARNING',
                                                       file_path=os.path.join(self.log_directory,
                                                                              'main_warning.log')),
                                                  dict(level='ERROR',
                                                       file_path=os.path.join(self.log_directory,
                                                                              'main_error.log'))
                                                  ])

        self.logger.debug('===== START ======')

        # Load paths
        self.paths = core.Paths(self.app_directory)

        # TODO: See if root directory and Settings are necessary
        self.settings = core.Settings(default_settings_file_path=default_settings_file_path,
                                      root_directory=self.root_directory)

        self._load_user()

        screen_padx = self.settings['general']['Main window indent x']
        screen_pady = self.settings['general']['Main window indent y']

        self.info_popup = gui.InformationPopup(self)

        # Override "close window (x)".
        # Override "close window (x)".
        # If this is not implemented the program is not properly closed.
        self.protocol('WM_DELETE_WINDOW', self.quit_toolbox)

        # Set geometry, title etc.
        #        self.geometry(u'%sx%s+0+0' % (self.winfo_screenwidth(),
        #                                     self.winfo_screenheight()))
        self.geometry('%sx%s+0+0' % (self.winfo_screenwidth() - screen_padx,
                                     self.winfo_screenheight() - screen_pady))
        #         tk.Tk.iconbitmap(self, default=u'D:/Utveckling/w_sharktoolbox/data/logo.ico')
        # TODO: Icon does not work
        self._create_titles()

        self.all_ok = True

        self.active_page = None
        self.previous_page = None
        # self.admin_mode = False
        self.progress_running = False
        self.progress_running_toplevel = False

        self.latest_loaded_sampling_type = ''

        #        self.sv = tk.StringVar()
        self._set_frame()

        # Make menu at the top
        self._set_menubar()

        self.startup_pages()
        self.user_manager.set_users_directory(self.users_directory)

        # Show start page given in settings.ini
        self.page_history = ['PageAbout']
        self.show_frame('PageStart')

        self.update_all()
        self.deiconify()