def __init__(self): Gtk.Toolbar.__init__(self) self.button = ToolbarButton(page=self, icon_name="toolbar-view") self.buttons = { CelestialBodyType.MERCURY: None, CelestialBodyType.VENUS: None, CelestialBodyType.EARTH: None, CelestialBodyType.MARS: None, CelestialBodyType.JUPITER: None, CelestialBodyType.SATURN: None, CelestialBodyType.URANUS: None, CelestialBodyType.NEPTUNE: None } self.orbits_button = ToggleToolButton("show-orbits") self.orbits_button.set_tooltip(_("Show planets orbits")) self.orbits_button.set_active(True) self.orbits_button.connect("toggled", self._show_orbits_cb) self.insert(self.orbits_button, -1) self.insert(make_separator(False), -1) for planet in self.buttons: button = ToggleToolButton(get_icon_name(planet)) button.set_tooltip(get_body_name(planet)) button.set_active(True) button.connect("toggled", self._show_planet_cb, planet) self.insert(button, -1) self.buttons[planet] = button self.show_all()
class ViewToolbar(Gtk.Toolbar): __gtype_name__ = 'ViewToolbar' __gsignals__ = { 'go-fullscreen': (GObject.SignalFlags.RUN_FIRST, None, ([])), 'toggle-playlist': (GObject.SignalFlags.RUN_FIRST, None, ([])) } def __init__(self): Gtk.Toolbar.__init__(self) self._show_playlist = ToggleToolButton('view-list') self._show_playlist.set_active(True) # due to Activity.show_all() self._show_playlist.set_tooltip(_('Playlist')) self._show_playlist.set_accelerator('<ctrl>l') self._show_playlist.connect('toggled', self._playlist_toggled_cb) self.insert(self._show_playlist, -1) self._show_playlist.show() self._fullscreen = ToolButton('view-fullscreen') self._fullscreen.set_tooltip(_('Fullscreen')) self._fullscreen.set_accelerator('<ctrl>f') self._fullscreen.connect('clicked', self._fullscreen_cb) self.insert(self._fullscreen, -1) self._fullscreen.show() def _fullscreen_cb(self, button): self.emit('go-fullscreen') def _playlist_toggled_cb(self, button): self.emit('toggle-playlist')
def __init__(self, activity): Gtk.Toolbar.__init__(self) self._activity = activity self._speech = SpeechManager() self._is_paused = False self.load_speech_parameters() self._voices = self._speech.get_all_voices() # a dictionary locale = os.environ.get('LANG', '') language_location = locale.split('.', 1)[0].lower() language = language_location.split('_')[0] # if the language is es but not es_es default to es_la (latin voice) if language == 'es' and language_location != 'es_es': language_location = 'es_la' self._voice = 'en_us' if language_location in self._voices: self._voice = language_location elif language in self._voices: self._voice = language voice_names = [] for language, name in self._voices.iteritems(): voice_names.append((language, name)) voice_names.sort(self._compare_voice) # Play button self._play_button = ToggleToolButton('media-playback-start') self._play_button.show() self._play_button.connect('toggled', self._play_toggled_cb) self.insert(self._play_button, -1) self._play_button.set_tooltip(_('Play / Pause')) # Stop button self._stop_button = ToolButton('media-playback-stop') self._stop_button.show() self._stop_button.connect('clicked', self._stop_clicked_cb) self._stop_button.set_sensitive(False) self.insert(self._stop_button, -1) self._stop_button.set_tooltip(_('Stop')) # Language list combo = ComboBox() which = 0 for pair in voice_names: language, name = pair combo.append_item(language, name) if language == self._voice: combo.set_active(which) which += 1 combo.connect('changed', self._voice_changed_cb) combotool = ToolComboBox(combo) self.insert(combotool, -1) combotool.show() self._speech.connect('stop', self._reset_buttons_cb)
def __init__(self, activity): Gtk.Toolbar.__init__(self) voicebar = Gtk.Toolbar() self._activity = activity if not speech.supported: return self.load_speech_parameters() self.sorted_voices = [i for i in speech.voices()] self.sorted_voices.sort(self.compare_voices) default = 0 for voice in self.sorted_voices: if voice[0] == speech.voice[0]: break default = default + 1 # Play button self.play_btn = ToggleToolButton('media-playback-start') self.play_btn.show() self.play_btn.connect('toggled', self.play_cb) self.insert(self.play_btn, -1) self.play_btn.set_tooltip(_('Play / Pause')) self.voice_combo = ComboBox() for voice in self.sorted_voices: self.voice_combo.append_item(voice, voice[0]) self.voice_combo.set_active(default) self.voice_combo.connect('changed', self.voice_changed_cb) combotool = ToolComboBox(self.voice_combo) self.insert(combotool, -1) combotool.show() self.pitchadj = Gtk.Adjustment(0, -100, 100, 1, 10, 0) pitchbar = Gtk.HScale(self.pitchadj) pitchbar.set_draw_value(False) pitchbar.set_update_policy(Gtk.UPDATE_DISCONTINUOUS) pitchbar.set_size_request(150, 15) self.pitchadj.set_value(speech.pitch) pitchtool = Gtk.ToolItem() pitchtool.add(pitchbar) pitchtool.show() self.insert(pitchtool, -1) pitchbar.show() self.rateadj = Gtk.Adjustment(0, -100, 100, 1, 10, 0) ratebar = Gtk.HScale(self.rateadj) ratebar.set_draw_value(False) ratebar.set_update_policy(Gtk.UPDATE_DISCONTINUOUS) ratebar.set_size_request(150, 15) self.rateadj.set_value(speech.rate) ratetool = Gtk.ToolItem() ratetool.add(ratebar) ratetool.show() self.insert(ratetool, -1) ratebar.show() self.pitchadj.connect("value_changed", self.pitch_adjusted_cb) self.rateadj.connect("value_changed", self.rate_adjusted_cb)
class QrReader(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle) self.realize() self.qr_window = Gtk.DrawingArea() self.qr_window.set_double_buffered(False) self.qr_window.set_app_paintable(True) self.image = Gtk.Image() self.box = Gtk.VBox() self.box.pack_start(self.qr_window, True, True, 0) self.box.pack_end(self.image, True, True, 0) self.set_canvas(self.box) self.build_toolbar() self.show_all() self.image.hide() GObject.idle_add(self.setup_init) def build_toolbar(self): toolbox = ToolbarBox() toolbar = toolbox.toolbar activity_button = ActivityButton(self) toolbar.insert(activity_button, -1) toolbar.insert(Gtk.SeparatorToolItem(), -1) self.stop_play = ToogleButton('media-playback-start') self.stop_play.set_tooltip(_("Turn on/off the camera")) self.stop_play.props.active = True self.copylink = ToolButton('text-uri-list') self.copylink.set_tooltip(_("Copy link to clipboard")) self.copylink.set_sensitive(False) toolbar.insert(self.stop_play, -1) toolbar.insert(self.copylink, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar.insert(separator, -1) stopbtn = StopButton(self) toolbar.insert(stopbtn, -1) toolbar.show_all() self.set_toolbar_box(toolbox) def setup_init(self): xid = self.qr_window.get_property('window').get_xid() visor = QrVisor(xid, self.stop_play, self, self.qr_window, self.copylink, self.image) visor.play()
def _add_search_controls(self, toolbar): book_search_item = Gtk.ToolItem() toolbar.search_entry = iconentry.IconEntry() toolbar.search_entry.set_icon_from_name(iconentry.ICON_ENTRY_PRIMARY, 'system-search') toolbar.search_entry.add_clear_button() toolbar.search_entry.connect('activate', self.__search_entry_activate_cb) width = int(Gdk.Screen.width() / 4) toolbar.search_entry.set_size_request(width, -1) book_search_item.add(toolbar.search_entry) toolbar.search_entry.show() toolbar.insert(book_search_item, -1) book_search_item.show() toolbar.source_combo = ComboBox() toolbar.source_combo.props.sensitive = True toolbar.source_changed_cb_id = \ toolbar.source_combo.connect('changed', self.__source_changed_cb) combotool = ToolComboBox(toolbar.source_combo) toolbar.insert(combotool, -1) combotool.show() self.bt_catalogs = ToggleToolButton('books') self.bt_catalogs.set_tooltip(_('Catalogs')) toolbar.insert(self.bt_catalogs, -1) self.bt_catalogs.connect('toggled', self.__toggle_cats_cb) if len(self.catalogs) > 0: self.bt_catalogs.show() if len(self.languages) > 0: toolbar.config_toolbarbutton = ToolbarButton() toolbar.config_toolbarbutton.props.icon_name = 'preferences-system' toolbar.config_toolbarbox = Gtk.Toolbar() toolbar.config_toolbarbutton.props.page = toolbar.config_toolbarbox toolbar.language_combo = ComboBox() toolbar.language_combo.props.sensitive = True combotool = ToolComboBox(toolbar.language_combo) toolbar.language_combo.append_item('all', _('Any language')) for key in self.languages.keys(): toolbar.language_combo.append_item(key, self.languages[key]) toolbar.language_combo.set_active(0) toolbar.config_toolbarbutton.props.page.insert(combotool, -1) toolbar.insert(toolbar.config_toolbarbutton, -1) toolbar.config_toolbarbutton.show() combotool.show() toolbar.language_changed_cb_id = \ toolbar.language_combo.connect('changed', self.__language_changed_cb) self._device_manager = devicemanager.DeviceManager() self._refresh_sources(toolbar) self._device_manager.connect('device-changed', self.__device_changed_cb) toolbar.search_entry.grab_focus() return toolbar
def __init__(self, game, editor_index): Gtk.EventBox.__init__(self) self._game = game self.snd = None self.editor_index = editor_index self.temp_folder = None box = Gtk.Grid() box.set_column_spacing(style.DEFAULT_SPACING) box.set_row_spacing(style.DEFAULT_SPACING) box.props.margin = style.DEFAULT_SPACING self.card = svgcard.SvgCard(-1, { 'front_text': { 'card_text': '', 'text_color': style.Color('#ffffff') } }, None, PAIR_SIZE, '#c0c0c0') self.card.flip() card_align = Gtk.Alignment.new(.5, .5, 0, 0) card_align.add(self.card) box.attach(card_align, 0, 0, 1, 1) self.textentry = Gtk.Entry() self.textentry.connect('changed', self.update_text) self.textentry.set_valign(Gtk.Align.START) box.attach(self.textentry, 0, 1, 1, 1) toolbar = Gtk.VBox() toolbar.set_valign(Gtk.Align.CENTER) browsepicture = ToolButton(icon_name='import_picture', tooltip=_('Insert picture')) toolbar.add(browsepicture) browsesound = ToolButton(icon_name='import_sound', tooltip=_('Insert sound')) toolbar.add(browsesound) browsepicture.connect('clicked', self._load_image) browsesound.connect('clicked', self._load_audio) if speak.espeak.supported: self.usespeak = ToggleToolButton(icon_name='speak') self.usespeak.set_palette(SpeakPalette(self)) toolbar.add(self.usespeak) self.usespeak.connect('toggled', self._usespeak_cb) else: self.usespeak = None self.fontbutton = FontButton() toolbar.add(self.fontbutton) self.id_font_changed = self.fontbutton.connect('changed', self.__font_changed_cb) box.attach(toolbar, 1, 0, 1, 2) self.add(box)
class ToolbarView(Gtk.Toolbar): __gsignals__ = { "show-orbits": (GObject.SIGNAL_RUN_FIRST, None, [bool]), "show-body": (GObject.SIGNAL_RUN_FIRST, None, [int, bool]), } def __init__(self): Gtk.Toolbar.__init__(self) self.button = ToolbarButton(page=self, icon_name="toolbar-view") self.buttons = { CelestialBodyType.MERCURY: None, CelestialBodyType.VENUS: None, CelestialBodyType.EARTH: None, CelestialBodyType.MARS: None, CelestialBodyType.JUPITER: None, CelestialBodyType.SATURN: None, CelestialBodyType.URANUS: None, CelestialBodyType.NEPTUNE: None } self.orbits_button = ToggleToolButton("show-orbits") self.orbits_button.set_tooltip(_("Show planets orbits")) self.orbits_button.set_active(True) self.orbits_button.connect("toggled", self._show_orbits_cb) self.insert(self.orbits_button, -1) self.insert(make_separator(False), -1) for planet in self.buttons: button = ToggleToolButton(get_icon_name(planet)) button.set_tooltip(get_body_name(planet)) button.set_active(True) button.connect("toggled", self._show_planet_cb, planet) self.insert(button, -1) self.buttons[planet] = button self.show_all() def disable_simulation_widgets(self): self.orbits_button.set_sensitive(False) for planet in self.buttons: self.buttons[planet].set_sensitive(False) def enable_simulation_widgets(self): self.orbits_button.set_sensitive(True) for planet in self.buttons: self.buttons[planet].set_sensitive(True) def _show_orbits_cb(self, button): self.emit("show-orbits", button.get_active()) def _show_planet_cb(self, button, planet): self.emit("show-body", planet, button.get_active())
def build_toolbar(self): """Build our Activity toolbar for the Sugar system.""" toolbar_box = ToolbarBox() activity_button = ActivityToolbarButton(self) toolbar_box.toolbar.insert(activity_button, 0) activity_button.show() separator = Gtk.SeparatorToolItem() toolbar_box.toolbar.insert(separator, -1) separator.show() easier_button = ToolButton('create-easier') easier_button.set_tooltip(_('Easier level')) easier_button.connect('clicked', self._easier_button_cb) toolbar_box.toolbar.insert(easier_button, -1) harder_button = ToolButton('create-harder') harder_button.set_tooltip(_('Harder level')) harder_button.connect('clicked', self._harder_button_cb) toolbar_box.toolbar.insert(harder_button, -1) self._risk_button = ToggleToolButton('make-risk') self._risk_button.set_tooltip(_('Make risk')) if self.state and 'risk' in self.state: self._risk_button.set_active(self.state['risk']) self._risk_button.connect('toggled', self._make_risk_button_cb) toolbar_box.toolbar.insert(self._risk_button, -1) separator = Gtk.SeparatorToolItem() toolbar_box.toolbar.insert(separator, -1) separator.show() self.show_trail_button = ToggleToolButton('show-trail') self.show_trail_button.set_tooltip(_('Show trail')) self.show_trail_button.set_active(True) self.show_trail_button.connect('toggled', self._toggled_show_trail_cb) toolbar_box.toolbar.insert(self.show_trail_button, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_size_request(0, -1) separator.set_expand(True) toolbar_box.toolbar.insert(separator, -1) separator.show() stop_button = StopButton(self) toolbar_box.toolbar.insert(stop_button, -1) stop_button.show() self.set_toolbar_box(toolbar_box) toolbar_box.show_all() return toolbar_box
def __init__(self, items, cb, desc): ToggleToolButton.__init__(self) self.items = items if 'icon' in items[0] and _icon_exists(items[0]['icon']): self.props.icon_name = items[0]['icon'] elif 'html' in items[0]: self.set_label(items[0]['html']) # self.set_tooltip(items[0][1]) self.set_tooltip(desc) self.selected = 0 self.connect('clicked', self.toggle_button) self.callback = cb
def __init__(self): ToolbarBox.__init__(self) self._mount_point = None self._filter_type = None self._what_filter = None self.search_entry = iconentry.IconEntry() self.search_entry.set_icon_from_name(iconentry.ICON_ENTRY_PRIMARY, 'entry-search') text = _('Search in %s') % _('Journal') self.search_entry.set_placeholder_text(text) self.search_entry.connect('activate', self._search_entry_activated_cb) self.search_entry.connect('changed', self._search_entry_changed_cb) self.search_entry.add_clear_button() self._autosearch_timer = None self._add_widget(self.search_entry, expand=True) self._favorite_button = ToggleToolButton('emblem-favorite') self._favorite_button.set_tooltip(_('Favorite entries')) self._favorite_button.connect('toggled', self.__favorite_button_toggled_cb) self.toolbar.insert(self._favorite_button, -1) self._favorite_button.show() self._what_search_combo = ComboBox() self._what_combo_changed_sid = self._what_search_combo.connect( 'changed', self._combo_changed_cb) tool_item = ToolComboBox(self._what_search_combo) self.toolbar.insert(tool_item, -1) tool_item.show() self._when_search_combo = self._get_when_search_combo() tool_item = ToolComboBox(self._when_search_combo) self.toolbar.insert(tool_item, -1) tool_item.show() self._sorting_button = SortingButton() self.toolbar.insert(self._sorting_button, -1) self._sorting_button.connect('sort-property-changed', self.__sort_changed_cb) self._sorting_button.show() # TODO: enable it when the DS supports saving the buddies. # self._with_search_combo = self._get_with_search_combo() # tool_item = ToolComboBox(self._with_search_combo) # self.insert(tool_item, -1) # tool_item.show() self._query = self._build_query() self.refresh_filters()
def __init__(self, activity): GObject.GObject.__init__(self) self._browser = None self._activity = activity self.zoomout = ToolButton('zoom-out') self.zoomout.set_tooltip(_('Zoom out')) self.zoomout.connect('clicked', self.__zoomout_clicked_cb) self.insert(self.zoomout, -1) self.zoomout.show() self.zoomin = ToolButton('zoom-in') self.zoomin.set_tooltip(_('Zoom in')) self.zoomin.connect('clicked', self.__zoomin_clicked_cb) self.insert(self.zoomin, -1) self.zoomin.show() self.zoom_original = ToolButton('zoom-original') self.zoom_original.set_tooltip(_('Actual size')) self.zoom_original.connect('clicked', self.__zoom_original_clicked_cb) self.insert(self.zoom_original, -1) self.zoom_original.show() self.separator = Gtk.SeparatorToolItem() self.separator.set_draw(True) self.insert(self.separator, -1) self.separator.show() self.fullscreen = ToolButton('view-fullscreen') self.fullscreen.set_tooltip(_('Fullscreen')) self.fullscreen.connect('clicked', self.__fullscreen_clicked_cb) self.insert(self.fullscreen, -1) self.fullscreen.show() self.traybutton = ToggleToolButton('tray-show') self.traybutton.set_icon_name('tray-favourite') self.traybutton.connect('toggled', self.__tray_toggled_cb) self.traybutton.props.sensitive = False self.traybutton.props.active = False self.insert(self.traybutton, -1) self.traybutton.show() tabbed_view = self._activity.get_canvas() if tabbed_view.get_n_pages(): self._connect_to_browser(tabbed_view.props.current_browser) tabbed_view.connect_after('switch-page', self.__switch_page_cb)
class RecordToolbar(Gtk.Toolbar): def __init__(self, jam): GObject.GObject.__init__(self) def _insertSeparator(x=1): for i in range(x): self.separator = Gtk.SeparatorToolItem() self.separator.set_draw(True) self.insert(self.separator, -1) self.separator.show() #self.toolbox = toolbox self.jam = jam if Config.FEATURES_MIC: self.micRec1Button = ToolButton('rec1') self.micRec1Button.connect('clicked', self.jam.micRec, 'mic1') self.insert(self.micRec1Button, -1) self.micRec1Button.show() self.micRec1Button.set_tooltip(_('Record microphone into slot 1')) self.micRec2Button = ToolButton('rec2') self.micRec2Button.connect('clicked', self.jam.micRec, 'mic2') self.insert(self.micRec2Button, -1) self.micRec2Button.show() self.micRec2Button.set_tooltip(_('Record microphone into slot 2')) self.micRec3Button = ToolButton('rec3') self.micRec3Button.connect('clicked', self.jam.micRec, 'mic3') self.insert(self.micRec3Button, -1) self.micRec3Button.show() self.micRec3Button.set_tooltip(_('Record microphone into slot 3')) self.micRec4Button = ToolButton('rec4') self.micRec4Button.connect('clicked', self.jam.micRec, 'mic4') self.insert(self.micRec4Button, -1) self.micRec4Button.show() self.micRec4Button.set_tooltip(('Record microphone into slot 4')) _insertSeparator() if Config.FEATURES_NEWSOUNDS: self._loopSettingsPalette = LoopSettingsPalette( _('Add new Sound'), self.jam) self.loopSetButton = ToggleToolButton('loop') self.loopSetButton.set_palette(self._loopSettingsPalette) self.insert(self.loopSetButton, -1) self.loopSetButton.show() self.show_all()
def __init__(self, page): self._colorseldlg = None Gtk.Toolbar.__init__(self) self._page = page page._text_toolbar = self self._bold = ToggleToolButton('format-text-bold') self._bold.set_tooltip(_('Bold')) self._bold_id = self._bold.connect('clicked', self._bold_cb) self.insert(self._bold, -1) self._italic = ToggleToolButton('format-text-italic') self._italic.set_tooltip(_('Italic')) self._italic_id = self._italic.connect('clicked', self._italic_cb) self.insert(self._italic, -1) """ self._underline = ToggleToolButton('format-text-underline') self._underline.set_tooltip(_('Underline')) self._underline_id = self._underline.connect('clicked', self._underline_cb) self.insert(self._underline, -1) self._underline.show() """ self._text_color = TextButtonColor(page) self._text_color.set_title(_('Text Color')) item = Gtk.ToolItem() item.add(self._text_color) self.insert(item, -1) separator = Gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) self._font_size_combo = FontSize() self._font_size_changed_id = self._font_size_combo.connect( 'changed', self._font_size_changed_cb) self.insert(self._font_size_combo, -1) # font self._font_combo = FontComboBox() self._font_combo.set_font_name(globos.DEFAULT_FONT) self._fonts_changed_id = self._font_combo.connect( 'changed', self._font_changed_cb) self.insert(ToolComboBox(self._font_combo), -1) self.show_all()
def _add_clock_controls(self, display_toolbar): # First group of radio button to select the type of clock to display button1 = RadioToolButton(icon_name="simple-clock") button1.set_tooltip(_('Simple Clock')) button1.connect("toggled", self._display_mode_changed_cb, _MODE_SIMPLE_CLOCK) display_toolbar.insert(button1, -1) self._display_mode_buttons.append(button1) button2 = RadioToolButton(icon_name="nice-clock", group=button1) button2.set_tooltip(_('Nice Clock')) button2.connect("toggled", self._display_mode_changed_cb, _MODE_NICE_CLOCK) display_toolbar.insert(button2, -1) self._display_mode_buttons.append(button2) button3 = RadioToolButton(icon_name="digital-clock", group=button1) button3.set_tooltip(_('Digital Clock')) button3.connect("toggled", self._display_mode_changed_cb, _MODE_DIGITAL_CLOCK) display_toolbar.insert(button3, -1) self._display_mode_buttons.append(button3) # A separator between the two groups of buttons separator = Gtk.SeparatorToolItem() separator.set_draw(True) display_toolbar.insert(separator, -1) # Now the options buttons to display other elements: date, day # of week... A button in the toolbar to write the time in # full letters self._write_time_btn = ToggleToolButton("write-time") self._write_time_btn.set_tooltip(_('Display time in full letters')) self._write_time_btn.connect("toggled", self._write_time_clicked_cb) display_toolbar.insert(self._write_time_btn, -1) # The button to display the weekday and date self._write_date_btn = ToggleToolButton("write-date") self._write_date_btn.set_tooltip(_('Display weekday and date')) self._write_date_btn.connect("toggled", self._write_date_clicked_cb) display_toolbar.insert(self._write_date_btn, -1) # Another button to speak aloud the time self._speak_time_btn = ToggleToolButton("microphone") self._speak_time_btn.set_tooltip(_('Talking clock')) self._speak_time_btn.connect("toggled", self._speak_time_clicked_cb) display_toolbar.insert(self._speak_time_btn, -1) # A separator between the two groups of buttons separator = Gtk.SeparatorToolItem() separator.set_draw(True) display_toolbar.insert(separator, -1) # And another button to toggle grabbing the hands self._grab_button = ToggleToolButton("grab") self._grab_button.set_tooltip(_('Grab the hands')) self._grab_button.connect("toggled", self._grab_clicked_cb) display_toolbar.insert(self._grab_button, -1)
def __init__(self, handle): activity.Activity.__init__(self, handle) logging.debug('Starting the IRC Activity') self.set_title(_('IRC Activity')) self.add_events(Gdk.EventMask.VISIBILITY_NOTIFY_MASK) self.connect('visibility-notify-event', self.__visibility_notify_event_cb) self.is_visible = False self.client = purk.Client(self) if handle.object_id is None: self.default_config() self.client.show() widget = self.client.get_widget() # CANVAS self.set_canvas(widget) toolbar_box = ToolbarBox() self.activity_button = ActivityButton(self) toolbar_box.toolbar.insert(self.activity_button, 0) self.activity_button.show() title_entry = TitleEntry(self) toolbar_box.toolbar.insert(title_entry, -1) title_entry.show() connectionbtn = ToggleToolButton('connect') connectionbtn.set_active(True) connectionbtn.set_tooltip(_('Disconnect')) connectionbtn.connect('toggled', self._connection_cb) toolbar_box.toolbar.insert(connectionbtn, -1) connectionbtn.show() separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar_box.toolbar.insert(separator, -1) separator.show() stop_button = StopButton(self) toolbar_box.toolbar.insert(stop_button, -1) stop_button.show() self.set_toolbar_box(toolbar_box) toolbar_box.show()
def __init__(self): GObject.GObject.__init__(self) self._show_playlist = ToggleToolButton('view-list') self._show_playlist.set_active(False) self._show_playlist.set_tooltip(_('Show Playlist')) self._show_playlist.connect('toggled', self._playlist_toggled_cb) self.insert(self._show_playlist, -1) self._show_playlist.show() self._fullscreen = ToolButton('view-fullscreen') self._fullscreen.set_tooltip(_('Fullscreen')) self._fullscreen.connect('clicked', self._fullscreen_cb) self.insert(self._fullscreen, -1) self._fullscreen.show()
def __init__(self): BaseEditToolbar.__init__(self) self._view = None self._find_job = None search_item = Gtk.ToolItem() self._search_entry = iconentry.IconEntry() self._search_entry.set_icon_from_name(iconentry.ICON_ENTRY_PRIMARY, 'entry-search') self._search_entry.add_clear_button() self._search_entry.connect('activate', self._search_entry_activate_cb) self._search_entry.connect('changed', self._search_entry_changed_cb) self._search_entry_changed = True width = int(Gdk.Screen.width() / 3) self._search_entry.set_size_request(width, -1) search_item.add(self._search_entry) self._search_entry.show() self.insert(search_item, -1) search_item.show() self._prev = ToolButton('go-previous-paired') self._prev.set_tooltip(_('Previous')) self._prev.props.sensitive = False self._prev.connect('clicked', self._find_prev_cb) self.insert(self._prev, -1) self._prev.show() self._next = ToolButton('go-next-paired') self._next.set_tooltip(_('Next')) self._next.props.sensitive = False self._next.connect('clicked', self._find_next_cb) self.insert(self._next, -1) self._next.show() separator = Gtk.SeparatorToolItem() separator.show() self.insert(separator, -1) self.highlight = ToggleToolButton('format-text-underline') self.highlight.set_tooltip(_('Highlight')) self.highlight.props.sensitive = False self.insert(self.highlight, -1)
def build_toolbar(self): toolbox = ToolbarBox() toolbar = toolbox.toolbar activity_button = ActivityButton(self) toolbar.insert(activity_button, -1) toolbar.insert(Gtk.SeparatorToolItem(), -1) self.stop_play = ToogleButton('media-playback-start') self.stop_play.set_tooltip(_("Turn on/off the camera")) self.stop_play.props.active = True self.copylink = ToolButton('text-uri-list') self.copylink.set_tooltip(_("Copy link to clipboard")) self.copylink.set_sensitive(False) toolbar.insert(self.stop_play, -1) toolbar.insert(self.copylink, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar.insert(separator, -1) stopbtn = StopButton(self) toolbar.insert(stopbtn, -1) toolbar.show_all() self.set_toolbar_box(toolbox)
def __init__(self): Gtk.Toolbar.__init__(self) self._show_playlist = ToggleToolButton('view-list') self._show_playlist.set_active(True) # due to Activity.show_all() self._show_playlist.set_tooltip(_('Playlist')) self._show_playlist.set_accelerator('<ctrl>l') self._show_playlist.connect('toggled', self._playlist_toggled_cb) self.insert(self._show_playlist, -1) self._show_playlist.show() self._fullscreen = ToolButton('view-fullscreen') self._fullscreen.set_tooltip(_('Fullscreen')) self._fullscreen.set_accelerator('<ctrl>f') self._fullscreen.connect('clicked', self._fullscreen_cb) self.insert(self._fullscreen, -1) self._fullscreen.show()
def __init__(self, parent_activity, **kwargs): ToggleToolButton.__init__(self, 'show-hints', **kwargs) #self.props.tooltip = 'Show Hints' self.set_tooltip(_('Show Hints')) # Add an accelerator. In later versions of Sugar, we can just set the # 'accelerator' property instead. #self.props.accelerator = '<Ctrl>H' accel_group = parent_activity.get_toplevel().sugar_accel_group keyval, mask = Gtk.accelerator_parse('<Ctrl>H') # the accelerator needs to be set at the child, so the Gtk.AccelLabel # in the palette can pick it up. accel_flags = Gtk.AccelFlags.LOCKED | Gtk.AccelFlags.VISIBLE self.get_child().add_accelerator('clicked', accel_group, keyval, mask, accel_flags) self.connect('clicked', self.__hint_button_clicked_cb, parent_activity)
def __make_toolbar(self): self.toolbar = Gtk.Toolbar() self.toolbar.modify_bg(Gtk.StateType.NORMAL, style.COLOR_TOOLBAR_GREY.get_gdk_color()) self.go_up_button = ToolButton(icon_name='go-up') self.go_up_button.props.accelerator = '<Alt>S' self.go_up_button.set_tooltip(_('Go to pather directory')) self.go_up_button.connect('clicked', self.go_up) self.toolbar.insert(self.go_up_button, -1) self.toolbar.insert(Gtk.SeparatorToolItem(), -1) self.hidden_files_button = ToggleToolButton('show-hidden-files') self.hidden_files_button.props.accelerator = '<Ctrl>H' self.hidden_files_button.set_tooltip(_('Show hidden files')) self.hidden_files_button.connect('clicked', self.__show_hidden_files) self.toolbar.insert(self.hidden_files_button, -1) self.toolbar.insert(Gtk.SeparatorToolItem(), -1) item = Gtk.ToolItem() self.entry = Gtk.Entry() self.entry.set_size_request(300, -1) self.entry.set_text(self.folder) self.entry.connect('activate', self.__open_path_from_entry) item.add(self.entry) self.toolbar.insert(item, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) self.toolbar.insert(separator, -1) self.button_open = ToolButton(icon_name='fileopen') self.button_open.set_tooltip(_('Open selected file')) self.button_open.set_sensitive(False) self.button_open.connect('clicked', self.__open_path) self.toolbar.insert(self.button_open, -1) self.close_button = ToolButton(icon_name='dialog-cancel') self.close_button.connect('clicked', self.close) self.toolbar.insert(self.close_button, -1) self.vbox.pack_start(self.toolbar, False, False, 0)
def __init__(self, activity): Gtk.Toolbar.__init__(self) self._activity = activity self.properties = self._activity.area.tool self._text = DrawToolButton('text', activity.tool_group, _('Type')) self.insert(self._text, -1) self._text.connect('clicked', self.set_tool, self._ACTION_TEXT_NAME) separator = Gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) self._bold = ToggleToolButton('format-text-bold') self.insert(self._bold, -1) self._bold.show() self._bold.connect('clicked', self.__bold_bt_cb) self._italic = ToggleToolButton('format-text-italic') self.insert(self._italic, -1) self._italic.show() self._italic.connect('clicked', self.__italic_bt_cb) separator = Gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) self._font_size = FontSize() self.insert(self._font_size, -1) self._font_size_changed_id = self._font_size.connect( 'changed', self.__font_size_changed_cb) self._font_combo = FontComboBox() self._fonts_changed_id = self._font_combo.connect( 'changed', self.__font_changed_cb) fd = activity.area.get_font_description() font_name = fd.get_family() self._font_combo.set_font_name(font_name) self._font_size.set_font_size(int(fd.get_size() / Pango.SCALE)) tool_item = ToolComboBox(self._font_combo) self.insert(tool_item, -1) self.show_all()
def __init__(self, activity): GObject.GObject.__init__(self) self._activity = activity self.properties = self._activity.area.tool self._text = DrawToolButton('text', activity.tool_group, _('Type')) self.insert(self._text, -1) self._text.connect('clicked', self.set_tool, self._ACTION_TEXT_NAME) separator = Gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) self._bold = ToggleToolButton('format-text-bold') self.insert(self._bold, -1) self._bold.show() self._bold.connect('clicked', self.__bold_bt_cb) self._italic = ToggleToolButton('format-text-italic') self.insert(self._italic, -1) self._italic.show() self._italic.connect('clicked', self.__italic_bt_cb) separator = Gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) self._font_size = FontSize() self.insert(self._font_size, -1) self._font_size_changed_id = self._font_size.connect( 'changed', self.__font_size_changed_cb) self._font_combo = FontComboBox() self._fonts_changed_id = self._font_combo.connect( 'changed', self.__font_changed_cb) fd = activity.area.get_font_description() font_name = fd.get_family() self._font_combo.set_font_name(font_name) self._font_size.set_font_size(int(fd.get_size() / Pango.SCALE)) tool_item = ToolComboBox(self._font_combo) self.insert(tool_item, -1) self.show_all()
def __init__(self, activity): GObject.GObject.__init__(self) self._activity = activity if not speech.supported: return self.is_paused = False self._cnf_client = GConf.Client.get_default() self.load_speech_parameters() self.sorted_voices = [i for i in speech.voices()] self.sorted_voices.sort(self.compare_voices) default = 0 for voice in self.sorted_voices: if voice[0] == speech.voice[0]: break default = default + 1 # Play button self.play_btn = ToggleToolButton('media-playback-start') self.play_btn.show() self.play_toggled_handler = self.play_btn.connect( 'toggled', self.play_cb) self.insert(self.play_btn, -1) self.play_btn.set_tooltip(_('Play / Pause')) # Stop button self.stop_btn = ToolButton('media-playback-stop') self.stop_btn.show() self.stop_btn.connect('clicked', self.stop_cb) self.stop_btn.set_sensitive(False) self.insert(self.stop_btn, -1) self.stop_btn.set_tooltip(_('Stop')) self.voice_combo = ComboBox() for voice in self.sorted_voices: self.voice_combo.append_item(voice, voice[0]) self.voice_combo.set_active(default) self.voice_combo.connect('changed', self.voice_changed_cb) combotool = ToolComboBox(self.voice_combo) self.insert(combotool, -1) combotool.show() speech.reset_cb = self.reset_buttons_cb speech.end_text_cb = self.reset_buttons_cb
def toggle_factory(icon_name, callback, toolbar, tooltip=None): ''' add a toggle button to a toolbar''' t_button = ToggleToolButton(icon_name) t_button.connect('toggled', callback) if tooltip: t_button.set_tooltip(tooltip) if hasattr(toolbar, 'insert'): # the main toolbar toolbar.insert(t_button, -1) else: # or a secondary toolbar toolbar.props.page.insert(t_button, -1) t_button.show()
def __init__(self, game, editor_index): Gtk.EventBox.__init__(self) self._game = game self.snd = None self.editor_index = editor_index self.temp_folder = None box = Gtk.Grid() box.set_column_spacing(style.DEFAULT_SPACING) box.set_row_spacing(style.DEFAULT_SPACING) box.props.margin = style.DEFAULT_SPACING self.card = svgcard.SvgCard( -1, {'front_text': {'card_text': '', 'text_color': style.Color('#ffffff')}}, None, PAIR_SIZE, '#c0c0c0') self.card.flip() card_align = Gtk.Alignment.new(.5, .5, 0, 0) card_align.add(self.card) box.attach(card_align, 0, 0, 1, 1) self.textentry = Gtk.Entry() self.textentry.connect('changed', self.update_text) self.textentry.set_valign(Gtk.Align.START) box.attach(self.textentry, 0, 1, 1, 1) toolbar = Gtk.VBox() toolbar.set_valign(Gtk.Align.CENTER) browsepicture = ToolButton(icon_name='import_picture', tooltip=_('Insert picture')) toolbar.add(browsepicture) browsesound = ToolButton(icon_name='import_sound', tooltip=_('Insert sound')) toolbar.add(browsesound) browsepicture.connect('clicked', self._load_image) browsesound.connect('clicked', self._load_audio) if speak.espeak.supported: self.usespeak = ToggleToolButton(icon_name='speak') self.usespeak.set_palette(SpeakPalette(self)) toolbar.add(self.usespeak) self.usespeak.connect('toggled', self._usespeak_cb) else: self.usespeak = None self.fontbutton = FontButton() toolbar.add(self.fontbutton) self.id_font_changed = self.fontbutton.connect( 'changed', self.__font_changed_cb) box.attach(toolbar, 1, 0, 1, 2) self.add(box)
def __init__(self, activity): GObject.GObject.__init__(self) self.activity = activity self.toolbar = self.activity.get_toolbar_box().toolbar self._equal_pairs = ToggleToolButton('pair-non-equals') self._equal_pairs.set_tooltip(_('Match different tiles')) self._equal_pairs.connect('toggled', self._emit_equal_pairs) self.toolbar.insert(self._equal_pairs, -1) self._grouped = ToggleToolButton('grouped_game1') self._grouped.set_tooltip(_('Mixed tiles game')) self._grouped.connect('toggled', self._grouped_cb) self.toolbar.insert(self._grouped, -1) self._clear_button = ToolButton('edit-clear') self._clear_button.set_tooltip(_('Clear all tiles')) self._clear_button.connect('clicked', self._clear_game_bt) self.toolbar.insert(self._clear_button, -1) self.toolbar.show_all()
def __init__(self, activity): EditToolbar.__init__(self) self._activity = activity self.undo.set_tooltip(_('Undo')) self.redo.set_tooltip(_('Redo')) self.copy.set_tooltip(_('Copy')) self.paste.set_tooltip(_('Paste')) separator = Gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) self._clear_all = ToolButton('edit-clear') self.insert(self._clear_all, -1) self._clear_all.set_tooltip(_('Clear')) self._clear_all.show() self._sound = ToggleToolButton('speaker-100') self._sound.set_tooltip(_('Enable sound')) if self._activity.area._player is not None: self.insert(self._sound, -1) self._sound.show() self._sound.connect('clicked', self.__sound_cb) self.undo.connect('clicked', self._undo_cb) self.redo.connect('clicked', self._redo_cb) self.copy.connect('clicked', self._copy_cb) self.paste.connect('clicked', self._paste_cb) self._clear_all.connect('clicked', self._clear_all_cb) self._activity.area.connect('undo', self._on_signal_undo_cb) self._activity.area.connect('redo', self._on_signal_redo_cb) self._activity.area.connect('select', self._on_signal_select_cb) self._activity.area.connect('action-saved', self._on_signal_action_saved_cb)
def setup_toolbar(self): activity_button = ActivityToolbarButton(self) self.toolbar.insert(activity_button, -1) self.toolbar.insert(Gtk.SeparatorToolItem(), -1) edit_toolbar = EditToolbar() self.toolbar.insert(ToolbarButton(page=edit_toolbar, icon_name="toolbar-edit"), -1) edit_toolbar.insert(Gtk.SeparatorToolItem(), -1) self.button_bold = ToggleToolButton("format-text-bold") self.button_bold.set_tooltip(_("Bold")) self.button_bold.props.accelerator = "<Ctrl>B" self.button_bold.connect("toggled", lambda button: self.edit.toggle_bold()) edit_toolbar.insert(self.button_bold, -1) self.button_italic = ToggleToolButton("format-text-italic") self.button_italic.set_tooltip(_("Italic")) self.button_italic.props.accelerator = "<Ctrl>I" self.button_italic.connect("toggled", lambda button: self.edit.toggle_italic()) edit_toolbar.insert(self.button_italic, -1) self.button_underline = ToggleToolButton("format-text-underline") self.button_underline.set_tooltip(_("Underline")) self.button_underline.props.accelerator = "<Ctrl>B" self.button_underline.connect("toggled", lambda button: self.edit.toggle_underline()) edit_toolbar.insert(self.button_underline, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) self.toolbar.insert(separator, -1) stop_button = StopButton(self) self.toolbar.insert(stop_button, -1) self.toolbarbox.show_all() edit_toolbar.show_all()
def _create_montage_toolbar(self): toolbar = Gtk.Toolbar() playButtonImg = Gtk.Image() playButtonImg.show() playButtonImg.set_from_icon_name('media-playback-start', Gtk.IconSize.LARGE_TOOLBAR) pauseButtonImg = Gtk.Image() pauseButtonImg.show() pauseButtonImg.set_from_icon_name('media-playback-pause', Gtk.IconSize.LARGE_TOOLBAR) self.playButton = ToggleToolButton('media-playback-start') self.playButton.connect('toggled', self.__play_cb, playButtonImg, pauseButtonImg) toolbar.insert(self.playButton, -1) self.playButton.set_tooltip(_('Play / Pause')) tempo = TempoSlider(0, 10) tempo.adjustment.connect("value-changed", self.__tempo_cb) tempo.set_size_request(250, -1) tempo.set_value(5) tempo_item = Gtk.ToolItem() tempo_item.add(tempo) toolbar.insert(tempo_item, -1) separator = Gtk.SeparatorToolItem() toolbar.insert(separator, -1) clear_tape = ToolButton('sl-reset') clear_tape.connect('clicked', self.__clear_tape_cb) clear_tape.set_tooltip(_('Reset')) toolbar.insert(clear_tape, -1) toolbar.show_all() return toolbar
def __make_toolbar(self): self.toolbar = Gtk.Toolbar() self.toolbar.modify_bg( Gtk.StateType.NORMAL, style.COLOR_TOOLBAR_GREY.get_gdk_color()) self.toolbar.insert(self.go_up_button, -1) self.toolbar.insert(Gtk.SeparatorToolItem(), -1) self.hidden_files_button = ToggleToolButton("show-hidden-files") self.hidden_files_button.props.accelerator = "<Ctrl>H" self.hidden_files_button.set_tooltip(_("Show hidden files")) self.hidden_files_button.connect("clicked", self.__show_hidden_files) self.toolbar.insert(self.hidden_files_button, -1) self.toolbar.insert(Gtk.SeparatorToolItem(), -1) item = Gtk.ToolItem() item.add(self.entry) self.toolbar.insert(item, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) self.toolbar.insert(separator, -1) self.button_open = ToolButton(icon_name="fileopen") self.button_open.set_tooltip(_("Open selected file")) self.button_open.set_sensitive(False) self.button_open.connect("clicked", self._open_path) self.toolbar.insert(self.button_open, -1) self.close_button = ToolButton(icon_name="dialog-cancel") self.close_button.connect("clicked", self.close) self.toolbar.insert(self.close_button, -1) self.vbox.pack_start(self.toolbar, False, False, 0)
def common_playback_buttons(toolbar, owner): """ Playback and mute buttons are either on the main toolbar or the Playback toolbar, depending upon whether or not the new toolbars are available. """ toolbar.stopButton = ToolButton('media-playback-stop') toolbar.stopButton.connect('clicked', owner.handleStopButton) toolbar.insert(toolbar.stopButton, -1) toolbar.stopButton.show() toolbar.stopButton.set_tooltip(_('Stop Loops')) toolbar.muteButton = ToggleToolButton('mute') toolbar.muteButton.connect('clicked', owner.handleMuteButton) toolbar.insert(toolbar.muteButton, -1) toolbar.muteButton.show() toolbar.muteButton.set_tooltip(_('Mute Loops'))
def build_toolbar(self): """Build our Activity toolbar for the Sugar system.""" toolbar_box = ToolbarBox() activity_button = ActivityToolbarButton(self) toolbar_box.toolbar.insert(activity_button, 0) activity_button.show() separator = Gtk.SeparatorToolItem() toolbar_box.toolbar.insert(separator, -1) separator.show() easier_button = ToolButton('create-easier') easier_button.set_tooltip(_('Easier level')) easier_button.connect('clicked', self._easier_button_cb) toolbar_box.toolbar.insert(easier_button, -1) harder_button = ToolButton('create-harder') harder_button.set_tooltip(_('Harder level')) harder_button.connect('clicked', self._harder_button_cb) toolbar_box.toolbar.insert(harder_button, -1) separator = Gtk.SeparatorToolItem() toolbar_box.toolbar.insert(separator, -1) separator.show() self.show_trail_button = ToggleToolButton('show-trail') self.show_trail_button.set_tooltip(_('Show trail')) self.show_trail_button.set_active(True) self.show_trail_button.connect('toggled', self._toggled_show_trail_cb) toolbar_box.toolbar.insert(self.show_trail_button, -1) separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_size_request(0, -1) separator.set_expand(True) toolbar_box.toolbar.insert(separator, -1) separator.show() stop_button = StopButton(self) toolbar_box.toolbar.insert(stop_button, -1) stop_button.show() self.set_toolbar_box(toolbar_box) toolbar_box.show_all() return toolbar_box
def __init__(self, activity): GObject.GObject.__init__(self) self._activity = activity if not speech.supported: return self.is_paused = False self._cnf_client = GConf.Client.get_default() self.load_speech_parameters() self.sorted_voices = [i for i in speech.voices()] self.sorted_voices.sort(self.compare_voices) default = 0 for voice in self.sorted_voices: if voice[0] == speech.voice[0]: break default = default + 1 # Play button self.play_btn = ToggleToolButton("media-playback-start") self.play_btn.show() self.play_toggled_handler = self.play_btn.connect("toggled", self.play_cb) self.insert(self.play_btn, -1) self.play_btn.set_tooltip(_("Play / Pause")) # Stop button self.stop_btn = ToolButton("media-playback-stop") self.stop_btn.show() self.stop_btn.connect("clicked", self.stop_cb) self.stop_btn.set_sensitive(False) self.insert(self.stop_btn, -1) self.stop_btn.set_tooltip(_("Stop")) self.voice_combo = ComboBox() for voice in self.sorted_voices: self.voice_combo.append_item(voice, voice[0]) self.voice_combo.set_active(default) self.voice_combo.connect("changed", self.voice_changed_cb) combotool = ToolComboBox(self.voice_combo) self.insert(combotool, -1) combotool.show() speech.reset_cb = self.reset_buttons_cb speech.end_text_cb = self.reset_buttons_cb
def _build_toolbox(self): toolbar_box = ToolbarBox() self.max_participants = 1 activity_button = ActivityToolbarButton(self) activity_toolbar = activity_button.page self._toolbar = toolbar_box.toolbar self._toolbar.insert(activity_button, -1) self._secondary_toolbar = Gtk.Toolbar() self._secondary_toolbar_button = ToolbarButton( page=self._secondary_toolbar, icon_name='system-search') self._secondary_toolbar.show() self._toolbar.insert(self._secondary_toolbar_button, -1) self._secondary_toolbar_button.hide() show_list = ToggleToolButton('view-list') show_list.set_active(True) show_list.set_tooltip(_('Show list of files')) show_list.connect('toggled', self._list_toggled_cb) self._toolbar.insert(show_list, -1) show_list.show() copy = CopyButton() copy.connect('clicked', self.__copy_clicked_cb) self._toolbar.insert(copy, -1) wrap_btn = ToggleToolButton("format-wrap") wrap_btn.set_tooltip(_('Word Wrap')) wrap_btn.connect('clicked', self._wrap_cb) self._toolbar.insert(wrap_btn, -1) self.search_entry = iconentry.IconEntry() self.search_entry.set_size_request(Gdk.Screen.width() / 3, -1) self.search_entry.set_icon_from_name( iconentry.ICON_ENTRY_PRIMARY, 'entry-search') self.search_entry.add_clear_button() self.search_entry.connect('activate', self._search_entry_activate_cb) self.search_entry.connect('changed', self._search_entry_changed_cb) self._search_item = Gtk.ToolItem() self._search_item.add(self.search_entry) self._toolbar.insert(self._search_item, -1) self._search_prev = ToolButton('go-previous-paired') self._search_prev.set_tooltip(_('Previous')) self._search_prev.connect('clicked', self._search_prev_cb) self._toolbar.insert(self._search_prev, -1) self._search_next = ToolButton('go-next-paired') self._search_next.set_tooltip(_('Next')) self._search_next.connect('clicked', self._search_next_cb) self._toolbar.insert(self._search_next, -1) self._update_search_buttons() self.collector_palette = CollectorPalette(self) collector_btn = ToolButton('log-export') collector_btn.set_palette(self.collector_palette) collector_btn.connect('clicked', self._logviewer_cb) collector_btn.show() activity_toolbar.insert(collector_btn, -1) self._delete_btn = ToolButton('list-remove') self._delete_btn.set_tooltip(_('Delete Log File')) self._delete_btn.connect('clicked', self._delete_log_cb) self._toolbar.insert(self._delete_btn, -1) self._separator = Gtk.SeparatorToolItem() self._separator.set_expand(True) self._separator.set_draw(False) self._toolbar.insert(self._separator, -1) self._stop_btn = StopButton(self) self._toolbar.insert(self._stop_btn, -1) toolbar_box.show_all() self.set_toolbar_box(toolbar_box)
def __init__(self, abiword_canvas): GObject.GObject.__init__(self) self.font_name_combo = FontComboBox() self.font_name_combo.set_font_name('Sans') self._fonts_changed_id = self.font_name_combo.connect( 'changed', self._font_changed_cb, abiword_canvas) self._abi_handler = abiword_canvas.connect('font-family', self._font_family_cb) self.insert(ToolComboBox(self.font_name_combo), -1) self.font_size = FontSize() self._abi_handler = abiword_canvas.connect('font-size', self._font_size_cb) self._changed_id = self.font_size.connect( 'changed', self._font_size_changed_cb, abiword_canvas) self.insert(self.font_size, -1) bold = ToggleToolButton('format-text-bold') bold.set_tooltip(_('Bold')) bold.props.accelerator = '<Ctrl>B' bold_id = bold.connect('clicked', lambda sender: abiword_canvas.toggle_bold()) abiword_canvas.connect('bold', lambda abi, b: self._setToggleButtonState(bold, b, bold_id)) self.insert(bold, -1) italic = ToggleToolButton('format-text-italic') italic.set_tooltip(_('Italic')) italic.props.accelerator = '<Ctrl>I' italic_id = italic.connect('clicked', lambda sender: abiword_canvas.toggle_italic()) abiword_canvas.connect('italic', lambda abi, b: self._setToggleButtonState(italic, b, italic_id)) self.insert(italic, -1) underline = ToggleToolButton('format-text-underline') underline.set_tooltip(_('Underline')) underline.props.accelerator = '<Ctrl>U' underline_id = underline.connect('clicked', lambda sender: abiword_canvas.toggle_underline()) abiword_canvas.connect('underline', lambda abi, b: self._setToggleButtonState(underline, b, underline_id)) self.insert(underline, -1) # for super/subscript, we're using the same keyboard shorcuts as # abiword: <C-^> and <C-_> super_btn = ToggleToolButton('format-text-super') super_btn.set_tooltip(_('Superscript')) # found with gtk.accelerator_name super_btn.props.accelerator = '<Ctrl>asciicircum' super_id = super_btn.connect('clicked', lambda sender: abiword_canvas.toggle_super()) # no, this isn't a mistake. The method is called `toggle_super()', but # the *signal* is called `superscript'. Same goes for sub{script,}. abiword_canvas.connect('superscript', lambda abi, b: self._setToggleButtonState(super_btn, b, super_id)) self.insert(super_btn, -1) sub = ToggleToolButton('format-text-sub') sub.set_tooltip(_('Subscript')) sub.props.accelerator = '<Ctrl>underscore' sub_id = sub.connect('clicked', lambda sender: abiword_canvas.toggle_sub()) abiword_canvas.connect('subscript', lambda abi, b: self._setToggleButtonState(sub, b, sub_id)) self.insert(sub, -1) color = ColorToolButton() color.connect('notify::color', self._text_color_cb, abiword_canvas) tool_item = Gtk.ToolItem() tool_item.add(color) self.insert(tool_item, -1) abiword_canvas.connect( 'color', lambda abi, r, g, b: color.set_color(Gdk.Color(r * 256, g * 256, b * 256))) # MAGIC NUMBER WARNING: Secondary toolbars are not a standard height? self.set_size_request(-1, style.GRID_CELL_SIZE) def append_align(icon_name, tooltip, do_abi_cb, style_name, button, menu_box): menu_item = AbiMenuItem(abiword_canvas, style_name, do_abi_cb, icon_name, tooltip, button) menu_box.append_item(menu_item) menu_item.show() self._aligment_btn = ToolButton(icon_name='format-justify-left') self._aligment_btn.props.tooltip = _('Choose alignment') self._aligment_btn.props.hide_tooltip_on_click = False self._aligment_btn.palette_invoker.props.toggle_palette = True menu_box = PaletteMenuBox() self._aligment_btn.props.palette.set_content(menu_box) menu_box.show() append_align('format-justify-left', _('Left justify'), abiword_canvas.align_left, 'left-align', self._aligment_btn, menu_box) append_align('format-justify-center', _('Center justify'), abiword_canvas.align_center, 'center-align', self._aligment_btn, menu_box) append_align('format-justify-right', _('Right justify'), abiword_canvas.align_right, 'right-align', self._aligment_btn, menu_box) append_align('format-justify-fill', _('Fill justify'), abiword_canvas.align_justify, 'justify-align', self._aligment_btn, menu_box) self.insert(self._aligment_btn, -1) self.show_all()
vbox.show() toolbar_box = ToolbarBox() vbox.pack_start(toolbar_box, False, False, 0) toolbar_box.show() radial_button = RadioToolButton(icon_name='view-radial') toolbar_box.toolbar.insert(radial_button, -1) radial_button.show() list_button = RadioToolButton(icon_name='view-list') list_button.props.group = radial_button toolbar_box.toolbar.insert(list_button, -1) list_button.show() separator = Gtk.SeparatorToolItem() toolbar_box.toolbar.insert(separator, -1) separator.show() color_button = ColorToolButton() toolbar_box.toolbar.insert(color_button, -1) color_button.show() favorite_button = ToggleToolButton('emblem-favorite') toolbar_box.toolbar.insert(favorite_button, -1) favorite_button.show() if __name__ == '__main__': common.main(test)
class CreateToolbarBuilder(GObject.GObject): __gtype_name__ = 'CreateToolbar' __gsignals__ = { 'create_new_game': (GObject.SignalFlags.RUN_FIRST, None, []), 'create_equal_pairs': (GObject.SignalFlags.RUN_FIRST, None, [GObject.TYPE_PYOBJECT]), } def __init__(self, activity): GObject.GObject.__init__(self) self.activity = activity self.toolbar = self.activity.get_toolbar_box().toolbar self._equal_pairs = ToggleToolButton('pair-non-equals') self._equal_pairs.set_tooltip(_('Match different tiles')) self._equal_pairs.connect('toggled', self._emit_equal_pairs) self.toolbar.insert(self._equal_pairs, -1) self._grouped = ToggleToolButton('grouped_game1') self._grouped.set_tooltip(_('Mixed tiles game')) self._grouped.connect('toggled', self._grouped_cb) self.toolbar.insert(self._grouped, -1) self._clear_button = ToolButton('edit-clear') self._clear_button.set_tooltip(_('Clear all tiles')) self._clear_button.connect('clicked', self._clear_game_bt) self.toolbar.insert(self._clear_button, -1) self.toolbar.show_all() def _add_widget(self, widget, expand=False): tool_item = Gtk.ToolItem() tool_item.set_expand(expand) tool_item.add(widget) widget.show() self.toolbar.insert(tool_item, -1) tool_item.show() def _clear_game_bt(self, button): if self.activity.game.model.is_demo or \ len(self.activity.cardlist.pairs) == 0: self.clear_game() else: alert = Alert() alert.props.title = _('Clear all the tiles from the game?') icon = Icon(icon_name='dialog-ok') alert.add_button(1, _('Clear'), icon) icon = Icon(icon_name='dialog-cancel') alert.add_button(0, _('Do not clear'), icon) alert.connect('response', self._clear_game_alert_cb) self.activity.add_alert(alert) def _clear_game_alert_cb(self, alert, response_id): self.activity.remove_alert(alert) if response_id == 1: self.clear_game() def clear_game(self): self._equal_pairs.set_active(False) self._grouped.set_active(False) self.emit('create_new_game') def update_controls(self, active): self._equal_pairs.set_sensitive(active) self._grouped.set_sensitive(active) self._clear_button.set_sensitive(active) def _emit_equal_pairs(self, widget): if self._equal_pairs.get_active(): self._equal_pairs.set_icon_name('pair-equals') self._equal_pairs.set_tooltip(_('Match identical tiles')) equal_pairs = '1' else: self._equal_pairs.set_icon_name('pair-non-equals') self._equal_pairs.set_tooltip(_('Match different tiles')) equal_pairs = '0' self.emit('create_equal_pairs', self._equal_pairs.get_active()) logging.debug('createtoolbar._emit_equal_pairs') if self.activity.game.model.data['equal_pairs'] != equal_pairs: self.activity.game.model.data['equal_pairs'] = equal_pairs self.activity.game.model.mark_modified() def _grouped_cb(self, widget): if self._grouped.get_active(): self._grouped.set_icon_name('grouped_game2') self._grouped.set_tooltip(_('Grouped tiles game')) divided = '1' else: self._grouped.set_icon_name('grouped_game1') self._grouped.set_tooltip(_('Mixed tiles game')) divided = '0' logging.debug('createtoolbar._grouped_cb') if self.activity.game.model.data['divided'] != divided: self.activity.game.model.data['divided'] = divided self.activity.game.model.mark_modified() def update_create_toolbar(self, widget, game_name, equal_pairs, grouped): self._equal_pairs.set_active(equal_pairs == '1') self._grouped.set_active(grouped == '1')
class SpeechToolbar(Gtk.Toolbar): def __init__(self, activity): GObject.GObject.__init__(self) self._activity = activity if not speech.supported: return self.is_paused = False self._cnf_client = GConf.Client.get_default() self.load_speech_parameters() self.sorted_voices = [i for i in speech.voices()] self.sorted_voices.sort(self.compare_voices) default = 0 for voice in self.sorted_voices: if voice[0] == speech.voice[0]: break default = default + 1 # Play button self.play_btn = ToggleToolButton("media-playback-start") self.play_btn.show() self.play_toggled_handler = self.play_btn.connect("toggled", self.play_cb) self.insert(self.play_btn, -1) self.play_btn.set_tooltip(_("Play / Pause")) # Stop button self.stop_btn = ToolButton("media-playback-stop") self.stop_btn.show() self.stop_btn.connect("clicked", self.stop_cb) self.stop_btn.set_sensitive(False) self.insert(self.stop_btn, -1) self.stop_btn.set_tooltip(_("Stop")) self.voice_combo = ComboBox() for voice in self.sorted_voices: self.voice_combo.append_item(voice, voice[0]) self.voice_combo.set_active(default) self.voice_combo.connect("changed", self.voice_changed_cb) combotool = ToolComboBox(self.voice_combo) self.insert(combotool, -1) combotool.show() speech.reset_cb = self.reset_buttons_cb speech.end_text_cb = self.reset_buttons_cb def compare_voices(self, a, b): if a[0].lower() == b[0].lower(): return 0 if a[0].lower() < b[0].lower(): return -1 if a[0].lower() > b[0].lower(): return 1 def voice_changed_cb(self, combo): speech.voice = combo.props.value speech.say(speech.voice[0]) self.save_speech_parameters() def load_speech_parameters(self): speech_parameters = {} data_path = os.path.join(self._activity.get_activity_root(), "data") data_file_name = os.path.join(data_path, "speech_params.json") if os.path.exists(data_file_name): f = open(data_file_name, "r") try: speech_parameters = json.load(f) speech.voice = speech_parameters["voice"] finally: f.close() else: speech.voice = self.get_default_voice() logging.error("Default voice %s", speech.voice) self._cnf_client.add_dir("/desktop/sugar/speech", GConf.ClientPreloadType.PRELOAD_NONE) speech.pitch = self._cnf_client.get_int("/desktop/sugar/speech/pitch") speech.rate = self._cnf_client.get_int("/desktop/sugar/speech/rate") self._cnf_client.notify_add("/desktop/sugar/speech/pitch", self.__conf_changed_cb, None) self._cnf_client.notify_add("/desktop/sugar/speech/rate", self.__conf_changed_cb, None) def get_default_voice(self): """Try to figure out the default voice, from the current locale ($LANG) Fall back to espeak's voice called Default.""" voices = speech.get_all_voices() locale = os.environ.get("LANG", "") language_location = locale.split(".", 1)[0].lower() language = language_location.split("_")[0] variant = "" if language_location.find("_") > -1: variant = language_location.split("_")[1] # if the language is es but not es_es default to es_la (latin voice) if language == "es" and language_location != "es_es": language_location = "es_la" best = voices.get(language_location) or voices.get(language) or "default" logging.debug("Best voice for LANG %s seems to be %s", locale, best) return [best, language, variant] def __conf_changed_cb(self, client, connection_id, entry, args): key = entry.get_key() value = client.get_int(key) if key == "/desktop/sugar/speech/pitch": speech.pitch = value if key == "/desktop/sugar/speech/rate": speech.rate = value def save_speech_parameters(self): speech_parameters = {} speech_parameters["voice"] = speech.voice data_path = os.path.join(self._activity.get_activity_root(), "data") data_file_name = os.path.join(data_path, "speech_params.json") f = open(data_file_name, "w") try: json.dump(speech_parameters, f) finally: f.close() def reset_buttons_cb(self): logging.error("reset buttons") self.play_btn.set_icon_name("media-playback-start") self.stop_btn.set_sensitive(False) self.play_btn.handler_block(self.play_toggled_handler) self.play_btn.set_active(False) self.play_btn.handler_unblock(self.play_toggled_handler) self.is_paused = False def play_cb(self, widget): self.stop_btn.set_sensitive(True) if widget.get_active(): self.play_btn.set_icon_name("media-playback-pause") logging.error("Paused %s", self.is_paused) if not self.is_paused: # get the text to speech, if there are a selection, # play selected text, if not, play all abi = self._activity.abiword_canvas selection = abi.get_selection("text/plain") if not selection or selection[0] is None or selection[1] == 0: # nothing selected abi.select_all() text = abi.get_selection("text/plain")[0] abi.moveto_bod() else: text = selection[0] speech.play(text) else: logging.error("Continue play") speech.continue_play() else: self.play_btn.set_icon_name("media-playback-start") self.is_paused = True speech.pause() def stop_cb(self, widget): self.stop_btn.set_sensitive(False) self.play_btn.set_icon_name("media-playback-start") self.play_btn.set_active(False) self.is_paused = False speech.stop()
class TextToolbar(Gtk.Toolbar): def __init__(self, page): self._colorseldlg = None Gtk.Toolbar.__init__(self) self._page = page page._text_toolbar = self self._bold = ToggleToolButton('format-text-bold') self._bold.set_tooltip(_('Bold')) self._bold_id = self._bold.connect('clicked', self._bold_cb) self.insert(self._bold, -1) self._italic = ToggleToolButton('format-text-italic') self._italic.set_tooltip(_('Italic')) self._italic_id = self._italic.connect('clicked', self._italic_cb) self.insert(self._italic, -1) """ self._underline = ToggleToolButton('format-text-underline') self._underline.set_tooltip(_('Underline')) self._underline_id = self._underline.connect('clicked', self._underline_cb) self.insert(self._underline, -1) self._underline.show() """ self._text_color = TextButtonColor(page) self._text_color.set_title(_('Text Color')) item = Gtk.ToolItem() item.add(self._text_color) self.insert(item, -1) separator = Gtk.SeparatorToolItem() separator.set_draw(True) self.insert(separator, -1) self._font_size_combo = FontSize() self._font_size_changed_id = self._font_size_combo.connect( 'changed', self._font_size_changed_cb) self.insert(self._font_size_combo, -1) # font self._font_combo = FontComboBox() self._font_combo.set_font_name(globos.DEFAULT_FONT) self._fonts_changed_id = self._font_combo.connect( 'changed', self._font_changed_cb) self.insert(ToolComboBox(self._font_combo), -1) self.show_all() def get_text_selected_handler(self): return self._text_selected_handler def _add_widget(self, widget, expand=False): tool_item = Gtk.ToolItem() tool_item.set_expand(expand) tool_item.add(widget) widget.show() self.insert(tool_item, -1) tool_item.show() def _bold_cb(self, button): globo_activo = self._page.get_globo_activo() if globo_activo is not None and globo_activo.texto is not None: globo_activo.texto.bold = not globo_activo.texto.bold self._page.get_active_box().redraw() def _italic_cb(self, button): globo_activo = self._page.get_globo_activo() if globo_activo is not None and globo_activo.texto is not None: globo_activo.texto.italic = not globo_activo.texto.italic self._page.get_active_box().redraw() # para la version 0.82 def _text_color_cb(self, button): globo_activo = self._page.get_globo_activo() if globo_activo is not None and globo_activo.texto is not None: color = self._text_color.get_color() texto = globo_activo.texto texto.color = (color.red, color.green, color.blue) self._page.get_active_box().redraw() def _font_size_changed_cb(self, widget): size = widget.get_font_size() logger.debug('Setting font size: %d', size) globo_activo = self._page.get_globo_activo() if globo_activo is not None and globo_activo.texto is not None: globo_activo.texto.font_size = size self._page.get_active_box().redraw() def _font_changed_cb(self, widget): font_name = widget.get_font_name() logger.debug('Setting font name: %s', font_name) globo_activo = self._page.get_globo_activo() if globo_activo is not None and globo_activo.texto is not None: globo_activo.texto.font_type = font_name self._page.selected_font_name = font_name self._page.get_active_box().redraw() """ Estos son los metodos para setear los contrles de la barra en base a el texto del globo como el globo va a tener un solo font seleccionado, voy a hacer un solo metodo """ def setToggleButtonState(self, button, b, id): button.handler_block(id) button.set_active(b) button.handler_unblock(id) def setToolbarState(self, globeText): # seteo bold self.setToggleButtonState(self._bold, globeText.bold, self._bold_id) # seteo italic self.setToggleButtonState(self._italic, globeText.italic, self._italic_id) # color self._text_color.set_color(Gdk.Color(*globeText.color)) # font size logging.error('Setting font size from globe %s %s', globeText.font_size, globeText.font_size.__class__) self._font_size_combo.handler_block(self._font_size_changed_id) self._font_size_combo.set_font_size(int(globeText.font_size)) self._font_size_combo.handler_unblock(self._font_size_changed_id) # font seleccionada self._font_combo.handler_block(self._fonts_changed_id) self._font_combo.set_font_name(globeText.font_type) self._page.selected_font_name = globeText.font_type self._font_combo.handler_unblock(self._fonts_changed_id)
def __init__(self, handle): activity.Activity.__init__(self, handle) self.set_title('FotoToon') self._max_participants = 1 self.page = None toolbar_box = ToolbarBox() activity_button = ActivityToolbarButton(self) activity_toolbar = activity_button.page toolbar_box.toolbar.insert(activity_button, 0) edit_toolbar_btn = ToolbarButton() edit_toolbar = Gtk.Toolbar() edit_toolbar_btn.props.page = edit_toolbar edit_toolbar_btn.props.icon_name = 'toolbar-edit' edit_toolbar_btn.label = _('Edit') toolbar_box.toolbar.insert(edit_toolbar_btn, -1) view_toolbar_btn = ToolbarButton() view_toolbar = Gtk.Toolbar() view_toolbar_btn.props.page = view_toolbar view_toolbar_btn.props.icon_name = 'toolbar-view' view_toolbar_btn.label = _('View') toolbar_box.toolbar.insert(view_toolbar_btn, -1) slideview_btn = ToggleToolButton('slideshow') slideview_btn.set_tooltip(_('Slideshow')) slideview_btn.set_active(False) slideview_btn.connect('clicked', self._switch_view_mode, False) view_toolbar.insert(slideview_btn, -1) slideview_btn.show() slideview_timings_btn = ToggleToolButton('slideshow-stopwatch') slideview_timings_btn.set_tooltip(_('Slideshow with Timings')) slideview_timings_btn.set_active(False) slideview_timings_btn.connect('clicked', self._switch_view_mode, True) view_toolbar.insert(slideview_timings_btn, -1) slideview_timings_btn.show() time_button = ToolButton('stopwatch') time_button.set_tooltip(_('Set Image Duration in Slideshow (Seconds)')) view_toolbar.insert(time_button, -1) time_button.show() self._time_spin = Gtk.SpinButton.new_with_range(MIN_TIME, MAX_TIME, 1) self._time_spin.connect('value-changed', self.__time_spin_changed_cb) self._time_spin.props.value = DEFAULT_TIME self._time_spin.props.update_policy = \ Gtk.SpinButtonUpdatePolicy.IF_VALID palette = time_button.get_palette() palette.connect('popup', self.__time_button_popup_cb) time_button.connect( 'clicked', lambda *args: palette.popup(immediate=True, state=Palette.SECONDARY)) alignment = Gtk.Alignment() alignment.set_padding(style.DEFAULT_PADDING, style.DEFAULT_PADDING, style.DEFAULT_PADDING, style.DEFAULT_PADDING) alignment.add(self._time_spin) self._time_spin.show() palette.set_content(alignment) alignment.show() fullscreen_btn = ToolButton('view-fullscreen') fullscreen_btn.set_tooltip(_('Fullscreen')) fullscreen_btn.props.accelerator = '<Alt>Return' fullscreen_btn.connect('clicked', lambda w: self.fullscreen()) view_toolbar.insert(fullscreen_btn, -1) fullscreen_btn.show() self.set_toolbar_box(toolbar_box) toolbar = toolbar_box.toolbar self.page = Page() self.globes_manager = GlobesManager(toolbar, edit_toolbar, self) # fonts self._text_button = ToolbarButton() self._text_button.props.page = TextToolbar(self.page) self._text_button.props.icon_name = 'format-text-size' self._text_button.props.label = _('Text') self._toolbar_box.toolbar.insert(self._text_button, -1) reorder_img_btn = ToolButton('thumbs-view') reorder_img_btn.set_icon_name('thumbs-view') reorder_img_btn.set_tooltip(_('Change image order')) reorder_img_btn.connect('clicked', self.__image_order_cb) edit_toolbar.insert(reorder_img_btn, -1) reorder_img_btn.show() bgchange = ToolButton(icon_name='contract-coordinates') bgchange.set_tooltip(_('Edit background image')) bgchange.connect('clicked', self.__bgchange_clicked_cb) edit_toolbar.insert(bgchange, -1) bgchange.show() separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar_box.toolbar.insert(separator, -1) stop = StopButton(self) toolbar_box.toolbar.insert(stop, -1) toolbar_box.show_all() # add export button separator_2 = Gtk.SeparatorToolItem() separator_2.show() activity_toolbar.insert(separator_2, -1) self.bt_save_as_image = ToolButton() self.bt_save_as_image.props.icon_name = 'save-as-image' self.bt_save_as_image.connect('clicked', self.write_image) self.bt_save_as_image.set_tooltip(_('Save as Image')) activity_toolbar.insert(self.bt_save_as_image, -1) self.bt_save_as_image.show() save_as_pdf = ToolButton() save_as_pdf.props.icon_name = 'save-as-pdf' save_as_pdf.connect('clicked', self._save_as_pdf) save_as_pdf.set_tooltip(_('Save as a Book (PDF)')) activity_toolbar.insert(save_as_pdf, -1) save_as_pdf.show() save_as_ogg = ToolButton() save_as_ogg.props.icon_name = 'save-as-ogg' save_as_ogg.connect('clicked', self.__save_as_ogg_cb) save_as_ogg.set_tooltip(_('Save as a Movie (OGG)')) activity_toolbar.insert(save_as_ogg, -1) save_as_ogg.show() activity_button.page.title.connect("focus-in-event", self.on_title) scrolled = Gtk.ScrolledWindow() # scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS) scrolled.add_with_viewport(self.page) scrolled.set_kinetic_scrolling(False) scrolled.show_all() self._slideview = SlideView(self) self._slideview.show_all() self._notebook = Gtk.Notebook() self._notebook.set_show_tabs(False) self._notebook.append_page(scrolled, None) self._notebook.append_page(self._slideview, None) self._notebook.show_all() if self._jobject.file_path is None or self._jobject.file_path == '': empty_widget = EmptyWidget() empty_widget.connect('choose-image', self.__add_image) self.set_canvas(empty_widget) else: self.set_canvas(self._notebook) self.show() self.metadata['mime_type'] = 'application/x-fototoon-activity' self.page.empty_page = handle.object_id is None self._key_press_signal_id = None
class MainToolbox(ToolbarBox): __gsignals__ = { 'query-changed': (GObject.SignalFlags.RUN_FIRST, None, ([object])), } def __init__(self): ToolbarBox.__init__(self) self._mount_point = None self._filter_type = None self._what_filter = None self.search_entry = iconentry.IconEntry() self.search_entry.set_icon_from_name(iconentry.ICON_ENTRY_PRIMARY, 'entry-search') text = _('Search in %s') % _('Journal') self.search_entry.set_placeholder_text(text) self.search_entry.connect('activate', self._search_entry_activated_cb) self.search_entry.connect('changed', self._search_entry_changed_cb) self.search_entry.add_clear_button() self._autosearch_timer = None self._add_widget(self.search_entry, expand=True) self._favorite_button = ToggleToolButton('emblem-favorite') self._favorite_button.set_tooltip(_('Favorite entries')) self._favorite_button.connect('toggled', self.__favorite_button_toggled_cb) self.toolbar.insert(self._favorite_button, -1) self._favorite_button.show() self._what_search_combo = ComboBox() self._what_combo_changed_sid = self._what_search_combo.connect( 'changed', self._combo_changed_cb) tool_item = ToolComboBox(self._what_search_combo) self.toolbar.insert(tool_item, -1) tool_item.show() self._when_search_combo = self._get_when_search_combo() tool_item = ToolComboBox(self._when_search_combo) self.toolbar.insert(tool_item, -1) tool_item.show() self._sorting_button = SortingButton() self.toolbar.insert(self._sorting_button, -1) self._sorting_button.connect('sort-property-changed', self.__sort_changed_cb) self._sorting_button.show() # TODO: enable it when the DS supports saving the buddies. # self._with_search_combo = self._get_with_search_combo() # tool_item = ToolComboBox(self._with_search_combo) # self.insert(tool_item, -1) # tool_item.show() self._query = self._build_query() self.refresh_filters() def _get_when_search_combo(self): when_search = ComboBox() when_search.append_item(_ACTION_ANYTIME, _('Anytime')) when_search.append_separator() when_search.append_item(_ACTION_TODAY, _('Today')) when_search.append_item(_ACTION_SINCE_YESTERDAY, _('Since yesterday')) # TRANS: Filter entries modified during the last 7 days. when_search.append_item(_ACTION_PAST_WEEK, _('Past week')) # TRANS: Filter entries modified during the last 30 days. when_search.append_item(_ACTION_PAST_MONTH, _('Past month')) # TRANS: Filter entries modified during the last 356 days. when_search.append_item(_ACTION_PAST_YEAR, _('Past year')) when_search.set_active(0) when_search.connect('changed', self._combo_changed_cb) return when_search def _get_with_search_combo(self): with_search = ComboBox() with_search.append_item(_ACTION_EVERYBODY, _('Anyone')) with_search.append_separator() with_search.append_item(_ACTION_MY_FRIENDS, _('My friends')) with_search.append_item(_ACTION_MY_CLASS, _('My class')) with_search.append_separator() # TODO: Ask the model for buddies. with_search.append_item(3, 'Dan', 'theme:xo') with_search.set_active(0) with_search.connect('changed', self._combo_changed_cb) return with_search def _add_widget(self, widget, expand=False): tool_item = Gtk.ToolItem() tool_item.set_expand(expand) tool_item.add(widget) widget.show() self.toolbar.insert(tool_item, -1) tool_item.show() def _build_query(self): query = {} if self._mount_point: query['mountpoints'] = [self._mount_point] if self._favorite_button.props.active: query['keep'] = 1 if self._what_search_combo.props.value: value = self._what_search_combo.props.value filter_type = self._filter_type if self._filter_type is None: # for backward compatibility, try to guess the filter generic_type = mime.get_generic_type(value) if generic_type: filter_type = FILTER_TYPE_GENERIC_MIME else: filter_type = FILTER_TYPE_ACTIVITY logging.error('DEPRECATED: sety the filter_type parameter') if filter_type == FILTER_TYPE_GENERIC_MIME: generic_type = mime.get_generic_type(value) if generic_type: mime_types = generic_type.mime_types query['mime_type'] = mime_types else: logging.error('filter_type="generic_mime", ' 'but "%s" is not a generic mime' % value) elif filter_type == FILTER_TYPE_ACTIVITY: query['activity'] = value elif self._filter_type == FILTER_TYPE_MIME_BY_ACTIVITY: registry = bundleregistry.get_registry() bundle = \ registry.get_bundle(value) if bundle is not None: query['mime_type'] = bundle.get_mime_types() else: logging.error('Trying to filter using activity mimetype ' 'but bundle id is wrong %s' % value) if self._when_search_combo.props.value: date_from, date_to = self._get_date_range() query['timestamp'] = {'start': date_from, 'end': date_to} if self.search_entry.props.text: text = self.search_entry.props.text.strip() if text: query['query'] = text property_, order = self._sorting_button.get_current_sort() if order == Gtk.SortType.ASCENDING: sign = '+' else: sign = '-' query['order_by'] = [sign + property_] return query def _get_date_range(self): today_start = datetime.today().replace(hour=0, minute=0, second=0) right_now = datetime.today() if self._when_search_combo.props.value == _ACTION_TODAY: date_range = (today_start, right_now) elif self._when_search_combo.props.value == _ACTION_SINCE_YESTERDAY: date_range = (today_start - timedelta(1), right_now) elif self._when_search_combo.props.value == _ACTION_PAST_WEEK: date_range = (today_start - timedelta(7), right_now) elif self._when_search_combo.props.value == _ACTION_PAST_MONTH: date_range = (today_start - timedelta(30), right_now) elif self._when_search_combo.props.value == _ACTION_PAST_YEAR: date_range = (today_start - timedelta(356), right_now) return (time.mktime(date_range[0].timetuple()), time.mktime(date_range[1].timetuple())) def _combo_changed_cb(self, combo): self._update_if_needed() def __sort_changed_cb(self, button): self._update_if_needed() def _update_if_needed(self): # check if the what_search combo should be visible self._what_search_combo.set_visible( self._filter_type != FILTER_TYPE_MIME_BY_ACTIVITY) new_query = self._build_query() if self._query != new_query: self._query = new_query self.emit('query-changed', self._query) def _search_entry_activated_cb(self, search_entry): if self._autosearch_timer: GObject.source_remove(self._autosearch_timer) self._update_if_needed() def _search_entry_changed_cb(self, search_entry): if not search_entry.props.text: search_entry.activate() return if self._autosearch_timer: GObject.source_remove(self._autosearch_timer) self._autosearch_timer = GObject.timeout_add(_AUTOSEARCH_TIMEOUT, self._autosearch_timer_cb) def _autosearch_timer_cb(self): logging.debug('_autosearch_timer_cb') self._autosearch_timer = None self.search_entry.activate() return False def set_mount_point(self, mount_point): self._mount_point = mount_point self._update_if_needed() def set_what_filter(self, what_filter): combo_model = self._what_search_combo.get_model() what_filter_index = -1 for i in range(0, len(combo_model) - 1): if combo_model[i][0] == what_filter: what_filter_index = i break if what_filter_index == -1: logging.warning('what_filter %r not known', what_filter) else: self._what_search_combo.set_active(what_filter_index) def update_filters(self, mount_point, what_filter, filter_type=None): self._mount_point = mount_point self._filter_type = filter_type self._what_filter = what_filter self.set_what_filter(what_filter) self._update_if_needed() def set_filter_type(self, filter_type): self._filter_type = filter_type self._update_if_needed() def refresh_filters(self): current_value = self._what_search_combo.props.value current_value_index = 0 self._what_search_combo.handler_block(self._what_combo_changed_sid) try: self._what_search_combo.remove_all() # TRANS: Item in a combo box that filters by entry type. self._what_search_combo.append_item(_ACTION_ANYTHING, _('Anything')) registry = bundleregistry.get_registry() appended_separator = False types = mime.get_all_generic_types() for generic_type in types: if not appended_separator: self._what_search_combo.append_separator() appended_separator = True self._what_search_combo.append_item( generic_type.type_id, generic_type.name, generic_type.icon) if generic_type.type_id == current_value: current_value_index = \ len(self._what_search_combo.get_model()) - 1 self._what_search_combo.set_active(current_value_index) self._what_search_combo.append_separator() for service_name in model.get_unique_values('activity'): activity_info = registry.get_bundle(service_name) if activity_info is None: continue if service_name == current_value: combo_model = self._what_search_combo.get_model() current_value_index = len(combo_model) # try activity-provided icon if os.path.exists(activity_info.get_icon()): try: self._what_search_combo.append_item( service_name, activity_info.get_name(), file_name=activity_info.get_icon()) except GObject.GError, exception: logging.warning('Falling back to default icon for' ' "what" filter because %r (%r) has an' ' invalid icon: %s', activity_info.get_name(), str(service_name), exception) else: continue # fall back to generic icon self._what_search_combo.append_item( service_name, activity_info.get_name(), icon_name='application-octet-stream') finally: self._what_search_combo.handler_unblock( self._what_combo_changed_sid) def __favorite_button_toggled_cb(self, favorite_button): self._update_if_needed() def clear_query(self): self.search_entry.props.text = '' if self._what_filter is None: self._what_search_combo.set_active(0) else: self.set_what_filter(self._what_filter) self._when_search_combo.set_active(0) self._favorite_button.props.active = False