def get_stats(self): """ Returns a tuple with the connection statistics for this dialer :return: (in_bytes, out_bytes) """ if self.iface is not None: now = time() rx_bytes, tx_bytes = get_os_object().get_iface_stats(self.iface) # if any of these three are not 0, it means that this is at # least the second time this method is executed, thus we # should have cached meaningful data if self.__rx_bytes or self.__tx_bytes or self.__time: rx_delta = rx_bytes - self.__rx_bytes tx_delta = tx_bytes - self.__tx_bytes interval = now - self.__time raw_rx_rate = int(floor(rx_delta / interval)) raw_tx_rate = int(floor(tx_delta / interval)) rx_rate = raw_rx_rate if raw_rx_rate >= 0 else 0 tx_rate = raw_tx_rate if raw_tx_rate >= 0 else 0 else: # first time this is executed, we cannot reliably compute # the rate. It is better to lie just once rx_rate = tx_rate = 0 self.__rx_bytes, self.__tx_bytes = rx_bytes, tx_bytes self.__time = now return rx_bytes, tx_bytes, rx_rate, tx_rate
def disconnect(self): d = self.device.sconn.disconnect_from_internet() osobj = get_os_object() osobj.delete_default_route(self.iface) osobj.delete_dns_info(None, self.iface) osobj.configure_iface(self.iface, '', 'down') d.addCallback(lambda _: self.Disconnected()) return d
def _set_disconnected(self, force=False): if not self.__connected and not force: return osobj = get_os_object() osobj.delete_dns_info(self.dialer.iface) self.__connected = False self.dialer.Disconnected()
def __init__(self): name = BusName(consts.WADER_SERVICE, bus=dbus.SystemBus(mainloop=gloop)) super(StartupController, self).__init__(bus_name=name, object_path=consts.WADER_OBJPATH) from wader.common.oal import get_os_object self.hm = get_os_object().hw_manager assert self.hm is not None, "Running Wader on an unsupported OS?" self.hm.register_controller(self)
def _set_connected(self): if self.__connected: return valid, dns = validate_dns(self.dns, self.dialer.conf.staticdns, [self.dialer.conf.dns1, self.dialer.conf.dns2]) if not valid: if self.dialer.conf.staticdns: self.dialer.InvalidDNS([]) else: self.dialer.InvalidDNS(self.dns) osobj = get_os_object() osobj.add_dns_info(dns, self.dialer.iface) self.__connected = True self.dialer.Connected() self.deferred.callback(self.dialer.opath)
def _generate_wvdial_ppp_options(self): if not self.conf.refuse_chap: wvdial_ppp_options = CHAP_TEMPLATE elif not self.conf.refuse_pap: wvdial_ppp_options = PAP_TEMPLATE else: # this could be a NOOP, but the user might have modified # the stock /etc/ppp/peers/wvdial file, so the safest option # is to overwrite with our known good options. wvdial_ppp_options = DEFAULT_TEMPLATE # There are some patched pppd implementations # Most systems offer 'replacedefaultroute', but not Fedora osobj = get_os_object() if hasattr(osobj, 'get_additional_wvdial_ppp_options'): wvdial_ppp_options += osobj.get_additional_wvdial_ppp_options() save_file(WVDIAL_PPPD_OPTIONS, wvdial_ppp_options)
def __init__(self, messages=None, contacts=None): super(MessagesModel, self).__init__(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT) self.tz = None try: self.tz = get_os_object().get_tzinfo() except: pass self.contacts = [] if contacts: self.contacts = map(struct_to_contact, contacts) if messages: map(self.add_sms, messages)
# 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. """tap file for Wader""" import locale # i10n stuff locale.setlocale(locale.LC_ALL, '') from wader.common.consts import APP_NAME from wader.common.startup import (create_skeleton_and_do_initial_setup, get_wader_application) # it will just return if its not necessary create_skeleton_and_do_initial_setup() # check if we have an OSPlugin for this OS/Distro from wader.common.oal import get_os_object if get_os_object() is None: message = 'OS/Distro not registered' details = """ The OS/Distro under which you are running %s is not registered in the OS database. Check the documentation for what you can do in order to support your OS/Distro """ % APP_NAME raise SystemExit("%s\n%s" % (message, details)) application = get_wader_application()
def load_sms_model(self, model): treeview = self.init_secondary_treeview() cell = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Subject"), cell, text=model.COL_TEXT) column.set_resizable(True) column.set_sort_column_id(model.COL_TEXT) cell.set_property("editable", False) cell.set_property("ellipsize", pango.ELLIPSIZE_END) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(SMS_TEXT_WIDTH) treeview.append_column(column) cell = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Number"), cell, text=model.COL_NUMBER) column.set_resizable(True) column.set_sort_column_id(model.COL_NUMBER) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(SMS_NAME_WIDTH) cell.set_property("editable", False) treeview.append_column(column) cell = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Received at"), cell, text=model.COL_DATE) column.set_resizable(True) column.set_sort_column_id(model.COL_DATE) cell.set_property("editable", False) column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) column.set_fixed_width(SMS_DATETIME_WIDTH) # render date func def render_date(cellview, cell, model, _iter, tz): if isinstance(model, gtk.TreeModelFilter): # we are dealing with the filtered model _iter = model.convert_iter_to_child_iter(_iter) model = model.get_model() sms = model.get_value(_iter, model.COL_OBJECT) if sms.datetime is not None: try: delta = datetime.datetime.now(tz) - sms.datetime # show date if more than one day has passed # otherwise, show time of recept fmt = "%x" if delta.days >= 1 else "%X" except TypeError: # dt might be == None fmt = "%x" cell.set_property("text", strftime(fmt, sms.datetime.timetuple())) else: # no datetime, a SMS_SUBMIT cell.set_property("text", _("no timestamp")) column.set_cell_data_func(cell, render_date, get_os_object().get_tzinfo()) treeview.append_column(column) # some boilerplate to be able to sort SMS by date def sort_func(m, iter1, iter2, data): date1 = m.get_value(iter1, m.COL_DATE) date2 = m.get_value(iter2, m.COL_DATE) if date1 and not date2: return 1 if date2 and not date1: return -1 return cmp(date1, date2) model.set_sort_column_id(model.COL_DATE, gtk.SORT_DESCENDING) model.set_sort_func(model.COL_DATE, sort_func, None) treeview.set_model(model)