source: orange/orange/OrangeWidgets/OWVisWidget.py @ 6538:a5f65d7f0b2c

Revision 6538:a5f65d7f0b2c, 7.6 KB checked in by Mitar <Mitar@…>, 4 years ago (diff)

Made XPM version of the icon 32x32.

Line 
1import OWGUI
2from OWWidget import *
3
4class OWVisWidget(OWWidget):
5    def createShowHiddenLists(self, placementTab, callback = None):
6        maxWidth = 180
7        self.updateCallbackFunction = callback
8        self.shownAttributes = []
9        self.selectedShown = []
10        self.hiddenAttributes = []
11        self.selectedHidden = []
12
13        self.shownAttribsGroup = OWGUI.widgetBox(placementTab, " Shown attributes " )
14        self.addRemoveGroup = OWGUI.widgetBox(placementTab, 1, orientation = "horizontal" )
15        self.hiddenAttribsGroup = OWGUI.widgetBox(placementTab, " Hidden attributes ")
16
17        hbox = OWGUI.widgetBox(self.shownAttribsGroup, orientation = 'horizontal')
18        self.shownAttribsLB = OWGUI.listBox(hbox, self, "selectedShown", "shownAttributes", callback = self.resetAttrManipulation, dragDropCallback = callback, enableDragDrop = 1, selectionMode = QListWidget.ExtendedSelection)
19        #self.shownAttribsLB.setMaximumWidth(maxWidth)
20        vbox = OWGUI.widgetBox(hbox, orientation = 'vertical')
21        self.buttonUPAttr   = OWGUI.button(vbox, self, "", callback = self.moveAttrUP, tooltip="Move selected attributes up")
22        self.buttonDOWNAttr = OWGUI.button(vbox, self, "", callback = self.moveAttrDOWN, tooltip="Move selected attributes down")
23        self.buttonUPAttr.setIcon(QIcon(os.path.join(self.widgetDir, "icons/Dlg_up3.png")))
24        self.buttonUPAttr.setSizePolicy(QSizePolicy(QSizePolicy.Fixed , QSizePolicy.Expanding))
25        self.buttonUPAttr.setMaximumWidth(30)
26        self.buttonDOWNAttr.setIcon(QIcon(os.path.join(self.widgetDir, "icons/Dlg_down3.png")))
27        self.buttonDOWNAttr.setSizePolicy(QSizePolicy(QSizePolicy.Fixed , QSizePolicy.Expanding))
28        self.buttonDOWNAttr.setMaximumWidth(30)
29
30        self.attrAddButton =    OWGUI.button(self.addRemoveGroup, self, "", callback = self.addAttribute, tooltip="Add (show) selected attributes")
31        self.attrAddButton.setIcon(QIcon(os.path.join(self.widgetDir, "icons/Dlg_up3.png")))
32        self.attrRemoveButton = OWGUI.button(self.addRemoveGroup, self, "", callback = self.removeAttribute, tooltip="Remove (hide) selected attributes")
33        self.attrRemoveButton.setIcon(QIcon(os.path.join(self.widgetDir, "icons/Dlg_down3.png")))
34        self.showAllCB = OWGUI.checkBox(self.addRemoveGroup, self, "showAllAttributes", "Show all", callback = self.cbShowAllAttributes)
35
36        self.hiddenAttribsLB = OWGUI.listBox(self.hiddenAttribsGroup, self, "selectedHidden", "hiddenAttributes", callback = self.resetAttrManipulation, dragDropCallback = callback, enableDragDrop = 1, selectionMode = QListWidget.ExtendedSelection)
37        #self.hiddenAttribsLB.setMaximumWidth(maxWidth + 27)
38
39
40    def getDataDomain(self):
41#        if hasattr(self, "graph") and hasattr(self.graph, "dataDomain"):
42#            return self.graph.dataDomain
43        if hasattr(self, "data") and self.data:
44            return self.data.domain
45        else:
46            return None
47
48    def resetAttrManipulation(self):
49        if self.selectedShown:
50            mini, maxi = min(self.selectedShown), max(self.selectedShown)
51            tightSelection = maxi - mini == len(self.selectedShown) - 1
52        self.buttonUPAttr.setEnabled(self.selectedShown != [] and tightSelection and mini)
53        self.buttonDOWNAttr.setEnabled(self.selectedShown != [] and tightSelection and maxi < len(self.shownAttributes)-1)
54        self.attrAddButton.setDisabled(not self.selectedHidden or self.showAllAttributes)
55        self.attrRemoveButton.setDisabled(not self.selectedShown or self.showAllAttributes)
56        domain = self.getDataDomain()
57        if domain and self.hiddenAttributes and domain.classVar and self.hiddenAttributes[0][0] != domain.classVar.name:
58            self.showAllCB.setChecked(0)
59
60
61    def moveAttrSelection(self, labels, selection, dir):
62        if hasattr(self, "graph"):
63            self.graph.insideColors = None
64            self.graph.clusterClosure = None
65            self.graph.potentialsBmp = None
66
67        labs = getattr(self, labels)
68        sel = getattr(self, selection)
69        mini, maxi = min(sel), max(sel)+1
70        if dir == -1:
71            setattr(self, labels, labs[:mini-1] + labs[mini:maxi] + [labs[mini-1]] + labs[maxi:])
72        else:
73            setattr(self, labels, labs[:mini] + [labs[maxi]] + labs[mini:maxi] + labs[maxi+1:])
74        setattr(self, selection, map(lambda x:x+dir, sel))
75
76        self.resetAttrManipulation()
77        if hasattr(self, "sendShownAttributes"):
78            self.sendShownAttributes()
79        self.graph.potentialsBmp = None
80        if self.updateCallbackFunction:
81            self.updateCallbackFunction()
82        if hasattr(self, "graph"):
83            self.graph.removeAllSelections()
84
85    # move selected attribute in "Attribute Order" list one place up
86    def moveAttrUP(self):
87        self.moveAttrSelection("shownAttributes", "selectedShown", -1)
88
89    # move selected attribute in "Attribute Order" list one place down
90    def moveAttrDOWN(self):
91        self.moveAttrSelection("shownAttributes", "selectedShown", 1)
92
93
94    def cbShowAllAttributes(self):
95        if self.showAllAttributes:
96            self.addAttribute(True)
97        self.resetAttrManipulation()
98
99    def addAttribute(self, addAll = False):
100        if hasattr(self, "graph"):
101            self.graph.insideColors = None
102            self.graph.clusterClosure = None
103
104        if addAll:
105            self.setShownAttributeList()
106        else:
107            self.setShownAttributeList(self.shownAttributes + [self.hiddenAttributes[i] for i in self.selectedHidden])
108        self.selectedHidden = []
109        self.selectedShown = []
110        self.resetAttrManipulation()
111
112        if hasattr(self, "sendShownAttributes"):
113            self.sendShownAttributes()
114        if self.updateCallbackFunction: 
115            self.updateCallbackFunction()
116        if hasattr(self, "graph"):
117            self.graph.removeAllSelections()
118
119    def removeAttribute(self):
120        if hasattr(self, "graph"):
121            self.graph.insideColors = None
122            self.graph.clusterClosure = None
123
124        newShown = self.shownAttributes[:]
125        self.selectedShown.sort(lambda x,y:-cmp(x, y))
126        for i in self.selectedShown:
127            del newShown[i]
128        self.setShownAttributeList(newShown)
129
130        if hasattr(self, "sendShownAttributes"):
131            self.sendShownAttributes()
132        if self.updateCallbackFunction: 
133            self.updateCallbackFunction()
134        if hasattr(self, "graph"):
135            self.graph.removeAllSelections()
136
137    def getShownAttributeList(self):
138        return [a[0] for a in self.shownAttributes]
139
140
141    def setShownAttributeList(self, shownAttributes = None):
142        shown = []
143        hidden = []
144       
145        domain = self.getDataDomain()
146        if domain:
147            if shownAttributes:
148                if type(shownAttributes[0]) == tuple:
149                    shown = shownAttributes
150                else:
151                    shown = [(domain[a].name, domain[a].varType) for a in shownAttributes]
152                hidden = filter(lambda x:x not in shown, [(a.name, a.varType) for a in domain.attributes])
153            else:
154                shown = [(a.name, a.varType) for a in domain.attributes]
155                if not self.showAllAttributes:
156                    hidden = shown[10:]
157                    shown = shown[:10]
158
159            if domain.classVar and (domain.classVar.name, domain.classVar.varType) not in shown:
160                hidden += [(domain.classVar.name, domain.classVar.varType)]
161
162        self.shownAttributes = shown
163        self.hiddenAttributes = hidden
164        self.selectedHidden = []
165        self.selectedShown = []
166        self.resetAttrManipulation()
167
168        if hasattr(self, "sendShownAttributes"):
169            self.sendShownAttributes()
170
Note: See TracBrowser for help on using the repository browser.