diff options
author | Jinkun Jang <jinkun.jang@samsung.com> | 2013-03-13 01:42:35 +0900 |
---|---|---|
committer | Jinkun Jang <jinkun.jang@samsung.com> | 2013-03-13 01:42:35 +0900 |
commit | 72835b3d805ac6c7cdaac7d3aff107567e938314 (patch) | |
tree | 0f2a04dc3d0672c0960a62804c6e7758673e393c /ui4/infodialog.py | |
parent | eb5e5ee9adb02776056d1b4494f66150a2fc45f1 (diff) | |
download | hplip-72835b3d805ac6c7cdaac7d3aff107567e938314.tar.gz hplip-72835b3d805ac6c7cdaac7d3aff107567e938314.tar.bz2 hplip-72835b3d805ac6c7cdaac7d3aff107567e938314.zip |
Tizen 2.1 base
Diffstat (limited to 'ui4/infodialog.py')
-rw-r--r-- | ui4/infodialog.py | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/ui4/infodialog.py b/ui4/infodialog.py new file mode 100644 index 0000000..2d93068 --- /dev/null +++ b/ui4/infodialog.py @@ -0,0 +1,310 @@ +# -*- 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 +# +# Authors: Don Welch +# + +# StdLib +import os.path + +# Local +from base.g import * +from base import device, utils +from prnt import cups +from base.codes import * +from ui_utils import * + +# Qt +from PyQt4.QtCore import * +from PyQt4.QtGui import * + +# Ui +from infodialog_base import Ui_Dialog +from deviceuricombobox import DEVICEURICOMBOBOX_TYPE_PRINTER_AND_FAX + + +class InfoDialog(QDialog, Ui_Dialog): + def __init__(self, parent, device_uri): + QDialog.__init__(self, parent) + self.device_uri = device_uri + #self.tabs = [] + self.setupUi(self) + self.initUi() + + QTimer.singleShot(0, self.updateUi) + + + def initUi(self): + # connect signals/slots + self.connect(self.CancelButton, SIGNAL("clicked()"), self.CancelButton_clicked) + self.connect(self.DeviceComboBox, SIGNAL("DeviceUriComboBox_noDevices"), self.DeviceUriComboBox_noDevices) + self.connect(self.DeviceComboBox, SIGNAL("DeviceUriComboBox_currentChanged"), self.DeviceUriComboBox_currentChanged) + + # Application icon + self.setWindowIcon(QIcon(load_pixmap('hp_logo', '128x128'))) + + if self.device_uri: + self.DeviceComboBox.setInitialDevice(self.device_uri) + + self.DeviceComboBox.setType(DEVICEURICOMBOBOX_TYPE_PRINTER_AND_FAX) + + self.headers = [self.__tr("Key"), self.__tr("Value")] + self.history_headers = [self.__tr("Date/Time"), None, + self.__tr("Event Code"), self.__tr("Description"), + self.__tr("User"), self.__tr("CUPS Job ID"), + self.__tr("Doc. Title")] + + + def updateUi(self): + self.DeviceComboBox.updateUi() + #self.updateInfoTable() + + + def updateInfoTable(self): + QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) + self.DynamicTableWidget.clear() + self.DynamicTableWidget.setRowCount(0) + self.DynamicTableWidget.setColumnCount(0) + flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled + + while self.TabWidget.count() > 3: + self.TabWidget.removeTab(3) + + self.DynamicTableWidget.clear() + self.DynamicTableWidget.setRowCount(0) + self.DynamicTableWidget.setColumnCount(len(self.headers)) + self.DynamicTableWidget.setHorizontalHeaderLabels(self.headers) + + # + # Static Data + # + + try: + d = device.Device(self.device_uri, None) + except Error: + QApplication.restoreOverrideCursor() + FailureUI(self, self.__tr("<b>Unable to open device %1.</b>").arg(self.device_uri)) + #self.close() + return + + self.StaticTableWidget.clear() + + self.StaticTableWidget.setColumnCount(len(self.headers)) + self.StaticTableWidget.setHorizontalHeaderLabels(self.headers) + + mq_keys = d.mq.keys() + mq_keys.sort() + + self.StaticTableWidget.setRowCount(len(mq_keys)) + + for row, key in enumerate(mq_keys): + i = QTableWidgetItem(QString(key)) + i.setFlags(flags) + self.StaticTableWidget.setItem(row, 0, i) + + i = QTableWidgetItem(QString(str(d.mq[key]))) + i.setFlags(flags) + self.StaticTableWidget.setItem(row, 1, i) + + self.StaticTableWidget.resizeColumnToContents(0) + self.StaticTableWidget.resizeColumnToContents(1) + self.StaticTableWidget.setSortingEnabled(True) + self.StaticTableWidget.sortItems(0) + + # + # Dynamic Data + # + + try: + try: + d.open() + d.queryDevice() + except Error, e: + QApplication.restoreOverrideCursor() + FailureUI(self, self.__tr("<b>Unable to open device %1.</b>").arg(self.device_uri)) + #self.close() + return + + dq_keys = d.dq.keys() + dq_keys.sort() + + self.DynamicTableWidget.setRowCount(len(dq_keys)) + + for row, key in enumerate(dq_keys): + i = QTableWidgetItem(QString(key)) + i.setFlags(flags) + self.DynamicTableWidget.setItem(row, 0, i) + + i = QTableWidgetItem(QString(str(d.dq[key]))) + i.setFlags(flags) + self.DynamicTableWidget.setItem(row, 1, i) + + + self.DynamicTableWidget.resizeColumnToContents(0) + self.DynamicTableWidget.resizeColumnToContents(1) + self.DynamicTableWidget.setSortingEnabled(True) + self.DynamicTableWidget.sortItems(0) + + finally: + d.close() + + # + # History Table + # + + self.HistoryTableWidget.clear() + self.HistoryTableWidget.setRowCount(0) + + if d.device_type == DEVICE_TYPE_FAX: + self.history_headers[1] = self.__tr("Fax") + else: + self.history_headers[1] = self.__tr("Printer") + + self.HistoryTableWidget.setColumnCount(len(self.history_headers)) + self.HistoryTableWidget.setHorizontalHeaderLabels(self.history_headers) + + history = d.queryHistory() + history.reverse() + self.HistoryTableWidget.setRowCount(len(history)) + + for row, h in enumerate(history): + dt = QDateTime() + dt.setTime_t(int(h.timedate)) + dt = dt.toString() + + ess = device.queryString(h.event_code, 0) + + for col, t in enumerate([dt, h.printer_name, + unicode(h.event_code), ess, + h.username, unicode(h.job_id), + h.title]): + + i = QTableWidgetItem(QString(t)) + i.setFlags(flags) + self.HistoryTableWidget.setItem(row, col, i) + + self.HistoryTableWidget.resizeColumnToContents(0) + self.HistoryTableWidget.resizeColumnToContents(1) + self.HistoryTableWidget.setSortingEnabled(True) + self.HistoryTableWidget.sortItems(0) + + # + # Printer Data + # + + printers = cups.getPrinters() + + for p in printers: + if p.device_uri == self.device_uri: + Tab = QWidget() + Tab.setObjectName(QString(p.name)) + + GridLayout = QGridLayout(Tab) + GridLayout.setObjectName(QString("GridLayout-%s" % p.name)) + + Table = QTableWidget(Tab) + Table.setAlternatingRowColors(True) + Table.setSelectionMode(QAbstractItemView.SingleSelection) + Table.setSelectionBehavior(QAbstractItemView.SelectRows) + Table.setVerticalScrollMode(QAbstractItemView.ScrollPerItem) + Table.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel) + Table.setGridStyle(Qt.DotLine) + Table.setObjectName(QString("Table-%s" % p.name)) + GridLayout.addWidget(Table, 0, 0, 1, 1) + self.TabWidget.addTab(Tab, QString(p.name)) + + Table.setColumnCount(len(self.headers)) + Table.setHorizontalHeaderLabels(self.headers) + + cups.resetOptions() + cups.openPPD(p.name) + current_options = dict(cups.getOptions()) + + #current_options['cups_error_log_level'] = cups.getErrorLogLevel() + + try: + f = file(os.path.expanduser('~/.cups/lpoptions')) + except IOError, e: + log.debug(str(e)) + current_options['lpoptions_file_data'] = QString("(%1)").arg(str(e)) + else: + text = f.read() + for d in text.splitlines(): + if p.name in d: + current_options['lpoptions_file_data'] = d + break + else: + current_options['lpoptions_file_data'] = self.__tr("(no data)") + + keys = current_options.keys() + keys.sort() + + Table.setRowCount(len(keys)) + + for row, key in enumerate(keys): + i = QTableWidgetItem(QString(key)) + i.setFlags(flags) + Table.setItem(row, 0, i) + + if key == 'printer-state': + state = int(current_options[key]) + if state == cups.IPP_PRINTER_STATE_IDLE: + i = QTableWidgetItem(self.__tr("idle (%1)").arg(state)) + elif state == cups.IPP_PRINTER_STATE_PROCESSING: + i = QTableWidgetItem(self.__tr("busy/printing (%1)").arg(state)) + elif state == cups.IPP_PRINTER_STATE_STOPPED: + i = QTableWidgetItem(self.__tr("stopped (%1)").arg(state)) + else: + i = QTableWidgetItem(QString(str(state))) + else: + i = QTableWidgetItem(QString(str(current_options[key]))) + + i.setFlags(flags) + Table.setItem(row, 1, i) + + Table.resizeColumnToContents(0) + Table.resizeColumnToContents(1) + Table.setSortingEnabled(True) + Table.sortItems(0) + + cups.closePPD() + self.TabWidget.setCurrentIndex(0) + QApplication.restoreOverrideCursor() + + + def DeviceUriComboBox_currentChanged(self, device_uri): + self.device_uri = device_uri + self.updateInfoTable() + + + def DeviceUriComboBox_noDevices(self): + FailureUI(self, self.__tr("<b>No devices found.</b>")) + self.close() + + + def CancelButton_clicked(self): + self.close() + + # + # Misc + # + + def __tr(self,s,c = None): + return qApp.translate("InfoDialog",s,c) + + |