Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ObcGuiClass(xbmcgui.WindowXML):
- obc_screen = 0
- MAINLABEL = {}
- BUTTON1 = {}
- BUTTON2 = {}
- BUTTON3 = {}
- BUTTON4 = {}
- BUTTON5 = {}
- BUTTON6 = {}
- BUTTON7 = {}
- BUTTON8 = {}
- LABEL1 = {}
- LABEL2 = {}
- LABEL3 = {}
- LABEL4 = {}
- LABEL5 = {}
- LABEL6 = {}
- LABEL7 = {}
- LABEL8 = {}
- IMAGE1 = {}
- IMAGE2 = {}
- IMAGE3 = {}
- IMAGE4 = {}
- IMAGE5 = {}
- IMAGE6 = {}
- IMAGE7 = {}
- IMAGE8 = {}
- # [imgae, label]
- GAUGE_L = [None, None]
- GAUGE_M = [None, None]
- GAUGE_R = [None, None]
- isActive = False
- ACTION_PARENT_DIR = 9
- ACTION_PREVIOUS_MENU = 10
- ACTION_CLOSE_DIALOG = 51
- ACTION_SELECT_ITEM = 7
- ACTION_MOVE_LEFT = 1
- ACTION_MOVE_RIGHT = 2
- ACTION_MOVE_UP = 3
- ACTION_MOVE_DOWN = 4
- ACTION_NAV_BACK = 92
- ACTION_BACKSPACE = 110
- def __init__(self, xmlFilename, scriptPath, defaultSkin, defaultRes):
- log("Initializing OBC Gui...")
- self.updateTimer = None
- self.updateObc = None
- self.pause_submenu_counter = False
- self.window_id = -10000
- def isVisible(self):
- log('OBC VISIBLE: WINDOW ID: %s' % xbmcgui.getCurrentWindowId())
- if self.isActive and xbmcgui.getCurrentWindowId() == self.window_id:
- return True
- else:
- return False
- def onInit(self):
- log('OBC INIT: WINDOW ID: %s' % xbmcgui.getCurrentWindowId())
- self.window_id = xbmcgui.getCurrentWindowId()
- self.COOLANT = [['- Kühlwassertemperatur', True, False], [partial(EVENT.obc_coolant_get), True, True, [], []], []]
- self.CONS1 = [['Verbrauch 1', True, True], [partial(EVENT.obc_cons1_get), True, True, ['RESET'], [partial(EVENT.obc_cons1_reset)]], []]
- self.CONS2 = [['Verbrauch 2', True, True], [partial(EVENT.obc_cons2_get), True, True, ['RESET'], [partial(EVENT.obc_cons2_reset)]], []]
- self.RANGE = [['- Reichweite', True, False], [partial(EVENT.obc_range_get), True, True, [], []], []]
- self.FUELLEVEL = [['- Tankinhalt', True, False], [partial(EVENT.obc_fuellevel_get), True, True, [], []], []]
- self.DIST = [['Distanz', True, True], [partial(EVENT.obc_dist_get), True, True, ['SET', 'RESET'], [partial(self.set_distance), partial(EVENT.obc_dist_reset)]], []]
- self.ARR = [['- Ankunft', True, False], [partial(EVENT.obc_arr_get), True, True, [], []], []]
- self.RPM = [['- Drehzahl', True, False], [partial(EVENT.obc_rpm_get), True, True, [], []], []]
- self.SPEED = [['- Akt. Geschwindigkeit', True, False], [partial(EVENT.obc_speed_get), True, True, [], []], []]
- self.AVG = [['Geschwindigkeit', True, True], [partial(EVENT.obc_avg_get), True, True, ['RESET'], [partial(EVENT.obc_avg_reset)]], []]
- self.LIMIT = [['Limit', True, True], [partial(EVENT.obc_limit_get), True, True, ['SET', 'SPEED', 'RESET', 'ACTIVATE', 'DEACTIVATE'], [partial(self.set_limit), partial(EVENT.obc_limit_set), partial(EVENT.obc_limit_reset), partial(EVENT.obc_limit_enable, True), partial(EVENT.obc_limit_enable, False)]], [EVENT.obc_limit_get_ind]]
- self.MEMO = [['Memo', True, True], [' ', True, True, ['ACTIVATE', 'DEACTIVATE'], [partial(EVENT.obc_memo_enable, True), partial(EVENT.obc_memo_enable, False)]], [EVENT.obc_memo_get_ind]]
- self.TMR1 = [['Timer 1', True, True], [partial(EVENT.obc_tmr1_get), True, True, ['SET', 'RESET', 'ACTIVATE', 'DEACTIVATE'], [partial(self.set_timer, 1), partial(EVENT.obc_tmr1_reset), partial(EVENT.obc_tmr1_enable, True), partial(EVENT.obc_tmr1_enable, False)]], [EVENT.obc_tmr1_get_ind]]
- self.TMR2 = [['Timer 2', True, True], [partial(EVENT.obc_tmr2_get), True, True, ['SET', 'RESET', 'ACTIVATE', 'DEACTIVATE'], [partial(self.set_timer, 2), partial(EVENT.obc_tmr2_reset), partial(EVENT.obc_tmr2_enable, True), partial(EVENT.obc_tmr2_enable, False)]], [EVENT.obc_tmr2_get_ind]]
- self.STPWTCH = [['- Stopuhr', True, False], [partial(EVENT.obc_stpwtch_get), True, True, [], []], []]
- self.VOLTAGE = [['- Bordspannung', True, False], [partial(EVENT.obc_voltage_get), True, True, [], []], []]
- self.KEYS = [['- Fahrzeugschlüssel', True, False], [partial(EVENT.obc_key_get), True, True, [], []], []]
- self.VIN = [['- VIN', True, False], [partial(EVENT.obc_vin_get), True, True, [], []], []]
- self.ODOMETER = [['- Kilometerstand', True, False], [partial(EVENT.obc_odometer_get), True, True, [], []], []]
- self.CARMODEL = [['- Fahrzeugtyp', True, False], [partial(EVENT.obc_network_get), True, True, [], []], []]
- self.LANGUAGE = [['- Sprache', True, False], [partial(EVENT.obc_language_get), True, True, [], []], []]
- self.AUXLBL = [[' ', True, False], [partial(EVENT.obc_auxventheat_label), True, True, [], []], []]
- self.AUXVENT = [['Standlüftung', EVENT.obc_auxvent_available, EVENT.obc_auxvent_available], [' ', EVENT.obc_auxvent_available, EVENT.obc_auxvent_available, ['ACTIVATE', 'DEACTIVATE'], [partial(EVENT.obc_auxvent_enable, True), partial(EVENT.obc_auxvent_enable, False)]], [EVENT.obc_auxvent_get_ind]]
- self.AUXHEAT = [['Standheizung', EVENT.obc_auxheat_available, EVENT.obc_auxheat_available], [' ', EVENT.obc_auxheat_available, EVENT.obc_auxheat_available, ['ACTIVATE', 'DEACTIVATE'], [partial(EVENT.obc_auxheat_enable, True), partial(EVENT.obc_auxheat_enable, False)]], [EVENT.obc_auxheat_get_ind]]
- self.GPSFIX = [['- GPS FIX', True, False], [partial(EVENT.nav_time_get), True, True, [], []], [EVENT.nav_gpsfix_get]]
- self.GPSTOWN = [['- Ort', True, False], [partial(EVENT.nav_town_get), True, True, [], []], []]
- self.GPSSTREET = [['- Straße', True, False], [partial(EVENT.nav_street_get), True, True, [], []], []]
- self.GPSLAT = [['- Latitude', True, False], [partial(EVENT.nav_latitude_get), True, True, [], []], []]
- self.GPSLON = [['- Longitude', True, False], [partial(EVENT.nav_longitude_get), True, True, [], []], []]
- self.GPSALT = [['- Altitude', True, False], [partial(EVENT.nav_altitude_get), True, True, [], []], []]
- self.EMPTY = [[' ', False, False], [' ', False, False, [], []], []]
- ## BUTTON OBC-Screen[Text, Visible, Enable]
- ## LABEL OBC-Screen[Text, Visible, Enable, Submenu, SubEvents]
- ## IMAGE OBC-Screen[Visible]
- self.obc_screen_min = 0
- self.obc_screen_max = 4
- # OBC 0
- self.MAINLABEL[0] = ['ON-BOARD', True, True]
- self.BUTTON1[0], self.LABEL1[0], self.IMAGE1[0] = self.CONS1
- self.BUTTON2[0], self.LABEL2[0], self.IMAGE2[0] = self.CONS2
- self.BUTTON3[0], self.LABEL3[0], self.IMAGE3[0] = self.RANGE
- self.BUTTON4[0], self.LABEL4[0], self.IMAGE4[0] = self.FUELLEVEL
- self.BUTTON5[0], self.LABEL5[0], self.IMAGE5[0] = self.DIST
- self.BUTTON6[0], self.LABEL6[0], self.IMAGE6[0] = self.ARR
- self.BUTTON7[0], self.LABEL7[0], self.IMAGE7[0] = self.LIMIT
- self.BUTTON8[0], self.LABEL8[0], self.IMAGE8[0] = self.SPEED
- # OBC 1
- self.MAINLABEL[1] = ['ON-BOARD', True, True]
- self.BUTTON1[1], self.LABEL1[1], self.IMAGE1[1] = self.AVG
- self.BUTTON2[1], self.LABEL2[1], self.IMAGE2[1] = self.MEMO
- self.BUTTON3[1], self.LABEL3[1], self.IMAGE3[1] = self.STPWTCH
- self.BUTTON4[1], self.LABEL4[1], self.IMAGE4[1] = self.EMPTY
- self.BUTTON5[1], self.LABEL5[1], self.IMAGE5[1] = self.TMR1
- self.BUTTON6[1], self.LABEL6[1], self.IMAGE6[1] = self.TMR2
- self.BUTTON7[1], self.LABEL7[1], self.IMAGE7[1] = self.AUXVENT
- self.BUTTON8[1], self.LABEL8[1], self.IMAGE8[1] = self.AUXHEAT
- # OBC 2 - Info
- self.MAINLABEL[2] = ['INFORMATION', True, True]
- self.BUTTON1[2], self.LABEL1[2], self.IMAGE1[2] = self.KEYS
- self.BUTTON2[2], self.LABEL2[2], self.IMAGE2[2] = self.ODOMETER
- self.BUTTON3[2], self.LABEL3[2], self.IMAGE3[2] = self.VIN
- self.BUTTON4[2], self.LABEL4[2], self.IMAGE4[2] = self.RPM
- self.BUTTON5[2], self.LABEL5[2], self.IMAGE5[2] = self.COOLANT
- self.BUTTON6[2], self.LABEL6[2], self.IMAGE6[2] = self.VOLTAGE
- self.BUTTON7[2], self.LABEL7[2], self.IMAGE7[2] = self.CARMODEL
- self.BUTTON8[2], self.LABEL8[2], self.IMAGE8[2] = self.LANGUAGE
- # OBC 3 - GPS
- self.MAINLABEL[3] = ['GPS', True, True]
- self.BUTTON1[3], self.LABEL1[3], self.IMAGE1[3] = self.GPSFIX
- self.BUTTON2[3], self.LABEL2[3], self.IMAGE2[3] = self.GPSTOWN
- self.BUTTON3[3], self.LABEL3[3], self.IMAGE3[3] = self.GPSSTREET
- self.BUTTON4[3], self.LABEL4[3], self.IMAGE4[3] = self.GPSLAT
- self.BUTTON5[3], self.LABEL5[3], self.IMAGE5[3] = self.GPSLON
- self.BUTTON6[3], self.LABEL6[3], self.IMAGE6[3] = self.GPSALT
- self.BUTTON7[3], self.LABEL7[3], self.IMAGE7[3] = self.EMPTY
- self.BUTTON8[3], self.LABEL8[3], self.IMAGE8[3] = self.EMPTY
- # OBC 4 - Gauges
- self.MAINLABEL[self.obc_screen_max] = ['INSTRUMENTS', True, True]
- self.BUTTON1[self.obc_screen_max], self.LABEL1[self.obc_screen_max], self.IMAGE1[self.obc_screen_max] = self.EMPTY
- self.BUTTON2[self.obc_screen_max], self.LABEL2[self.obc_screen_max], self.IMAGE2[self.obc_screen_max] = self.EMPTY
- self.BUTTON3[self.obc_screen_max], self.LABEL3[self.obc_screen_max], self.IMAGE3[self.obc_screen_max] = self.EMPTY
- self.BUTTON4[self.obc_screen_max], self.LABEL4[self.obc_screen_max], self.IMAGE4[self.obc_screen_max] = self.EMPTY
- self.BUTTON5[self.obc_screen_max], self.LABEL5[self.obc_screen_max], self.IMAGE5[self.obc_screen_max] = self.EMPTY
- self.BUTTON6[self.obc_screen_max], self.LABEL6[self.obc_screen_max], self.IMAGE6[self.obc_screen_max] = self.EMPTY
- self.BUTTON7[self.obc_screen_max], self.LABEL7[self.obc_screen_max], self.IMAGE7[self.obc_screen_max] = self.EMPTY
- self.BUTTON8[self.obc_screen_max], self.LABEL8[self.obc_screen_max], self.IMAGE8[self.obc_screen_max] = self.EMPTY
- log('OBC: GUI Opening')
- self.selectedButton = -1
- self.selectedSubButton = -1
- self.timeoutSubMenu = 2000
- self.obc_screen_next = False
- self.isActive = True
- self.MAINLABEL[-1] = self.getControl(200)
- self.mainleft = self.getControl(201)
- self.mainright = self.getControl(202)
- self.IMAGE1[-1] = self.getControl(101)
- self.IMAGE2[-1] = self.getControl(102)
- self.IMAGE3[-1] = self.getControl(103)
- self.IMAGE4[-1] = self.getControl(104)
- self.IMAGE5[-1] = self.getControl(105)
- self.IMAGE6[-1] = self.getControl(106)
- self.IMAGE7[-1] = self.getControl(107)
- self.IMAGE8[-1] = self.getControl(108)
- self.BUTTON1[-1] = self.getControl(111)
- self.BUTTON2[-1] = self.getControl(112)
- self.BUTTON3[-1] = self.getControl(113)
- self.BUTTON4[-1] = self.getControl(114)
- self.BUTTON5[-1] = self.getControl(115)
- self.BUTTON6[-1] = self.getControl(116)
- self.BUTTON7[-1] = self.getControl(117)
- self.BUTTON8[-1] = self.getControl(118)
- self.LABEL1[-1] = self.getControl(121)
- self.LABEL2[-1] = self.getControl(122)
- self.LABEL3[-1] = self.getControl(123)
- self.LABEL4[-1] = self.getControl(124)
- self.LABEL5[-1] = self.getControl(125)
- self.LABEL6[-1] = self.getControl(126)
- self.LABEL7[-1] = self.getControl(127)
- self.LABEL8[-1] = self.getControl(128)
- self.GAUGE_L = [self.getControl(203), self.getControl(213)]
- self.GAUGE_M = [self.getControl(204), self.getControl(214)]
- self.GAUGE_R = [self.getControl(205), self.getControl(215)]
- # Bottom Line
- self.LABEL211 = self.getControl(211)
- self.update(startup=True)
- self.set_default_navigation()
- if self.updateTimer:
- self.updateTimer.cancel()
- self.updateTimer.join()
- self.updateTimer = RepeatTimer(0.333, self.update)
- self.updateTimer.start()
- self.some_obc_req()
- if self.updateObc:
- self.updateObc.cancel()
- self.updateObc.join()
- self.updateObc = RepeatTimer(1, self.some_obc_req)
- self.updateObc.start()
- EVENT.obc_req(True)
- def onClick(self, controlId):
- log('ONCLICK: %s' % controlId, 3)
- # left
- if controlId == 201:
- self.obcPrev()
- # right
- elif controlId == 202:
- self.obcNext()
- def onAction(self, Action):
- if Action in [self.ACTION_PREVIOUS_MENU, self.ACTION_CLOSE_DIALOG, self.ACTION_NAV_BACK, self.ACTION_BACKSPACE]:
- self.onStop()
- if Action == self.ACTION_MOVE_LEFT and self.obc_screen > self.obc_screen_min: # left
- self.obcPrev()
- elif Action == self.ACTION_MOVE_RIGHT and self.obc_screen < self.obc_screen_max: # right
- self.obcNext()
- elif Action == self.ACTION_SELECT_ITEM:
- if self.selectedButton < 0:
- if self.set_submenu(0):
- self.counter_submenu()
- else:
- log('submenu selected')
- log('obc screen %s' % self.obc_screen)
- log('Button %s' % self.selectedButton)
- log('SubButton %s' % self.selectedSubButton)
- self.onSubmenuSelected(self.obc_screen, self.selectedButton, self.selectedSubButton)
- self.timeoutSubMenu = 0
- elif Action == self.ACTION_MOVE_UP:
- if self.selectedButton > 0:
- self.set_submenu(self.selectedSubButton - 1)
- self.timeoutSubMenu = 2000
- elif Action == self.ACTION_MOVE_DOWN:
- if self.selectedButton > 0:
- self.set_submenu(self.selectedSubButton + 1)
- self.timeoutSubMenu = 2000
- log('OBCGUI FOCUSED ID: %s' % self.getFocusId(), 3)
- def onFocus(self, controlId):
- pass
- def onStop(self):
- log('OBC: GUI Closing')
- self.updateObc.cancel()
- self.updateTimer.cancel()
- self.isActive = False
- self.close()
- self.updateObc.join()
- self.updateTimer.join()
- log('Timer joined')
- delete_object(self.updateObc)
- delete_object(self.updateTimer)
- def set_default_navigation(self):
- self.BUTTON1[-1].setNavigation(self.BUTTON1[-1], self.BUTTON2[-1], self.BUTTON1[-1], self.BUTTON1[-1])
- self.BUTTON2[-1].setNavigation(self.BUTTON1[-1], self.BUTTON3[-1], self.BUTTON2[-1], self.BUTTON2[-1])
- self.BUTTON3[-1].setNavigation(self.BUTTON2[-1], self.BUTTON4[-1], self.BUTTON3[-1], self.BUTTON3[-1])
- self.BUTTON4[-1].setNavigation(self.BUTTON3[-1], self.BUTTON5[-1], self.BUTTON4[-1], self.BUTTON4[-1])
- self.BUTTON5[-1].setNavigation(self.BUTTON4[-1], self.BUTTON6[-1], self.BUTTON5[-1], self.BUTTON5[-1])
- self.BUTTON6[-1].setNavigation(self.BUTTON5[-1], self.BUTTON7[-1], self.BUTTON6[-1], self.BUTTON6[-1])
- self.BUTTON7[-1].setNavigation(self.BUTTON6[-1], self.BUTTON8[-1], self.BUTTON7[-1], self.BUTTON7[-1])
- self.BUTTON8[-1].setNavigation(self.BUTTON7[-1], self.BUTTON8[-1], self.BUTTON8[-1], self.BUTTON8[-1])
- def set_submenu(self, menu_pos):
- if self.getFocusId() == 111:
- label_textlist = self.LABEL1
- label_control = self.LABEL1[-1]
- self.selectedButton = 1
- button_control = self.BUTTON1[-1]
- elif self.getFocusId() == 112:
- label_textlist = self.LABEL2
- label_control = self.LABEL2[-1]
- self.selectedButton = 2
- button_control = self.BUTTON2[-1]
- elif self.getFocusId() == 113:
- label_textlist = self.LABEL3
- label_control = self.LABEL3[-1]
- self.selectedButton = 3
- button_control = self.BUTTON3[-1]
- elif self.getFocusId() == 114:
- label_textlist = self.LABEL4
- label_control = self.LABEL4[-1]
- self.selectedButton = 4
- button_control = self.BUTTON4[-1]
- elif self.getFocusId() == 115:
- label_textlist = self.LABEL5
- label_control = self.LABEL5[-1]
- self.selectedButton = 5
- button_control = self.BUTTON5[-1]
- elif self.getFocusId() == 116:
- label_textlist = self.LABEL6
- label_control = self.LABEL6[-1]
- self.selectedButton = 6
- button_control = self.BUTTON6[-1]
- elif self.getFocusId() == 117:
- label_textlist = self.LABEL7
- label_control = self.LABEL7[-1]
- self.selectedButton = 7
- button_control = self.BUTTON7[-1]
- elif self.getFocusId() == 118:
- label_textlist = self.LABEL8
- label_control = self.LABEL8[-1]
- self.selectedButton = 8
- button_control = self.BUTTON8[-1]
- else:
- return False
- if not len(label_textlist[self.obc_screen][3]) > 0:
- self.selectedButton = -1
- self.selectedSubButton = -1
- return False
- if menu_pos < 0:
- menu_pos = len(label_textlist[self.obc_screen][3]) - 1
- elif menu_pos > len(label_textlist[self.obc_screen][3]) - 1:
- menu_pos = 0
- if label_textlist[self.obc_screen][3][menu_pos]:
- label_control.setLabel(' ')
- time.sleep(0.100)
- color = 'FFFF7E00' # amber
- # color = 'FF0084FF' # blue
- # color = 'FFEEEEFF' # white
- label_control.setLabel('[COLOR %s]- %s -[/COLOR]' % (color, label_textlist[self.obc_screen][3][menu_pos]))
- self.selectedSubButton = menu_pos
- button_control.setNavigation(button_control, button_control, button_control, button_control)
- return True
- else:
- self.selectedButton = -1
- self.selectedSubButton = -1
- return False
- def reset_submenu(self):
- self.selectedButton = -1
- self.selectedSubButton = -1
- self.update()
- self.set_default_navigation()
- def onSubmenuSelected(self, obc_screen, button, sub_button):
- if button == 1:
- obc_event = self.LABEL1[obc_screen][4]
- elif button == 2:
- obc_event = self.LABEL2[obc_screen][4]
- elif button == 3:
- obc_event = self.LABEL3[obc_screen][4]
- elif button == 4:
- obc_event = self.LABEL4[obc_screen][4]
- elif button == 5:
- obc_event = self.LABEL5[obc_screen][4]
- elif button == 6:
- obc_event = self.LABEL6[obc_screen][4]
- elif button == 7:
- obc_event = self.LABEL7[obc_screen][4]
- elif button == 8:
- obc_event = self.LABEL8[obc_screen][4]
- else:
- return
- obc_event[sub_button]()
- def counter_submenu(self):
- self.timeoutSubMenu = 2000
- thread = Thread(target=self._counter_submenu)
- thread.setDaemon(True)
- thread.start()
- def _counter_submenu(self):
- while self.timeoutSubMenu > 0:
- if not self.pause_submenu_counter:
- self.timeoutSubMenu -= 1
- time.sleep(0.001)
- self.reset_submenu()
- def some_obc_req(self):
- if self.obc_screen_next or self.obc_screen == self.obc_screen_max:
- return
- log('OBCGUI: SOME REQUEST TICK', 3)
- if self.obc_screen == 2:
- EVENT.obc_voltage_req()
- elif self.obc_screen == 0:
- EVENT.ike_get_state()
- elif self.obc_screen == 3:
- EVENT.nav_position_req()
- EVENT.nav_location_req()
- def obcNext(self):
- self.obc_screen_next = True # pause update
- if self.obc_screen == self.obc_screen_max:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_Gauges', '0')
- else:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_SLIDE', 'left_out')
- self.obc_screen += 1
- if self.obc_screen > self.obc_screen_max:
- inv_slide_direction = True
- self.obc_screen = self.obc_screen_min
- else:
- inv_slide_direction = False
- time.sleep(0.5) # wait for window animation
- self.obc_screen_next = False
- self.reset_submenu()
- if self.obc_screen == self.obc_screen_max and self.MAINLABEL[self.obc_screen_max][2]:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_Gauges', '1')
- else:
- if inv_slide_direction:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_SLIDE', 'left_in')
- else:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_SLIDE', 'right_in')
- self.setFocus(self.BUTTON1[-1])
- def obcPrev(self):
- self.obc_screen_next = True
- if self.obc_screen == self.obc_screen_max and self.MAINLABEL[self.obc_screen_max][2]:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_Gauges', '0')
- else:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_SLIDE', 'right_out')
- self.obc_screen -= 1
- if self.obc_screen < self.obc_screen_min:
- inv_slide_direction = True
- self.obc_screen = self.obc_screen_max
- else:
- inv_slide_direction = False
- time.sleep(0.5) # wait for window animation
- self.obc_screen_next = False
- self.reset_submenu()
- if self.obc_screen == self.obc_screen_max:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_Gauges', '1')
- else:
- if inv_slide_direction:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_SLIDE', 'right_in')
- else:
- KODI.set_property('IBUSCOMMUNICATOR_OBC_SLIDE', 'left_in')
- self.setFocus(self.BUTTON1[-1])
- def update(self, startup=False):
- def set_button_control(button, obc_screen):
- button[-1].setLabel(button[obc_screen][0])
- button[-1].setVisible(button[obc_screen][1])
- button[-1].setEnabled(button[obc_screen][2])
- def set_label_control(label, obc_screen):
- if label[obc_screen][0] != ' ':
- label[-1].setLabel(label[obc_screen][0]())
- else:
- label[-1].setLabel(' ')
- label[-1].setVisible(label[obc_screen][1])
- label[-1].setEnabled(label[obc_screen][2])
- def set_img_control(image, obc_screen):
- if len(image[obc_screen]) > 0:
- image[-1].setVisible(image[obc_screen][0]())
- else:
- image[-1].setVisible(False)
- # control[-1].setVisibleCondition(control[obc_screen][0])
- def set_gauges():
- self.GAUGE_L[0].setImage(EVENT.obc_speed_get_gauge(), False)
- self.GAUGE_M[0].setImage(EVENT.obc_coolant_get_gauge(), False)
- self.GAUGE_R[0].setImage(EVENT.obc_rpm_get_gauge(), False)
- rpm = EVENT.obc_rpm
- if rpm < 1:
- rpm = '---'
- speed = '---'
- else:
- speed = EVENT.obc_speed_kmh
- self.GAUGE_L[1].setLabel('%s' % speed)
- if EVENT.obc_temperature_unit == '°F':
- self.GAUGE_M[1].setLabel('%s' % EVENT.obc_coolant_F)
- else:
- self.GAUGE_M[1].setLabel('%s' % EVENT.obc_coolant_C)
- self.GAUGE_R[1].setLabel('%s' % rpm)
- set_button_control(self.MAINLABEL, self.obc_screen)
- # top arrows
- if self.obc_screen == self.obc_screen_max:
- self.mainright.setVisible(False)
- else:
- self.mainright.setVisible(True)
- if self.obc_screen == self.obc_screen_min:
- self.mainleft.setVisible(False)
- else:
- self.mainleft.setVisible(True)
- if not startup:
- if self.obc_screen_next:
- return
- elif self.obc_screen == self.obc_screen_max:
- set_gauges()
- return
- if self.selectedButton != 1:
- set_button_control(self.BUTTON1, self.obc_screen)
- set_label_control(self.LABEL1, self.obc_screen)
- set_img_control(self.IMAGE1, self.obc_screen)
- if self.selectedButton != 2:
- set_button_control(self.BUTTON2, self.obc_screen)
- set_label_control(self.LABEL2, self.obc_screen)
- set_img_control(self.IMAGE2, self.obc_screen)
- if self.selectedButton != 3:
- set_button_control(self.BUTTON3, self.obc_screen)
- set_label_control(self.LABEL3, self.obc_screen)
- set_img_control(self.IMAGE3, self.obc_screen)
- if self.selectedButton != 4:
- set_button_control(self.BUTTON4, self.obc_screen)
- set_label_control(self.LABEL4, self.obc_screen)
- set_img_control(self.IMAGE4, self.obc_screen)
- if self.selectedButton != 5:
- set_button_control(self.BUTTON5, self.obc_screen)
- set_label_control(self.LABEL5, self.obc_screen)
- set_img_control(self.IMAGE5, self.obc_screen)
- if self.selectedButton != 6:
- set_button_control(self.BUTTON6, self.obc_screen)
- set_label_control(self.LABEL6, self.obc_screen)
- set_img_control(self.IMAGE6, self.obc_screen)
- if self.selectedButton != 7:
- set_button_control(self.BUTTON7, self.obc_screen)
- set_label_control(self.LABEL7, self.obc_screen)
- set_img_control(self.IMAGE7, self.obc_screen)
- if self.selectedButton != 8:
- set_button_control(self.BUTTON8, self.obc_screen)
- set_label_control(self.LABEL8, self.obc_screen)
- set_img_control(self.IMAGE8, self.obc_screen)
- # Bottom Text
- self.LABEL211.setLabel('%s' % EVENT.obc_outtemp_get())
- def set_distance(self):
- self.pause_submenu_counter = True
- obc_set_value = ObcSetValueClass('OBC_SETVALUE.xml', ADDONPATH, 'Default', '720p')
- if EVENT.obc_distance_unit == 'MLS':
- result = obc_set_value.get_value(EVENT.obc_dist, 1, 6213)
- else:
- result = obc_set_value.get_value(EVENT.obc_dist, 1, 9999)
- log('Value set %s' % result)
- if result != -1:
- EVENT.obc_dist_set(result)
- delete_object(obc_set_value)
- self.pause_submenu_counter = False
- def set_limit(self):
- self.pause_submenu_counter = True
- obc_set_value = ObcSetValueClass('OBC_SETVALUE.xml', ADDONPATH, 'Default', '720p')
- if EVENT.obc_speed_unit == 'MPH':
- result = obc_set_value.get_value(EVENT.obc_limit, 4, 199)
- else:
- result = obc_set_value.get_value(EVENT.obc_limit, 6, 299)
- log('Value set %s' % result)
- if result != -1:
- EVENT.obc_limit_set(result)
- delete_object(obc_set_value)
- self.pause_submenu_counter = False
- def set_timer(self, timer):
- self.pause_submenu_counter = True
- if EVENT.obc_time_unit == '12H':
- obc_set_timer = ObcSetTimer12Class('OBC_SETTIMER12.xml', ADDONPATH, 'Default', '720p')
- else:
- obc_set_timer = ObcSetTimer24Class('OBC_SETTIMER24.xml', ADDONPATH, 'Default', '720p')
- result = obc_set_timer.get_value()
- log('Value set %s' % result)
- if result:
- if timer == 1:
- EVENT.obc_tmr1_set(result[0], result[1])
- if timer == 2:
- EVENT.obc_tmr2_set(result[0], result[1])
- delete_object(obc_set_timer)
- self.pause_submenu_counter = False
- class ObcSetValueClass(xbmcgui.WindowXMLDialog):
- isActive = False
- ACTION_PARENT_DIR = 9
- ACTION_PREVIOUS_MENU = 10
- ACTION_CLOSE_DIALOG = 51
- ACTION_SELECT_ITEM = 7
- ACTION_MOVE_LEFT = 1
- ACTION_MOVE_RIGHT = 2
- ACTION_MOVE_UP = 3
- ACTION_MOVE_DOWN = 4
- ACTION_NAV_BACK = 92
- ACTION_BACKSPACE = 110
- def __init__(self, xmlFilename, scriptPath, defaultSkin, defaultRes):
- log("Initializing OBC Set-Value Gui...")
- self.input_value_start = -1
- self.input_value_min = 0
- self.input_value_max = 0
- def onInit(self):
- log('OBC: Set-Value GUI Opening')
- self.input_value = self.input_value_start
- self.ENTER = self.getControl(201)
- #self.BUTTON1 = self.getControl(202) # HH
- self.BUTTON2 = self.getControl(203) # MM , DISTANCE, LIMIT
- #self.BUTTON3 = self.getControl(204) # AM/PM
- self.CANCEL = self.getControl(205)
- self.selectedButton = -1
- self.isActive = True
- self.setFocus(self.BUTTON2)
- self.BUTTON2.setLabel(('%s' % self.input_value).zfill(2))
- self.set_default_navigation()
- time.sleep(0.050)
- self.submenu_set()
- def onAction(self, Action):
- log('OBC VALUE: ACTION ID: %s' % Action.getId(), 2)
- log('OBC VALUE: FOCUS ID: %s' % self.getFocusId(), 2)
- if Action in [self.ACTION_PREVIOUS_MENU, self.ACTION_CLOSE_DIALOG, self.ACTION_NAV_BACK, self.ACTION_BACKSPACE]:
- self.input_value = -1
- self.onStop()
- if Action == self.ACTION_MOVE_LEFT: # left
- pass
- elif Action == self.ACTION_MOVE_RIGHT: # right
- pass
- elif Action == self.ACTION_SELECT_ITEM:
- if self.getFocus() == self.ENTER:
- self.onStop()
- return
- elif self.getFocus() == self.CANCEL:
- self.input_value = -1
- self.onStop()
- return
- # togle between on and off mode
- if self.selectedButton < 0:
- log('OBC Value: SubAction Enable')
- self.submenu_set()
- else:
- log('OBC Value: SubAction Disable')
- kodi_jump = False
- if self.selectedButton == 203:
- kodi_jump = True
- self.submenu_reset()
- if kodi_jump: KODI.left()
- elif Action == self.ACTION_MOVE_UP:
- if self.selectedButton == 203:
- self.input_value += 1
- if self.input_value > self.input_value_max:
- self.input_value = self.input_value_max
- self.BUTTON2.setLabel(('%s' % self.input_value).zfill(2))
- elif Action == self.ACTION_MOVE_DOWN:
- if self.selectedButton == 203:
- self.input_value -= 1
- if self.input_value < self.input_value_min:
- self.input_value = self.input_value_min
- self.BUTTON2.setLabel(('%s' % self.input_value).zfill(2))
- def onFocus(self, controlId):
- pass
- def onStop(self):
- log('OBC: GUI Closing')
- self.submenu_reset()
- self.close()
- self.isActive = False
- def get_value(self, value_start=0, value_min=0, value_max=500):
- if value_start < value_min or value_start > value_max:
- self.input_value_start = value_min
- else:
- self.input_value_start = value_start
- self.input_value_min = value_min
- self.input_value_max = value_max
- self.doModal()
- return self.input_value
- def set_default_navigation(self):
- # setNavigation(up, down, left, right) -- Set's the controls navigation.
- self.ENTER.setNavigation(self.BUTTON2, self.ENTER, self.ENTER, self.BUTTON2)
- #self.BUTTON1.setNavigation(self.BUTTON2, self.BUTTON1, self.ENTER, self.BUTTON2)
- self.BUTTON2.setNavigation(self.CANCEL, self.ENTER, self.ENTER, self.CANCEL)
- #self.BUTTON3.setNavigation(self.CANCEL, self.BUTTON3, self.BUTTON2, self.CANCEL)
- self.CANCEL.setNavigation(self.CANCEL, self.BUTTON2, self.BUTTON2, self.CANCEL)
- def submenu_set(self):
- if self.getFocusId() == 203:
- self.selectedButton = 203
- self.BUTTON2.setLabel(('%s' % self.input_value).zfill(2), textColor='0xFF000000')
- self.BUTTON2.setNavigation(self.BUTTON2, self.BUTTON2, self.BUTTON2, self.BUTTON2)
- def submenu_reset(self):
- self.BUTTON2.setLabel(('%s' % self.input_value).zfill(2), textColor='0xFFEEEEFF')
- self.selectedButton = -1
- self.set_default_navigation()
- class ObcSetTimer12Class(xbmcgui.WindowXMLDialog):
- isActive = False
- ACTION_PARENT_DIR = 9
- ACTION_PREVIOUS_MENU = 10
- ACTION_CLOSE_DIALOG = 51
- ACTION_SELECT_ITEM = 7
- ACTION_MOVE_LEFT = 1
- ACTION_MOVE_RIGHT = 2
- ACTION_MOVE_UP = 3
- ACTION_MOVE_DOWN = 4
- ACTION_NAV_BACK = 92
- ACTION_BACKSPACE = 110
- def __init__(self, xmlFilename, scriptPath, defaultSkin, defaultRes):
- log("Initializing OBC Set-Time 12 Gui...")
- self.input_value_hour = -1
- self.input_value_minute = -1
- self.input_value_am_pm = 'AM'
- def onInit(self):
- log('OBC: Set-Value GUI Opening')
- self.ENTER = self.getControl(201)
- self.BUTTON1 = self.getControl(202) # HH
- self.BUTTON2 = self.getControl(203) # MM
- self.BUTTON3 = self.getControl(204) # AM/PM
- self.CANCEL = self.getControl(205)
- self.selectedButton = -1
- self.isActive = True
- self.setFocus(self.BUTTON3)
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2))
- self.BUTTON2.setLabel(('%s' % self.input_value_minute).zfill(2))
- self.BUTTON3.setLabel('%s' % self.input_value_am_pm)
- self.set_default_navigation()
- time.sleep(0.050)
- self.submenu_set()
- def onAction(self, Action):
- if Action in [self.ACTION_PREVIOUS_MENU, self.ACTION_CLOSE_DIALOG, self.ACTION_NAV_BACK, self.ACTION_BACKSPACE]:
- self.input_value_hour = -1
- self.input_value_minute = -1
- self.input_value_am_pm = ' '
- self.onStop()
- if Action == self.ACTION_MOVE_LEFT: # left
- pass
- elif Action == self.ACTION_MOVE_RIGHT: # right
- pass
- elif Action == self.ACTION_SELECT_ITEM:
- if self.getFocus() == self.ENTER:
- self.onStop()
- return
- elif self.getFocus() == self.CANCEL:
- self.input_value_hour = -1
- self.input_value_minute = -1
- self.input_value_am_pm = ' '
- self.onStop()
- return
- # togle between on and off mode
- if self.selectedButton < 0:
- self.submenu_set()
- else:
- log('submenu selected')
- self.submenu_reset()
- elif Action == self.ACTION_MOVE_UP:
- if self.selectedButton == 202:
- self.input_value_hour += 1
- if self.input_value_hour > 12:
- self.input_value_hour = 1
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2))
- elif self.selectedButton == 203:
- self.input_value_minute += 1
- if self.input_value_minute > 59:
- self.input_value_minute = 0
- self.BUTTON2.setLabel(('%s' % self.input_value_minute).zfill(2))
- elif self.selectedButton == 204:
- if self.input_value_am_pm == 'AM':
- self.input_value_am_pm = 'PM'
- else:
- self.input_value_am_pm = 'AM'
- self.BUTTON3.setLabel('%s' % self.input_value_am_pm)
- elif Action == self.ACTION_MOVE_DOWN:
- if self.selectedButton == 202:
- self.input_value_hour -= 1
- if self.input_value_hour < 1:
- self.input_value_hour = 12
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2))
- elif self.selectedButton == 203:
- self.input_value_minute -= 1
- if self.input_value_minute < 0:
- self.input_value_minute = 59
- self.BUTTON2.setLabel(('%s' % self.input_value_minute).zfill(2))
- elif self.selectedButton == 204:
- if self.input_value_am_pm == 'AM':
- self.input_value_am_pm = 'PM'
- else:
- self.input_value_am_pm = 'AM'
- self.BUTTON3.setLabel('%s' % self.input_value_am_pm)
- log('OBCGUI FOCUSED ID: %s' % self.getFocusId(), 3)
- def onFocus(self, controlId):
- pass
- def onStop(self):
- log('OBC: GUI Closing')
- self.submenu_reset()
- self.close()
- self.isActive = False
- def get_value(self, value_hour=12, value_minute=0, value_am_pm='AM'):
- self.input_value_hour = value_hour
- self.input_value_minute = value_minute
- self.input_value_am_pm = value_am_pm
- self.doModal()
- if self.input_value_hour < 0:
- return None
- else:
- # 00:00 – 11:59 Uhr = AM
- # 12:00 – 23:59 Uhr = PM
- # https://de.wikipedia.org/wiki/24-Stunden-Z%C3%A4hlung
- if self.input_value_am_pm == 'AM':
- if self.input_value_hour == 12:
- self.input_value_hour = 0
- if self.input_value_am_pm == 'PM':
- if self.input_value_hour <= 12:
- self.input_value_hour += 12
- if self.input_value_hour > 23:
- self.input_value_hour = 0
- return [self.input_value_hour, self.input_value_minute]
- def set_default_navigation(self):
- # setNavigation(up, down, left, right) -- Set's the controls navigation.
- self.ENTER.setNavigation(self.BUTTON1, self.ENTER, self.ENTER, self.BUTTON1)
- self.BUTTON1.setNavigation(self.BUTTON2, self.ENTER, self.ENTER, self.BUTTON2)
- self.BUTTON2.setNavigation(self.BUTTON3, self.BUTTON1, self.BUTTON1, self.BUTTON3)
- self.BUTTON3.setNavigation(self.CANCEL, self.BUTTON2, self.BUTTON2, self.CANCEL)
- self.CANCEL.setNavigation(self.CANCEL, self.BUTTON3, self.BUTTON3, self.CANCEL)
- def submenu_set(self):
- if self.getFocusId() == 202:
- self.selectedButton = 202
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2), textColor='0xFF000000')
- self.BUTTON1.setNavigation(self.BUTTON1, self.BUTTON1, self.BUTTON1, self.BUTTON1)
- elif self.getFocusId() == 203:
- self.selectedButton = 203
- self.BUTTON2.setLabel(('%s' % self.input_value_minute).zfill(2), textColor='0xFF000000')
- self.BUTTON2.setNavigation(self.BUTTON2, self.BUTTON2, self.BUTTON2, self.BUTTON2)
- elif self.getFocusId() == 204:
- self.selectedButton = 204
- self.BUTTON3.setLabel('%s' % self.input_value_am_pm, textColor='0xFF000000')
- self.BUTTON3.setNavigation(self.BUTTON3, self.BUTTON3, self.BUTTON3, self.BUTTON3)
- def submenu_reset(self):
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2), textColor='0xFFEEEEFF')
- self.BUTTON2.setLabel(('%s' % self.input_value_minute).zfill(2), textColor='0xFFEEEEFF')
- self.BUTTON3.setLabel('%s' % self.input_value_am_pm, textColor='0xFFEEEEFF')
- self.selectedButton = -1
- self.set_default_navigation()
- class ObcSetTimer24Class(xbmcgui.WindowXMLDialog):
- isActive = False
- ACTION_PARENT_DIR = 9
- ACTION_PREVIOUS_MENU = 10
- ACTION_CLOSE_DIALOG = 51
- ACTION_SELECT_ITEM = 7
- ACTION_MOVE_LEFT = 1
- ACTION_MOVE_RIGHT = 2
- ACTION_MOVE_UP = 3
- ACTION_MOVE_DOWN = 4
- ACTION_NAV_BACK = 92
- ACTION_BACKSPACE = 110
- def __init__(self, xmlFilename, scriptPath, defaultSkin, defaultRes):
- log("Initializing OBC Set-Time 24 Gui...")
- self.input_value_hour = -1
- self.input_value_minute = -1
- def onInit(self):
- log('OBC: Set-Value GUI Opening')
- self.ENTER = self.getControl(201)
- self.BUTTON1 = self.getControl(202) # HH
- #self.BUTTON2 = self.getControl(203) # MM
- self.BUTTON3 = self.getControl(204) # AM/PM
- self.CANCEL = self.getControl(205)
- self.selectedButton = -1
- self.isActive = True
- self.setFocus(self.BUTTON3)
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2))
- self.BUTTON3.setLabel(('%s' % self.input_value_minute).zfill(2))
- self.set_default_navigation()
- time.sleep(0.050)
- self.submenu_set()
- def onAction(self, Action):
- if Action in [self.ACTION_PREVIOUS_MENU, self.ACTION_CLOSE_DIALOG, self.ACTION_NAV_BACK, self.ACTION_BACKSPACE]:
- self.input_value_hour = -1
- self.input_value_minute = -1
- self.onStop()
- if Action == self.ACTION_MOVE_LEFT: # left
- pass
- elif Action == self.ACTION_MOVE_RIGHT: # right
- pass
- elif Action == self.ACTION_SELECT_ITEM:
- if self.getFocus() == self.ENTER:
- self.onStop()
- return
- elif self.getFocus() == self.CANCEL:
- self.input_value_hour = -1
- self.input_value_minute = -1
- self.onStop()
- return
- # togle between on and off mode
- if self.selectedButton < 0:
- self.submenu_set()
- else:
- log('submenu selected')
- self.submenu_reset()
- elif Action == self.ACTION_MOVE_UP:
- if self.selectedButton == 202:
- self.input_value_hour += 1
- if self.input_value_hour > 23:
- self.input_value_hour = 0
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2))
- elif self.selectedButton == 204:
- self.input_value_minute += 1
- if self.input_value_minute > 59:
- self.input_value_minute = 0
- self.BUTTON3.setLabel(('%s' % self.input_value_minute).zfill(2))
- elif Action == self.ACTION_MOVE_DOWN:
- if self.selectedButton == 202:
- self.input_value_hour -= 1
- if self.input_value_hour < 0:
- self.input_value_hour = 23
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2))
- elif self.selectedButton == 204:
- self.input_value_minute -= 1
- if self.input_value_minute < 0:
- self.input_value_minute = 59
- self.BUTTON3.setLabel(('%s' % self.input_value_minute).zfill(2))
- log('OBCGUI FOCUSED ID: %s' % self.getFocusId(), 3)
- def onFocus(self, controlId):
- pass
- def onStop(self):
- log('OBC: GUI Closing')
- self.submenu_reset()
- self.close()
- self.isActive = False
- def get_value(self, value_hour=0, value_minute=0):
- self.input_value_hour = value_hour
- self.input_value_minute = value_minute
- self.doModal()
- if self.input_value_hour < 0:
- return None
- else:
- return [self.input_value_hour, self.input_value_minute]
- def set_default_navigation(self):
- # setNavigation(up, down, left, right) -- Set's the controls navigation.
- self.ENTER.setNavigation(self.BUTTON1, self.ENTER, self.ENTER, self.BUTTON1)
- self.BUTTON1.setNavigation(self.BUTTON3, self.ENTER, self.ENTER, self.BUTTON3)
- self.BUTTON3.setNavigation(self.CANCEL, self.BUTTON1, self.BUTTON1, self.CANCEL)
- self.CANCEL.setNavigation(self.CANCEL, self.BUTTON3, self.BUTTON3, self.CANCEL)
- def submenu_set(self):
- if self.getFocusId() == 202:
- self.selectedButton = 202
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2), textColor='0xFF000000')
- self.BUTTON1.setNavigation(self.BUTTON1, self.BUTTON1, self.BUTTON1, self.BUTTON1)
- elif self.getFocusId() == 204:
- self.selectedButton = 204
- self.BUTTON3.setLabel(('%s' % self.input_value_minute).zfill(2), textColor='0xFF000000')
- self.BUTTON3.setNavigation(self.BUTTON3, self.BUTTON3, self.BUTTON3, self.BUTTON3)
- def submenu_reset(self):
- self.BUTTON1.setLabel(('%s' % self.input_value_hour).zfill(2), textColor='0xFFEEEEFF')
- self.BUTTON3.setLabel(('%s' % self.input_value_minute).zfill(2), textColor='0xFFEEEEFF')
- self.selectedButton = -1
- self.set_default_navigation()
- def obc_open_gui(self):
- # log('OBC: current Window ID: %s' % xbmcgui.getCurrentWindowId())
- if xbmcgui.getCurrentWindowDialogId() == 10140: # AddonSettings
- KODI.back()
- if OBCGUI.isActive and xbmcgui.getCurrentWindowId() == OBCGUI.window_id:
- OBCGUI.onStop()
- elif OBCGUI.isActive:
- OBCGUI.onStop()
- OBCGUI.show()
- else:
- OBCGUI.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement