示例#1
0
 def start_recording(quality, bitrate):
     global recorder
     global state
     global menu_timer_id
     recorder.start(quality, bitrate, VIDEO_LENGTH * 60)
     
     # menu
     hide_menu()
     # timers
     Watchdog.clear_timeout(menu_timer_id)
     
     state = 'recording'
示例#2
0
 def redraw_menu(btn):
     # boooooo
     global state
     global menu_timer_id
     
     if state != 'menu': show_menu()
     
     # timers
     Watchdog.clear_timeout(menu_timer_id)
     menu_timer_id = Watchdog.set_timeout(MENU_TIMEOUT, hide_menu)
     
     stop_select_propagation = False
     
     # first, allow to go up if it's possible and requested
     if btn == 'up':
         if menu['level']:
             menu['level'].pop()
             
     # second, go down to the selected item
     item, prev_item = menu, menu
     for level in menu['level']:
         prev_item = item
         item = item['items'][level]
         
     # third, allow to go even lower, if it's possible and requested
     if btn in ['down', 'select']:
         if 'items' in item['items'][item['selected']]:
             menu['level'].append(item['selected'])
             prev_item = item
             item = item['items'][item['selected']]
             stop_select_propagation = True
         
     # allow to go through items of this level
     if btn in ['left', 'right']:
         if 'left' == btn:
             delta = -1
         if 'right' == btn:
             delta = +1
         item['selected'] = (item['selected'] + delta) % len(item['items'])
     
     # prepare item meta to be printed to screen
     prev_name = ''
     name = item['items'][item['selected']]['name']
     description = item['items'][item['selected']].get('description', '')
     if not description:
         if item != prev_item:
             prev_name = '%s%s' % (lcd.CHAR_ARROW_UP, prev_item['items'][prev_item['selected']]['name'])
     position = '%s%d/%d%s' % (lcd.CHAR_ARROW_LEFT,
                               item['selected'] + 1, len(item['items']),
                               lcd.CHAR_ARROW_RIGHT)
     
     lcd.home()
     lcd.clear()
     line1 = '%-16s' % (name, )
     line2 = '%-11s%5s' % (description or prev_name, position)
     lcd.message('%s\n%s' % (line1, line2))
     
     # finally process SELECT
     if btn == 'select' and not stop_select_propagation:
         selected_item = item['items'][item['selected']]
         if 'call' in selected_item:
             func, args = selected_item['call'], selected_item['args']
             func(*args)