Source code for stoq.gui.welcomedialog

# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
##
## Copyright (C) 2011-2012 Async Open Source
##
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser 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>
##

import locale
import platform

from kiwi.environ import environ
import gtk

from stoqlib.api import api
from stoqlib.gui.base.dialogs import BasicDialog
from stoqlib.gui.utils.openbrowser import open_browser
from stoqlib.lib.translation import stoqlib_gettext as _


[docs]class WelcomeDialog(BasicDialog): title = _("Welcome to Stoq") size = (800, 400) def __init__(self): BasicDialog.__init__(self, title=self.title, size=self.size) self.toplevel.set_deletable(False) self._build_ui() self._setup_buttons() self.toplevel.connect('map-event', self._on_toplevel__map_event) def _on_toplevel__map_event(self, window, event): # Load the URI here, since it's after run_dialog is called, # otherwise there's no possiblity to hide the dialog if # webkit isn't available uri = self.get_uri() self._open_uri(uri) def _build_ui(self): sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) self.vbox.remove(self.main) self.vbox.add(sw) sw.show() if platform.system() != 'Windows': import webkit self._view = webkit.WebView() self._view.connect( 'navigation-policy-decision-requested', self._on_view__navigation_policy_decision_requested) sw.add(self._view) self._view.show() else: self._view = None def _setup_buttons(self): self.cancel_button.hide() self.ok_button.set_label(_("_Start using Stoq")) def _open_uri(self, uri): if self._view: self._view.load_uri(uri) self.ok_button.grab_focus() else: open_browser(uri, self.toplevel.get_screen()) self.toplevel.hide()
[docs] def get_uri(self): # Make sure we extract everything from html in case we are running # from an egg environ.get_resource_filename('stoq', 'html') if locale.getlocale()[0] == 'pt_BR' or platform.system() == 'Windows': content = environ.get_resource_filename('stoq', 'html', 'welcome-pt_BR.html') else: content = environ.get_resource_filename('stoq', 'html', 'welcome.html') if api.sysparam.get_bool('DEMO_MODE'): content += '?demo-mode' return 'file:///' + content
def _on_view__navigation_policy_decision_requested(self, view, frame, request, action, policy): uri = request.props.uri if not uri.startswith('file:///'): policy.ignore() open_browser(uri, self.toplevel.get_screen())