home *** CD-ROM | disk | FTP | other *** search
Wrap
# Source Generated with Decompyle++ # File: in.pyc (Python 2.4) import sys import os import os.path as os import socket from base.g import * from base import utils, service try: from fax import fax except ImportError: log.error('Fax address book disabled - Python 2.3+ required.') sys.exit(1) from qt import * from faxaddrbookform_base import FaxAddrBookForm_base from faxaddrbookeditform_base import FaxAddrBookEditForm_base from faxaddrbookgroupsform_base import FaxAddrBookGroupsForm_base from faxaddrbookgroupeditform_base import FaxAddrBookGroupEditForm_base db = None class AddressBookItem(QListViewItem): def __init__(self, parent, abe): QListViewItem.__init__(self, parent) self.abe = abe self.recno = abe.recno self.setText(0, abe.name) self.setText(1, abe.title) self.setText(2, abe.firstname) self.setText(3, abe.lastname) self.setText(4, abe.fax) self.setText(5, ', '.join(abe.group_list)) self.setText(6, abe.notes) class GroupValidator(QValidator): def __init__(self, parent = None, name = None): QValidator.__init__(self, parent, name) def validate(self, input, pos): input = str(input) if input.find(',') > 0: return (QValidator.Invalid, pos) elif len(input) > 50: return (QValidator.Invalid, pos) else: return (QValidator.Acceptable, pos) class PhoneNumValidator(QValidator): def __init__(self, parent = None, name = None): QValidator.__init__(self, parent, name) def validate(self, input, pos): input = str(input) if not input: return (QValidator.Acceptable, pos) elif input[pos - 1] not in '0123456789-(+) ': return (QValidator.Invalid, pos) elif len(input) > 50: return (QValidator.Invalid, pos) else: return (QValidator.Acceptable, pos) class FaxAddrBookGroupEditForm(FaxAddrBookGroupEditForm_base): def __init__(self, parent = None, name = None, modal = 0, fl = 0): FaxAddrBookGroupEditForm_base.__init__(self, parent, name, modal, fl) self.edit_mode = False self.okButton.setEnabled(True) self.all_groups = db.AllGroups() self.groupnameEdit.setValidator(GroupValidator(self.groupnameEdit)) def setDlgData(self, group_name): self.edit_mode = True self.groupnameEdit.setText(group_name) self.groupnameEdit.setReadOnly(True) self.setEntries(group_name) def setEntries(self, group_name = ''): self.entriesListView.clear() all_entries = db.AllRecordEntries() for e in all_entries: i = QCheckListItem(self.entriesListView, e.name, QCheckListItem.CheckBox) if group_name and group_name in e.group_list: i.setState(QCheckListItem.On) continue self.CheckOKButton() def getDlgData(self): group_name = str(self.groupnameEdit.text()) entries = [] i = self.entriesListView.firstChild() while i is not None: if i.isOn(): entries.append(str(i.text())) i = i.itemBelow() return (group_name, entries) def groupnameEdit_textChanged(self, a0): self.CheckOKButton() def entriesListView_clicked(self, a0): self.CheckOKButton() def CheckOKButton(self): group_name = str(self.groupnameEdit.text()) if (not group_name or not (self.edit_mode)) and group_name in self.all_groups: self.okButton.setEnabled(False) return None i = self.entriesListView.firstChild() while i is not None: if i.isOn(): break i = i.itemBelow() self.okButton.setEnabled(False) return None self.okButton.setEnabled(True) class FaxAddrBookGroupsForm(FaxAddrBookGroupsForm_base): def __init__(self, parent = None, name = None, modal = 0, fl = 0): FaxAddrBookGroupsForm_base.__init__(self, parent, name, modal, fl) self.current = None QTimer.singleShot(0, self.InitialUpdate) def InitialUpdate(self): self.UpdateList() def UpdateList(self): self.groupListView.clear() first_rec = None all_groups = db.AllGroups() if len(all_groups): for group in all_groups: i = QListViewItem(self.groupListView, group, ', '.join(db.GroupEntries(group))) if first_rec is None: first_rec = i continue self.groupListView.setCurrentItem(i) self.current = i self.editButton.setEnabled(True) self.deleteButton.setEnabled(True) else: self.editButton.setEnabled(False) self.deleteButton.setEnabled(False) def newButton_clicked(self): dlg = FaxAddrBookGroupEditForm(self) dlg.setEntries() if dlg.exec_loop() == QDialog.Accepted: (group_name, entries) = dlg.getDlgData() db.UpdateGroupEntries(group_name, entries) self.UpdateList() def editButton_clicked(self): dlg = FaxAddrBookGroupEditForm(self) group_name = str(self.current.text(0)) dlg.setDlgData(group_name) if dlg.exec_loop() == QDialog.Accepted: (group_name, entries) = dlg.getDlgData() db.UpdateGroupEntries(group_name, entries) self.UpdateList() def deleteButton_clicked(self): x = QMessageBox.critical(self, self.caption(), '<b>Annoying Confirmation: Are you sure you want to delete this group?</b>', QMessageBox.Yes, QMessageBox.No | QMessageBox.Default, QMessageBox.NoButton) if x == QMessageBox.Yes: db.DeleteGroup(str(self.current.text(0))) self.UpdateList() def groupListView_currentChanged(self, a0): self.current = a0 def groupListView_doubleClicked(self, a0): self.editButton_clicked() def groupListView_rightButtonClicked(self, item, pos, a2): popup = QPopupMenu(self) popup.insertItem(self._FaxAddrBookGroupsForm__tr('New...'), self.newButton_clicked) if item is not None: popup.insertItem(self._FaxAddrBookGroupsForm__tr('Edit...'), self.editButton_clicked) popup.insertItem(self._FaxAddrBookGroupsForm__tr('Delete...'), self.deleteButton_clicked) popup.insertSeparator() popup.insertItem(self._FaxAddrBookGroupsForm__tr('Refresh List'), self.UpdateList) popup.popup(pos) def __tr(self, s, c = None): return qApp.translate('FAB', s, c) class FaxAddrBookEditForm(FaxAddrBookEditForm_base): def __init__(self, editing = True, parent = None, name = None, modal = 0, fl = 0): FaxAddrBookEditForm_base.__init__(self, parent, name, modal, fl) self.recno = -1 self.editing = editing self.faxEdit.setValidator(PhoneNumValidator(self.faxEdit)) def setDlgData(self, abe): self.recno = abe.recno self.titleEdit.setText(abe.title) self.firstnameEdit.setText(abe.firstname) self.lastnameEdit.setText(abe.lastname) self.faxEdit.setText(abe.fax) self.notesEdit.setText(abe.notes) self.nicknameEdit.setText(abe.name) self.setGroups(abe.group_list) def setGroups(self, entry_groups = []): self.groupListView.clear() for g in db.AllGroups(): i = QCheckListItem(self.groupListView, g, QCheckListItem.CheckBox) if g in entry_groups: i.setState(QCheckListItem.On) continue def getDlgData(self): in_groups = [] i = self.groupListView.firstChild() while i is not None: if i.isOn(): in_groups.append(str(i.text())) i = i.itemBelow() return fax.AddressBookEntry((self.recno, str(self.nicknameEdit.text()), str(self.titleEdit.text()), str(self.firstnameEdit.text()), str(self.lastnameEdit.text()), str(self.faxEdit.text()), ', '.join(in_groups), str(self.notesEdit.text()))) def firstnameEdit_textChanged(self, a0): pass def lastnameEdit_textChanged(self, a0): pass def groupsButton2_clicked(self): (new_group_name, ok) = QInputDialog.getText(self._FaxAddrBookEditForm__tr('New Fax Group'), self._FaxAddrBookEditForm__tr('New Group Name:')) if ok and len(new_group_name): new_group_name = str(new_group_name) abe = db.GetEntryByRecno(self.recno) if new_group_name not in abe.group_list: abe.group_list.append(new_group_name) db.update([ 'recno'], [ self.recno], [ ','.join(abe.group_list)], [ 'groups']) self.setGroups(abe.group_list) def nicknameEdit_textChanged(self, nickname): self.CheckOKButton(nickname, None) def faxEdit_textChanged(self, fax): self.CheckOKButton(None, fax) def CheckOKButton(self, nickname = None, fax = None): if nickname is None: nickname = str(self.nicknameEdit.text()) if fax is None: fax = str(self.faxEdit.text()) if len(nickname): pass ok = len(fax) if nickname and not (self.editing): for x in db.AllRecordEntries(): if nickname == x.name: ok = False continue self.OKButton.setEnabled(ok) def __tr(self, s, c = None): return qApp.translate('FAB', s, c) class FaxAddrBookForm(FaxAddrBookForm_base): def __init__(self, parent = None, name = None, modal = 0, fl = 0): global db FaxAddrBookForm_base.__init__(self, parent, name, modal, fl) icon = QPixmap(os.path.join(prop.image_dir, 'HPmenu.png')) self.setIcon(icon) db = fax.FaxAddressBook() self.init_problem = False self.current = None try: invalids = db.validate() except: invalids = True if invalids: log.error('Fax address book file is invalid') if type(invalids) == type([]): log.error(invalids) self.FailureUI(self._FaxAddrBookForm__tr('<b>Fax address book file %s is invalid.</b><p>Please check the file for problems.' % db.filename())) self.init_problem = True db.pack() self.all_groups = [] self.hpssd_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: self.hpssd_sock.connect((prop.hpssd_host, prop.hpssd_port)) except socket.error: log.error('Unable to contact HPLIP I/O (hpssd).') self.hpssd_sock.close() self.hpssd_sock = None QTimer.singleShot(0, self.InitialUpdate) def InitialUpdate(self): if self.init_problem: self.close() return None self.UpdateList() def UpdateList(self): self.addressListView.clear() first_rec = None all_entries = db.AllRecordEntries() log.debug('Number of records is: %d' % len(all_entries)) if len(all_entries) > 0: for abe in all_entries: i = AddressBookItem(self.addressListView, abe) if first_rec is None: first_rec = i continue self.addressListView.setCurrentItem(i) self.current = i self.editButton.setEnabled(True) self.deleteButton.setEnabled(True) else: self.editButton.setEnabled(False) self.deleteButton.setEnabled(False) def groupButton_clicked(self): FaxAddrBookGroupsForm(self).exec_loop() self.sendUpdateEvent() self.UpdateList() def newButton_clicked(self): dlg = FaxAddrBookEditForm(False, self) dlg.setGroups() dlg.groupsButton2.setEnabled(False) if dlg.exec_loop() == QDialog.Accepted: db.insert(dlg.getDlgData()) self.sendUpdateEvent() self.UpdateList() def CurrentRecordEntry(self): return fax.AddressBookEntry(db.select([ 'recno'], [ self.current.recno])[0]) def editButton_clicked(self): dlg = FaxAddrBookEditForm(True, self) dlg.setDlgData(self.CurrentRecordEntry()) if dlg.exec_loop() == QDialog.Accepted: db.update([ 'recno'], [ self.current.recno], dlg.getDlgData()) self.sendUpdateEvent() self.UpdateList() def deleteButton_clicked(self): x = QMessageBox.critical(self, self.caption(), '<b>Annoying Confirmation: Are you sure you want to delete this address book entry?</b>', QMessageBox.Yes, QMessageBox.No | QMessageBox.Default, QMessageBox.NoButton) if x == QMessageBox.Yes: db.delete([ 'recno'], [ self.current.recno]) self.UpdateList() self.sendUpdateEvent() def addressListView_rightButtonClicked(self, item, pos, a2): popup = QPopupMenu(self) popup.insertItem(self._FaxAddrBookForm__tr('New...'), self.newButton_clicked) if item is not None: popup.insertItem(self._FaxAddrBookForm__tr('Edit...'), self.editButton_clicked) popup.insertItem(self._FaxAddrBookForm__tr('Delete...'), self.deleteButton_clicked) popup.insertSeparator() popup.insertItem(self._FaxAddrBookForm__tr('Refresh List'), self.UpdateList) popup.popup(pos) def addressListView_doubleClicked(self, a0): self.editButton_clicked() def addressListView_currentChanged(self, item): self.current = item def FailureUI(self, error_text): QMessageBox.critical(self, self.caption(), error_text, QMessageBox.Ok, QMessageBox.NoButton, QMessageBox.NoButton) def WarningUI(self, msg): QMessageBox.warning(self, self.caption(), msg, QMessageBox.Ok, QMessageBox.NoButton, QMessageBox.NoButton) def __tr(self, s, c = None): return qApp.translate('FAB', s, c) def accept(self): self.sendUpdateEvent() if self.hpssd_sock is not None: self.hpssd_sock.close() FaxAddrBookForm_base.accept(self) def sendUpdateEvent(self): if self.hpssd_sock is not None: service.sendEvent(self.hpssd_sock, EVENT_FAX_ADDRESS_BOOK_UPDATED)