mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
118 lines
4.6 KiB
Python
118 lines
4.6 KiB
Python
![]() |
from PyQt4.QtCore import Qt
|
||
|
from PyQt4.QtGui import QSizePolicy, QTreeWidget, QTreeWidgetItem, QLabel
|
||
|
|
||
|
from PyKDE4.kdecore import i18n
|
||
|
from PyKDE4.solid import Solid
|
||
|
from PyKDE4.kdeui import KVBox, KHBox
|
||
|
|
||
|
helpText = """The Solid class discovers information about the hardware on a machine.
|
||
|
|
||
|
Solid.StorageDrive objects retrieve information about storage devices on a
|
||
|
machine. the table below shows the data for your machine.
|
||
|
|
||
|
We use Solid.Device.allDevices () to get a list of all devices, and then
|
||
|
filter it for Solid.StorageDrive types.
|
||
|
"""
|
||
|
|
||
|
class MainFrame(KVBox):
|
||
|
def __init__(self, parent=None):
|
||
|
KVBox.__init__(self, parent)
|
||
|
self.help = QLabel (i18n (helpText), self)
|
||
|
self.layout ().setAlignment (self.help, Qt.AlignHCenter)
|
||
|
self.setSpacing (10)
|
||
|
|
||
|
hBox = KHBox (self)
|
||
|
|
||
|
display = QTreeWidget (hBox)
|
||
|
display.setSizePolicy (QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||
|
display.setHeaderLabels (["Device", "Bus", "Type", "Hot Plug", "Removable"])
|
||
|
display.setColumnWidth (0, 150)
|
||
|
|
||
|
# convert enum values to strings for display
|
||
|
bus2Str = {Solid.StorageDrive.Ide : "IDE",\
|
||
|
Solid.StorageDrive.Usb : "USB",\
|
||
|
Solid.StorageDrive. Ieee1394 : "IEE1394",\
|
||
|
Solid.StorageDrive.Scsi : "SCSI",\
|
||
|
Solid.StorageDrive.Sata : "SATA",\
|
||
|
Solid.StorageDrive.Platform : "Platform"
|
||
|
}
|
||
|
|
||
|
|
||
|
driveType2Str = {Solid.StorageDrive.HardDisk : "Hard Disk",\
|
||
|
Solid.StorageDrive.CdromDrive : "CD ROM",\
|
||
|
Solid.StorageDrive.Floppy : "Floppy",\
|
||
|
Solid.StorageDrive.Tape : "Tape",\
|
||
|
Solid.StorageDrive.CompactFlash : "Compact Flash",\
|
||
|
Solid.StorageDrive.MemoryStick : "Memory Stick",\
|
||
|
Solid.StorageDrive.SmartMedia : "Smart Media",\
|
||
|
Solid.StorageDrive.SdMmc : "SD MMC",\
|
||
|
Solid.StorageDrive.Xd : "XD"
|
||
|
}
|
||
|
|
||
|
|
||
|
# retrieve a list of Solid.Device for this machine
|
||
|
deviceList = Solid.Device.allDevices ()
|
||
|
|
||
|
# filter the list of all devices and display matching results
|
||
|
# note that we never create a Solid.StorageDrive object, but
|
||
|
# receive one from the call to 'asDeviceInterface'
|
||
|
for device in deviceList:
|
||
|
if device.isDeviceInterface (Solid.DeviceInterface.StorageDrive):
|
||
|
drive = device.asDeviceInterface (Solid.DeviceInterface.StorageDrive)
|
||
|
QTreeWidgetItem (display, [device.product (),
|
||
|
bus2Str [drive.bus ()],
|
||
|
driveType2Str [drive.driveType ()],
|
||
|
str (drive.isHotpluggable ()),
|
||
|
str (drive.isRemovable ())])
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
# This example can be run standalone
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
|
||
|
import sys
|
||
|
|
||
|
from PyQt4.QtCore import SIGNAL
|
||
|
|
||
|
from PyKDE4.kdecore import KCmdLineArgs, KAboutData, KLocalizedString, ki18n
|
||
|
from PyKDE4.kdeui import KApplication, KMainWindow
|
||
|
|
||
|
|
||
|
|
||
|
class MainWin (KMainWindow):
|
||
|
def __init__ (self, *args):
|
||
|
KMainWindow.__init__ (self)
|
||
|
|
||
|
self.resize(640, 480)
|
||
|
self.setCentralWidget (MainFrame (self))
|
||
|
|
||
|
#-------------------- main ------------------------------------------------
|
||
|
|
||
|
appName = "Solid_StorageDrive"
|
||
|
catalog = ""
|
||
|
programName = ki18n ("Solid_StorageDrive") #ki18n required here
|
||
|
version = "1.0"
|
||
|
description = ki18n ("Solid.StorageDrive Example") #ki18n required here
|
||
|
license = KAboutData.License_GPL
|
||
|
copyright = ki18n ("(c) 2007 Jim Bublitz") #ki18n required here
|
||
|
text = ki18n ("none") #ki18n required here
|
||
|
homePage = "www.riverbankcomputing.com"
|
||
|
bugEmail = "jbublitz@nwinternet.com"
|
||
|
|
||
|
aboutData = KAboutData (appName, catalog, programName, version, description,
|
||
|
license, copyright, text, homePage, bugEmail)
|
||
|
|
||
|
# ki18n required for first two addAuthor () arguments
|
||
|
aboutData.addAuthor (ki18n ("Troy Melhase"), ki18n ("original concept"))
|
||
|
aboutData.addAuthor (ki18n ("Jim Bublitz"), ki18n ("pykdedocs"))
|
||
|
|
||
|
KCmdLineArgs.init (sys.argv, aboutData)
|
||
|
|
||
|
app = KApplication ()
|
||
|
mainWindow = MainWin (None, "main window")
|
||
|
mainWindow.show()
|
||
|
app.connect (app, SIGNAL ("lastWindowClosed ()"), app.quit)
|
||
|
app.exec_ ()
|