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