|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /proc/22697/root/usr/share/hwbrowser/ |
Upload File : |
import gtk
import kudzu
import string
import gobject
import re
##
## I18N
##
from rhpl.translate import _, N_
import rhpl.translate as translate
domain = 'hwbrowser'
translate.textdomain (domain)
gtk.glade.bindtextdomain(domain)
xml = None
hardware = None
man_re = re.compile (r'^(?P<vendorid>[%s]{4})\s+(?P<vendorname>.*\S)\s*$' % (string.hexdigits))
pci_ids = {}
usb_ids = {}
def load_ids (what):
if what == 'pci':
ids = pci_ids
fname = "/usr/share/hwdata/pci.ids"
elif what == 'usb':
ids = usb_ids
fname = "/usr/share/hwdata/usb.ids"
_ids = {}
fd = open (fname, "r")
for line in fd.readlines ():
m = man_re.match (line)
if m:
vid_hex = m.group ('vendorid')
vname = m.group ('vendorname')
vid = string.atoi (vid_hex, 16)
_ids[vid] = vname
fd.close ()
ids.clear ()
ids.update (_ids)
def hwdata_man_find (vid, what):
if isinstance (vid, str):
vid = string.atoi (vid, 0)
if what == 'pci':
if not len (pci_ids):
load_ids ('pci')
return pci_ids.get (vid)
elif what == 'usb':
if not len (usb_ids):
load_ids ('usb')
return usb_ids.get (vid)
else:
return None
def on_generic_device_select_row (selection):
(model, iter) = selection.get_selected()
if iter == None:
return
device = model.get_value (iter, 1)
xml.get_widget("generic_manufacturer_label").show()
xml.get_widget("manufacturer_label").show()
xml.get_widget("driver_label").show()
xml.get_widget("generic_driver_label").show()
xml.get_widget("device_label").show()
xml.get_widget("generic_device_label").show()
mfg = None
if device == None:
return
if 'vendorId' in dir (device.kudzu_device) and 'bus' in dir (device.kudzu_device):
bus = None
if device.kudzu_device.bus == kudzu.BUS_PCI or device.kudzu_device.bus == kudzu.BUS_PCMCIA:
bus = 'pci'
elif device.kudzu_device.bus == kudzu.BUS_USB:
bus = 'usb'
if bus:
mfg = hwdata_man_find (device.kudzu_device.vendorId, bus)
if mfg:
desc = device.kudzu_device.desc
if not mfg:
if string.find (device.kudzu_device.desc, "|") != -1:
mfg, desc = string.split (device.kudzu_device.desc, "|")
elif (device.kudzu_device.deviceclass == kudzu.CLASS_CDROM or
device.kudzu_device.deviceclass == kudzu.CLASS_HD):
if string.find(device.kudzu_device.desc, " ") != -1:
mfg, desc = string.split(device.kudzu_device.desc, " ", 1)
else:
mfg = _("Unknown")
desc = None
elif device.kudzu_device.bus == kudzu.BUS_USB and device.kudzu_device.usbmfr != None:
mfg = device.kudzu_device.usbmfr
else:
mfg = _("Unknown")
desc = device.kudzu_device.desc
xml.get_widget ('generic_manufacturer_label').set_text (mfg)
if device.kudzu_device.driver in [None, "ignore"]:
driver = _("None or built-in")
else:
driver = device.kudzu_device.driver
xml.get_widget ('generic_driver_label').set_text (driver)
if device.kudzu_device.device != None:
xml.get_widget ('generic_device_label').set_text ('/dev/' + device.kudzu_device.device)
else:
xml.get_widget("device_label").hide()
xml.get_widget("generic_device_label").hide()
if device.kudzu_device.deviceclass == kudzu.CLASS_FLOPPY:
if device.kudzu_device.detached == 1:
#If there's no floppy drive attached, hide all the lower widgets
xml.get_widget("generic_manufacturer_label").hide()
xml.get_widget("manufacturer_label").hide()
xml.get_widget("driver_label").hide()
xml.get_widget("generic_driver_label").hide()
xml.get_widget("device_label").hide()
xml.get_widget("generic_device_label").hide()
def hydrate (devices):
tree_view = xml.get_widget ('generic_device_treeview')
list = tree_view.get_model ()
list.clear ()
for device in devices:
iter = list.append ()
#Check to see if the device is a floppy
if device.kudzu_device.deviceclass == kudzu.CLASS_FLOPPY:
#Ok, we've found a floppy. Let's see if it is detached
if device.kudzu_device.detached == 1:
#It's detached, let's show that there are no floppy drives
list.set (iter, 0, (_("No floppy drives detected")), 1, device)
else:
#It's attached. Continue as normal
list.set (iter, 0, device.get_name(), 1, device)
else:
list.set (iter, 0, device.get_name(), 1, device)
tree_view.get_selection().select_path ((0,))
def initialize (global_xml, global_hardware):
global xml, hardware
xml = global_xml
hardware = global_hardware
tree_view = xml.get_widget ('generic_device_treeview')
tree_view.get_selection ().set_mode (gtk.SELECTION_BROWSE)
tree_view.get_selection ().connect ("changed", on_generic_device_select_row)
model = gtk.ListStore (gobject.TYPE_STRING, gobject.TYPE_PYOBJECT)
model.set_sort_column_id (0, gtk.SORT_ASCENDING)
tree_view.set_model (model)
column = gtk.TreeViewColumn ()
renderer = gtk.CellRendererText ()
column.pack_start (renderer, True)
column.add_attribute (renderer, "text", 0)
tree_view.append_column (column)