/trunk/finfaktura/gui_finfaktura_oppsett.py

http://finfaktura.googlecode.com/ · Python · 88 lines · 68 code · 9 blank · 11 comment · 11 complexity · 58da1b74e3973cc0ceb7dcd0de477477 MD5 · raw file

  1. # -*- coding: utf-8 -*-
  2. # kate: indent-width 4;
  3. ###########################################################################
  4. # Copyright (C) 2008 H?vard Gulldahl
  5. # <havard@gulldahl.no>
  6. #
  7. # Lisens: GPL2
  8. #
  9. # $Id: faktura.py 260 2008-05-11 08:59:23Z havard.gulldahl $
  10. #
  11. ###########################################################################
  12. import sys, logging, os.path, glob
  13. from PyQt4 import QtCore, QtGui
  14. from ui import finfaktura_oppsett_ui
  15. class finfakturaOppsett(finfaktura_oppsett_ui.Ui_FinFakturaOppsett):
  16. def __init__(self, faktura):
  17. self.faktura = faktura
  18. self.gui = QtGui.QDialog()
  19. self.setupUi(self.gui)
  20. self.gui.connect(self.oppsettFakturakatalogSok, QtCore.SIGNAL("clicked()"), self.endreFakturakatalog)
  21. self.gui.connect(self.oppsettProgrammerVisSok, QtCore.SIGNAL("clicked()"), self.endreProgramVis)
  22. self.vis()
  23. self.gui.show()
  24. def exec_(self):
  25. res = self.gui.exec_()
  26. if res == QtGui.QDialog.Accepted:
  27. logging.debug('oppdaterer')
  28. self.oppdater()
  29. return res
  30. def vis(self):
  31. logging.debug('Fakturakatalog fra db: %s', repr(self.faktura.oppsett.fakturakatalog))
  32. logging.debug('pdf-prog fra db: %s', repr(self.faktura.oppsett.vispdf))
  33. self.oppsettFakturakatalog.setText(self.faktura.oppsett.fakturakatalog)
  34. if self.faktura.oppsett.vispdf:
  35. self.oppsettProgramVisPDF.addItem('Gjeldende valg (%s)' % self.faktura.oppsett.vispdf, QtCore.QVariant(self.faktura.oppsett.vispdf))
  36. p = {
  37. 'kpdf (KDE3)': '/usr/bin/kpdf',
  38. 'okular (KDE4)': '/usr/bin/okular',
  39. 'evince (Gnome)': '/usr/bin/evince',
  40. 'xpdf (X11)': '/usr/bin/xpdf',
  41. 'epdfview (X11)': '/usr/bin/epdfview',
  42. 'Acrobat reader (win)': '%SYSTEMDRIVE%\%PROGRAMFILES%\Adobe\Reader*\Reader\AcroRd32.exe',
  43. 'Foxit reader (win)': '%SYSTEMDRIVE%\%PROGRAMFILES%\Foxit Software\Foxit Reader\Foxit Reader.exe',
  44. }
  45. for tekst, s in p.iteritems():
  46. sti = os.path.expandvars(s)
  47. logging.debug('sti %s, exists: %s', sti, os.path.exists(sti))
  48. if os.path.exists(sti):
  49. self.oppsettProgramVisPDF.addItem(tekst, QtCore.QVariant(sti + ' %s'))
  50. elif '*' in sti:
  51. for _sti in [ _s for _s in glob.glob(sti) if os.path.exists(_s) ]:
  52. self.oppsettProgramVisPDF.addItem(tekst, QtCore.QVariant(_sti+ ' %s'))
  53. if sys.platform.startswith('win'):
  54. self.oppsettProgramVisPDF.addItem('Vis i Utforsker (win)', QtCore.QVariant('explorer /c,%s'))
  55. def endreFakturakatalog(self):
  56. nu = self.oppsettFakturakatalog.text()
  57. startdir = nu
  58. ny = QtGui.QFileDialog.getExistingDirectory(self.gui,
  59. "Velg katalog fakturaene skal lagres i",
  60. startdir,
  61. QtGui.QFileDialog.ShowDirsOnly
  62. )
  63. if len(unicode(ny)) > 0:
  64. logging.debug("Setter ny fakturakataolg: %s" % ny)
  65. self.faktura.oppsett.fakturakatalog = unicode(ny)
  66. self.oppsettFakturakatalog.setText(unicode(ny))
  67. def endreProgramVis(self):
  68. ny = unicode(QtGui.QFileDialog.getOpenFileName(self.gui,
  69. u"Velg et program ? ?pne PDF i",
  70. self.oppsettProgramVisPDF.itemData(self.oppsettProgramVisPDF.currentIndex()).toPyObject())
  71. )
  72. if len(ny) > 0:
  73. logging.debug("Setter nytt visningsprogram: %s" % ny)
  74. self.faktura.oppsett.vispdf = ny
  75. self.oppsettProgramVisPDF.insertItem(0, ny, QtCore.QVariant(ny))
  76. def oppdater(self):
  77. logging.debug("Lager oppsett")
  78. self.faktura.oppsett.fakturakatalog = unicode(self.oppsettFakturakatalog.text())
  79. self.faktura.oppsett.vispdf = unicode(self.oppsettProgramVisPDF.itemData(self.oppsettProgramVisPDF.currentIndex()).toPyObject())