Example #1
0
    def __init__(self, config, db_file):
        self._conf = config
        self._db_file = db_file

        # The module emtraffic has a really really WEIRD behavior. It will NOT save any data
        # expense update to the physical sqlite file if you don't EXPLICITELY order it to do it.
        # Traditionally it only do it when a connection is closed, but this is difficult to
        # guarantee because TGCM or the OS could crash, power loss, etc.
        #
        # This counter attempts to palliate it, because it stores the number of data updates has
        # been done, and every time it reaches SYNC_EVERY_N_UPDATES it will order emtraffic to
        # write its changes to the disk
        self._num_updates = 0

        # emtraffic initialization
        emtraffic.global_init()
        emtraffic.set_db_file(self._db_file)
        emtraffic.set_version(int(self._conf.get_version().split(".")[0]), \
                int(self._conf.get_version().split(".")[1]), 0, \
                self._conf.get_version() + ".0")

        self._traffics = {}
        for is_roaming in (False, True):
            tag = self.__get_tag(is_roaming)
            traffic = emtraffic.Traffic()
            traffic.set_type(tag)
            self._traffics[is_roaming] = traffic

        emtraffic.update_traffic_history()
Example #2
0
    def __init__(self, config, db_file):
        self._conf = config
        self._db_file = db_file

        # The module emtraffic has a really really WEIRD behavior. It will NOT save any data
        # expense update to the physical sqlite file if you don't EXPLICITELY order it to do it.
        # Traditionally it only do it when a connection is closed, but this is difficult to
        # guarantee because TGCM or the OS could crash, power loss, etc.
        #
        # This counter attempts to palliate it, because it stores the number of data updates has
        # been done, and every time it reaches SYNC_EVERY_N_UPDATES it will order emtraffic to
        # write its changes to the disk
        self._num_updates = 0

        # emtraffic initialization
        emtraffic.global_init()
        emtraffic.set_db_file(self._db_file)
        emtraffic.set_version(int(self._conf.get_version().split(".")[0]), \
                int(self._conf.get_version().split(".")[1]), 0, \
                self._conf.get_version() + ".0")

        self._traffics = {}
        for is_roaming in (False, True):
            tag = self.__get_tag(is_roaming)
            traffic = emtraffic.Traffic()
            traffic.set_type(tag)
            self._traffics[is_roaming] = traffic

        emtraffic.update_traffic_history()
    def __init__(self):
	MSD.init_i18n()
        self.xml = gtk.glade.XML(MSD.glade_files_dir + "mainwindow.glade")
        self.main_window = self.xml.get_widget("main_window")
        self.main_window.set_icon_from_file(MSD.icons_files_dir + "main_window_icon.png")
        self.main_vbox = self.xml.get_widget("main_vbox")
        #FIXED : Controller
        self.mcontroller = MSD.MobileManagerControllerClient()
        self.main_toolbar = MSD.MSDMainToolbar()
        #FIXED : Controller
        self.main_stats = MSD.MSDMainStatsWidget(self.mcontroller)
        self.rss = MSD.MSDRSSFeeder()
        self.main_vbox.pack_start(self.main_toolbar)
        self.main_vbox.reorder_child(self.main_toolbar, 0)
        self.main_vbox.pack_start(self.main_stats)
        self.main_vbox.reorder_child(self.main_stats, 3)
        self.actions_scrolled_window = self.xml.get_widget("actions_scrolled_window")
        self.main_actions_view = self.xml.get_widget("main_actions_view")
        self.bookmarks_button = self.main_toolbar.bookmarks_button
        self.preferences_button = self.main_toolbar.preferences_button
        self.addressbook_button = self.main_toolbar.addressbook_button
        self.help_button = self.main_toolbar.help_button
        self.expander_eventbox = self.xml.get_widget("expander_eventbox")
        self.expander_eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#ecf1fb"))
        self.main_separator = self.xml.get_widget("main_separator")
        self.mini_banner_eventbox = self.xml.get_widget("mini_banner_eventbox")
        self.mini_banner_eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#525774"))
        self.mini_banner_image =  self.xml.get_widget("mini_banner_image")
        self.mini_banner_image.set_from_file(MSD.icons_files_dir + "mini_banner.png")
        self.device_eventbox = self.xml.get_widget("device_eventbox")
        self.device_eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#515774"))
        self.main_statusbar = self.xml.get_widget("main_statusbar")
        self.connect_statusbar_im = gtk.Image()
        self.connect_statusbar_im.set_from_file(MSD.icons_files_dir + "conectado.png")
        self.disconnect_statusbar_im = gtk.Image()
        self.disconnect_statusbar_im.set_from_file(MSD.icons_files_dir + "no-conectado.png")
        self.main_statusbar.pack_start(self.connect_statusbar_im, expand=False)
        self.main_statusbar.pack_start(self.disconnect_statusbar_im, expand=False)
        self.connect_statusbar_im.hide()
        self.disconnect_statusbar_im.hide()
        self.main_statusbar.reorder_child(self.connect_statusbar_im, 0)
        self.main_statusbar.reorder_child(self.disconnect_statusbar_im, 1)
        self.card_statusbar = gtk.Statusbar()
        self.card_statusbar.set_has_resize_grip(False)
        self.main_statusbar.pack_end(self.card_statusbar, expand=True)
        self.card_statusbar.hide()
        
        self.consum_button = self.main_stats.consum_button
        self.connect_button = self.main_stats.connect_button
        self.disconnect_button = self.main_stats.disconnect_button
        self.expander_on_button = self.xml.get_widget("expander_on_button")
        self.expander_off_button = self.xml.get_widget("expander_off_button")
        self.device_selected_button = self.xml.get_widget("device_selected_button")
        self.device_selected_label = self.xml.get_widget("device_selected_label")
        self.device_selected_button.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.color_parse("#717aa6"))
        self.device_selected_button.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse("#717aa6"))
        self.device_selected_button.modify_bg(gtk.STATE_SELECTED, gtk.gdk.color_parse("#717aa6"))
        #FIXED : UI
        self.at_options_button = MobileManager.ui.MobileATOptionsButton()

        #FIXED : Controller
        dev = self.mcontroller.get_active_device()
        #FIXED : Controller (esto puede dar None?)
        if dev == None :
            self.device_selected_label.set_markup(_(u'<span foreground="white">Ningún dispositivo disponible</span>'))
        else:
            #FIXED : Set
            odev = self.mcontroller.get_device_obj_from_path(dev)
            self.device_selected_label.set_markup ('<span foreground="white">%s</span>' % odev.get_prettyname())
            self.mcontroller.set_active_device(dev)
        
        self.can_show_main_pcmcia_menu = False

        self.MSDConf = MSD.MSDConf()

        self.MSDConnManager = MSD.MSDConnectionsManager(self.MSDConf, self)

        self.main_actions_menu_item_mail = gtk.MenuItem(_(u"Nuevo correo"))
        
        self.MSDActManager = MSD.MSDActionsManager(self.MSDConf, self.MSDConnManager)

        liststore = self.MSDActManager.get_actions_model()
        cellrenderpixbuf = gtk.CellRendererPixbuf()
        cellrenderpixbuf.set_property('cell-background', '#DEDEDE')
        cellrendertext = gtk.CellRendererText()
        cellrendertext.set_property('cell-background', '#DEDEDE')
        
        column = gtk.TreeViewColumn('MAV_icon', cellrenderpixbuf,
                                    pixbuf=0, cell_background_set=3)
        self.main_actions_view.append_column(column)
        column = gtk.TreeViewColumn('MAV_name', cellrendertext,
                                    markup=1, cell_background_set=3)
        self.main_actions_view.append_column(column)

        # assign the tooltip
        tips = gtk.Tooltips()
        tips.set_tip(self.main_actions_view, "")

        self.main_actions_view.set_model(liststore)
        
        self.preferences = MSD.MSDPreferencesDialog(self)

        self.MSDActManager.set_connections_model(self.preferences.get_connections_model())


        # Consum
        emtraffic.set_db_file(get_user_traffic_db_path())
        emtraffic.set_version(
        	MSD.msd_version_major,
        	MSD.msd_version_minor,
        	MSD.msd_version_update,
        	MSD.msd_version_string)        
        self.consum = MSD.MSDConsumWindow(self.MSDConf)
        #FIXED: mcontroller
        self.consum_manager = MSD.MSDConsumManager(self.mcontroller, self.main_stats, self.consum,self.MSDConf)

        # Help stuff

        self.progress_dialog = MSD.MSDProgressWindow()
        self.progress_dialog.set_show_buttons(False)
        self.timer_id = 0

        self.help_dialog = self.xml.get_widget("help_window")
        self.help_dialog.set_icon_from_file(MSD.icons_files_dir + "ayuda_16x16.png")
        self.hd_help_button = self.xml.get_widget("help_button")
        self.hd_help_online_button = self.xml.get_widget("help_online_button")
        self.hd_help_close_button = self.xml.get_widget("help_close_button")
        self.hd_help_info_treeview = self.xml.get_widget("help_info_treeview")
        self.help_liststore = gtk.ListStore(str, str)
        column = gtk.TreeViewColumn('Option_key', gtk.CellRendererText(),
                                    markup=0)
        self.hd_help_info_treeview.append_column(column)
        column = gtk.TreeViewColumn('Option_value', gtk.CellRendererText(),
                                    markup=1)
        self.hd_help_info_treeview.append_column(column)
        self.hd_help_info_treeview.set_model(self.help_liststore)

        # Bookmarks
        self.bookmarks_menu = gtk.Menu()
        for bookmark in self.MSDConf.get_bookmarks_list():
            self.bookmarks_menu.append(gtk.MenuItem(gobject.markup_escape_text(bookmark[0]), False))
        
        #Warning
        self.warning_dialog = MSD.MSDWarningDialog(self.xml, self.main_window, self.MSDConf)

        # Main actions menu
        self.main_actions_menu = gtk.Menu()
        self.main_actions_menu_item_open = gtk.ImageMenuItem(_(u"Abrir"))
        self.main_actions_menu_item_config = gtk.MenuItem(_(u"Configuración"))
        self.main_actions_menu_item_install = gtk.MenuItem(_(u"Instalar"))
        self.main_actions_menu_item_help = gtk.ImageMenuItem(gtk.STOCK_HELP)
        self.main_actions_menu.append (self.main_actions_menu_item_mail)
        self.main_actions_menu.append (self.main_actions_menu_item_open)
        self.main_actions_menu.append (self.main_actions_menu_item_config)
        self.main_actions_menu.append (self.main_actions_menu_item_install)
        self.main_actions_menu.append (self.main_actions_menu_item_help)

        #Signals !
        self.MSDActManager.connect_signals()
        self.main_window.connect("delete-event", self.__closeapp_cb, None)
        self.bookmarks_button.connect("clicked", self.__show_bookmarks_cb, None)
        self.addressbook_button.connect("clicked",self.__show_addressbook_cb,None)
        self.preferences_button.connect("clicked", self.__show_preferences_cb, None)
        self.help_button.connect("clicked", self.__show_help_cb, None)
        self.hd_help_button.connect("clicked", self.__open_help_button_cb, None)
        self.hd_help_online_button.connect("clicked", self.__open_help_online_button_cb, None)
        self.hd_help_close_button.connect("clicked", self.__close_help_dialog_cb, None)
        self.help_dialog.connect("delete_event", self.__close_help_dialog_cb)
        self.expander_on_button.connect("clicked", self.__expander_on_button_cb, None)
        self.expander_off_button.connect("clicked", self.__expander_off_button_cb, None)
        self.consum_button.connect("clicked", self.__consum_button_cb)
        self.device_selected_button.connect("clicked", self.__device_selected_button_cb, None)
        self.main_actions_view.connect("row-activated", self.__action_activated_cb, None)
        self.main_actions_view.connect("event", self.__roll_over_main_actions_treeview_cb, None)
        self.main_actions_view.connect("motion-notify-event", self.__main_actions_view_tooltip, tips, 4)
        self.main_actions_view.set_events(gtk.gdk.POINTER_MOTION_MASK)
        self.main_actions_menu_item_mail.connect("activate", self.__main_actions_menu_item_mail_cb, None)
        self.main_actions_menu_item_open.connect("activate", self.__main_actions_menu_item_open_cb, None)
        self.main_actions_menu_item_config.connect("activate", self.__main_actions_menu_item_config_cb, None)
        self.main_actions_menu_item_install.connect("activate", self.__main_actions_menu_item_install_cb, None)
        self.main_actions_menu_item_help.connect("activate", self.__main_actions_menu_item_help_cb, None)

        #Rss stopper delegate
        self.mcontroller.dialer.add_stop_delegate(self.rss.kill_downloader)
                                                  
        #FIXED : Controller
        self.mcontroller.connect ("active-device-changed", self.__active_device_changed_cb)
        self.mcontroller.connect ("active-dev-card-status-changed", self.__active_device_card_status_changed)
        #FIXME : Politica nueva?
        self.mcontroller.connect ("added-device", self.__device_added_cb)
        self.mcontroller.connect ("removed-device", self.__device_removed_cb)
        self.mcontroller.dialer.connect("connected", self.__connected_cb)
        self.mcontroller.dialer.connect("disconnected", self.__disconnected_cb)
        self.mcontroller.dialer.connect("connecting", self.__connecting_cb)
        self.mcontroller.dialer.connect("disconnecting", self.__disconnecting_cb)

        if self.MSDConnManager.ppp_manager.status() == MobileManager.PPP_STATUS_CONNECTED:
            self.mcontroller.dialer.emit("connected")
        
        self.pcmcia_manager = None

        # Systray
        #FIXED : Controller
        self.systray = MSD.MSDSystray(self.MSDConf, self.main_window, self.MSDConnManager, self.MSDActManager, self.mcontroller)
        self.MSDActManager.set_systray(self.systray)

        if self.MSDConf.get_ui_general_key_value ("systray_showing_mw"):
            self.main_window.show()
        else:
            self.main_window.hide()

        self.main_stats.show()
        self.main_toolbar.show()
        
        if self.MSDConf.get_ui_general_key_value("main_expander_on") == True:
            self.__expander_on_button_cb(None, None)
        else:
            self.__expander_off_button_cb(None, None)
        
        # pongo un timeout para ejecutar las acciones que deben se ejecutadas de manera autonoma (sin intervencion del usuario)
        # al cargarse la aplicacion
        gobject.timeout_add(1,self.__initial_actions_cb)


        if len(sys.argv) == 3 :
            if os.path.exists(sys.argv[2]):
                 self.preferences.importer.import_from_file(sys.argv[2])

        gobject.timeout_add(3000, self.__import_while_app_working_cb)
        
        # Addressbook
        self._addressbook_controller = None
        self._user_book = MSDAddressBook.get_user_addressbook()
        self._select_contact_window = self.xml.get_widget("select_contact_window")
        self._select_contact_window.set_icon_from_file(MSD.icons_files_dir + "mail_16x16.png")
        self._sc_send_mail_button = self.xml.get_widget("sc_send_mail_button")
        self._sc_cancel_button = self.xml.get_widget("sc_cancel_button")
        ## treeview
        self._sc_treeview = self.xml.get_widget("sc_contacts_treeview")
        base_id = 1
        for field in [_(u"Nombre"),_(u"Correo electrónico")]:
            col = gtk.TreeViewColumn(field)
            self._sc_treeview.append_column(col)
            cell = gtk.CellRendererText()
            col.pack_start(cell, True)
            col.add_attribute(cell, 'text', base_id)
            col.set_resizable(True)
            cell.set_property("ellipsize", pango.ELLIPSIZE_END)
            base_id = base_id + 1
            
        model = gtk.ListStore(gobject.TYPE_INT,
                               gobject.TYPE_STRING,
                               gobject.TYPE_STRING)
        self._sc_treeview.set_model(model)
        #signals
        self._select_contact_window.connect("delete-event", self.__sl_delete_cb, None)
        self._sc_send_mail_button.connect("clicked", self.__sl_send_mail_cb, None)
        self._sc_cancel_button.connect("clicked", self.__sl_delete_cb, None)

        # Select active device if available
        # FIXED: Controller
        self.__select_active_device_on_init()

        # Feed updater
        #FIXED: Controller
        self.update_checker = MSD.MSDUpdateChecker (self.MSDConf, self.mcontroller)