def main(data): data = int(data) default_file = config_file(sys.argv[3]+ '/.default') project_file = config_file(sys.argv[3]+ '/.project') if data == 0: app = tester(default_file, project_file) elif data == 1: app = recorder(default_file, project_file) pro = permanent_shooter(app.control_pipe, app.sync_pipe, default_file, project_file) pro.start() return
def default_values(file): def on_change(widget, data): if data[1] == -1: adjMax[data[0]].set_lower(widget.get_value()+inc_[data[0]]) adjMin[data[0]].set_upper(adjMax[data[0]].get_value()-inc_[data[0]]) adjDef[data[0]].set_lower(widget.get_value()) adjDef[data[0]].set_upper(adjMax[data[0]].get_value()) if adjDef[data[0]].get_value() < widget.get_value(): adjDef[data[0]].set_value(widget.get_value()) if adjMax[data[0]].get_value() <= widget.get_value(): adjMax[data[0]].set_value(widget.get_value()+inc_[data[0]]) if data[1] == 1: adjMin[data[0]].set_upper(widget.get_value()-inc_[data[0]]) adjMax[data[0]].set_lower(adjMin[data[0]].get_value()+inc_[data[0]]) adjDef[data[0]].set_upper(widget.get_value()) adjDef[data[0]].set_lower(adjMin[data[0]].get_value()) if adjDef[data[0]].get_value() > widget.get_value(): adjDef[data[0]].set_value(widget.get_value()) if adjMin[data[0]].get_value() >= widget.get_value(): adjMin[data[0]].set_value(widget.get_value()-inc_[data[0]]) if data[1] == 0: adjDef[data[0]].set_upper(adjMax[data[0]].get_value()) adjDef[data[0]].set_lower(adjMin[data[0]].get_value()) return def OnPlus(widget, data): if data: boxCameras.remove(boxCameras.get_children()[0]) boxCameras.pack_start(tableResolutionAdd) boxCameras.reorder_child(boxCameras.get_children()[1], 0) boxCameras.show_all() else: boxCameras.remove(boxCameras.get_children()[0]) boxCameras.pack_start(tableResolution) boxCameras.reorder_child(boxCameras.get_children()[1], 0) boxCameras.show_all() resAdd = [entryWidth.get_text().strip(), entryHeight.get_text().strip()] if not ('' in resAdd): for i in supported: comboResolution.remove_text(0) supported.append([int(val) for val in resAdd]) supported.sort(reverse = True) for res in supported: comboResolution.append_text(str(res)) entryWidth.set_text('') entryHeight.set_text('') del(i) comboResolution.show_all() comboResolution.set_active(0) if len(supported) > 1: buttonLess.set_sensitive(True) return def OnLess(widget): supported.pop(comboResolution.get_active()) comboResolution.remove_text(comboResolution.get_active()) for i in supported: comboResolution.remove_text(0) supported.sort(reverse = True) for res in supported: comboResolution.append_text(str(res)) comboResolution.show_all() comboResolution.set_active(0) if len(supported) < 2: buttonLess.set_sensitive(False) del(i) return def OnSelect(widget): global select select = supported[comboResolution.get_active()] return def on_entry_res(widget, data): if data == 1: text = entryHeight.get_text().strip() entryHeight.set_text(''.join([i for i in text if i in '0123456789'])) if data == 0: text = entryWidth.get_text().strip() entryWidth.set_text(''.join([i for i in text if i in '0123456789'])) return def on_entry_remove(widget): text = entryRemove.get_text().strip() entryRemove.set_text(''.join([i for i in text if i in str(found).replace(',', '').strip('[]')+','])) return def OnAccept(widget, event=None): global select order = (0, 1, 3, 5, 6, 7) config = [5, 50, 0, 3, 0, 3, 0.15, 1] string = entryRemove.get_text() camLess = (string[0:len(string)]).split(",") while '' in camLess: camLess.pop(camLess.index('')) for cam in camLess: if (int(cam) in found) & (len(found) > 3): found.pop(found.index(int(cam))) for i in xrange(6): lim_[i][0] = int(spinMin[i].get_value()) lim_[i][1] = int(spinMax[i].get_value()) config[order[i]] = int(spinDef[i].get_value()) if i == 4: config[order[i]] = round(spinDef[i].get_value(), 2) lim_[i][0] = round(spinMin[i].get_value(), 2) lim_[i][1] = round(spinMax[i].get_value(), 2) if not (select in supported): select = supported[0] default_file.write('as_is', 'cameras', 'supported_resolutions', supported) default_file.write('as_is', 'cameras', 'resolution', select) default_file.write('as_is', 'cameras', 'numbers', found) default_file.write('as_is', 'cameras', 'config', config) default_file.write('as_is', 'adjustments', 'limits', lim_) return global select default_file = config_file(file) supported = default_file.read('list', 'cameras', 'supported_resolutions') select = default_file.read('list', 'cameras', 'resolution') found = [0, 1, 2] #Element for first panel (supported resolutions) frameCams = gtk.Frame('Cameras configuration') frameCams.set_border_width(5) comboResolution = gtk.combo_box_new_text() comboResolution.set_size_request(150, 30) for res in supported: comboResolution.append_text(str(res)) comboResolution.set_active(0) buttonLess = gtk.Button() buttonLess.set_image(gtk.image_new_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_BUTTON)) buttonPlus = gtk.Button() buttonPlus.set_image(gtk.image_new_from_stock(gtk.STOCK_ADD, gtk.ICON_SIZE_BUTTON)) buttonSelect = gtk.Button('Select as default') buttonPlus.connect('clicked', OnPlus, True) buttonLess.connect('clicked', OnLess) buttonSelect.connect('clicked', OnSelect) if len(supported) < 2: buttonLess.set_sensitive(False) #Element for first panel (add resolutions) entryWidth = gtk.Entry(max = 4) entryHeight = gtk.Entry(max = 4) buttonAdd = gtk.Button('Add') buttonAdd.connect('clicked', OnPlus, False) entryHeight.connect('changed', on_entry_res, 1) #Element for first panel (remove cameras from list) entryConnected = gtk.Entry(len(str(found))) entryConnected.set_text(str(found)) entryConnected.set_editable(False) entryRemove = gtk.Entry(len(str(found))-len(found)-1) entryRemove.connect('changed', on_entry_remove) #Packing table for adding and removing resolution tableResolution = gtk.Table(2, 4, False) tableResolution.attach(gtk.Label('Supported resolutions:'), 0, 1, 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolution.attach(comboResolution, 1, 2, 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolution.attach(buttonLess, 2, 3 , 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolution.attach(buttonPlus, 3, 4, 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolution.attach(buttonSelect, 0, 1, 1, 2, gtk.FILL, gtk.FILL) tableResolution.set_col_spacings(5) tableResolution.set_col_spacing(1, 28) #Packing table for adding custom resolution tableResolutionAdd = gtk.Table(2, 4, False) tableResolutionAdd.attach(entryWidth, 0, 1, 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolutionAdd.attach(gtk.Label(' x '), 1, 2, 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolutionAdd.attach(entryHeight, 2, 3 , 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolutionAdd.attach(buttonAdd, 3, 4, 0, 1, gtk.SHRINK, gtk.SHRINK) tableResolutionAdd.attach(gtk.Label('Width'), 0, 1, 1, 2, gtk.FILL, gtk.FILL) tableResolutionAdd.attach(gtk.Label('Height'), 2, 3, 1, 2, gtk.FILL, gtk.FILL) #Packing table for removing cameras from list tableCameras = gtk.Table(2, 3, False) tableCameras.attach(gtk.Label('Connected cameras:'), 0, 1, 0, 1, gtk.SHRINK, gtk.SHRINK) tableCameras.attach(entryConnected, 1, 2, 0, 1, gtk.SHRINK, gtk.SHRINK) tableCameras.attach(gtk.Label('Remove only:'), 0, 1, 1, 2, gtk.SHRINK, gtk.SHRINK) tableCameras.attach(entryRemove, 1, 2, 1, 2, gtk.SHRINK, gtk.SHRINK) #Packing table in cameras related frame boxCameras = gtk.VBox(spacing = 10) boxCameras.set_border_width(10) boxCameras.pack_start(tableResolution) boxCameras.pack_start(tableCameras) frameCams.add(boxCameras) #Load variables labels = ('Filter K-size', 'Sigma (bilateral)', 'Morphology K-size',\ 'Butterworth order', 'Butterworth frequency', 'Minimums') ext_ = ((1, 199), (1, 199), (1, 199), (1, 199), (0.01, 1.00), (1, 199)) lim_ = [[1, 21], [1, 150], [1, 21], [1, 15], [0.01, 1.00], [1, 11]] inc_ = (2, 1, 2, 2, .01, 2) def_ = (5, 50, 3, 3, 0.15, 1) adjMin = [] adjMax = [] adjDef = [] spinMin = [] spinMax = [] spinDef = [] #Elements for the defaults panels frameDefaults = gtk.Frame('Adjustments values') frameDefaults.set_border_width(5) tableDefaults = gtk.Table(7, 5, False) tableDefaults.set_border_width(10) tableDefaults.set_col_spacings(5) tableDefaults.set_row_spacings(2) tableDefaults.attach(gtk.Label('Values'), 0, 1, 0, 1) tableDefaults.attach(gtk.Label('Minimum'), 1, 2, 0, 1) tableDefaults.attach(gtk.Label('Maximum'), 2, 3, 0, 1) tableDefaults.attach(gtk.Label('Default'), 4, 5, 0, 1) tableDefaults.attach(gtk.VSeparator(), 3, 4, 0, 7) for i in xrange(6): adjMin.append(gtk.Adjustment(lim_[i][0], ext_[i][0], ext_[i][1], inc_[i], inc_[i], 0)) adjMax.append(gtk.Adjustment(lim_[i][1], ext_[i][0], ext_[i][1], inc_[i], inc_[i], 0)) adjDef.append(gtk.Adjustment(def_[i], ext_[i][0], ext_[i][1], inc_[i], inc_[i], 0)) spinMin.append(gtk.SpinButton(adjMin[i], digits = 0 ) if i != 4 else gtk.SpinButton(adjMin[i], digits = 2)) spinMax.append(gtk.SpinButton(adjMax[i], digits = 0 ) if i != 4 else gtk.SpinButton(adjMax[i], digits = 2)) spinDef.append(gtk.SpinButton(adjDef[i], digits = 0 ) if i != 4 else gtk.SpinButton(adjDef[i], digits = 2)) tableDefaults.attach(gtk.Label(labels[i]), 0, 1, i+1, i+2) tableDefaults.attach(spinMin[i], 1, 2, i+1, i+2) tableDefaults.attach(spinMax[i], 2, 3, i+1, i+2) tableDefaults.attach(spinDef[i], 4, 5, i+1, i+2) spinMin[i].connect('changed', on_change, (i, -1)) spinMax[i].connect('changed', on_change, (i, 1)) spinDef[i].connect('changed', on_change, (i, 0)) frameDefaults.add(tableDefaults) boxMain = gtk.VBox(spacing = 10) boxMain.pack_start(frameCams) boxMain.pack_start(frameDefaults) dialog = gtk.Dialog("Default settings", None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) dialog.vbox.pack_start(boxMain) boxMain.show_all() response = dialog.run() if response == gtk.RESPONSE_ACCEPT: OnAccept(None) dialog.destroy() return