Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from gi.repository import GObject, Gtk, Gdk
import os, sys, glob
import config
class ModelSelector(Gtk.Dialog):
def __init__(self, xml_filename = '', asr_model = ''):
super(ModelSelector, self).__init__()
self.add_button("Cancel", Gtk.ResponseType.CANCEL)
self.add_button("OK", Gtk.ResponseType.OK)
box = self.get_content_area()
xml_box = Gtk.HBox()
xml_box.pack_start(Gtk.Label('XML file:'), False, False, 10)
xml_entry = Gtk.Entry()
xml_entry.set_text(xml_filename)
xml_entry.set_width_chars(len(xml_filename))
self.xml_entry = xml_entry
xml_box.pack_start(xml_entry, True, True, 10)
xml_button = Gtk.Button("Choose...")
xml_button.connect('clicked', self.show_filechooser)
xml_box.pack_start(xml_button, False, False, 10)
box.pack_start(xml_box, False, False, 5)
model_box = Gtk.HBox()
model_box.pack_start(Gtk.Label('ASR model:'), False, False, 10)
model_chooser = Gtk.ComboBoxText()
model_chooser.set_entry_text_column(0)
for i, model in enumerate(self.list_models()):
model_chooser.append_text(model)
model_chooser.set_active(0)
self.model_chooser = model_chooser
model_box.pack_start(model_chooser, True, True, 10)
box.pack_start(model_box, False, False, 5)
self.show_all()
def show_filechooser(self, button):
dialog = Gtk.FileChooserDialog("Please choose a file", self, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
filter_text = Gtk.FileFilter()
filter_text.set_name("XML files")
filter_text.add_mime_type("text/xml")
dialog.add_filter(filter_text)
dialog.set_current_folder('%s/data' % os.path.dirname(__file__))
response = dialog.run()
if response == Gtk.ResponseType.OK:
self.xml_entry.set_text(dialog.get_filename())
dialog.destroy()
def list_models(self):
self.models = []
model_names = []
for filename in glob.glob('asr/*.cfg'):
try:
items = config.read(filename)
self.models.append(filename)
if 'name' in items:
model_names.append(items['name'])
else:
model_names.append(filename)
except:
pass
return model_names
def run(self):
response = super(ModelSelector, self).run()
if response != Gtk.ResponseType.OK:
return None, None
asr_model = self.models[self.model_chooser.get_active()]
xml_filename = self.xml_entry.get_text()
self.destroy()
return xml_filename, asr_model