예제 #1
0
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
예제 #2
0
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