Exemplo n.º 1
0
    def evaluate(self, variables):
        binder = Binder(variables)
        b_expr = binder.bindexpression(self.tree.root)

        diag = binder.diagnostics.information

        if diag: return EvaluationResult(None, diag, None)
        eval = BExpressionEvaluator(b_expr, variables)
        res = eval.evaluate()
        return EvaluationResult(b_expr, [], res)
Exemplo n.º 2
0
  def __init__(self, parent = None):
    QMainWindow.__init__(self, parent)
    
    self.settings = QSettings(' '.join([self.name, self.version]), 'Nikita Nikishin')
    
    self.ui = gui.Ui_MainWindow()
    self.ui.setupUi(self)
    
    self.setWindowTitle(self.full_name)
    self.previews = True
    
    self.projectFiles = QDialog(self)
    self.projectFiles.ui = project_files.Ui_ProjectFilesDialog()
    self.projectFiles.ui.setupUi(self.projectFiles)

    self.projectFiles.ui.browseButton1.clicked.connect(self.showFileDialog)
    self.projectFiles.ui.browseButton2.clicked.connect(self.showSaveDialog)
    self.projectFiles.ui.addToProjectButton.clicked.connect(self.addToProject)
    self.projectFiles.ui.removeFromProjectButton.clicked.connect(self.removeFromProject)
    self.projectFiles.ui.okButton.clicked.connect(self.projectFilesAccepted)
    
    self.projectFiles.ui.addToProjectButton.setIcon(self.QIconFromTheme('go-next'))
    self.projectFiles.ui.removeFromProjectButton.setIcon(self.QIconFromTheme('go-previous'))
    
    self.projectFiles.ui.browseButton1.setIcon(self.QIconFromTheme('document-save'))
    self.projectFiles.ui.browseButton2.setIcon(self.QIconFromTheme('document-save'))

    self.projectFiles.ui.okButton.setIcon(self.QIconFromTheme('dialog-ok'))
    self.projectFiles.ui.cancelButton.setIcon(self.QIconFromTheme('process-stop'))
    
    self.projectFiles.ui.selectAllButton1.setIcon(self.QIconFromTheme('gtk-select-all'))
    self.projectFiles.ui.selectAllButton2.setIcon(self.QIconFromTheme('gtk-select-all'))
    
    self.ui.startButton.setIcon(self.QIconFromTheme('media-playback-start'))
    self.ui.addPageButton.setIcon(self.QIconFromTheme('list-add'))
    self.ui.removePageButton.setIcon(self.QIconFromTheme('list-remove'))
    
    self.ui.newMenuItem.setIcon(self.QIconFromTheme('document-new'))
    self.ui.openMenuItem.setIcon(self.QIconFromTheme('document-open'))
    self.ui.saveMenuItem.setIcon(self.QIconFromTheme('document-save'))
    self.ui.saveAsMenuItem.setIcon(self.QIconFromTheme('document-save-as'))
    self.ui.quitMenuItem.setIcon(self.QIconFromTheme('exit'))
    self.ui.helpMenuItem.setIcon(self.QIconFromTheme('help'))
    self.ui.aboutMenuItem.setIcon(self.QIconFromTheme('gtk-about'))
    
    self.ui.startBindingMenuItem.setIcon(self.QIconFromTheme('media-playback-start'))
    self.ui.addPageMenuItem.setIcon(self.QIconFromTheme('list-add'))
    self.ui.removePageMenuItem.setIcon(self.QIconFromTheme('list-remove'))
    
    self.ui.moveToTopButton.setIcon(self.QIconFromTheme('go-top'))
    self.ui.moveUpButton.setIcon(self.QIconFromTheme('go-up'))
    self.ui.moveDownButton.setIcon(self.QIconFromTheme('go-down'))
    self.ui.moveToBottomButton.setIcon(self.QIconFromTheme('go-bottom'))
    
    self.ui.clearLogButton.setIcon(self.QIconFromTheme('gtk-clear'))
    self.ui.saveLogButton.setIcon(self.QIconFromTheme('document-save'))
    
    self.ui.outputFileBrowseButton.setIcon(self.QIconFromTheme('document-save'))
    
    self.ui.actionReload_Thumbnails.setIcon(self.QIconFromTheme('reload'))
    self.ui.actionAbout_Qt4.setIcon(self.QIconFromTheme('gtk-about'))
    
    self.ui.saveMenuItem.setEnabled(False)
    self.ui.startBindingMenuItem.setEnabled(False)
    self.ui.removePageMenuItem.setEnabled(False)
    
    
    self.thumbnailer = Thumbnailer(self.ui.pageList)
    self.previewer = Previewer()
    self.binder = Binder()
    
    self.connect(self.thumbnailer, SIGNAL('makeIcon(int, QImage)'), self.makeIcon)
    self.connect(self.previewer, SIGNAL('previewPage(QImage)'), self.previewPage)    
    
    self.connect(self.binder, SIGNAL('updateProgress(int, QString)'), self.updateProgress)
    self.connect(self.binder, SIGNAL('updateBackground(int, QColor)'), self.updateBackground)
    self.connect(self.binder, SIGNAL('finishedBinding'), self.finishedBinding)
    self.connect(self.binder, SIGNAL('error(QString)'), self.error)
    
    self.checkDependencies()
    
    if '--test' in sys.argv:
      for image in sorted(glob.glob('tests/*.tif')):
        self.addFile(image)
        
        self.ui.outputFile.setText('/tmp/output.djvu')
    
    for widget in [self.ui.startButton, self.ui.startBindingMenuItem]:
      widget.setEnabled(self.ui.pageList.count() > 0)
    
    self.itemSelectionChanged()
    self.hideBackground()
    self.thumbnailer.start()
