[Glade-devel] Custom Widgets in Glade 2.6

Avtar Singh avtar69 at gmail.com
Thu Mar 29 06:53:53 EDT 2007


Dear Damon,

Thanks for you reply .
create_color_combo is the creation function of the custom widget. The
parameters that I am passing in the Custom widget are as follows:

      Name : cust_combo
     Class : Custom
     Creation function: create_color_combo
     String1: red
     Int1: 0
     Int2: 0

Below is the creation function code
============================================================
extern "C" GtkWidget*
create_color_combo (gchar *widget_name, gchar *string1, gchar *string2,
                gint int1, gint int2)
{
  GtkWidget *pixmap;
  GtkWidget *color_combo;
  gchar *remapped_colors[64];
  const char * color;
  int i;

  GdkColor gcolors[64];
  if (string1 != NULL && *string1 != '\0') {
    color = string1;
  } else if (int1 < 64) {
    color = colors[int1];
  } else {
    color = "black";
  }
  pixmap = create_color_block_pixmap_new(color);
  for (i=0 ; i < 64; i++) {
    int x = i % 8;
    int y = int (i/8);
    int flipped_i = x * 8 + y;
    remapped_colors[i] = (gchar *) colors[remap[flipped_i]];
    gdk_color_parse(remapped_colors[i], &gcolors[i]);
  }

  gdk_color_parse(color,gcolors);

  color_combo = gtk_color_combo_new_with_values(8, 8, gcolors);

  gtk_container_add(GTK_CONTAINER(GTK_COMBO_BUTTON(color_combo)->button),
                    pixmap);
  gtk_widget_show(pixmap);

  gtk_signal_connect(GTK_OBJECT(color_combo),
                     "changed", (GtkSignalFunc) xptui_color_combo_changed,
                     NULL);
  gtk_object_set_data(GTK_OBJECT(color_combo), "selected-color",
                      (gpointer) color);

  gtk_widget_show(color_combo);

  gtk_widget_set_name(color_combo,widget_name);
  return color_combo;
}

static GtkWidget
*create_color_block_pixmap_new (const char * color) {
  GdkBitmap *mask;
  GdkPixmap *pixmap;
  GdkColormap *colormap = gdk_colormap_get_system();
  char buffer[20];

  snprintf(buffer,20, "Xc %s", color);
  block[6] = buffer;
  pixmap = gdk_pixmap_colormap_create_from_xpm_d(NULL, colormap, &mask, NULL,
                                                block);
  return gtk_pixmap_new(pixmap, mask);

}

============================================================
Please do let me know I you want any more infomation.

Thanks
Avtar Singh

On 3/29/07, Damon Chaplin <damon at karuna.eclipse.co.uk> wrote:
> On Thu, 2007-03-29 at 10:26 +0530, Avtar Singh wrote:
> > Dear All,
> >
> > I am working on glade 2.6 and using Custom Widgets for creating a
> > color combo box pallete. My Custom Widgets creation function calls a
> > function which creates a color combo and returns the color combo
> > widget. This same function is used to create about 40 color combo
> > widgets which are placed at different tabs in my application.
> >
> > The problem is that some of the custom widgets work fine but some of
> > these widgets gives me "glibc corrupted double link list error" on
> > return from this function.
> >
> > I have tried running the application using Valgrind and it works fine
> > without giving me glibc erorr. The strange thing that I find is that
> > when I change the positions of custom widgets in my Application (Glade
> > file) some of the widgets come up but it gives me error at some
> > different Custom Widget.
> >
> > Please let me know if somebody has any idea on this issue.
>
> That's a pretty odd bug.
>
> If you can write a small test app that shows the problem I'll take a
> look at it.
>
> I'd guess that the problem is in your code, since noone else has
> reported a bug like this, and the Glade code is pretty simple. But I may
> be wrong. (Also, recent versions of GTK+ are causing loads of crashes,
> which could possibly be related.)
>
> Damon
>
>
>


More information about the Glade-devel mailing list