# -*- coding: utf-8 -*- # # (c) Copyright 2001-2009 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.user_settings = UserSettings() self.user_settings.load() self.user_settings.debug() 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_conf.get('last_used', 'device_uri') self.initial_device = self.user_settings.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_conf.set('last_used', 'device_uri', self.device_uri) self.user_settings.last_used_device_uri = self.device_uri self.user_settings.save() self.emit(SIGNAL("DeviceUriComboBox_currentChanged"), self.device_uri) def __tr(self,s,c = None): return qApp.translate("DeviceUriComboBox",s,c)