Baby Language Lab Scripts
A collection of data processing tools.
 All Classes Namespaces Files Functions Variables Pages
options_window.py
Go to the documentation of this file.
1 from gi.repository import Gtk as gtk
2 from utils.ui_utils import UIUtils
3 from db.bll_database import BLLDatabase
4 from data_structs.pitch_study_props import PitchStudyProps
5 from utils.form import Form
6 
7 class OptionsWindow():
8  def __init__(self):
9  self.bll_db = BLLDatabase()
10  self.props = PitchStudyProps.db_select(self.bll_db)[0]
11 
12  self.window = gtk.Window(gtk.WindowType.TOPLEVEL)
13  self.window.set_title('Options')
14  self.window.connect('destroy', lambda w: self.window.destroy())
15  self.window.set_border_width(10)
16  self.window.set_default_size(210, 100)
17 
18  vbox = gtk.VBox()
19  grid = self._build_options_grid()
20  bbox = self._build_button_box()
21 
22  vbox.pack_start(grid, False, False, 0)
23  vbox.pack_start(bbox, False, False, 0)
24 
25  self.window.add(vbox)
26  self.window.show_all()
27 
28  def _build_button_box(self):
29  button_box = gtk.HButtonBox()
30  button_box.set_layout(gtk.ButtonBoxStyle.EDGE)
31 
32  cancel_button = gtk.Button(stock=gtk.STOCK_CANCEL, label='Cancel')
33  cancel_button.connect('clicked', lambda w: self.window.destroy())
34  button_box.add(cancel_button)
35 
36  ok_button = gtk.Button(stock=gtk.STOCK_OK, label='Run')
37  ok_button.connect('clicked', lambda w: self._update_options())
38  button_box.add(ok_button)
39 
40  return button_box
41 
43  grid = gtk.Grid()
44 
45  self.form = Form()
46 
47  adj = gtk.Adjustment(value=1, lower=1, upper=100, step_increment=1, page_increment=1, page_size=1)
48  max_parts_spinner = gtk.SpinButton()
49  max_parts_spinner.set_adjustment(adj)
50  max_parts_spinner.set_snap_to_ticks(True)
51  max_parts_spinner.set_value(self.props.max_parts_per_batch)
52  self.form.max_parts_spinner = max_parts_spinner
53  max_parts_label = gtk.Label('Max Participants/Batch')
54  grid.attach(max_parts_label, 0, 0, 1, 1)
55  grid.attach(max_parts_spinner, 1, 0, 1, 1)
56 
57  adj = gtk.Adjustment(value=1, lower=1, upper=100, step_increment=1, page_increment=1, page_size=1)
58  num_opts_spinner = gtk.SpinButton()
59  num_opts_spinner.set_adjustment(adj)
60  num_opts_spinner.set_snap_to_ticks(True)
61  num_opts_spinner.set_value(self.props.num_options)
62  self.form.num_opts_spinner = num_opts_spinner
63  num_opts_label = gtk.Label('Judgement Options')
64  grid.attach(num_opts_label, 0, 1, 1, 1)
65  grid.attach(num_opts_spinner, 1, 1, 1, 1)
66 
67  adj = gtk.Adjustment(value=1, lower=1, upper=100000, step_increment=1, page_increment=1, page_size=1)
68  break_interval_spinner = gtk.SpinButton()
69  break_interval_spinner.set_adjustment(adj)
70  break_interval_spinner.set_snap_to_ticks(True)
71  break_interval_spinner.set_value(self.props.break_interval)
72  self.form.break_interval_spinner = break_interval_spinner
73  break_interval_label = gtk.Label('Clip break interval')
74  grid.attach(break_interval_label, 0, 2, 1, 1)
75  grid.attach(break_interval_spinner, 1, 2, 1, 1)
76 
77  adj = gtk.Adjustment(value=0.0, lower=0.0, upper=100.0, step_increment=0.1, page_increment=0.1, page_size=0.1)
78  sound_del_spinner = gtk.SpinButton()
79  sound_del_spinner.set_adjustment(adj)
80  sound_del_spinner.set_increments(0.1, 0.1)
81  sound_del_spinner.set_digits(1)
82  sound_del_spinner.set_snap_to_ticks(True)
83  sound_del_spinner.set_value(self.props.inter_clip_sound_del)
84  self.form.sound_del_spinner = sound_del_spinner
85  sound_del_label = gtk.Label('Sec between sounds')
86  grid.attach(sound_del_label, 0, 3, 1, 1)
87  grid.attach(sound_del_spinner, 1, 3, 1, 1)
88 
89  return grid
90 
91  def _update_options(self):
92  max_parts = self.form.max_parts_spinner.get_value_as_int()
93  self.props.update_prop(self.bll_db, PitchStudyProps.PROPS.MAX_PARTS_PER_BATCH, max_parts)
94 
95  num_opts = self.form.num_opts_spinner.get_value_as_int()
96  self.props.update_prop(self.bll_db, PitchStudyProps.PROPS.NUM_OPTIONS, num_opts)
97 
98  break_interval = self.form.break_interval_spinner.get_value_as_int()
99  self.props.update_prop(self.bll_db, PitchStudyProps.PROPS.BREAK_INTERVAL, break_interval)
100 
101  sound_del = self.form.sound_del_spinner.get_value()
102  self.props.update_prop(self.bll_db, PitchStudyProps.PROPS.INTER_CLIP_SOUND_DEL, sound_del)
103  self.window.destroy()
104 
105