def switchContext(self, widget, context): commands.getoutput("python %sapplicationswitcher.py save" % config.APPLICATION_COMMAND_PATH) model.ActivitiesModel().switchContext(context) commands.getoutput("python %sapplicationswitcher.py switch" % config.APPLICATION_COMMAND_PATH) self.button.set_label("A: %s" % context)
def showMenu(self, widget, event, applet): if event.button == 1: activities = model.ActivitiesModel().getActivities() activities = sorted(activities.iteritems(), key=itemgetter(1), reverse=True) menu = [] for activity in activities: menu.append([activity[0], self.switchContext, activity[0]]) self.createAndShowMenu(event, menu) widget.emit_stop_by_name("button_press_event") elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: widget.emit_stop_by_name("button_press_event") self.create_menu(applet)
def switch_application(self, screen, window): am = model.ActivitiesModel() db = model.ActivitiesDB() current = am.getCurrentContext() application_map_of_current_context = db.get_application_map_for_activity( current) for w in screen.get_windows(): if application_map_of_current_context is not None and self.pid_in_application_maps_of_activity( w.get_pid(), application_map_of_current_context): w.set_skip_pager(False) w.set_skip_tasklist(False) w.unminimize(int(time.time())) else: w.set_skip_pager(True) w.set_skip_tasklist(True) w.minimize() sys.exit(0)
def get_file_items(self, window, files): if len(files) != 1: return fileitem = files[0] top_menuitem = nautilus.MenuItem( 'ActivitiesMenuProvider::MoveToActivity', 'Move to Activity', 'Move directory to %s' % fileitem.get_name()) submenu = nautilus.Menu() top_menuitem.set_submenu(submenu) self.acModel = model.ActivitiesModel() activities = self.acModel.getActivities() for key, value in activities.items(): sub_menuitem = nautilus.MenuItem( 'ActivitiesMenuProvider::Activity%s' % key, key, key) sub_menuitem.connect('activate', self.menu_activate_cb, fileitem, key) submenu.append_item(sub_menuitem) return top_menuitem,
def save_application_map(self, screen, window): am = model.ActivitiesModel() current = am.getCurrentContext() db = model.ActivitiesDB() application_map = [] application_maps_for_all_activities = db.get_all_application_maps() for w in screen.get_windows(): cmdline = (" ".join( open("/proc/%s/cmdline" % w.get_pid(), "r").readlines()[0].split("\x00"))).strip() if cmdline == 'gnome-panel' or w.get_name( ) == 'x-nautilus-desktop': continue associated = False for activity_name, application_maps in application_maps_for_all_activities.items( ): if self.pid_in_application_maps_of_activity( w.get_pid(), application_maps): # This application has been mapped to some activity, if it is the current # activity, retain it or else, break if activity_name == current: associated = False else: associated = True break # New unmapped application found - this was never seen before - so we are associating # this with the current activity if not associated: application_map.append({ 'name': w.get_name(), 'pid': w.get_pid(), 'cmdline': cmdline }) db.put_application_map_for_activity( current, json.JSONEncoder().encode(application_map)) sys.exit(0)