Changeset 11568:3b63e32b3599 in orange


Ignore:
Timestamp:
05/29/13 15:24:21 (11 months ago)
Author:
Martin Frlin <martin.frlin@…>
Branch:
default
Message:

Undo and redo is now functional

File:
1 edited

Legend:

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

    r11567 r11568  
    848848                label = self.classValuesModel[index] 
    849849            examples = [ex for ex in self.graph.data if str(ex.getclass()) != label] 
    850             print examples 
    851850             
    852851            values = [val for val in self.classValuesModel if val != label] 
    853             print "we have values" 
     852 
    854853            newclass = orange.EnumVariable("Class label", values=values) 
    855854            newdomain = orange.Domain(self.graph.data.domain.attributes, newclass) 
     
    906905        if not self.updateHistoryBool: 
    907906            return 
     907        # if we start updating from previously undone actions, we cut off redos in our history 
    908908        if not self.historyCounter == len(self.dataHistory)-1: 
    909             self.dataHistory = self.dataHistory[self.historyCounter:] 
     909            self.dataHistory = self.dataHistory[0:self.historyCounter+1] 
     910        # append an update of labels and data 
    910911        labels = list(self.classValuesModel) 
    911912        self.dataHistory.append((copy.deepcopy(self.graph.data), labels)) 
    912         if len(self.dataHistory) > 10: 
     913        # set the size of the data history stack and remove the oldest update if we go over the size 
     914        if len(self.dataHistory) > 100: 
    913915            self.dataHistory.pop(0) 
     916            self.historyCounter -= 1 
    914917        self.historyCounter += 1 
    915         self.historyCounter %= len(self.dataHistory) 
    916918        print self.historyCounter 
    917         print self.dataHistory[self.historyCounter] 
     919        print len(self.dataHistory)-1 
    918920 
    919921    def undoAction(self): 
     922        # check to see if we are at the end of the stack 
    920923        if self.historyCounter > 0: 
    921924            self.historyCounter -= 1 
    922925            data, labels = self.dataHistory[self.historyCounter] 
    923             self.graph.setData(data, 0, 1) 
     926            # we dont update history when undoing 
     927            self.updateHistoryBool = False 
     928            # check if we only need to update labels 
     929            if len(self.classValuesModel) > len(labels): 
     930                diff = set(self.classValuesModel) - set(labels) 
     931                self.removeSelectedClassLabel(label=diff.pop()) 
     932            elif len(self.classValuesModel) < len(labels): 
     933                self.addNewClassLabel() 
     934            # if not, update data 
     935            else: 
     936                self.graph.data = data 
     937                self.graph.updateGraph() 
     938            self.updateHistoryBool = True 
     939            print self.historyCounter 
     940            print len(self.dataHistory)-1 
     941 
     942    def redoAction(self): 
     943        if self.historyCounter < len(self.dataHistory)-1: 
     944            self.historyCounter += 1 
     945            data, labels = self.dataHistory[self.historyCounter] 
    924946            self.updateHistoryBool = False 
    925947            if len(self.classValuesModel) > len(labels): 
    926948                diff = set(self.classValuesModel) - set(labels) 
    927949                self.removeSelectedClassLabel(label=diff.pop()) 
    928             if len(self.classValuesModel) < len(labels): 
     950            elif len(self.classValuesModel) < len(labels): 
    929951                self.addNewClassLabel() 
     952            else: 
     953                self.graph.data = data 
     954                self.graph.updateGraph() 
    930955            self.updateHistoryBool = True 
    931             print self.dataHistory[self.historyCounter] 
    932  
    933     def redoAction(self): 
    934         if self.historyCounter < len(self.dataHistory)-1: 
    935             self.historyCounter += 1 
    936             data, labels = self.dataHistory[self.historyCounter] 
    937             self.graph.setData(data, 0, 1) 
    938             self.updateHistoryBool = False 
    939             if len(self.classValuesModel) > len(labels): 
    940                 diff = set(self.classValuesModel) - set(labels) 
    941                 self.removeSelectedClassLabel(label=diff.pop()) 
    942             if len(self.classValuesModel) < len(labels): 
    943                 self.addNewClassLabel() 
    944             self.updateHistoryBool = True 
    945             print self.dataHistory[self.historyCounter] 
     956            print self.historyCounter 
     957            print len(self.dataHistory)-1 
    946958 
    947959    def onDomainChanged(self, *args): 
Note: See TracChangeset for help on using the changeset viewer.