source: orange/Orange/OrangeWidgets/Classify/OWLoadClassifier.py @ 11217:adbdaf6efe02

Revision 11217:adbdaf6efe02, 3.7 KB checked in by Ales Erjavec <ales.erjavec@…>, 17 months ago (diff)

Addeed new widget icons by Peter Cuhalev and replaced existing ones with expanded paths and removed groups.

Line 
1"""<name>Load Classifier</name>
2<description>Load saved orange classifiers from a file</description>
3<icon>icons/LoadClassifier.svg</icon>
4<contact>Ales Erjavec (ales.erjavec(@at@)fri.uni.uni-lj.si)</contact>
5<priority>3050</priority>
6"""
7
8from OWWidget import *
9
10import OWGUI
11import orange
12
13
14class OWLoadClassifier(OWWidget):
15    settingsList = ["filenameHistory", "selectedFileIndex", "lastFile"]
16   
17    def __init__(self, parent=None, signalManager=None, name="Load Classifier"):
18        OWWidget.__init__(self, parent, signalManager, name, wantMainArea=False)
19       
20        self.outputs = [("Classifier", orange.Classifier, Dynamic)]
21       
22        self.filenameHistory = []
23        self.selectedFileIndex = 0
24        self.lastFile = os.path.expanduser("~/orange_classifier.pck")
25       
26        self.loadSettings()
27       
28        self.filenameHistory= filter(os.path.exists, self.filenameHistory)
29       
30        #####
31        # GUI
32        #####
33       
34        box = OWGUI.widgetBox(self.controlArea, "File", orientation="horizontal", addSpace=True)
35        self.filesCombo = OWGUI.comboBox(box, self, "selectedFileIndex", 
36                                         items = [os.path.basename(p) for p in self.filenameHistory],
37                                         tooltip="Select a recent file", 
38                                         callback=self.onRecentSelection)
39       
40        self.browseButton = OWGUI.button(box, self, "...", callback=self.browse,
41                                         tooltip = "Browse file system")
42
43        self.browseButton.setIcon(self.style().standardIcon(QStyle.SP_DirOpenIcon))
44        self.browseButton.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
45       
46        OWGUI.rubber(self.controlArea)
47       
48        self.resize(200, 50)
49       
50        if self.filenameHistory:
51            self.loadAndSend()
52       
53       
54    def onRecentSelection(self):
55        filename = self.filenameHistory[self.selectedFileIndex]
56        self.filenameHistory.pop(self.selectedFileIndex)
57        self.filenameHistory.insert(0, filename)
58        self.filesCombo.removeItem(self.selectedFileIndex)
59        self.filesCombo.insertItem(0, os.path.basename(filename))
60        self.selectedFileIndex = 0
61       
62        self.loadAndSend()
63       
64    def browse(self):
65        filename = QFileDialog.getOpenFileName(self, "Load Classifier From File",
66                        self.lastFile, "Pickle files (*.pickle *.pck)\nAll files (*.*)")
67        filename = unicode(filename)
68        if filename:
69            if filename in self.filenameHistory:
70                self.selectedFileIndex = self.filenameHistory.index(filename)
71                self.onRecentSelection()
72                return
73            self.lastFile = filename
74            self.filenameHistory.insert(0, filename)
75            self.filesCombo.insertItem(0, os.path.basename(filename))
76            self.filesCombo.setCurrentIndex(0)
77            self.selectedFileIndex = 0
78            self.loadAndSend()
79           
80    def loadAndSend(self):
81        filename = self.filenameHistory[self.selectedFileIndex]
82        import cPickle
83        self.error([0, 1])
84        try:
85            classifier = cPickle.load(open(filename, "rb"))
86        except Exception, ex:
87            self.error(0, "Could not load classifier! %s" % str(ex))
88            return
89       
90        if not isinstance(classifier, orange.Classifier):
91            self.error(1, "'%s' is not an orange classifier" % os.path.basename(filename))
92            return 
93       
94        self.send("Classifier", classifier)
95       
96if __name__ == "__main__":
97    app = QApplication([])
98    w = OWLoadClassifier()
99    w.show()
100    app.exec_()
101    w.saveSettings() 
Note: See TracBrowser for help on using the repository browser.