PyXR

c:\projects\bitpim\src \ phoneinfo.py



0001 ### BITPIM
0002 ###
0003 ### Copyright (C) 2005 Joe Pham <djpham@bitpim.org>
0004 ###
0005 ### This program is free software; you can redistribute it and/or modify
0006 ### it under the terms of the BitPim license as detailed in the LICENSE file.
0007 ###
0008 
0009 ### $Id: phoneinfo.py 2275 2005-04-02 04:58:09Z djpham $
0010 
0011 """
0012 Module to display specific handset info.
0013 This module faciliates individual phones to provide specific phone info to be
0014 displayed.  The PhoneInfo has the following attributes:
0015 
0016 model: The phone model.
0017 manufacturer: The phone manufacturer.
0018 phone_number: The phone #.
0019 esn: Phone ESN.
0020 firmware_version: Phone firmware version.
0021 signal_quality: (0-100%) Phone reception quality.
0022 battery_level: (0-100%) Current battery level.
0023 
0024 To add (and display) other phone information:
0025 
0026 append(label_str, value_str)
0027   ie. phone_info.append('Analog/Digital:', 'Digital')
0028 
0029 For an example of implementing this feature, please see module com_samsung.
0030 
0031 """
0032 
0033 # standard modules
0034 
0035 # site-packages modules
0036 import wx
0037 import  wx.lib.fancytext as fancytext
0038 
0039 # BitPim modules
0040 
0041 #-------------------------------------------------------------------------------
0042 class PhoneInfo(object):
0043     __model_key='model'
0044     __manuf_key='_manufacturer'
0045     __phone_num_key='phone_num'
0046     __esn_key='esn'
0047     __firm_ver_key='firmware_version'
0048     __sig_qual_key='signal_quality'
0049     __battery_key='battery_level'
0050     standard_keys=(('model', 'Model:'),
0051                    ('manufacturer', 'Manufacturer:'),
0052                    ('phone_number', 'Phone Number:'),
0053                    ('esn', 'ESN:'),
0054                    ('firmware_version', 'Firmware Version:'),
0055                    ('signal_quality', 'Signal Quality:'),
0056                    ('battery_level', 'Battery Level:'))
0057     def __init__(self):
0058         self.__data={}
0059         self.__misc=[]
0060     def __get_model(self):
0061         return self.__data.get(self.__model_key, None)
0062     def __set_model(self, v):
0063         self.__data[self.__model_key]=v
0064     model=property(fset=__set_model, fget=__get_model)
0065     def __get_manufacturer(self):
0066         return self.__data.get(self.__manuf_key, None)
0067     def __set_manufacturer(self, v):
0068         self.__data[self.__manuf_key]=v
0069     manufacturer=property(fget=__get_manufacturer, fset=__set_manufacturer)
0070     def __get_phone_num(self):
0071         return self.__data.get(self.__phone_num_key, None)
0072     def __set_phone_num(self, v):
0073         self.__data[self.__phone_num_key]=v
0074     phone_number=property(fget=__get_phone_num, fset=__set_phone_num)
0075     def __get_esn(self):
0076         return self.__data.get(self.__esn_key, None)
0077     def __set_esn(self, v):
0078         self.__data[self.__esn_key]=v
0079     esn=property(fget=__get_esn, fset=__set_esn)
0080     def __get_firmware_ver(self):
0081         return self.__data.get(self.__firm_ver_key, None)
0082     def __set_firmware_ver(self, v):
0083         self.__data[self.__firm_ver_key]=v
0084     firmware_version=property(fget=__get_firmware_ver, fset=__set_firmware_ver)
0085     def __get_sig_qual(self):
0086         return self.__data.get(self.__sig_qual_key, None)
0087     def __set_sig_qual(self, v):
0088         self.__data[self.__sig_qual_key]=v
0089     signal_quality=property(fget=__get_sig_qual, fset=__set_sig_qual)
0090     def __get_battery(self):
0091         return self.__data.get(self.__battery_key, None)
0092     def __set_battery(self, v):
0093         self.__data[self.__battery_key]=v
0094     battery_level=property(fget=__get_battery, fset=__set_battery)
0095     def append(self, label_str, value_str):
0096         self.__misc.append((label_str, value_str))
0097     def __get_misc(self):
0098         return self.__misc
0099     misc=property(fget=__get_misc)
0100 
0101 #-------------------------------------------------------------------------------
0102 class PhoneInfoDialog(wx.Dialog):
0103     def __init__(self, parent, phone_info=PhoneInfo()):
0104         super(PhoneInfoDialog, self).__init__(parent, -1, 'Phone Info Dialog')
0105         self.__header_font=wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD)
0106         self.__info_label_font=wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.BOLD)
0107         self.__info_item_font=wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
0108         # main vertical box sizer
0109         vbs=wx.BoxSizer(wx.VERTICAL)
0110         # the header
0111         vbs.Add(self.__header('Phone Information'), 0, wx.ALIGN_CENTRE, 10)
0112         # the info
0113         gs=wx.FlexGridSizer(-1, 2, 5, 5)
0114         for k in PhoneInfo.standard_keys:
0115             v=getattr(phone_info, k[0])
0116             if v is None:
0117                 continue
0118             gs.Add(self.__info_label(k[1]), 1, wx.EXPAND|wx.BOTTOM|wx.ALIGN_LEFT, 5)
0119             gs.Add(self.__info_item(v), 0,  wx.EXPAND|wx.BOTTOM|wx.ALIGN_LEFT, 5)
0120         l=phone_info.misc
0121         for k in l:
0122             gs.Add(self.__info_label(k[0]), 0, wx.EXPAND|wx.BOTTOM|wx.ALIGN_LEFT, 5)
0123             gs.Add(self.__info_item(k[1]), 0, wx.EXPAND|wx.BOTTOM|wx.ALIGN_LEFT, 5)
0124         vbs.Add(gs, 1, wx.EXPAND|wx.ALL, 10)
0125         # the ok button
0126         vbs.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5)
0127         vbs.Add(wx.Button(self, wx.ID_OK), 0, wx.ALIGN_CENTRE|wx.ALL, 5)
0128         # all done
0129         self.SetSizer(vbs)
0130         self.SetAutoLayout(True)
0131         vbs.Fit(self)
0132     def __header(self, txt):
0133         static_text=wx.StaticText(self, -1, txt, style=wx.ALIGN_CENTRE)
0134         static_text.SetFont(self.__header_font)
0135         return static_text
0136     def __info_label(self, txt):
0137         if txt[-1]!=':':
0138             txt+=':'
0139         static_text=wx.StaticText(self, -1, txt, style=wx.ALIGN_LEFT)
0140         static_text.SetFont(self.__info_label_font)
0141         return static_text
0142     def __info_item(self, txt):
0143         static_text=wx.StaticText(self, -1, txt, style=wx.ALIGN_LEFT)
0144         static_text.SetFont(self.__info_item_font)
0145         return static_text
0146 

Generated by PyXR 0.9.4