static gchar* gail_expander_get_text_after_offset (AtkText *text, gint offset, AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset) { GtkWidget *widget; GailExpander *expander; GtkWidget *label; widget = GTK_ACCESSIBLE (text)->widget; if (widget == NULL) /* State is defunct */ return NULL; expander = GAIL_EXPANDER (text); if (!expander->textutil) gail_expander_init_textutil (expander, GTK_EXPANDER (widget)); label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (!GTK_IS_LABEL(label)) return NULL; return gail_text_util_get_text (expander->textutil, gtk_label_get_layout (GTK_LABEL (label)), GAIL_AFTER_OFFSET, boundary_type, offset, start_offset, end_offset); }
static gint gail_expander_get_n_children (AtkObject* obj) { GtkWidget *widget; GList *children; gint count = 0; g_return_val_if_fail (GAIL_IS_CONTAINER (obj), count); widget = GTK_ACCESSIBLE (obj)->widget; if (widget == NULL) return 0; children = gtk_container_get_children (GTK_CONTAINER(widget)); count = g_list_length (children); g_list_free (children); /* See if there is a label - if there is, reduce our count by 1 * since we don't want the label included with the children. */ if (gtk_expander_get_label_widget (GTK_EXPANDER (widget))) count -= 1; return count; }
static gunichar gail_expander_get_character_at_offset (AtkText *text, gint offset) { GtkWidget *widget; GtkWidget *label; const gchar *string; gchar *index; widget = GTK_ACCESSIBLE (text)->widget; if (widget == NULL) /* State is defunct */ return '\0'; label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (!GTK_IS_LABEL(label)) return '\0'; string = gtk_label_get_text (GTK_LABEL (label)); if (offset >= g_utf8_strlen (string, -1)) return '\0'; index = g_utf8_offset_to_pointer (string, offset); return g_utf8_get_char (index); }
static void gail_expander_get_character_extents (AtkText *text, gint offset, gint *x, gint *y, gint *width, gint *height, AtkCoordType coords) { GtkWidget *widget; GtkWidget *label; PangoRectangle char_rect; gint index, x_layout, y_layout; const gchar *label_text; widget = GTK_ACCESSIBLE (text)->widget; if (widget == NULL) /* State is defunct */ return; label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (!GTK_IS_LABEL(label)) return; gtk_label_get_layout_offsets (GTK_LABEL (label), &x_layout, &y_layout); label_text = gtk_label_get_text (GTK_LABEL (label)); index = g_utf8_offset_to_pointer (label_text, offset) - label_text; pango_layout_index_to_pos (gtk_label_get_layout (GTK_LABEL (label)), index, &char_rect); gail_misc_get_extents_from_pango_rectangle (label, &char_rect, x_layout, y_layout, x, y, width, height, coords); }
GdkWindow *wxCollapsiblePane::GTKGetWindow(wxArrayGdkWindows& windows) const { GtkWidget *label = gtk_expander_get_label_widget( GTK_EXPANDER(m_widget) ); windows.Add(gtk_widget_get_window(label)); windows.Add(gtk_widget_get_window(m_widget)); return NULL; }
static G_CONST_RETURN gchar* gail_expander_get_full_text (GtkExpander *widget) { GtkWidget *label_widget; label_widget = gtk_expander_get_label_widget (widget); if (!GTK_IS_LABEL (label_widget)) return NULL; return gtk_label_get_text (GTK_LABEL (label_widget)); }
static const gchar * gtk_expander_accessible_get_full_text (GtkExpander *widget) { GtkWidget *label_widget; label_widget = gtk_expander_get_label_widget (widget); if (!GTK_IS_LABEL (label_widget)) return NULL; return gtk_label_get_text (GTK_LABEL (label_widget)); }
static AtkObject* gail_expander_ref_child (AtkObject *obj, gint i) { GList *children, *tmp_list; AtkObject *accessible; GtkWidget *widget; GtkWidget *label; gint index; gint count; g_return_val_if_fail (GAIL_IS_CONTAINER (obj), NULL); g_return_val_if_fail ((i >= 0), NULL); widget = GTK_ACCESSIBLE (obj)->widget; if (widget == NULL) return NULL; children = gtk_container_get_children (GTK_CONTAINER (widget)); /* See if there is a label - if there is, we need to skip it * since we don't want the label included with the children. */ label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (label) { count = g_list_length (children); for (index = 0; index <= i; index++) { tmp_list = g_list_nth (children, index); if (label == GTK_WIDGET (tmp_list->data)) { i += 1; break; } } } tmp_list = g_list_nth (children, i); if (!tmp_list) { g_list_free (children); return NULL; } accessible = gtk_widget_get_accessible (GTK_WIDGET (tmp_list->data)); g_list_free (children); g_object_ref (accessible); return accessible; }
static gint gail_expander_get_character_count (AtkText *text) { GtkWidget *widget; GtkWidget *label; widget = GTK_ACCESSIBLE (text)->widget; if (widget == NULL) /* State is defunct */ return 0; label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (!GTK_IS_LABEL(label)) return 0; return g_utf8_strlen (gtk_label_get_text (GTK_LABEL (label)), -1); }
static AtkAttributeSet* gail_expander_get_run_attributes (AtkText *text, gint offset, gint *start_offset, gint *end_offset) { GtkWidget *widget; GtkWidget *label; AtkAttributeSet *at_set = NULL; GtkJustification justify; GtkTextDirection dir; widget = GTK_ACCESSIBLE (text)->widget; if (widget == NULL) /* State is defunct */ return NULL; label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (!GTK_IS_LABEL(label)) return NULL; /* Get values set for entire label, if any */ justify = gtk_label_get_justify (GTK_LABEL (label)); if (justify != GTK_JUSTIFY_CENTER) { at_set = gail_misc_add_attribute (at_set, ATK_TEXT_ATTR_JUSTIFICATION, g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_JUSTIFICATION, justify))); } dir = gtk_widget_get_direction (label); if (dir == GTK_TEXT_DIR_RTL) { at_set = gail_misc_add_attribute (at_set, ATK_TEXT_ATTR_DIRECTION, g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_DIRECTION, dir))); } at_set = gail_misc_layout_get_run_attributes (at_set, gtk_label_get_layout (GTK_LABEL (label)), (gchar *) gtk_label_get_text (GTK_LABEL (label)), offset, start_offset, end_offset); return at_set; }
static G_CONST_RETURN gchar* gail_expander_get_keybinding (AtkAction *action, gint i) { GailExpander *expander; gchar *return_value = NULL; switch (i) { case 0: { /* * We look for a mnemonic on the label */ GtkWidget *widget; GtkWidget *label; expander = GAIL_EXPANDER (action); widget = GTK_ACCESSIBLE (expander)->widget; if (widget == NULL) /* * State is defunct */ return NULL; g_return_val_if_fail (GTK_IS_EXPANDER (widget), NULL); label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (GTK_IS_LABEL (label)) { guint key_val; key_val = gtk_label_get_mnemonic_keyval (GTK_LABEL (label)); if (key_val != GDK_VoidSymbol) return_value = gtk_accelerator_name (key_val, GDK_MOD1_MASK); g_free (expander->activate_keybinding); expander->activate_keybinding = return_value; } break; } default: break; } return return_value; }
static GtkWidget* create_expander (const char *caption, GtkWidget *child, gdouble xscale, gdouble yscale) { GtkWidget *expander = gtk_expander_new (""); GtkWidget *label = gtk_expander_get_label_widget (GTK_EXPANDER (expander)); GtkWidget *align = gtk_alignment_new (0, 0, xscale, yscale); gtk_alignment_set_padding (GTK_ALIGNMENT (align), 6, 0, 18, 0); gtk_label_set_markup (GTK_LABEL (label), caption); gtk_container_add (GTK_CONTAINER (expander), align); gtk_container_add (GTK_CONTAINER (align), child); return expander; }
static AtkAttributeSet* gail_expander_get_default_attributes (AtkText *text) { GtkWidget *widget; GtkWidget *label; AtkAttributeSet *at_set = NULL; widget = GTK_ACCESSIBLE (text)->widget; if (widget == NULL) /* State is defunct */ return NULL; label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (!GTK_IS_LABEL(label)) return NULL; at_set = gail_misc_get_default_attributes (at_set, gtk_label_get_layout (GTK_LABEL (label)), widget); return at_set; }
static GtkWidget* create_expander (const char *caption, GtkWidget *child, GtkAlign halign, GtkAlign valign) { GtkWidget *expander = gtk_expander_new (""); GtkWidget *label = gtk_expander_get_label_widget (GTK_EXPANDER (expander)); g_object_set (child, "margin-top", 6, "margin-bottom", 0, "margin-start", 18, "margin-end", 0, "halign", halign, "valign", valign, NULL); gtk_label_set_markup (GTK_LABEL (label), caption); gtk_container_add (GTK_CONTAINER (expander), child); return expander; }
static gint gail_expander_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coords) { GtkWidget *widget; GtkWidget *label; gint index, x_layout, y_layout; const gchar *label_text; widget = GTK_ACCESSIBLE (text)->widget; if (widget == NULL) /* State is defunct */ return -1; label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); if (!GTK_IS_LABEL(label)) return -1; gtk_label_get_layout_offsets (GTK_LABEL (label), &x_layout, &y_layout); index = gail_misc_get_index_at_point_in_layout (label, gtk_label_get_layout (GTK_LABEL (label)), x_layout, y_layout, x, y, coords); label_text = gtk_label_get_text (GTK_LABEL (label)); if (index == -1) { if (coords == ATK_XY_WINDOW || coords == ATK_XY_SCREEN) return g_utf8_strlen (label_text, -1); return index; } else return g_utf8_pointer_to_offset (label_text, label_text + index); }
static gboolean _cairo_dock_search_words_in_frame_title (gchar **pKeyWords, GtkWidget *pCurrentFrame, gboolean bAllWords, gboolean bHighLightText, gboolean bHideOther) { //\______________ On recupere son titre. GtkWidget *pFrameLabel = NULL; GtkWidget *pLabelContainer = (GTK_IS_FRAME (pCurrentFrame) ? gtk_frame_get_label_widget (GTK_FRAME (pCurrentFrame)) : gtk_expander_get_label_widget (GTK_EXPANDER (pCurrentFrame))); //g_print ("pLabelContainer : %x\n", pLabelContainer); if (GTK_IS_LABEL (pLabelContainer)) { pFrameLabel = pLabelContainer; } else if (pLabelContainer != NULL) { GList *pChildList = gtk_container_get_children (GTK_CONTAINER (pLabelContainer)); if (pChildList != NULL && pChildList->next != NULL) pFrameLabel = pChildList->next->data; } //\______________ On cherche les mots-cles dedans. gchar *cModifiedText = NULL, *str = NULL, *cKeyWord; gboolean bFoundInFrameTitle = FALSE; if (pFrameLabel != NULL) { const gchar *cFrameTitle = gtk_label_get_text (GTK_LABEL (pFrameLabel)); int i; for (i = 0; pKeyWords[i] != NULL; i ++) { cKeyWord = pKeyWords[i]; _copy_string_to_buffer (cFrameTitle); if (bHighLightText) cModifiedText = cairo_dock_highlight_key_word (cFrameTitle, cKeyWord, TRUE); else str = _search_in_buffer (cKeyWord); if (cModifiedText != NULL || str != NULL) // on a trouve ce mot. { //g_print (" on a trouve %s dans le titre\n", cKeyWord); bFoundInFrameTitle = TRUE; if (cModifiedText != NULL) { gtk_label_set_markup (GTK_LABEL (pFrameLabel), cModifiedText); cFrameTitle = gtk_label_get_label (GTK_LABEL (pFrameLabel)); // Pango inclus. g_free (cModifiedText); cModifiedText = NULL; } else str = NULL; if (! bAllWords) break ; } else if (bAllWords) { bFoundInFrameTitle = FALSE; break ; } } if (! bFoundInFrameTitle) // on remet le texte par defaut. { cModifiedText = g_strdup_printf ("<b>%s</b>", cFrameTitle); gtk_label_set_markup (GTK_LABEL (pFrameLabel), cModifiedText); g_free (cModifiedText); cModifiedText = NULL; } } return bFoundInFrameTitle; }
static GcrDisplayItem* create_display_item (GcrDisplayView *self, GcrRenderer *renderer) { GcrDisplayItem *item; GtkTextTagTable *tags; GtkTextIter iter; GtkWidget *widget; GtkWidget *label; GtkWidget *alignment; item = g_new0 (GcrDisplayItem, 1); item->display_view = self; item->renderer = renderer; tags = gtk_text_buffer_get_tag_table (self->pv->buffer); g_assert (!item->field_tag); item->field_width = 0; item->field_tag = g_object_new (GTK_TYPE_TEXT_TAG, "left-margin", item->field_width + FIELD_MARGIN, "indent", item->field_width, "pixels-below-lines", 3, "wrap-mode", GTK_WRAP_WORD_CHAR, NULL); gtk_text_tag_table_add (tags, item->field_tag); g_assert (!item->details_tag); item->details_tag = g_object_new (GTK_TYPE_TEXT_TAG, NULL); gtk_text_tag_table_add (tags, item->details_tag); /* The mark that determines the beginning of this item, with left gravity. */ gtk_text_buffer_get_end_iter (self->pv->buffer, &iter); item->beginning = gtk_text_buffer_create_mark (self->pv->buffer, NULL, &iter, TRUE); g_object_ref (item->beginning); /* The mark that determines the end of this item, with right gravity. */ gtk_text_buffer_get_end_iter (self->pv->buffer, &iter); item->ending = gtk_text_buffer_create_mark (self->pv->buffer, NULL, &iter, FALSE); g_object_ref (item->ending); widget = gtk_expander_new_with_mnemonic (""); label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); gtk_label_set_markup_with_mnemonic (GTK_LABEL (label), "<b>_Details</b>"); g_signal_connect (widget, "notify::expanded", G_CALLBACK (on_expander_expanded), item); g_signal_connect (widget, "realize", G_CALLBACK (on_expander_realize), NULL); item->expanded = gtk_expander_get_expanded (GTK_EXPANDER (widget)); alignment = gtk_alignment_new (0.5, 0.5, 0.5, 0.5); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 9, 0, 0); gtk_container_add (GTK_CONTAINER (alignment), widget); gtk_widget_show_all (alignment); item->details_widget = gtk_event_box_new (); gtk_container_add (GTK_CONTAINER (item->details_widget), alignment); g_signal_connect (item->details_widget, "realize", G_CALLBACK (on_expander_realize), NULL); g_object_ref (item->details_widget); if (gtk_widget_get_realized (GTK_WIDGET (self))) style_display_item (GTK_WIDGET (self), item); /* TODO: Initialize the rest of the fields */ return item; }