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()
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()
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()
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()
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()