diff options
Diffstat (limited to 'ui4/deviceuricombobox.py')
-rw-r--r-- | ui4/deviceuricombobox.py | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/ui4/deviceuricombobox.py b/ui4/deviceuricombobox.py new file mode 100644 index 000000000..4f7858528 --- /dev/null +++ b/ui4/deviceuricombobox.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +# +# (c) Copyright 2001-2008 Hewlett-Packard Development Company, L.P. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Author: Don Welch +# + +# Std Lib + +# Local +from base.g import * +from ui_utils import * +from base import device + +# Qt +from PyQt4.QtCore import * +from PyQt4.QtGui import * + + +DEVICEURICOMBOBOX_TYPE_PRINTER_ONLY = 0 +DEVICEURICOMBOBOX_TYPE_FAX_ONLY = 1 +DEVICEURICOMBOBOX_TYPE_PRINTER_AND_FAX = 2 + + +class DeviceUriComboBox(QWidget): + def __init__(self, parent): + QWidget.__init__(self, parent) + self.device_uri = '' + self.initial_device = None + self.updating = False + self.typ = DEVICEURICOMBOBOX_TYPE_PRINTER_ONLY + self.filter = None + self.devices = None + self.initUi() + + + def initUi(self): + HBoxLayout = QHBoxLayout(self) + HBoxLayout.setObjectName("HBoxLayout") + + self.NameLabel = QLabel(self) + self.NameLabel.setObjectName("NameLabel") + HBoxLayout.addWidget(self.NameLabel) + + SpacerItem = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Minimum) + HBoxLayout.addItem(SpacerItem) + + self.ComboBox = QComboBox(self) + sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ComboBox.sizePolicy().hasHeightForWidth()) + self.ComboBox.setSizePolicy(sizePolicy) + self.ComboBox.setObjectName("ComboBox") + HBoxLayout.addWidget(self.ComboBox) + + self.NameLabel.setText(self.__tr("Device:")) + +# self.connect(self.ComboBox, SIGNAL("currentIndexChanged(int)"), +# self.ComboBox_currentIndexChanged) + + self.connect(self.ComboBox, SIGNAL("currentIndexChanged(const QString &)"), + self.ComboBox_currentIndexChanged) + + + def setType(self, typ): + if typ in (DEVICEURICOMBOBOX_TYPE_PRINTER_ONLY, + DEVICEURICOMBOBOX_TYPE_FAX_ONLY, + DEVICEURICOMBOBOX_TYPE_PRINTER_AND_FAX): + self.typ = typ + + + def setFilter(self, filter): + self.filter = filter + + + def setInitialDevice(self, device_uri): + self.initial_device = device_uri + + + def setDevices(self): + if self.typ == DEVICEURICOMBOBOX_TYPE_PRINTER_ONLY: + be_filter = ['hp'] + + elif self.typ == DEVICEURICOMBOBOX_TYPE_FAX_ONLY: + be_filter = ['hpfax'] + self.NameLabel.setText(self.__tr("Fax Device:")) + + else: # DEVICEURICOMBOBOX_TYPE_PRINTER_AND_FAX + be_filter = ['hp', 'hpfax'] + + self.devices = device.getSupportedCUPSDevices(be_filter, self.filter) + return len(self.devices) + + + def updateUi(self): + if self.devices is None: + self.setDevices() + + self.device_index = {} + + if self.devices: + if self.initial_device is None: + self.initial_device = user_cfg.last_used.device_uri + + self.updating = True + try: + k = 0 + for i, d in enumerate(self.devices): + self.ComboBox.insertItem(i, d) + + if self.initial_device is not None and d == self.initial_device: + self.initial_device = None + k = i + + self.ComboBox.setCurrentIndex(-1) + finally: + self.updating = False + + self.ComboBox.setCurrentIndex(k) + + if len(self.devices) == 1: + self.emit(SIGNAL("DeviceUriComboBox_oneDevice")) + + else: + self.emit(SIGNAL("DeviceUriComboBox_noDevices")) + + + def ComboBox_currentIndexChanged(self, t): + if self.updating: + return + + self.device_uri = unicode(t) + if self.device_uri: + user_cfg.last_used.device_uri = self.device_uri + self.emit(SIGNAL("DeviceUriComboBox_currentChanged"), self.device_uri) + + + def __tr(self,s,c = None): + return qApp.translate("DeviceUriComboBox",s,c) |