Ignore:
Timestamp:
12/04/13 19:38:00 (4 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Code style fixes, removed unused functions, ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Data/OWPythonScript.py

    r11780 r11788  
    2929ICON = "icons/PythonScript.svg" 
    3030PRIORITY = 3150 
    31 AUTHOR = "Miha Stajdohar" 
    32 AUTHOR_EMAIL = "miha.stajdohar(@at@)gmail.com" 
    3331 
    3432INPUTS = [("in_data", Orange.data.Table, "setExampleTable", Default), 
     
    4543 
    4644 
     45def text_format(foreground=Qt.black, weight=QFont.Normal): 
     46    fmt = QTextCharFormat() 
     47    fmt.setForeground(QBrush(foreground)) 
     48    fmt.setFontWeight(weight) 
     49    return fmt 
     50 
     51 
    4752class PythonSyntaxHighlighter(QSyntaxHighlighter): 
    4853    def __init__(self, parent=None): 
    49         self.keywordFormat = QTextCharFormat() 
    50         self.keywordFormat.setForeground(QBrush(Qt.blue)) 
    51         self.keywordFormat.setFontWeight(QFont.Bold) 
    52         self.stringFormat = QTextCharFormat() 
    53         self.stringFormat.setForeground(QBrush(Qt.darkGreen)) 
    54         self.defFormat = QTextCharFormat() 
    55         self.defFormat.setForeground(QBrush(Qt.black)) 
    56         self.defFormat.setFontWeight(QFont.Bold) 
    57         self.commentFormat = QTextCharFormat() 
    58         self.commentFormat.setForeground(QBrush(Qt.lightGray)) 
    59         self.decoratorFormat = QTextCharFormat() 
    60         self.decoratorFormat.setForeground(QBrush(Qt.darkGray)) 
     54 
     55        self.keywordFormat = text_format(Qt.blue, QFont.Bold) 
     56        self.stringFormat = text_format(Qt.darkGreen) 
     57        self.defFormat = text_format(Qt.black, QFont.Bold) 
     58        self.commentFormat = text_format(Qt.lightGray) 
     59        self.decoratorFormat = text_format(Qt.darkGray) 
    6160 
    6261        self.keywords = list(keyword.kwlist) 
     
    321320        self.flags = flags 
    322321        self.sourceFileName = sourceFileName 
    323         self.modifiedScript = None 
    324322 
    325323 
     
    355353 
    356354 
     355def select_row(view, row): 
     356    """ 
     357    Select a `row` in an item view 
     358    """ 
     359    selmodel = view.selectionModel() 
     360    selmodel.select(view.model().index(row, 0), 
     361                    QItemSelectionModel.ClearAndSelect) 
     362 
     363 
    357364class OWPythonScript(OWWidget): 
    358365 
    359     settingsList = ["codeFile", "libraryListSource", "currentScriptIndex", 
     366    settingsList = ["libraryListSource", "currentScriptIndex", 
    360367                    "splitterState", "auto_execute"] 
    361368 
     
    386393        self.auto_execute = False 
    387394 
    388         self.codeFile = '' 
    389395        self.libraryListSource = [Script("Hello world", 
    390396                                         "print 'Hello world'\n")] 
     
    401407        OWGUI.label( 
    402408            self.infoBox, self, 
    403             "<p>Execute python script.</p><p>Input variables:<ul><li> " + \ 
    404             "<li>".join(t[0] for t in self.inputs) + \ 
    405             "</ul></p><p>Output variables:<ul><li>" + \ 
    406             "<li>".join(t[0] for t in self.outputs) + \ 
     409            "<p>Execute python script.</p><p>Input variables:<ul><li> " + 
     410            "<li>".join(t[0] for t in self.inputs) + 
     411            "</ul></p><p>Output variables:<ul><li>" + 
     412            "<li>".join(t[0] for t in self.outputs) + 
    407413            "</ul></p>" 
    408414        ) 
    409415 
    410         self.libraryList = PyListModel([], self, flags=Qt.ItemIsSelectable | \ 
    411                                        Qt.ItemIsEnabled | Qt.ItemIsEditable) 
     416        self.libraryList = PyListModel( 
     417           [], self, 
     418           flags=Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable 
     419        ) 
    412420 
    413421        self.libraryList.wrap(self.libraryListSource) 
     
    416424        self.controlBox.layout().setSpacing(1) 
    417425 
    418         self.libraryView = QListView() 
    419         self.libraryView.setEditTriggers(QListView.DoubleClicked | \ 
    420                                          QListView.EditKeyPressed) 
    421         self.libraryView.setSizePolicy(QSizePolicy.Ignored, 
    422                                        QSizePolicy.Preferred) 
     426        self.libraryView = QListView( 
     427            editTriggers=QListView.DoubleClicked | 
     428                         QListView.EditKeyPressed, 
     429            sizePolicy=QSizePolicy(QSizePolicy.Ignored, 
     430                                   QSizePolicy.Preferred) 
     431        ) 
    423432        self.libraryView.setItemDelegate(ScriptItemDelegate(self)) 
    424433        self.libraryView.setModel(self.libraryList) 
    425434 
    426         self.connect(self.libraryView.selectionModel(), 
    427                      SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), 
    428                      self.onSelectedScriptChanged) 
     435        self.libraryView.selectionModel().selectionChanged.connect( 
     436            self.onSelectedScriptChanged 
     437        ) 
    429438        self.controlBox.layout().addWidget(self.libraryView) 
    430439 
     
    433442        self.addNewScriptAction = action = QAction("+", self) 
    434443        action.setToolTip("Add a new script to the library") 
    435         self.connect(action, SIGNAL("triggered()"), self.onAddScript) 
     444        action.triggered.connect(self.onAddScript) 
    436445        w.addAction(action) 
    437446 
    438         self.removeAction = action = QAction(unicodedata.lookup("MINUS SIGN"), self) 
     447        action = QAction(unicodedata.lookup("MINUS SIGN"), self) 
    439448        action.setToolTip("Remove script from library") 
    440         self.connect(action, SIGNAL("triggered()"), self.onRemoveScript) 
     449        action.triggered.connect(self.onRemoveScript) 
    441450        w.addAction(action) 
    442451 
     
    444453        action.setToolTip("Save changes in the editor to library") 
    445454        action.setShortcut(QKeySequence(QKeySequence.Save)) 
    446         self.connect(action, SIGNAL("triggered()"), 
    447                      self.commitChangesToLibrary) 
     455        action.triggered.connect(self.commitChangesToLibrary) 
    448456        w.addAction(action) 
    449457 
    450         action = QAction("More", self) 
    451         action.pyqtConfigure(toolTip="More actions") 
     458        action = QAction("More", self, toolTip="More actions") 
    452459 
    453460        new_from_file = QAction("Import a script from a file", self) 
     
    455462        save_to_file.setShortcut(QKeySequence(QKeySequence.SaveAs)) 
    456463 
    457         self.connect(new_from_file, SIGNAL("triggered()"), 
    458                      self.onAddScriptFromFile) 
    459         self.connect(save_to_file, SIGNAL("triggered()"), self.saveScript) 
     464        new_from_file.triggered.connect(self.onAddScriptFromFile) 
     465        save_to_file.triggered.connect(self.saveScript) 
    460466 
    461467        menu = QMenu(w) 
     
    476482                                "the inputs to the widget change.")) 
    477483 
    478         self.splitCanvas = QSplitter(Qt.Vertical, self.mainArea) 
    479         self.mainArea.layout().addWidget(self.splitCanvas) 
     484        self.splitter = QSplitter(Qt.Vertical, self.mainArea) 
     485        self.mainArea.layout().addWidget(self.splitter) 
    480486 
    481487        self.defaultFont = defaultFont = \ 
     
    483489 
    484490        self.textBox = OWGUI.widgetBox(self, 'Python script') 
    485         self.splitCanvas.addWidget(self.textBox) 
     491        self.splitter.addWidget(self.textBox) 
    486492        self.text = PythonScriptEditor(self) 
    487493        self.textBox.layout().addWidget(self.text) 
     
    490496        self.text.setTabStopWidth(4) 
    491497 
    492         self.connect(self.text, SIGNAL("modificationChanged(bool)"), 
    493                      self.onModificationChanged) 
    494  
    495         self.saveAction = action = QAction("&Save", self.text) 
    496         action.setToolTip("Save script to file") 
    497         action.setShortcut(QKeySequence(QKeySequence.Save)) 
    498         action.setShortcutContext(Qt.WidgetWithChildrenShortcut) 
    499         self.connect(action, SIGNAL("triggered()"), self.saveScript) 
     498        self.text.modificationChanged[bool].connect(self.onModificationChanged) 
    500499 
    501500        self.consoleBox = OWGUI.widgetBox(self, 'Console') 
    502         self.splitCanvas.addWidget(self.consoleBox) 
     501        self.splitter.addWidget(self.consoleBox) 
    503502        self.console = PythonConsole(self.__dict__, self) 
    504503        self.consoleBox.layout().addWidget(self.console) 
     
    507506        self.console.setTabStopWidth(4) 
    508507 
    509         self.openScript(self.codeFile) 
    510         try: 
    511             self.libraryView.selectionModel().select( 
    512                 self.libraryList.index(self.currentScriptIndex), 
    513                 QItemSelectionModel.ClearAndSelect 
    514             ) 
    515         except Exception: 
    516             pass 
    517  
    518         self.splitCanvas.setSizes([2, 1]) 
     508        select_row(self.libraryView, self.currentScriptIndex) 
     509 
     510        self.splitter.setSizes([2, 1]) 
    519511        if self.splitterState is not None: 
    520             self.splitCanvas.restoreState(QByteArray(self.splitterState)) 
    521  
    522         self.connect(self.splitCanvas, SIGNAL("splitterMoved(int, int)"), 
    523                      self.onSpliterMoved) 
     512            self.splitter.restoreState(QByteArray(self.splitterState)) 
     513 
     514        self.splitter.splitterMoved[int, int].connect(self.onSpliterMoved) 
    524515        self.controlArea.layout().addStretch(1) 
    525516        self.resize(800, 600) 
     
    552543 
    553544    def setSelectedScript(self, index): 
    554         selection = self.libraryView.selectionModel() 
    555         selection.select(self.libraryList.index(index), 
    556                          QItemSelectionModel.ClearAndSelect) 
     545        select_row(self.libraryView, index) 
    557546 
    558547    def onAddScript(self, *args): 
     
    563552        filename = QFileDialog.getOpenFileName( 
    564553            self, 'Open Python Script', 
    565             self.codeFile, 
     554            os.path.expanduser("~/"), 
    566555            'Python files (*.py)\nAll files(*.*)' 
    567556        ) 
     
    578567        if index is not None: 
    579568            del self.libraryList[index] 
    580  
    581             self.libraryView.selectionModel().select( 
    582                 self.libraryList.index(max(index - 1, 0)), 
    583                 QItemSelectionModel.ClearAndSelect 
    584             ) 
    585  
    586     def onSaveScriptToFile(self, *args): 
    587         index = self.selectedScriptIndex() 
    588         if index is not None: 
    589             self.saveScript() 
     569            select_row(self.libraryView, max(index - 1, 0)) 
    590570 
    591571    def onSelectedScriptChanged(self, selected, deselected): 
     
    593573        if index: 
    594574            current = index[0] 
    595             if current >= len(self.libraryList): 
    596                 self.addNewScriptAction.trigger() 
    597                 return 
    598  
    599575            self.text.setDocument(self.documentForScript(current)) 
    600576            self.currentScriptIndex = current 
     
    610586            doc.setDefaultFont(QFont(self.defaultFont)) 
    611587            doc.highlighter = PythonSyntaxHighlighter(doc) 
    612             self.connect(doc, SIGNAL("modificationChanged(bool)"), 
    613                          self.onModificationChanged) 
     588            doc.modificationChanged[bool].connect(self.onModificationChanged) 
    614589            doc.setModified(False) 
    615590            self._cachedDocuments[script] = doc 
     
    619594        index = self.selectedScriptIndex() 
    620595        if index is not None: 
    621             self.libraryList[index].script = self.text.toPlainText() 
     596            self.libraryList[index].script = unicode(self.text.toPlainText()) 
    622597            self.text.document().setModified(False) 
    623598            self.libraryList.emitDataChanged(index) 
     
    630605 
    631606    def onSpliterMoved(self, pos, ind): 
    632         self.splitterState = str(self.splitCanvas.saveState()) 
    633  
    634     def updateSelecetdScriptState(self): 
     607        self.splitterState = str(self.splitter.saveState()) 
     608 
     609    def saveScript(self): 
    635610        index = self.selectedScriptIndex() 
     611        filename = os.path.expanduser("~/") 
    636612        if index is not None: 
    637613            script = self.libraryList[index] 
    638             self.libraryList[index] = Script(script.name, 
    639                                              self.text.toPlainText(), 
    640                                              0) 
    641  
    642     def openScript(self, filename=None): 
    643         if filename == None: 
    644             filename = QFileDialog.getOpenFileName( 
    645                 self, 'Open Python Script', 
    646                 self.codeFile, 
    647                 'Python files (*.py)\nAll files(*.*)' 
    648             ) 
    649  
    650             filename = unicode(filename) 
    651             self.codeFile = filename 
    652         else: 
    653             self.codeFile = filename 
    654  
    655         if self.codeFile == "": 
    656             return 
    657  
    658         self.error(0) 
    659         try: 
    660             f = open(self.codeFile, 'r') 
    661         except (IOError, OSError), ex: 
    662             self.text.setPlainText("") 
    663             return 
    664  
    665         self.text.setPlainText(f.read()) 
    666         f.close() 
    667  
    668     def saveScript(self): 
    669         index = self.selectedScriptIndex() 
    670         if index is not None: 
    671             script = self.libraryList[index] 
    672             filename = script.sourceFileName or self.codeFile 
    673         else: 
    674             filename = self.codeFile 
     614            filename = script.sourceFileName or filename 
     615 
    675616        filename = QFileDialog.getSaveFileName( 
    676617            self, 'Save Python Script', 
     
    704645 
    705646if __name__ == "__main__": 
    706     appl = QApplication(sys.argv) 
     647    app = QApplication(sys.argv) 
    707648    ow = OWPythonScript() 
    708649    ow.show() 
    709     appl.exec_() 
     650    app.exec_() 
    710651    ow.saveSettings() 
Note: See TracChangeset for help on using the changeset viewer.