Mercurial > MadButterfly
diff pyink/MBScene.py @ 1130:37a0f6ab2f91
Lock the UI from refreshing during the update procedure
author | wycc |
---|---|
date | Sat, 18 Dec 2010 10:00:01 +0800 |
parents | b65ac686a7c5 |
children | 3ec0ad89e443 |
line wrap: on
line diff
--- a/pyink/MBScene.py Sat Dec 18 09:00:55 2010 +0800 +++ b/pyink/MBScene.py Sat Dec 18 10:00:01 2010 +0800 @@ -83,7 +83,7 @@ if self.type == 'DOMSubtreeModified': self.func(node) def notifyAttributeChanged(self,node, name, old_value, new_value): - print 'attr' + print 'attr',node,name,old_value,new_value if self.type == 'DOMAttrModified': self.func(node,name) @@ -131,6 +131,7 @@ self.last_update = None pybInkscape.inkscape.connect('change_selection', self.show_selection) self.last_select = None + self.lockui=False pass def startPolling(self): @@ -283,7 +284,7 @@ elif node.name() == 'svg:g': oldscene = None #obs = LayerAttributeWatcher(self) - addEventListener(doc,'DOMAttrModified',self.updateUI,None) + #addEventListener(doc,'DOMAttrModified',self.updateUI,None) #node.addObserver(obs) lyobj = Layer(node) self.layers.append(lyobj) @@ -822,7 +823,9 @@ self.last_line = line self.last_frame = frame self.last_line.active_frame(frame) + self.lockui = True self.doEditScene(frame) + self.lockui = False def _remove_active_frame(self,widget,event): @@ -1054,6 +1057,11 @@ pass def updateUI(self,node=None,arg=None): + if self.lockui: return + self.lockui = True + self._updateUI() + self.lockui = False + def _updateUI(self,node=None,arg=None): if self.last_update!= None: glib.source_remove(self.last_update) self.last_update = glib.timeout_add(300,self.show)