コード例 #1
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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);
}
コード例 #2
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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; 
}
コード例 #3
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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);
}
コード例 #4
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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);
} 
コード例 #5
0
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;
}
コード例 #6
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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));
}
コード例 #7
0
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));
}
コード例 #8
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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; 
}
コード例 #9
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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);
}
コード例 #10
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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;
}
コード例 #11
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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; 
}
コード例 #12
0
ファイル: test-calendar.c プロジェクト: qezt/liblunar
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;
}
コード例 #13
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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;
}
コード例 #14
0
ファイル: testcalendar.c プロジェクト: sam-m888/gtk
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;
}
コード例 #15
0
ファイル: gailexpander.c プロジェクト: batman52/dingux-code
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);  
}
コード例 #16
0
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;
}
コード例 #17
0
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;
}