示例#1
0
void
aurora_get_parent_bg (const GtkWidget *widget, AuroraRGB *color)
{
	GtkStateType state_type;
	const GtkWidget *parent;
	GdkColor *gcolor;
	gboolean stop;
	GtkShadowType shadow = GTK_SHADOW_NONE;
	
	if (widget == NULL)
		return;
	
	parent = widget->parent;
	stop = FALSE;
	
	while (parent && !stop)
	{
		stop = FALSE;

		stop |= !GTK_WIDGET_NO_WINDOW (parent);
		stop |= GTK_IS_NOTEBOOK (parent) &&
		        gtk_notebook_get_show_tabs (GTK_NOTEBOOK (parent)) &&
		        gtk_notebook_get_show_border (GTK_NOTEBOOK (parent));

		if (GTK_IS_FRAME(parent))
		{
			shadow = gtk_frame_get_shadow_type(GTK_FRAME(parent));
			stop |= (shadow != GTK_SHADOW_NONE);
		}
		else if (GTK_IS_TOOLBAR (parent))
		{
			gtk_widget_style_get (GTK_WIDGET (parent), "shadow-type", &shadow, NULL);
			
			stop |= (shadow != GTK_SHADOW_NONE);
		}

		if (!stop)
			parent = parent->parent;
	}

	if (parent == NULL)
		return;
	
	state_type = GTK_WIDGET_STATE (parent);
	
	gcolor = &parent->style->bg[state_type];
	
	aurora_gdk_color_to_rgb (gcolor, &color->r, &color->g, &color->b);
    
    if (GTK_IS_FRAME (parent) && shadow != GTK_SHADOW_NONE) {
         if (shadow == (GTK_SHADOW_IN || GTK_SHADOW_ETCHED_IN))
         	aurora_shade (color, color, 0.97);
         else
            aurora_shade (color, color, 1.04);
    }
}
示例#2
0
static gboolean
is_combo_window (GtkWidget *widget)
{
  GtkWidget *child;
  AtkObject *obj;

  child = gtk_bin_get_child (GTK_BIN (widget));

  if (!GTK_IS_EVENT_BOX (child))
    return FALSE;

  child = gtk_bin_get_child (GTK_BIN (child));

  if (!GTK_IS_FRAME (child))
    return FALSE;

  child = gtk_bin_get_child (GTK_BIN (child));

  if (!GTK_IS_SCROLLED_WINDOW (child))
    return FALSE;

  obj = gtk_widget_get_accessible (child);
  obj = atk_object_get_parent (obj);

  return FALSE;
}
static GtkBox *
gtk_scale_button_get_box(GtkScaleButton *button)
{
    GtkWidget *box = NULL;
    if (auto dock = gtk_scale_button_get_popup(button)) {
        // the dock is a popover which contains the box
        box = gtk_bin_get_child(GTK_BIN(dock));
        if (box) {
            if (GTK_IS_FRAME(box)) {
                // support older versions of gtk; the box used to be in a frame
                box = gtk_bin_get_child(GTK_BIN(box));
            }
        }
    }

    return GTK_BOX(box);
}
示例#4
0
void
gimp_enum_radio_frame_add (GtkFrame  *frame,
                           GtkWidget *widget,
                           gint       enum_value,
                           gboolean   below)
{
  GtkWidget *box;

  g_return_if_fail (GTK_IS_FRAME (frame));
  g_return_if_fail (GTK_IS_WIDGET (widget));

  box = gtk_bin_get_child (GTK_BIN (frame));

  g_return_if_fail (GTK_IS_BOX (box));

  gimp_enum_radio_box_add (GTK_BOX (box), widget, enum_value, below);
}
示例#5
0
static int gtkButtonSetBgColorAttrib(Ihandle* ih, const char* value)
{
  if (ih->data->type == IUP_BUTTON_TEXT)
  {
    GtkWidget* frame = gtk_button_get_image(GTK_BUTTON(ih->handle));
    if (frame && GTK_IS_FRAME(frame))
    {
      unsigned char r, g, b;
      if (!iupStrToRGB(value, &r, &g, &b))
        return 0;

      iupgtkSetBgColor(gtk_bin_get_child(GTK_BIN(frame)), r, g, b);
      return 1;
    }
  }

  return iupdrvBaseSetBgColorAttrib(ih, value);
}
示例#6
0
    //____________________________________________________________________________________________
    gboolean Animations::realizationHook( GSignalInvocationHint*, guint, const GValue* params, gpointer data )
    {

        // get widget from params
        GtkWidget* widget( GTK_WIDGET( g_value_get_object( params ) ) );

        // check type
        if( !GTK_IS_WIDGET( widget ) ) return FALSE;

        if( GTK_IS_NOTEBOOK( widget ) )
        { gtk_notebook_set_show_border( GTK_NOTEBOOK(widget), FALSE ); }

        #if ENABLE_GROUPBOX_HACK
        if( GTK_IS_LABEL( widget ) &&  GTK_IS_FRAME( gtk_widget_get_parent( widget ) ) )
        {

            GtkFrame *frame( GTK_FRAME( gtk_widget_get_parent( widget ) ) );
            if( widget == gtk_frame_get_label_widget( frame ) && !Gtk::gtk_widget_find_parent( widget, "GtkPizza" ) )
            {
                #if OXYGEN_DEBUG
                std::cout
                    << "Oxygen::Animations::realizationHook -"
                    << " widget: " << widget << " (" << G_OBJECT_TYPE_NAME( widget ) << ")"
                    << " parent: " << frame << " (" << G_OBJECT_TYPE_NAME( frame ) << ")"
                    << std::endl;
                #endif

                // modify alignment
                gtk_frame_set_label_align( frame, 0.5, 0.0 );
                gtk_frame_set_shadow_type( frame, GTK_SHADOW_OUT );

                // register to engine
                Animations& animations( *static_cast<Animations*>(data) );
                animations.groupBoxLabelEngine().registerWidget( widget );
                animations.groupBoxLabelEngine().adjustSize( widget );

            }

        }
        #endif

        return TRUE;

    }
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;
}
void cairo_dock_apply_filter_on_group_widget (gchar **pKeyWords, gboolean bAllWords, gboolean bSearchInToolTip, gboolean bHighLightText, gboolean bHideOther, GSList *pWidgetList)
{
    //g_print ("%s ()\n", __func__);
    if (sBuffer == NULL)
        sBuffer = g_string_new ("");
    gpointer *pGroupKeyWidget;
    GList *pSubWidgetList;
    GtkWidget *pLabel, *pKeyBox, *pVBox, *pFrame, *pCurrentFrame = NULL, *pExpander;
    const gchar *cDescription;
    gchar *cToolTip = NULL;
    gchar *cModifiedText=NULL, *str=NULL;
    gboolean bFound, bFrameVisible = !bHideOther;
    int i;
    gchar *cKeyWord;
    GSList *w;
    for (w = pWidgetList; w != NULL; w = w->next)
    {
        bFound = FALSE;
        pGroupKeyWidget = w->data;
        //g_print ("widget : %s - %s\n", pGroupKeyWidget[0], pGroupKeyWidget[1]);
        pSubWidgetList = pGroupKeyWidget[2];
        if (pSubWidgetList == NULL)
            continue;
        pLabel = pGroupKeyWidget[4];
        if (pLabel == NULL)
            continue;
        pKeyBox = pGroupKeyWidget[5];
        if (pKeyBox == NULL)
            continue;
        pVBox = gtk_widget_get_parent (pKeyBox);
        pFrame = gtk_widget_get_parent (pVBox);

        //\______________ On cache une frame vide, ou au contraire on montre son contenu si elle contient les mots-cles.
        if (pFrame != pCurrentFrame)  // on a change de frame.
        {
            if (pCurrentFrame)
            {
                gboolean bFoundInFrameTitle = _cairo_dock_search_words_in_frame_title (pKeyWords, pCurrentFrame, bAllWords, bHighLightText, bHideOther);
                if (! bFrameVisible && bHideOther)
                {
                    if (! bFoundInFrameTitle)
                        gtk_widget_hide (pCurrentFrame);
                    else
                        gtk_widget_show_all (pCurrentFrame);  // montre tous les widgets du groupe.
                }
                else
                    gtk_widget_show (pCurrentFrame);
            }

            if (GTK_IS_FRAME (pFrame))  // devient la frame courante.
            {
                pExpander = gtk_widget_get_parent (pFrame);
                if (GTK_IS_EXPANDER (pExpander))
                    pFrame = pExpander;  // c'est l'expander qui a le texte, c'est donc ca qu'on veut cacher.
                pCurrentFrame = pFrame;
                bFrameVisible = FALSE;
            }
            else
            {
                pCurrentFrame = NULL;
            }
            //g_print ("pCurrentFrame <- %x\n", pCurrentFrame);
        }

        cDescription = gtk_label_get_text (GTK_LABEL (pLabel));  // sans les markup Pango.
        if (bSearchInToolTip)
            cToolTip = gtk_widget_get_tooltip_text (pKeyBox);
        //g_print ("cDescription : %s (%s)\n", cDescription, cToolTip);

        bFound = FALSE;
        for (i = 0; pKeyWords[i] != NULL; i ++)
        {
            cKeyWord = pKeyWords[i];
            _copy_string_to_buffer (cDescription);
            if (bHighLightText)
                cModifiedText = cairo_dock_highlight_key_word (cDescription, cKeyWord, FALSE);
            else
                str = _search_in_buffer (cKeyWord);
            if (cModifiedText == NULL && str == NULL)
            {
                if (cToolTip != NULL)
                {
                    _copy_string_to_buffer (cToolTip);
                    str = _search_in_buffer (cKeyWord);
                }
            }

            if (cModifiedText != NULL || str != NULL)
            {
                //g_print ("  on a trouve %s\n", cKeyWord);
                bFound = TRUE;
                if (cModifiedText != NULL)
                {
                    gtk_label_set_markup (GTK_LABEL (pLabel), cModifiedText);
                    cDescription = gtk_label_get_label (GTK_LABEL (pLabel));  // Pango inclus.
                    g_free (cModifiedText);
                    cModifiedText = NULL;
                }
                else
                {
                    gtk_label_set_text (GTK_LABEL (pLabel), cDescription);
                    str = NULL;
                }
                if (! bAllWords)
                    break ;
            }
            else if (bAllWords)
            {
                bFound = FALSE;
                break ;
            }
        }
        if (bFound)
        {
            //g_print ("on montre ce widget\n");
            gtk_widget_show (pKeyBox);
            if (pCurrentFrame != NULL)
                bFrameVisible = TRUE;
        }
        else if (bHideOther)
        {
            //g_print ("on cache ce widget\n");
            gtk_widget_hide (pKeyBox);
        }
        else
            gtk_widget_show (pKeyBox);
        g_free (cToolTip);
    }
    if (pCurrentFrame)  // la derniere frame.
    {
        gboolean bFoundInFrameTitle = _cairo_dock_search_words_in_frame_title (pKeyWords, pCurrentFrame, bAllWords, bHighLightText, bHideOther);
        if (! bFrameVisible && bHideOther)
        {
            if (! bFoundInFrameTitle)
                gtk_widget_hide (pCurrentFrame);
            else
                gtk_widget_show_all (pCurrentFrame);  // montre tous les widgets du groupe.
        }
        else
            gtk_widget_show (pCurrentFrame);
    }
}
示例#9
0
static void gmpc_tools_metadata_appearance_real_preferences_pane_construct (GmpcPluginPreferencesIface* base, GtkContainer* container) {
	GmpcToolsMetadataAppearance * self;
	GtkBuilder* _tmp0_ = NULL;
	GtkBuilder* builder;
	gchar* _tmp1_ = NULL;
	gchar* preferences_ui_file;
	GObject* _tmp2_ = NULL;
	GObject* _tmp3_;
	GtkWidget* _tmp4_;
	GtkWidget* builderWidget;
	GObject* _tmp5_ = NULL;
	GObject* _tmp6_;
	GtkWidget* _tmp7_;
	gint _tmp8_;
	GObject* _tmp9_ = NULL;
	GObject* _tmp10_;
	GtkWidget* _tmp11_;
	gint _tmp12_;
	GObject* _tmp13_ = NULL;
	GObject* _tmp14_;
	GtkWidget* _tmp15_;
	gint _tmp16_;
	GObject* _tmp17_ = NULL;
	GObject* _tmp18_;
	GtkWidget* _tmp19_;
	gint _tmp20_;
	GObject* _tmp21_ = NULL;
	GObject* _tmp22_;
	GtkWidget* _tmp23_;
	gint _tmp24_;
	GObject* _tmp25_ = NULL;
	GObject* _tmp26_;
	GtkWidget* _tmp27_;
	gint _tmp28_;
	GError * _inner_error_ = NULL;
	self = (GmpcToolsMetadataAppearance*) base;
	g_return_if_fail (container != NULL);
	_tmp0_ = gtk_builder_new ();
	builder = _tmp0_;
	_tmp1_ = gmpc_get_full_glade_path ("preferences-metadata-appearance.ui");
	preferences_ui_file = _tmp1_;
	gtk_builder_add_from_file (builder, preferences_ui_file, &_inner_error_);
	if (_inner_error_ != NULL) {
		_g_free0 (preferences_ui_file);
		_g_object_unref0 (builder);
		goto __catch15_g_error;
	}
	gtk_builder_connect_signals (builder, NULL);
	_tmp2_ = gtk_builder_get_object (builder, "frame_metadata_appearance_settings");
	_tmp3_ = _tmp2_;
	_tmp4_ = _g_object_ref0 ((GtkWidget*) (GTK_IS_FRAME (_tmp3_) ? ((GtkFrame*) _tmp3_) : NULL));
	builderWidget = _tmp4_;
	gtk_container_add (container, builderWidget);
	gtk_widget_show_all (builderWidget);
	_tmp5_ = gtk_builder_get_object (builder, "checkbutton_show_lyrics");
	_tmp6_ = _tmp5_;
	_tmp7_ = _g_object_ref0 ((GtkWidget*) (GTK_IS_CHECK_BUTTON (_tmp6_) ? ((GtkCheckButton*) _tmp6_) : NULL));
	_g_object_unref0 (builderWidget);
	builderWidget = _tmp7_;
	_tmp8_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-lyrics", 1);
	gtk_toggle_button_set_active ((GtkToggleButton*) GTK_CHECK_BUTTON (builderWidget), (gboolean) _tmp8_);
	_tmp9_ = gtk_builder_get_object (builder, "checkbutton_show_artist_information");
	_tmp10_ = _tmp9_;
	_tmp11_ = _g_object_ref0 ((GtkWidget*) (GTK_IS_CHECK_BUTTON (_tmp10_) ? ((GtkCheckButton*) _tmp10_) : NULL));
	_g_object_unref0 (builderWidget);
	builderWidget = _tmp11_;
	_tmp12_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-artist-information", 1);
	gtk_toggle_button_set_active ((GtkToggleButton*) GTK_CHECK_BUTTON (builderWidget), (gboolean) _tmp12_);
	_tmp13_ = gtk_builder_get_object (builder, "checkbutton_show_web_links");
	_tmp14_ = _tmp13_;
	_tmp15_ = _g_object_ref0 ((GtkWidget*) (GTK_IS_CHECK_BUTTON (_tmp14_) ? ((GtkCheckButton*) _tmp14_) : NULL));
	_g_object_unref0 (builderWidget);
	builderWidget = _tmp15_;
	_tmp16_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-web-links", 1);
	gtk_toggle_button_set_active ((GtkToggleButton*) GTK_CHECK_BUTTON (builderWidget), (gboolean) _tmp16_);
	_tmp17_ = gtk_builder_get_object (builder, "checkbutton_show_similar_artists");
	_tmp18_ = _tmp17_;
	_tmp19_ = _g_object_ref0 ((GtkWidget*) (GTK_IS_CHECK_BUTTON (_tmp18_) ? ((GtkCheckButton*) _tmp18_) : NULL));
	_g_object_unref0 (builderWidget);
	builderWidget = _tmp19_;
	_tmp20_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-similar-artist", 1);
	gtk_toggle_button_set_active ((GtkToggleButton*) GTK_CHECK_BUTTON (builderWidget), (gboolean) _tmp20_);
	_tmp21_ = gtk_builder_get_object (builder, "checkbutton_show_similar_songs");
	_tmp22_ = _tmp21_;
	_tmp23_ = _g_object_ref0 ((GtkWidget*) (GTK_IS_CHECK_BUTTON (_tmp22_) ? ((GtkCheckButton*) _tmp22_) : NULL));
	_g_object_unref0 (builderWidget);
	builderWidget = _tmp23_;
	_tmp24_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-similar-songs", 1);
	gtk_toggle_button_set_active ((GtkToggleButton*) GTK_CHECK_BUTTON (builderWidget), (gboolean) _tmp24_);
	_tmp25_ = gtk_builder_get_object (builder, "checkbutton_show_guitar_tabs");
	_tmp26_ = _tmp25_;
	_tmp27_ = _g_object_ref0 ((GtkWidget*) (GTK_IS_CHECK_BUTTON (_tmp26_) ? ((GtkCheckButton*) _tmp26_) : NULL));
	_g_object_unref0 (builderWidget);
	builderWidget = _tmp27_;
	_tmp28_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-guitar-tabs", 1);
	gtk_toggle_button_set_active ((GtkToggleButton*) GTK_CHECK_BUTTON (builderWidget), (gboolean) _tmp28_);
	_g_object_unref0 (builderWidget);
	_g_free0 (preferences_ui_file);
	_g_object_unref0 (builder);
	goto __finally15;
	__catch15_g_error:
	{
		GError * e;
		e = _inner_error_;
		_inner_error_ = NULL;
		fprintf (stderr, "Could not load UI: %s\n", e->message);
		_g_error_free0 (e);
	}
	__finally15:
	if (_inner_error_ != NULL) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}
