def main(): CSS = b""" .readonly entry { background-color: @insensitive_bg_color; } .required entry { border-color: darker(@unfocused_borders); } .invalid entry, entry.invalid { border-color: @error_color; } """ screen = Gdk.Screen.get_default() style_context = Gtk.StyleContext() provider = Gtk.CssProvider() provider.load_from_data(CSS) style_context.add_provider_for_screen( screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) theme_path = os.path.join(get_config_dir(), 'theme.css') if os.path.exists(theme_path): provider = Gtk.CssProvider() provider.load_from_path(theme_path) style_context.add_provider_for_screen(screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) def excepthook(type_, value, traceback_): common.error(str(value), ''.join(traceback.format_tb(traceback_))) sys.excepthook = excepthook CONFIG.parse() if CONFIG.arguments: url = CONFIG.arguments[0] urlp = urlparse(url) if urlp.scheme == 'tryton': urlp = urlparse('http' + url[6:]) database, _ = (urlp.path[1:].split('/', 1) + [None])[:2] CONFIG['login.host'] = urlp.netloc CONFIG['login.db'] = database CONFIG['login.expanded'] = True else: CONFIG.arguments = [] translate.set_language_direction(CONFIG['client.language_direction']) translate.setlang(CONFIG['client.lang']) common.ICONFACTORY.load_client_icons() if CONFIG.arguments or DBLogin().run(): server = '%(hostname)s:%(port)s/%(database)s' % { 'hostname': common.get_hostname(CONFIG['login.host']), 'port': common.get_port(CONFIG['login.host']), 'database': CONFIG['login.db'], } server = hashlib.md5(server.encode('utf-8')).hexdigest() application_id = 'org.tryton._' + server app = gui.Main(application_id=application_id, flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE) app.run([sys.argv[0]] + CONFIG.arguments)
def run(self): main = gui.Main(self) signal.signal(signal.SIGINT, lambda signum, frame: main.sig_quit()) signal.signal(signal.SIGTERM, lambda signum, frame: main.sig_quit()) if hasattr(signal, 'SIGQUIT'): signal.signal(signal.SIGQUIT, lambda signum, frame: main.sig_quit()) def excepthook(exctyp, exception, tb): import common import traceback from tryton.exceptions import TrytonServerError if (CONFIG['sentry.dsn'] and not isinstance(exception, TrytonServerError)): log = logging.getLogger(__name__) log.error(''.join( traceback.format_exception(exctyp, exception, tb)) + '\n' + str(exception)) sentry = Client(CONFIG['sentry.dsn']) sentry_id = sentry.captureException((exctyp, exception, tb)) else: sentry_id = None tb = ''.join(traceback.format_exception(exctyp, exception, tb)) common.process_exception(exception, tb=tb, sentry_id=sentry_id) sys.excepthook = excepthook if CONFIG['tip.autostart']: main.sig_tips() main.sig_login() if sys.platform == 'win32': # http://faq.pygtk.org/index.py?req=show&file=faq21.003.htp def sleeper(): time.sleep(.001) return 1 gobject.timeout_add(400, sleeper) try: if sys.platform == 'win32': while not self.quit_client.isSet(): with gtk.gdk.lock: gtk.main_iteration(True) else: gtk.main() except KeyboardInterrupt: CONFIG.save() gtk.accel_map_save(os.path.join(get_config_dir(), 'accel.map'))
def run(self): main = gui.Main(self) signal.signal(signal.SIGINT, lambda signum, frame: main.sig_quit()) signal.signal(signal.SIGTERM, lambda signum, frame: main.sig_quit()) if hasattr(signal, 'SIGQUIT'): signal.signal(signal.SIGQUIT, lambda signum, frame: main.sig_quit()) def excepthook(*args): import common import traceback detail = ''.join(traceback.format_exception(*args)) common.error(str(args[1]), detail) sys.excepthook = excepthook # Remove Tips # if CONFIG['tip.autostart']: # main.sig_tips() main.sig_login() if sys.platform == 'win32': # http://faq.pygtk.org/index.py?req=show&file=faq21.003.htp def sleeper(): time.sleep(.001) return 1 gobject.timeout_add(400, sleeper) try: if sys.platform == 'win32': while not self.quit_client.isSet(): with gtk.gdk.lock: gtk.main_iteration() else: gtk.main() except KeyboardInterrupt: CONFIG.save() gtk.accel_map_save(os.path.join(get_config_dir(), 'accel.map'))
def main(): CSS = b""" .readonly entry, .readonly text { background-color: @insensitive_bg_color; } .required entry, .required text { border-color: darker(@unfocused_borders); } .invalid entry, entry.invalid, .invalid text, text.invalid { border-color: @error_color; } label.required { font-weight: bold; } label.editable { font-style: italic; } .window-title, .wizard-title { background-color: white; font-size: large; font-weight: bold; } .window-title .status { font-size: medium; font-weight: normal; } """ screen = Gdk.Screen.get_default() style_context = Gtk.StyleContext() provider = Gtk.CssProvider() # the line below injects CSS with higher priority than the custom theme # -> it overrides Coog theme behavior # provider.load_from_data(CSS) style_context.add_provider_for_screen(screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) theme_path = os.path.join(get_config_dir(), 'theme.css') if os.path.exists(theme_path): provider = Gtk.CssProvider() provider.load_from_path(theme_path) style_context.add_provider_for_screen(screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) def excepthook(type_, value, traceback_): common.error(value, ''.join(traceback.format_tb(traceback_))) sys.excepthook = excepthook CONFIG.parse() if CONFIG.arguments: url = CONFIG.arguments[0] urlp = urlparse(url) if urlp.scheme == 'tryton': urlp = urlparse('http' + url[6:]) database, _ = (urlp.path[1:].split('/', 1) + [None])[:2] CONFIG['login.host'] = urlp.netloc CONFIG['login.db'] = database CONFIG['login.expanded'] = True else: CONFIG.arguments = [] translate.set_language_direction(CONFIG['client.language_direction']) translate.setlang(CONFIG['client.lang']) if CONFIG.arguments or DBLogin().run(): server = '%(hostname)s:%(port)s/%(database)s' % { 'hostname': common.get_hostname(CONFIG['login.host']), 'port': common.get_port(CONFIG['login.host']), 'database': CONFIG['login.db'], } server = hashlib.md5(server.encode('utf-8')).hexdigest() application_id = 'org.tryton._' + server app = gui.Main(application_id=application_id, flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE) app.run([sys.argv[0]] + CONFIG.arguments)