def write_config_files(self): self.filehandler.write_fileinfo_file() preferences.write_preferences_file() self.uimanager.bookmarks.write_bookmarks_file() # Write keyboard accelerator map gtk.accel_map_save(constants.KEYBINDINGS_PATH) keybindings.keybinding_manager().save()
def state_save(self): """Save window state to config.""" c = self.app.config w, h = self.get_size() c.set('gui.width', w) c.set('gui.height', h) for pane in [self.side_pane, self.bottom_pane]: c.set('win.%s_visible' % pane.__class__.__name__.lower(), pane.get_property('visible')) fname = os.path.join(USER_CONFIG_DIR, 'shortcuts.map') gtk.accel_map_save(fname)
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(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(0.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(exctyp, exception, tb): import common import traceback tb = '\n'.join(traceback.format_tb(tb)) common.process_exception(exception, tb=tb) sys.excepthook = excepthook if CONFIG['tip.autostart']: main.sig_tips() main.sig_login() #XXX psyco breaks report printing #try: # import psyco # psyco.full() #except ImportError: # pass 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() if hasattr(gtk, 'accel_map_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 __init__(self, library, player): super(QuodLibetWindow, self).__init__() self.last_dir = const.HOME self.__update_title(player) self.set_default_size(550, 450) main_box = gtk.VBox() self.add(main_box) # create test instance of the MPD backend self._mpd = quodmpd.QuodMpd() # create main menubar, load/restore accelerator groups self.__library = library self.__create_menu(player, library) self.add_accel_group(self.ui.get_accel_group()) accel_fn = os.path.join(const.USERDIR, "accels") gtk.accel_map_load(accel_fn) accelgroup = gtk.accel_groups_from_object(self)[0] accelgroup.connect('accel-changed', lambda *args: gtk.accel_map_save(accel_fn)) main_box.pack_start(self.ui.get_widget("/Menu"), expand=False) # get the playlist up before other stuff self.songlist = MainSongList(library, player) self.songlist.show_all() self.add_accel_group(self.songlist.accelerators) self.songlist.connect_after( 'drag-data-received', self.__songlist_drag_data_recv) self.song_scroller = SongListScroller( self.ui.get_widget("/Menu/View/SongList")) self.song_scroller.add(self.songlist) self.qexpander = QueueExpander( self.ui.get_widget("/Menu/View/Queue"), library, player) self.playlist = PlaylistMux( player, self.qexpander.model, self.songlist.model) top_bar = TopBar(self, player, library) top_align = Alignment(top_bar, border=3, bottom=-3) main_box.pack_start(top_align, expand=False) self.__browserbox = Alignment(top=3, bottom=3) main_box.pack_start(self.__browserbox) statusbox = StatusBarBox(self.songlist.model, player) self.order = statusbox.order self.repeat = statusbox.repeat self.statusbar = statusbox.statusbar main_box.pack_start(Alignment(statusbox, border=3, top=-3), expand=False) self.songpane = gtk.VPaned() self.songpane.pack1(self.song_scroller, resize=True, shrink=False) self.songpane.pack2(self.qexpander, resize=True, shrink=False) self.__handle_position = self.songpane.get_property("position") self.song_scroller.connect('notify::visible', self.__show_or) self.qexpander.connect('notify::visible', self.__show_or) self.qexpander.connect('notify::expanded', self.__expand_or) self.qexpander.connect('size-allocate', self.__qex_size_allocate) self.songpane.connect('notify', self.__moved_pane_handle) sort = config.get('memory', 'sortby') self.songlist.set_sort_by(None, sort[1:], order=int(sort[0])) self.browser = None main_box.show_all() try: self.select_browser( self, config.get("memory", "browser"), library, player, True) except: config.set("memory", "browser", browsers.name(0)) config.save(const.CONFIG) raise # set at least the playlist before the mainloop starts.. player.setup(self.playlist, None, 0) def delayed_song_set(): song = library.get(config.get("memory", "song")) seek_pos = config.getint("memory", "seek") config.set("memory", "seek", 0) player.setup(self.playlist, song, seek_pos) gobject.idle_add(delayed_song_set) self.showhide_playlist(self.ui.get_widget("/Menu/View/SongList")) self.showhide_playqueue(self.ui.get_widget("/Menu/View/Queue")) self.songlist.connect('popup-menu', self.__songs_popup_menu) self.songlist.connect('columns-changed', self.__cols_changed) self.songlist.connect('columns-changed', self.__hide_headers) self.songlist.get_selection().connect( 'changed', util.DeferredSignal(self.__set_time)) lib = library.librarian gobject_weak(lib.connect, 'removed', self.__set_time, parent=self) gobject_weak(lib.connect, 'added', self.__set_time, parent=self) gobject_weak(lib.connect_object, 'changed', self.__song_changed, player, parent=self) player_sigs = [ ('song-ended', self.__song_ended), ('song-started', self.__song_started), ('paused', self.__update_paused, True), ('unpaused', self.__update_paused, False), ] for sig in player_sigs: gobject_weak(player.connect, *sig, **{"parent": self}) targets = [("text/uri-list", 0, 1)] self.drag_dest_set( gtk.DEST_DEFAULT_ALL, targets, gtk.gdk.ACTION_DEFAULT) self.connect_object('drag-motion', QuodLibetWindow.__drag_motion, self) self.connect_object('drag-leave', QuodLibetWindow.__drag_leave, self) self.connect_object( 'drag-data-received', QuodLibetWindow.__drag_data_received, self) if config.getboolean('library', 'refresh_on_start'): self.__rebuild(None, False) self.connect_object("key-press-event", self.__key_pressed, player) self.connect("delete-event", self.__save_browser) self.connect("destroy", self.__destroy) self.enable_window_tracking("quodlibet")
def save_gui_config(self): gtk.accel_map_save(join(self.confpath, 'accelmap.conf')) self.save_settings()
def save_accel_map(): """ Save the contents of the GtkAccelMap to a file. """ filename = _get_accel_map_filename() gtk.accel_map_save(filename)
def on_apply_clicked(self, button): self.__dialog.response(gtk.RESPONSE_APPLY) self.apply_changes_to_accel(self.__model.get_iter_root()) gtk.accel_map_save(accel_map_file)
def quit(self): gtk.accel_map_save('accelmap.conf') gtk.main_quit()
def save_shortcuts(): gtk.accel_map_save(get_settings_path('keys.conf'))