Source code for stoq.gui.launcher

# -*- Mode: Python; coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4

##
## Copyright (C) 2011-2013 Async Open Source <http://www.async.com.br>
## All rights reserved
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., or visit: http://www.gnu.org/.
##
## Author(s): Stoq Team <stoq-devel@async.com.br>
##
""" Application to launcher other application.  """


import gtk
from stoqlib.api import api
from stoqlib.lib.translation import stoqlib_gettext

from stoq.gui.shell.shellapp import ShellApp

_ = stoqlib_gettext

(COL_LABEL,
 COL_PIXBUF,
 COL_APP) = range(3)


[docs]class LauncherApp(ShellApp): gladefile = "launcher" app_title = "Stoq" # # ShellApp #
[docs] def create_ui(self): self.model.set_sort_column_id(COL_LABEL, gtk.SORT_ASCENDING) self.iconview.set_markup_column(COL_LABEL) self.iconview.set_pixbuf_column(COL_PIXBUF) if hasattr(self.iconview, "set_item_orientation"): self.iconview.set_item_orientation(gtk.ORIENTATION_HORIZONTAL) self.iconview.set_item_width(300) self.iconview.set_selection_mode(gtk.SELECTION_BROWSE) self.iconview.set_spacing(10) for app in self.window.get_available_applications(): pixbuf = self.get_toplevel().render_icon(app.icon, gtk.ICON_SIZE_DIALOG) text = '<b>%s</b>\n<small>%s</small>' % ( api.escape(app.fullname), api.escape(app.description)) self.model.append([text, pixbuf, app]) # FIXME: last opened application if len(self.model): self.iconview.select_path(self.model[0].path) self.iconview.grab_focus() self.iconview_vbox.show()
[docs] def activate(self, refresh=True): # Menu self.window.ChangePassword.set_visible(True) self.window.SignOut.set_visible(True) self.window.Close.set_sensitive(False) self.window.Quit.set_visible(True) self.window.HomeToolItem.set_sensitive(False) self.window.Print.set_sensitive(False) self.window.Print.set_visible(False) self.window.ExportSpreadSheet.set_visible(False) self.window.ExportSpreadSheet.set_sensitive(False) # Toolbar self.window.set_new_menu_sensitive(True) self.window.NewToolItem.set_tooltip(_("Open a new window")) self.window.SearchToolItem.set_tooltip("") self.window.SearchToolItem.set_sensitive(False)
[docs] def deactivate(self): self.iconview_vbox.hide()
[docs] def setup_focus(self): self.iconview.grab_focus()
[docs] def new_activate(self): self.window.new_window()
def _get_app_by_name(self, app_name): for row in self.model: if row[COL_APP].name == app_name: return row[COL_APP] # # Callbacks #
[docs] def on_iconview__item_activated(self, iconview, path): app = self.model[path][COL_APP] self.window.run_application(app.name, hide=True)