Ignore:
Timestamp:
03/02/11 12:15:51 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
07f3f905387a9df63b32e8a960b57615728a9a85
Message:
  • fixed saving of new schemas if the previous schema was saved to a file (Save As + New Schema + Quit would overwrite the first schema)
  • better handling of temporary schema saving (only one save per user change).
  • better handling of save schema at quit
File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeCanvas/orngDoc.py

    r7173 r7716  
    7575            self.removeTempDoc() 
    7676            ce.accept() 
    77         else: 
     77        elif newSettings: 
    7878            res = QMessageBox.question(self, 'Orange Canvas','Do you wish to save the schema?', QMessageBox.Yes, QMessageBox.No, QMessageBox.Cancel) 
    7979            if res == QMessageBox.Yes: 
    8080                self.saveDocument() 
     81                self.clear() 
     82                self.removeTempDoc() 
    8183                ce.accept() 
    82                 self.clear() 
     84                 
    8385            elif res == QMessageBox.No: 
    8486                self.clear() 
     
    8890                ce.ignore()     # we pressed cancel - we don't want to close the document 
    8991                return 
     92        else: 
     93            self.clear() 
     94            self.removeTempDoc() 
    9095         
    9196        QWidget.closeEvent(self, ce) 
     
    111116    # add line connecting widgets outWidget and inWidget 
    112117    # if necessary ask which signals to connect 
    113     def addLine(self, outWidget, inWidget, enabled = True): 
     118    def addLine(self, outWidget, inWidget, enabled=True, saveTempDoc=True): 
    114119        if outWidget == inWidget:  
    115120            return None 
     
    117122        line = self.getLine(outWidget, inWidget) 
    118123        if line: 
    119             self.resetActiveSignals(outWidget, inWidget, None, enabled) 
     124            self.resetActiveSignals(outWidget, inWidget, None, enabled, saveTempDoc) 
    120125            return None 
    121126 
     
    140145            linkCount = 0 
    141146            for (outName, inName) in dialog.getLinks(): 
    142                 linkCount += self.addLink(outWidget, inWidget, outName, inName, enabled) 
     147                linkCount += self.addLink(outWidget, inWidget, outName, inName, enabled, saveTempDoc=False) 
    143148 
    144149#        self.signalManager.setFreeze(0, outWidget.instance) 
     
    150155            inWidget.updateTooltip() 
    151156             
    152         self.saveTempDoc() 
     157        if saveTempDoc: 
     158            self.saveTempDoc() 
    153159        return line 
    154160 
    155161 
    156162    # reset signals of an already created line 
    157     def resetActiveSignals(self, outWidget, inWidget, newSignals = None, enabled = 1): 
     163    def resetActiveSignals(self, outWidget, inWidget, newSignals = None, enabled = 1, saveTempDoc=True): 
    158164        #print "<extra>orngDoc.py - resetActiveSignals() - ", outWidget, inWidget, newSignals 
    159165        signals = [] 
     
    177183        for (outName, inName) in signals: 
    178184            if (outName, inName) not in newSignals: 
    179                 self.removeLink(outWidget, inWidget, outName, inName) 
     185                self.removeLink(outWidget, inWidget, outName, inName, saveTempDoc=False) 
    180186                signals.remove((outName, inName)) 
    181187 
     
    183189            for (outName, inName) in newSignals: 
    184190                if (outName, inName) not in signals: 
    185                     self.addLink(outWidget, inWidget, outName, inName, enabled) 
     191                    self.addLink(outWidget, inWidget, outName, inName, enabled, saveTempDoc=False) 
    186192 
    187193        outWidget.updateTooltip() 
    188194        inWidget.updateTooltip() 
     195         
     196        if saveTempDoc: 
     197            self.saveTempDoc()  
    189198 
    190199 
    191200 
    192201    # add one link (signal) from outWidget to inWidget. if line doesn't exist yet, we create it 
    193     def addLink(self, outWidget, inWidget, outSignalName, inSignalName, enabled = 1): 
     202    def addLink(self, outWidget, inWidget, outSignalName, inSignalName, enabled=1, saveTempDoc=True): 
    194203        #print "<extra>orngDoc - addLink() - ", outWidget, inWidget, outSignalName, inSignalName 
    195204        # in case there already exists link to inSignalName in inWidget that is single, we first delete it 
     
    232241 
    233242    # remove only one signal from connected two widgets. If no signals are left, delete the line 
    234     def removeLink(self, outWidget, inWidget, outSignalName, inSignalName): 
     243    def removeLink(self, outWidget, inWidget, outSignalName, inSignalName, saveTempDoc=True): 
    235244        #print "<extra> orngDoc.py - removeLink() - ", outWidget, inWidget, outSignalName, inSignalName 
    236245        self.signalManager.removeLink(outWidget.instance, inWidget.instance, outSignalName, inSignalName) 
     
    239248        otherSignals = self.signalManager.getLinks(outWidget.instance, inWidget.instance, outSignalName, inSignalName) 
    240249        if not otherSignals: 
    241             self.removeLine(outWidget, inWidget) 
    242  
    243         self.saveTempDoc() 
     250            self.removeLine(outWidget, inWidget, saveTempDoc=False) 
     251 
     252        if saveTempDoc: 
     253            self.saveTempDoc() 
    244254 
    245255 
    246256    # remove line line 
    247     def removeLine1(self, line): 
     257    def removeLine1(self, line, saveTempDoc=True): 
    248258        for (outName, inName) in line.getSignals(): 
    249259            self.signalManager.removeLink(line.outWidget.instance, line.inWidget.instance, outName, inName)   # update SignalManager 
     
    255265        line.outWidget.updateTooltip() 
    256266        line.remove() 
    257         self.saveTempDoc() 
     267        if saveTempDoc: 
     268            self.saveTempDoc() 
    258269 
    259270    # remove line, connecting two widgets 
    260     def removeLine(self, outWidget, inWidget): 
     271    def removeLine(self, outWidget, inWidget, saveTempDoc=True): 
    261272        """ Remove the line connecting two widgets 
    262273        """ 
     
    264275        line = self.getLine(outWidget, inWidget) 
    265276        if line: 
    266             self.removeLine1(line) 
     277            self.removeLine1(line, saveTempDoc) 
    267278 
    268279    # add new widget 
     
    360371            self.removeWidget(widget, saveTempDoc = False)   # remove widgets from last to first 
    361372        self.canvas.update() 
     373        self.schemaPath = self.canvasDlg.settings["saveSchemaDir"] 
     374        self.schemaName = "" 
     375        self.loadedSettingsDict = {} 
    362376        self.saveTempDoc() 
    363377 
     
    366380            for line in self.lines: 
    367381                self.signalManager.setLinkEnabled(line.outWidget.instance, line.inWidget.instance, 1) 
     382                line.update() 
    368383        self.canvas.update() 
    369384 
     
    371386        for line in self.lines: 
    372387            self.signalManager.setLinkEnabled(line.outWidget.instance, line.inWidget.instance, 0) 
    373              
     388            line.update() 
    374389        self.canvas.update() 
    375390         
     
    439454    # save the file 
    440455    def save(self, filename = None): 
     456        print "Saving to", filename 
    441457        if filename == None: 
    442458            filename = os.path.join(self.schemaPath, self.schemaName) 
     459            # Update the loaded settings dict so we now if the widget 
     460            # settings have chenged from the last save when we quit  
     461            # the application (see closeEvent handler) 
     462            self.loadedSettingsDict = dict((widget.caption, widget.instance.saveSettingsStr()) for widget in self.widgets) 
    443463             
    444464        # create xml document 
     
    545565                signalList = eval(signals) 
    546566                for (outName, inName) in signalList: 
    547                     self.addLink(outWidget, inWidget, outName, inName, enabled) 
     567                    self.addLink(outWidget, inWidget, outName, inName, enabled, saveTempDoc=False) 
    548568                #qApp.processEvents() 
    549569        finally: 
     
    551571            self.signalManager.freeze().pop() 
    552572 
    553         for widget in self.widgets: widget.updateTooltip() 
     573        for widget in self.widgets: 
     574            widget.updateTooltip() 
    554575        self.canvas.update() 
    555576 
Note: See TracChangeset for help on using the changeset viewer.