Exemplo n.º 3
0
class Bindery(sorting.Sorting, dialogs.Dialogs, error.Error, functions.Bindery, QMainWindow):
  name = 'Bindery'
  version = '2.7.5'
  caption = ''
  full_name = ' '.join([name, version, caption])
  description = 'Bindery is a cross-platform solution to binding scanned pages into PDF and DjVu documents.'
  
  def __init__(self, parent = None):
    QMainWindow.__init__(self, parent)
    
    self.settings = QSettings(' '.join([self.name, self.version]), 'Nikita Nikishin')
    
    self.ui = gui.Ui_MainWindow()
    self.ui.setupUi(self)
    
    self.setWindowTitle(self.full_name)
    self.previews = True
    
    self.projectFiles = QDialog(self)
    self.projectFiles.ui = project_files.Ui_ProjectFilesDialog()
    self.projectFiles.ui.setupUi(self.projectFiles)

    self.projectFiles.ui.browseButton1.clicked.connect(self.showFileDialog)
    self.projectFiles.ui.browseButton2.clicked.connect(self.showSaveDialog)
    self.projectFiles.ui.addToProjectButton.clicked.connect(self.addToProject)
    self.projectFiles.ui.removeFromProjectButton.clicked.connect(self.removeFromProject)
    self.projectFiles.ui.okButton.clicked.connect(self.projectFilesAccepted)
    
    self.projectFiles.ui.addToProjectButton.setIcon(self.QIconFromTheme('go-next'))
    self.projectFiles.ui.removeFromProjectButton.setIcon(self.QIconFromTheme('go-previous'))
    
    self.projectFiles.ui.browseButton1.setIcon(self.QIconFromTheme('document-save'))
    self.projectFiles.ui.browseButton2.setIcon(self.QIconFromTheme('document-save'))

    self.projectFiles.ui.okButton.setIcon(self.QIconFromTheme('dialog-ok'))
    self.projectFiles.ui.cancelButton.setIcon(self.QIconFromTheme('process-stop'))
    
    self.projectFiles.ui.selectAllButton1.setIcon(self.QIconFromTheme('gtk-select-all'))
    self.projectFiles.ui.selectAllButton2.setIcon(self.QIconFromTheme('gtk-select-all'))
    
    self.ui.startButton.setIcon(self.QIconFromTheme('media-playback-start'))
    self.ui.addPageButton.setIcon(self.QIconFromTheme('list-add'))
    self.ui.removePageButton.setIcon(self.QIconFromTheme('list-remove'))
    
    self.ui.newMenuItem.setIcon(self.QIconFromTheme('document-new'))
    self.ui.openMenuItem.setIcon(self.QIconFromTheme('document-open'))
    self.ui.saveMenuItem.setIcon(self.QIconFromTheme('document-save'))
    self.ui.saveAsMenuItem.setIcon(self.QIconFromTheme('document-save-as'))
    self.ui.quitMenuItem.setIcon(self.QIconFromTheme('exit'))
    self.ui.helpMenuItem.setIcon(self.QIconFromTheme('help'))
    self.ui.aboutMenuItem.setIcon(self.QIconFromTheme('gtk-about'))
    
    self.ui.startBindingMenuItem.setIcon(self.QIconFromTheme('media-playback-start'))
    self.ui.addPageMenuItem.setIcon(self.QIconFromTheme('list-add'))
    self.ui.removePageMenuItem.setIcon(self.QIconFromTheme('list-remove'))
    
    self.ui.moveToTopButton.setIcon(self.QIconFromTheme('go-top'))
    self.ui.moveUpButton.setIcon(self.QIconFromTheme('go-up'))
    self.ui.moveDownButton.setIcon(self.QIconFromTheme('go-down'))
    self.ui.moveToBottomButton.setIcon(self.QIconFromTheme('go-bottom'))
    
    self.ui.clearLogButton.setIcon(self.QIconFromTheme('gtk-clear'))
    self.ui.saveLogButton.setIcon(self.QIconFromTheme('document-save'))
    
    self.ui.outputFileBrowseButton.setIcon(self.QIconFromTheme('document-save'))
    
    self.ui.actionReload_Thumbnails.setIcon(self.QIconFromTheme('reload'))
    self.ui.actionAbout_Qt4.setIcon(self.QIconFromTheme('gtk-about'))
    
    self.ui.saveMenuItem.setEnabled(False)
    self.ui.startBindingMenuItem.setEnabled(False)
    self.ui.removePageMenuItem.setEnabled(False)
    
    
    self.thumbnailer = Thumbnailer(self.ui.pageList)
    self.previewer = Previewer()
    self.binder = Binder()
    
    self.connect(self.thumbnailer, SIGNAL('makeIcon(int, QImage)'), self.makeIcon)
    self.connect(self.previewer, SIGNAL('previewPage(QImage)'), self.previewPage)    
    
    self.connect(self.binder, SIGNAL('updateProgress(int, QString)'), self.updateProgress)
    self.connect(self.binder, SIGNAL('updateBackground(int, QColor)'), self.updateBackground)
    self.connect(self.binder, SIGNAL('finishedBinding'), self.finishedBinding)
    self.connect(self.binder, SIGNAL('error(QString)'), self.error)
    
    self.checkDependencies()
    
    if '--test' in sys.argv:
      for image in sorted(glob.glob('tests/*.tif')):
        self.addFile(image)
        
        self.ui.outputFile.setText('/tmp/output.djvu')
    
    for widget in [self.ui.startButton, self.ui.startBindingMenuItem]:
      widget.setEnabled(self.ui.pageList.count() > 0)
    
    self.itemSelectionChanged()
    self.hideBackground()
    self.thumbnailer.start()
  
  def closeEvent(self, event):
    if self.binder.isRunning():
      if QMessageBox.question(self, 'Bindery', 'A book is currently binding. Are you sure you want to exit?', QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes:
        event.accept()
      else:
        event.ignore()
  
  def QIconFromTheme(self, name):
    if QIcon.hasThemeIcon(name):
      return QIcon.fromTheme(name)
    else:
      return QIcon(':/icons/{0}.png'.format(name))