Baby Language Lab Scripts
A collection of data processing tools.
 All Classes Namespaces Files Functions Variables Pages
load_window.py
Go to the documentation of this file.
1 from gi.repository import Gtk as gtk
2 from gi.repository import GObject as gobject
3 
4 from utils.ui_utils import UIUtils
5 from parsers.reliability2_parser import Reliability2Parser
6 from db.bll_database import BLLDatabase
7 from data_structs.check2 import Check2
8 from data_structs.test2 import Test2
9 from ui.reliability2_app.test_window import TestWindow
10 
11 class LoadWindow():
12  def __init__(self):
13  self.window = gtk.Window(gtk.WindowType.TOPLEVEL)
14  self.window.set_title('Load')
15  self.window.connect('destroy', lambda w: self.window.destroy())
16  self.window.set_border_width(10)
17  self.window.set_default_size(900, 350)
18 
19  vbox = gtk.VBox()
20 
21  treeview = self._build_treeview()
22  scrolled_win = gtk.ScrolledWindow()
23  scrolled_win.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
24  scrolled_win.add(treeview)
25  vbox.pack_start(scrolled_win, True, True, 0)
26 
27  button_box = self._build_button_box(treeview)
28  vbox.pack_start(button_box, False, False, 0)
29  self.window.add(vbox)
30 
31  self.window.show_all()
32 
33  def _build_button_box(self, treeview):
34  button_box = gtk.HButtonBox()
35  button_box.set_layout(gtk.ButtonBoxStyle.EDGE)
36 
37  cancel_button = gtk.Button(stock=gtk.STOCK_CANCEL)
38  cancel_button.connect('clicked', lambda w: self.window.destroy())
39  button_box.add(cancel_button)
40 
41  delete_button = UIUtils.create_button('Delete', UIUtils.BUTTON_ICONS.DELETE, UIUtils.BUTTON_ICON_SIZES.PX32)
42  delete_button.connect('clicked', lambda w: self.delete_check(treeview))
43  button_box.add(delete_button)
44 
45  ok_button = gtk.Button(stock=gtk.STOCK_OK)
46  ok_button.connect('clicked', lambda w: self.load_check(treeview))
47  button_box.add(ok_button)
48 
49  return button_box
50 
51  def _build_treeview(self):
52  list_store = gtk.ListStore(
53  gobject.TYPE_INT,
54  gobject.TYPE_STRING,
55  gobject.TYPE_STRING,
56  gobject.TYPE_STRING,
57  gobject.TYPE_STRING,
58  gobject.TYPE_STRING,
59  )
60 
61  db = BLLDatabase()
62  check2s_list = Check2.db_select(db)
63 
64  for check2 in check2s_list:
65  created = UIUtils.get_db_timestamp_str(check2.created)
66 
67  modified = '-'
68  #don't display modification date if it is the same as creation date
69  if check2.modified != None and check2.modified != check2.created:
70  modified = UIUtils.get_db_timestamp_str(check2.modified)
71 
72  completed = '-'
73  if check2.completed != None:
74  completed = UIUtils.get_db_timestamp_str(check2.completed)
75 
76  list_store.append([
77  check2.db_id,
78  check2.csv_filename,
79  check2.wav_foldername,
80  completed,
81  created,
82  modified,
83  ])
84 
85  db.close()
86  treeview = gtk.TreeView(list_store)
87 
88  #create the hidden id column
89  col = gtk.TreeViewColumn('ID', gtk.CellRendererText(), text=0)
90  col.set_visible(False)
91  treeview.append_column(col)
92 
93  #create the rest of the columns
94  column_names = [
95  'CSV File',
96  'WAV Folder',
97  'Completed',
98  'Created',
99  'Modified'
100  ]
101  for i in range(len(column_names)):
102  col = gtk.TreeViewColumn(column_names[i], gtk.CellRendererText(), text=(i + 1))
103  col.set_resizable(True)
104  col.set_min_width( UIUtils.calc_treeview_col_min_width(column_names[i]) )
105  treeview.append_column(col)
106 
107  return treeview
108 
109  def delete_check(self, treeview):
110  model, sel_paths = treeview.get_selection().get_selected_rows()
111  if sel_paths:
112  if UIUtils.show_confirm_dialog('Are you sure you want to delete this row?'):
113  it = model.get_iter(sel_paths[0])
114  check2_id = model.get_value(it, 0)
115 
116  db = BLLDatabase()
117  #this is a little awkward, but it works for now...
118  check2 = Check2.db_select(db, ids=[check2_id])[0]
119  if check2.db_delete(db) > 0:
120  model.remove(it)
121  else:
122  UIUtils.show_message_dialog('An error has prevented this row from being deleted. Please check the log files for details.', gtk.MESSAGE_ERROR)
123  db.close()
124 
125  else:
126  UIUtils.show_no_sel_dialog()
127 
128  def load_check(self, treeview):
129  model, sel_paths = treeview.get_selection().get_selected_rows()
130  if sel_paths:
131  it = model.get_iter(sel_paths[0])
132  check2_id = model.get_value(it, 0)
133 
134  db = BLLDatabase()
135  check2 = Check2.db_select(db, ids=[check2_id])[0]
136  db.close()
137 
138  TestWindow(check2)
139  self.window.destroy()
140 
141  else:
142  UIUtils.show_no_sel_dialog()