def _block_setting_signals(klass, signal_name, block=True): shell_settings = klass.get_shell_settings() for handler in klass._settings_signal_handlers.get(signal_name, []): if block: GObject.signal_handler_block(shell_settings, handler) else: GObject.signal_handler_unblock(shell_settings, handler)
def hide_search_box(self): if self.search_revealer.get_reveal_child(): self.search_revealer.set_reveal_child(False) self.last_terminal_focused.grab_focus() self.last_terminal_focused.unselect_all() GObject.signal_handler_unblock( self.get_notebook(), self.get_notebook().notebook_on_button_press_id )
def _on_button_release(self, scale, event, player): GObject.signal_handler_block(self.scale, self.__id_value_changed) value = scale.get_value() if player.seekable and self.__pressed_lmb_scale_value != value: player.seek(value * 1000) GObject.signal_handler_unblock(self.scale, self.__id_change_value) self.__pressed_lmb = False GObject.signal_handler_unblock( self.scale, self.__id_button_press_event)
def update(self): for i, h in self.handlers_: GObject.signal_handler_block(i, h) s = self.camera_.get() for e, a, ie, ia in zip(self.ctrl_, self.auto_, s["vals"], s["auto"]): e.set_text("%d" % ie) if a: a.set_active(ia) for i, h in self.handlers_: GObject.signal_handler_unblock(i, h)
def show_search_box(self): if not self.search_revealer.get_reveal_child(): GObject.signal_handler_block(self.search_revealer, self.search_revealer_show_cb_id) self.search_revealer.set_visible(True) self.search_revealer.set_reveal_child(True) GObject.signal_handler_unblock(self.search_revealer, self.search_revealer_show_cb_id) # XXX: Mestery line to avoid Gtk-CRITICAL stuff # (guake:22694): Gtk-CRITICAL **: 18:04:57.345: # gtk_widget_event: assertion 'WIDGET_REALIZED_FOR_EVENT (widget, event)' failed self.search_entry.realize() self.search_entry.grab_focus()
def on_audio_status(self, *volumes): volumes_json = "".join(volumes) volumes = json.loads(volumes_json) for source, volume in volumes.items(): volume = 20.0 * math.log10(volume) if volume > 0 else -20.0 slider, signal = self.volume_sliders[source] # Temporarily block the 'value-changed' signal, # so we don't (re)trigger it when receiving (our) changes GObject.signal_handler_block(slider, signal) slider.set_value(volume) GObject.signal_handler_unblock(slider, signal)
def resize_to_standard_width(self): if self.get_resizable(): return # only size to a specific em if we are a static size num_em = 33 # per SoftwareUpdates spec dpi = self.get_screen().get_resolution() if dpi <= 0: dpi = 96 ctx = self.get_style_context() GObject.signal_handler_block(ctx, self.style_changed) size = ctx.get_property("font-size", Gtk.StateFlags.NORMAL) width = dpi / 72 * size * num_em self.set_size_request(width, -1) GObject.signal_handler_unblock(ctx, self.style_changed)
def _toggle_all_selection(self, selected): """ Selects or unselects all items without sending the notify::active signal for performance purposes. """ for child in self.view.get_children(): GObject.signal_handler_block(child.check, child.check_handler_id) # Set the checkbutton state without emiting the signal child.check.set_active(selected) GObject.signal_handler_unblock(child.check, child.check_handler_id) self.update_header_from_selection(len(self.albums_selected))
def gobject_signal_blocked(gobject, signal_name): """ This is a context manager that can be used with the 'with' statement to execute a block of code while *signal_name* is blocked. :param gobject: The object to block the signal on. :type gobject: :py:class:`GObject.Object` :param str signal_name: The name of the signal to block. """ signal_id = GObject.signal_lookup(signal_name, gobject.__class__) handler_id = GObject.signal_handler_find(gobject, GObject.SignalMatchType.ID, signal_id, 0, None, 0, 0) GObject.signal_handler_block(gobject, handler_id) yield GObject.signal_handler_unblock(gobject, handler_id)
def _toggle_all_selection(self, selected): """ Selects or unselects all items without sending the notify::active signal for performance purposes. """ for child in self._view.get_children(): GObject.signal_handler_block(child.check, child.check_handler_id) # Set the checkbutton state without emiting the signal child.check.set_active(selected) GObject.signal_handler_unblock(child.check, child.check_handler_id) self.update_header_from_selection(len(self.albums_selected))
def on_entry_changed(self, *args): entry = self.srvgui.get_widget('gtk_entry_collection_new') filter = entry.get_text() selection = self.treeview.get_selection() def gui_iterate_over_data(model, path, itr): title = self.sorted_model.get(itr, 2)[0] if len(filter) > 0: if filter.upper() in title.upper(): self.treeview.scroll_to_cell(path, self.column_title, True, 0.0, 0.0) self.treeview.set_cursor_on_cell(path, self.column_title, self.renderer_title, False) else: return GObject.signal_handler_block(self.selection, self.trv_signal_changed) self.sorted_model.foreach(gui_iterate_over_data) GObject.signal_handler_unblock(self.selection, self.trv_signal_changed)
def onInsertText(self, oWidget, strText, nLength, nPosition): strText = ''.join([s for s in strText if s not in '/\\']) nId, nDetail = GObject.signal_parse_name('insert-text', oWidget, True) if strText: nHandler = GObject.signal_handler_find(oWidget, GObject.SignalMatchType.ID, nId, nDetail, None, 0, 0) nPosition = oWidget.get_position() GObject.signal_handler_block(oWidget, nHandler) oWidget.insert_text(strText, nPosition) GObject.signal_handler_unblock(oWidget, nHandler) GObject.idle_add(oWidget.set_position, nPosition + len(strText)) GObject.signal_stop_emission(oWidget, nId, nDetail)
def on_refresh_ui(self, data): if self.state < Gst.State.PAUSED: return True if self.duration == Gst.CLOCK_TIME_NONE: ret, self.duration = self.player.query_duration(Gst.Format.TIME) if ret: self.slider.set_range(0, self.duration / Gst.SECOND) else: print("Could not query current duration.") ret, pos = self.player.query_position(Gst.Format.TIME) if ret: GObject.signal_handler_block(self.slider, self.slider_update_sig_id) self.slider.set_value(pos / Gst.SECOND) GObject.signal_handler_unblock(self.slider, self.slider_update_sig_id) return True
def on_refresh_ui(self, data): if self.state < Gst.State.PAUSED : return True if self.duration == Gst.CLOCK_TIME_NONE : ret, self.duration = self.player.query_duration(Gst.Format.TIME) if ret: self.slider.set_range(0, self.duration/Gst.SECOND) else: print("Could not query current duration.") ret, pos = self.player.query_position(Gst.Format.TIME) if ret: GObject.signal_handler_block(self.slider, self.slider_update_sig_id) self.slider.set_value(pos/Gst.SECOND) GObject.signal_handler_unblock(self.slider, self.slider_update_sig_id) return True
def on_entry_changed(self, *args): entry = self.srvgui.get_widget('gtk_entry_collection_new') filter = entry.get_text() selection = self.treeview.get_selection() # ~ self.visible_filter.refilter() def gui_iterate_over_data(model, path, itr): title = self.sorted_model.get(itr, 2)[0] if len(filter) > 0: if filter.upper() in title.upper(): self.treeview.scroll_to_cell(path, self.column_title, True, 0.0, 0.0) self.treeview.set_cursor_on_cell(path, self.column_title, self.renderer_title, False) else: return GObject.signal_handler_block(self.selection, self.trv_signal_changed) self.sorted_model.foreach(gui_iterate_over_data) GObject.signal_handler_unblock(self.selection, self.trv_signal_changed)
def change_color(self, rgb): """Refresh preview and set values of all fields. :param rgb: rgb color values :type rgb: tuple """ rgba = Gdk.RGBA() rgba.parse("rgb({},{},{})".format(*rgb)) self.square.override_background_color(Gtk.StateType.NORMAL, rgba) GObject.signal_handler_block(self.spinbutton_r, self.red_sb_id) self.spinbutton_r.set_value(rgb[0]) GObject.signal_handler_unblock(self.spinbutton_r, self.red_sb_id) GObject.signal_handler_block(self.slider_r, self.red_s_id) self.slider_r.set_value(rgb[0]) GObject.signal_handler_unblock(self.slider_r, self.red_s_id) GObject.signal_handler_block(self.spinbutton_g, self.green_sb_id) self.spinbutton_g.set_value(rgb[1]) GObject.signal_handler_unblock(self.spinbutton_g, self.green_sb_id) GObject.signal_handler_block(self.slider_g, self.green_s_id) self.slider_g.set_value(rgb[1]) GObject.signal_handler_unblock(self.slider_g, self.green_s_id) GObject.signal_handler_block(self.spinbutton_b, self.blue_sb_id) self.spinbutton_b.set_value(rgb[2]) GObject.signal_handler_unblock(self.spinbutton_b, self.blue_sb_id) GObject.signal_handler_block(self.slider_b, self.blue_s_id) self.slider_b.set_value(rgb[2]) GObject.signal_handler_unblock(self.slider_b, self.blue_s_id) GObject.signal_handler_block(self.output, self.output_id) self.output.set_text(rgb_to_hex(rgb)) GObject.signal_handler_unblock(self.output, self.output_id) self.rgb_color = rgb self.change_output()
def set_active(active): GObject.signal_handler_block(self.visible_check, handler) self.visible_check.set_active(active) GObject.signal_handler_unblock(self.visible_check, handler)
def unblock_notebook_on_button_press_id(self): GObject.signal_handler_unblock( self.get_notebook(), self.get_notebook().notebook_on_button_press_id)
def gobject_signal_blocked(gobject, signal_name): signal_id = GObject.signal_lookup(signal_name, gobject.__class__) handler_id = GObject.signal_handler_find(gobject, GObject.SignalMatchType.ID, signal_id, 0, None, 0, 0) GObject.signal_handler_block(gobject, handler_id) yield GObject.signal_handler_unblock(gobject, handler_id)
def unblock_notebook_on_button_press_id(self): GObject.signal_handler_unblock( self.get_notebook(), self.get_notebook().notebook_on_button_press_id )
def _on_button_press(self, scale, event, player): GObject.signal_handler_block(self.scale, self.__id_button_press_event) self.__pressed_lmb = True GObject.signal_handler_unblock(self.scale, self.__id_value_changed) GObject.signal_handler_block(self.scale, self.__id_change_value) self.__pressed_lmb_scale_value = scale.get_value()