示例#10
0
void
gimp_enum_radio_frame_add (GtkFrame  *frame,
                           GtkWidget *widget,
                           gint       enum_value)
{
  GtkWidget *vbox;
  GList     *children;
  GList     *list;
  gint       pos;

  g_return_if_fail (GTK_IS_FRAME (frame));
  g_return_if_fail (GTK_IS_WIDGET (widget));

  vbox = gtk_bin_get_child (GTK_BIN (frame));

  g_return_if_fail (GTK_IS_VBOX (vbox));

  children = gtk_container_get_children (GTK_CONTAINER (vbox));

  for (list = children, pos = 1;
       list;
       list = g_list_next (list), pos++)
    {
      if (GTK_IS_RADIO_BUTTON (list->data) &&
          GPOINTER_TO_INT (g_object_get_data (list->data, "gimp-item-data")) ==
          enum_value)
        {
          GtkWidget *radio = list->data;
          GtkWidget *hbox;
          GtkWidget *spacer;
          gint       indicator_size;
          gint       indicator_spacing;
          gint       focus_width;
          gint       focus_padding;

          gtk_widget_style_get (radio,
                                "indicator-size",    &indicator_size,
                                "indicator-spacing", &indicator_spacing,
                                "focus-line-width",  &focus_width,
                                "focus-padding",     &focus_padding,
                                NULL);

          hbox = gtk_hbox_new (FALSE, 0);

          spacer = gtk_vbox_new (FALSE, 0);
          gtk_widget_set_size_request (spacer,
                                       indicator_size +
                                       3 * indicator_spacing +
                                       focus_width +
                                       focus_padding +
                                       GTK_CONTAINER (radio)->border_width,
                                       -1);
          gtk_box_pack_start (GTK_BOX (hbox), spacer, FALSE, FALSE, 0);
          gtk_widget_show (spacer);

          gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
          gtk_widget_show (widget);

          g_object_set_data (G_OBJECT (radio), "set_sensitive", hbox);
          g_signal_connect (radio, "toggled",
                            G_CALLBACK (gimp_toggle_button_sensitive_update),
                            NULL);

          gtk_widget_set_sensitive (hbox,
                                    GTK_TOGGLE_BUTTON (list->data)->active);

          gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
          gtk_box_reorder_child (GTK_BOX (vbox), hbox, pos);
          gtk_widget_show (hbox);

          break;
        }
    }

  g_list_free (children);
}
示例#11
0
文件: table.c 项目: zdia/gnocl
/**
/brief
/author     Peter G Baum, William J Giddings
**/
static int tableFunc ( ClientData data, Tcl_Interp *interp,
					   int objc, Tcl_Obj * const objv[] )
{
	const char *cmds[] = { "delete", "configure", "add", "addRow", "addColumn", "class", NULL };
	enum cmdIdx { DeleteIdx, ConfigureIdx, AddIdx, AddRowIdx, AddColumnIdx, ClassIdx };

	int idx;

	GtkWidget *widget = GTK_WIDGET ( data );
	GtkFrame *frame;
	GtkTable  *table;

	if ( objc < 2 )
	{
		Tcl_WrongNumArgs ( interp, 1, objv, "command" );
		return TCL_ERROR;
	}

	if ( GTK_IS_FRAME ( widget ) )
	{
		frame = GTK_FRAME ( widget );
		table = GTK_TABLE ( gtk_bin_get_child ( GTK_BIN ( frame ) ) );
	}

	else
	{
		frame = NULL;
		table = GTK_TABLE ( widget );
	}

	/* For debugging purposes
	{
	   guint rows, columns;

	   g_object_get( G_OBJECT( table ), "n_rows", &rows, NULL );
	   g_object_get( G_OBJECT( table ), "n_columns", &columns, NULL );
	   printf( "rows: %d cols: %d\n", (int)rows, (int)columns );
	}
	*/

	if ( Tcl_GetIndexFromObj ( interp, objv[1], cmds, "command",
							   TCL_EXACT, &idx ) != TCL_OK )
		return TCL_ERROR;

	switch ( idx )
	{
		case ClassIdx:
			Tcl_SetObjResult ( interp, Tcl_NewStringObj ( "table", -1 ) );
			break;
		case DeleteIdx:
			return gnoclDelete ( interp, widget, objc, objv );

		case ConfigureIdx:
			{
				int ret = TCL_ERROR;

				if ( gnoclParseOptions ( interp, objc - 1, objv + 1,
										 tableOptions ) == TCL_OK )
				{
					ret = configure ( interp, frame, table, tableOptions );
				}

				gnoclClearOptions ( tableOptions );

				return ret;
			}

			break;
		case AddIdx:
			return tableFuncAdd ( table, interp, objc, objv );
		case AddColumnIdx:
		case AddRowIdx:
			return addRowCol ( table, interp, objc, objv, idx == AddRowIdx );
	}

	return TCL_OK;
}