def __init__(self, title, label_ok="OK", label_cancel="Cancel"): self.__inputs = [] self.__return_code = self.RETURN_CANCEL # list of value retrieving functions self.__retrievers = [] Window.__init__(self, Window.TYPE_DIALOG) self.set_flag(windowflags.EXCLUSIVE, True) self.connect_closed(self.__on_close, self.RETURN_CANCEL) self.set_title(title) self.__box = Widget() self.add(self.__box) self.__button_ok = Button(label_ok) self.__button_ok.connect_clicked(self.__on_close, self.RETURN_OK) self.__box.add(self.__button_ok) if (not platforms.MAEMO5): self.__button_cancel = Button(label_cancel) self.__button_cancel.connect_clicked(self.__on_close, self.RETURN_CANCEL) self.__box.add(self.__button_cancel) self.__vbox = VBox() self.__box.add(self.__vbox)
def __init__(self): Configurator.__init__(self) self.__vbox = VBox() self.__vbox.set_spacing(12) self.add(self.__vbox) lbl = Label("Voice:", theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(lbl) hbox = HBox() hbox.set_size(600, 80) self.__vbox.add(hbox) current_voice = config.get_voice() chbox = ChoiceBox("Male A", "m1", "Male B", "m2", "Male C", "m3", "Male D", "m4", "Female A", "f1", "Female B", "f2", "Female C", "f3", "Female D", "f4", "Whisper", "whisper") chbox.select_by_value(current_voice) chbox.connect_changed(self.__on_select_voice) hbox.add(chbox) button = Button("Test Voice") button.connect_clicked(self.__on_test_voice) hbox.add(button) pitch = config.get_pitch() self.__lbl_pitch = Label("Pitch: %d" % pitch, theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(self.__lbl_pitch) slider = Slider(theme.mb_slider_gauge) slider.set_background_color(theme.color_mb_gauge) slider.connect_value_changed(self.__on_set_pitch) slider.set_value(pitch / 99.0) slider.set_size(600, 40) self.__vbox.add(slider) speed = config.get_speed() self.__lbl_speed = Label("Words per minute: %d" % speed, theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(self.__lbl_speed) slider = Slider(theme.mb_slider_gauge) slider.set_background_color(theme.color_mb_gauge) slider.connect_value_changed(self.__on_set_speed) slider.set_value((speed - 80) / 290.0) slider.set_size(600, 40) self.__vbox.add(slider) lbl = Label( "Talk Navigation powered by espeak - http://espeak.sourceforge.net", theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(lbl)
def add_input(self, label, default): vbox = VBox() vbox.set_spacing(12) vbox.set_valign(vbox.VALIGN_CENTER) self.__vbox.add(vbox, True) lbl = Label(label, theme.font_mb_plain, theme.color_mb_text) vbox.add(lbl, True) entry = TextInput() vbox.add(entry, True) self.__retrievers.append(lambda: entry.get_text())
class Prefs(Configurator): ICON = theme.fmradio_viewer_radio TITLE = "FM Radio" DESCRIPTION = "Change the FM band of the FM radio" def __init__(self): Configurator.__init__(self) self.__vbox = VBox() self.__vbox.set_spacing(12) #self.__vbox.set_geometry(0, 0, 620, 370) self.add(self.__vbox) lbl = Label("FM radio region:\n", theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(lbl) chbox = ChoiceBox("US/Europe", "EUR", "Japan", "JPN") chbox.select_by_value(config.get_region()) chbox.connect_changed(self.__on_select_fm_band) self.__vbox.add(chbox) lbl = Label("\nDepending on the laws in your country,\n" "operating a FM radio with an inappropriate\n" "region setting may be illegal.", theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(lbl) def render_this(self): x, y = self.get_screen_pos() w, h = self.get_size() screen = self.get_screen() self.__vbox.set_geometry(32, 32, w - 64, h - 64) screen.fill_area(x, y, w, h, theme.color_mb_background) def __on_select_fm_band(self, value): config.set_region(value)
def __init__(self): Configurator.__init__(self) self.__vbox = VBox() self.__vbox.set_spacing(12) self.add(self.__vbox) lbl = Label("Log Level:", theme.font_mb_tiny, theme.color_list_item_text) self.__vbox.add(lbl) log_level = logging.get_level() chbox = ChoiceBox("Off", logging.OFF, "Error", logging.ERROR, "Warning", logging.WARNING, "Info", logging.INFO, "Debug", logging.DEBUG) chbox.select_by_value(log_level) chbox.connect_changed(self.__on_select_log_level) self.__vbox.add(chbox) lbl = Label("Running since: %s" % time.asctime(time.localtime(values.START_TIME)), theme.font_mb_tiny, theme.color_list_item_text) self.__vbox.add(lbl) lbl = Label("Device: %s" % maemo.get_product_code(), theme.font_mb_tiny, theme.color_list_item_text) self.__vbox.add(lbl) lbl = Label("OS: %s" % commands.getoutput("uname -a"), theme.font_mb_tiny, theme.color_list_item_text) self.__vbox.add(lbl) lbl.set_size(560, 0) self.__lbl_mem_size = Label("", theme.font_mb_tiny, theme.color_list_item_text) self.__vbox.add(self.__lbl_mem_size) self.__lbl_bpp = Label("", theme.font_mb_tiny, theme.color_list_item_text) self.__vbox.add(self.__lbl_bpp)
def add_range(self, label, min_value, max_value, preset): def update_label(v): value = min_value + v * total lbl.set_text(label + " %d" % value) vbox = VBox() vbox.set_spacing(12) vbox.set_valign(vbox.VALIGN_CENTER) self.__vbox.add(vbox, True) total = max_value - min_value lbl = Label(label + " %d" % preset, theme.font_mb_plain, theme.color_mb_text) vbox.add(lbl, True) slider = HSlider(theme.mb_slider_gauge) slider.connect_value_changed(update_label) slider.set_value((preset - min_value) / float(total)) vbox.add(slider, True) self.__retrievers.append(lambda: min_value + slider.get_value() * (max_value - min_value))
def __init__(self): Configurator.__init__(self) self.__vbox = VBox() self.__vbox.set_spacing(12) #self.__vbox.set_geometry(0, 0, 620, 370) self.add(self.__vbox) lbl = Label("FM radio region:\n", theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(lbl) chbox = ChoiceBox("US/Europe", "EUR", "Japan", "JPN") chbox.select_by_value(config.get_region()) chbox.connect_changed(self.__on_select_fm_band) self.__vbox.add(chbox) lbl = Label("\nDepending on the laws in your country,\n" "operating a FM radio with an inappropriate\n" "region setting may be illegal.", theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(lbl)
def __init__(self): self.__labels = [] self.__values = [0] * 4 Window.__init__(self, Window.TYPE_DIALOG) self.set_flag(windowflags.EXCLUSIVE, True) self.connect_closed(self.__on_close) self.__hbox = HBox() self.__hbox.set_spacing(12) self.add(self.__hbox) for item in ["h1", "h2", ":", "m1", "m2"]: if (item == ":"): lbl = Label(":", theme.font_sleeptimer_clocksetter, theme.color_mb_text) lbl.set_alignment(lbl.CENTERED) self.__hbox.add(lbl, True) else: vbox = VBox() vbox.set_spacing(12) vbox.set_halign(VBox.HALIGN_CENTER) self.__hbox.add(vbox, True) btn = Button(_UP_ARROW) btn.set_size(80, 80) btn.connect_clicked(self.__on_btn_down, item) vbox.add(btn, False) lbl = Label("0", theme.font_sleeptimer_clocksetter, theme.color_mb_text) lbl.set_alignment(lbl.CENTERED) vbox.add(lbl, True) self.__labels.append(lbl) btn = Button(_DOWN_ARROW) btn.set_size(80, 80) btn.connect_clicked(self.__on_btn_up, item) vbox.add(btn, False)
class InputDialog(Window): def __init__(self, title, label_ok="OK", label_cancel="Cancel"): self.__inputs = [] self.__return_code = self.RETURN_CANCEL # list of value retrieving functions self.__retrievers = [] Window.__init__(self, Window.TYPE_DIALOG) self.set_flag(windowflags.EXCLUSIVE, True) self.connect_closed(self.__on_close, self.RETURN_CANCEL) self.set_title(title) self.__box = Widget() self.add(self.__box) self.__button_ok = Button(label_ok) self.__button_ok.connect_clicked(self.__on_close, self.RETURN_OK) self.__box.add(self.__button_ok) if (not platforms.MAEMO5): self.__button_cancel = Button(label_cancel) self.__button_cancel.connect_clicked(self.__on_close, self.RETURN_CANCEL) self.__box.add(self.__button_cancel) self.__vbox = VBox() self.__box.add(self.__vbox) def __on_close(self, return_code): self.__return_code = return_code self.set_visible(False) def render_this(self): Window.render_this(self) x, y = self.__box.get_screen_pos() w, h = self.__box.get_size() screen = self.__box.get_screen() screen.fill_area(x, y, w, h, theme.color_mb_background) if (not platforms.MAEMO5): self.__vbox.set_geometry(4, 4, w - 8, h - 78) self.__button_ok.set_geometry(w - 260, h - 60, 120, 60) self.__button_cancel.set_geometry(w - 130, h - 60, 120, 60) else: self.__vbox.set_geometry(6, 5, w - 165 - 12, h - 5) self.__button_ok.set_geometry(w - 120, h - 80, 100, 60) def add_input(self, label, default): vbox = VBox() vbox.set_spacing(12) vbox.set_valign(vbox.VALIGN_CENTER) self.__vbox.add(vbox, True) lbl = Label(label, theme.font_mb_plain, theme.color_mb_text) vbox.add(lbl, True) entry = TextInput() vbox.add(entry, True) self.__retrievers.append(lambda: entry.get_text()) def add_range(self, label, min_value, max_value, preset): def update_label(v): value = min_value + v * total lbl.set_text(label + " %d" % value) vbox = VBox() vbox.set_spacing(12) vbox.set_valign(vbox.VALIGN_CENTER) self.__vbox.add(vbox, True) total = max_value - min_value lbl = Label(label + " %d" % preset, theme.font_mb_plain, theme.color_mb_text) vbox.add(lbl, True) slider = HSlider(theme.mb_slider_gauge) slider.connect_value_changed(update_label) slider.set_value((preset - min_value) / float(total)) vbox.add(slider, True) self.__retrievers.append(lambda: min_value + slider.get_value() * (max_value - min_value)) def get_values(self): return [r() for r in self.__retrievers] def run(self): w = gtk.gdk.screen_width() h = min(gtk.gdk.screen_height() - 120, len(self.__retrievers) * 120) if (not platforms.MAEMO5): w -= 80 h += 70 self.set_window_size(w, h) Window.run(self) return self.__return_code
class Prefs(Configurator): ICON = theme.mb_viewer_prefs TITLE = "Debugging" DESCRIPTION = "Information and settings for developers" def __init__(self): Configurator.__init__(self) self.__vbox = VBox() self.__vbox.set_spacing(12) self.add(self.__vbox) lbl = Label("Log Level:", theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(lbl) log_level = logging.get_level() chbox = ChoiceBox("Off", logging.OFF, "Error", logging.ERROR, "Warning", logging.WARNING, "Info", logging.INFO, "Debug", logging.DEBUG) chbox.select_by_value(log_level) chbox.connect_changed(self.__on_select_log_level) self.__vbox.add(chbox) lbl = Label( "Running since: %s" % time.asctime(time.localtime(values.START_TIME)), theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(lbl) lbl = Label("Device: %s" % maemo.get_product_code(), theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(lbl) lbl = Label("OS: %s" % commands.getoutput("uname -a"), theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(lbl) lbl.set_size(560, 0) self.__lbl_mem_size = Label("", theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(self.__lbl_mem_size) self.__lbl_bpp = Label("", theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(self.__lbl_bpp) def __get_mem_size(self): import os pid = os.getpid() size = int( open("/proc/%d/status" % pid, "r").read().splitlines()[15].split()[1]) size /= 1024.0 logging.debug("current Resident Set Size: %0.02f MB", size) return size def render_this(self): x, y = self.get_screen_pos() w, h = self.get_size() screen = self.get_screen() self.__lbl_mem_size.set_text("Resident set size: %0.02f MB" \ % self.__get_mem_size()) try: composited = self.get_window().is_composited() and "composited" \ or "not composited" except: composited = "not composited" self.__lbl_bpp.set_text("Screen: %d x %d x %d, %s" \ % (gtk.gdk.screen_width(), gtk.gdk.screen_height(), screen.get_color_depth(), composited)) self.__vbox.set_geometry(32, 32, w - 64, h - 64) screen.fill_area(x, y, w, h, theme.color_mb_background) def __on_select_log_level(self, level): logging.set_level(level)
class Prefs(Configurator): """ Configurator for the TalkNavigator. """ ICON = theme.youtube_device TITLE = "Talk Navigation" DESCRIPTION = "Configure the Talk Navigation plugin" def __init__(self): Configurator.__init__(self) self.__vbox = VBox() self.__vbox.set_spacing(12) self.add(self.__vbox) lbl = Label("Voice:", theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(lbl) hbox = HBox() hbox.set_size(600, 80) self.__vbox.add(hbox) current_voice = config.get_voice() chbox = ChoiceBox("Male A", "m1", "Male B", "m2", "Male C", "m3", "Male D", "m4", "Female A", "f1", "Female B", "f2", "Female C", "f3", "Female D", "f4", "Whisper", "whisper") chbox.select_by_value(current_voice) chbox.connect_changed(self.__on_select_voice) hbox.add(chbox) button = Button("Test Voice") button.connect_clicked(self.__on_test_voice) hbox.add(button) pitch = config.get_pitch() self.__lbl_pitch = Label("Pitch: %d" % pitch, theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(self.__lbl_pitch) slider = Slider(theme.mb_slider_gauge) slider.set_background_color(theme.color_mb_gauge) slider.connect_value_changed(self.__on_set_pitch) slider.set_value(pitch / 99.0) slider.set_size(600, 40) self.__vbox.add(slider) speed = config.get_speed() self.__lbl_speed = Label("Words per minute: %d" % speed, theme.font_mb_plain, theme.color_mb_listitem_text) self.__vbox.add(self.__lbl_speed) slider = Slider(theme.mb_slider_gauge) slider.set_background_color(theme.color_mb_gauge) slider.connect_value_changed(self.__on_set_speed) slider.set_value((speed - 80) / 290.0) slider.set_size(600, 40) self.__vbox.add(slider) lbl = Label( "Talk Navigation powered by espeak - http://espeak.sourceforge.net", theme.font_mb_tiny, theme.color_mb_listitem_text) self.__vbox.add(lbl) def render_this(self): x, y = self.get_screen_pos() w, h = self.get_size() screen = self.get_screen() self.__vbox.set_geometry(32, 32, w - 64, h - 64) screen.fill_area(x, y, w, h, theme.color_mb_background) def __on_select_voice(self, voice): config.set_voice(voice) def __on_set_pitch(self, v): pitch = int(v * 99) config.set_pitch(pitch) self.__lbl_pitch.set_text("Pitch: %d" % pitch) def __on_set_speed(self, v): speed = 80 + int(v * 290) config.set_speed(speed) self.__lbl_speed.set_text("Words per minute: %d" % speed) def __on_test_voice(self): self.emit_message(msgs.TALKNAV_ACT_SAY, "The quick brown fox jumped over the fence.")