X-Git-Url: http://git.onelab.eu/?p=sfa-gui.git;a=blobdiff_plain;f=NodePanel.py;fp=NodePanel.py;h=c4861b27e5ad2c956e0d00452c7017bd7285949c;hp=a4c11e158ab4a4a9f1d36568a519f1f5a7678af0;hb=dd75c282952182b904fbfd26b2f87f5d39552630;hpb=9b1e2b7e901d9a7edc707916c52efe808cae6cfc diff --git a/NodePanel.py b/NodePanel.py index a4c11e1..c4861b2 100644 --- a/NodePanel.py +++ b/NodePanel.py @@ -8,6 +8,7 @@ from pyjamas.ui.ListBox import ListBox from pyjamas.ui.TextBox import TextBox from pyjamas.ui.HTML import HTML from pyjamas.ui import HasAlignment +from SfaData import ViniData import re def faster_clear(self): @@ -18,15 +19,15 @@ def faster_clear(self): ListBox.clear = faster_clear class NodePanel(DockPanel): - def __init__(self, sfadata, rspec): + def __init__(self, sfadata): DockPanel.__init__(self) - self.data = sfadata - self.rspec = rspec + self.sfadata = sfadata self.setSize("100%", "100%") self.setHorizontalAlignment(HasAlignment.ALIGN_CENTER) self.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE) - self.regex = None + self.availableRegex = None + self.selectedRegex = None leftpanel = VerticalPanel() leftcap = CaptionPanel("Available nodes") @@ -35,10 +36,10 @@ class NodePanel(DockPanel): leftpanel.add(leftcap) hp1 = HorizontalPanel() - filterButton = Button("Filter", self.filter) - self.regExBox = TextBox() + filterButton = Button("Filter", self.filterLeft) + self.leftRegExBox = TextBox() hp1.add(filterButton) - hp1.add(self.regExBox) + hp1.add(self.leftRegExBox) leftpanel.add(hp1) rightpanel = VerticalPanel() @@ -48,10 +49,10 @@ class NodePanel(DockPanel): rightpanel.add(rightcap) hp2 = HorizontalPanel() - applyButton = Button("Apply", self.apply) - resetButton = Button("Reset", self.reset) - hp2.add(applyButton) - hp2.add(resetButton) + filterButton = Button("Filter", self.filterRight) + self.rightRegExBox = TextBox() + hp2.add(filterButton) + hp2.add(self.rightRegExBox) rightpanel.add(hp2) addButton = Button(">>", self.addNodes) @@ -68,12 +69,20 @@ class NodePanel(DockPanel): self.refresh() def refresh(self): - slivers = self.sortNodes(self.rspec.get_sliver_list()) - all = self.rspec.get_node_list() + rspec = self.sfadata.getRSpec() + + slivers = self.sortNodes(rspec.get_sliver_list()) + all = rspec.get_node_list() available = self.sortNodes(filter(lambda x:x not in slivers,all)) - if self.regex: - pattern = re.compile(self.regex) + + if self.availableRegex: + pattern = re.compile(self.availableRegex) available = filter(pattern.search, available) + + if self.selectedRegex: + pattern = re.compile(self.selectedRegex) + slivers = filter(pattern.search, slivers) + self.leftlist.clear() for i in available: self.leftlist.addItem(i) @@ -96,24 +105,23 @@ class NodePanel(DockPanel): return got def addNodes(self, sender): + rspec = self.sfadata.getRSpec() nodes = self.getSelected(self.leftlist) for node in nodes: - self.rspec.add_sliver(node) + rspec.add_sliver(node) self.refresh() def removeNodes(self, sender): + rspec = self.sfadata.getRSpec() nodes = self.getSelected(self.rightlist) for node in nodes: - self.rspec.remove_sliver(node) + rspec.remove_sliver(node) self.refresh() - def apply(self, sender): - self.data.applyRSpec(self.rspec) - - def reset(self, sender): - self.rspec = self.data.getRSpec() + def filterLeft(self, sender): + self.availableRegex = self.leftRegExBox.getText() self.refresh() - def filter(self, sender): - self.regex = self.regExBox.getText() + def filterRight(self, sender): + self.selectedRegex = self.rightRegExBox.getText() self.refresh()