/** \brief Function associated with the widget. \author \date **/ static int cget ( Tcl_Interp *interp, EntryParams *para, GnoclOption options[], int idx ) { #ifdef DEBUG_ENTRY printf ( "entry/staticFuncs/cget\n" ); #endif Tcl_Obj *obj = NULL; if ( idx == variableIdx ) { obj = Tcl_NewStringObj ( para->variable, -1 ); } else if ( idx == onChangedIdx ) { obj = Tcl_NewStringObj ( para->onChanged ? para->onChanged : "", -1 ); } else if ( idx == valueIdx ) { obj = Tcl_NewStringObj ( gtk_entry_get_text ( para->entry ), -1 ); } if ( obj != NULL ) { Tcl_SetObjResult ( interp, obj ); return TCL_OK; } return gnoclCgetNotImplemented ( interp, options + idx ); }
static int cget( Tcl_Interp *interp, SpinButtonParams *para, GnoclOption options[], int idx ) { GtkAdjustment *adjust = gtk_spin_button_get_adjustment( para->spinButton ); Tcl_Obj *obj = NULL; if( idx == variableIdx ) obj = Tcl_NewStringObj( para->variable, -1 ); else if( idx == onValueChangedIdx ) { obj = Tcl_NewStringObj( para->onValueChanged ? para->onValueChanged : "", -1 ); } else if( idx == lowerIdx ) obj = Tcl_NewDoubleObj( adjust->lower ); else if( idx == upperIdx ) obj = Tcl_NewDoubleObj( adjust->upper ); else if( idx == stepIncIdx ) obj = Tcl_NewDoubleObj( adjust->step_increment ); else if( idx == pageIncIdx ) obj = Tcl_NewDoubleObj( adjust->page_increment ); else if( idx == valueIdx ) obj = getObjValue( para->spinButton ); if( obj != NULL ) { Tcl_SetObjResult( interp, obj ); return TCL_OK; } return gnoclCgetNotImplemented( interp, options + idx ); }
static int cget( Tcl_Interp *interp, GnomeCanvas *canvas, GnoclOption options[], int idx ) { Tcl_Obj *obj = NULL; if( obj != NULL ) { Tcl_SetObjResult( interp, obj ); return TCL_OK; } return gnoclCgetNotImplemented( interp, options + idx ); }
/** \brief Obtain current -option values. **/ static int cget ( Tcl_Interp *interp, GtkButton *button, GnoclOption options[], int idx ) { Tcl_Obj *obj = NULL; if ( idx == textIdx ) { obj = gnoclCgetButtonText ( interp, button ); } else if ( idx == iconIdx ) { GtkWidget *image = gnoclFindChild ( GTK_WIDGET ( button ), GTK_TYPE_IMAGE ); if ( image == NULL ) { obj = Tcl_NewStringObj ( "", 0 ); } else { gchar *st; g_object_get ( G_OBJECT ( image ), "stock", &st, NULL ); if ( st ) { obj = Tcl_NewStringObj ( "%#", 2 ); Tcl_AppendObjToObj ( obj, gnoclGtkToStockName ( st ) ); g_free ( st ); } else { Tcl_SetResult ( interp, "Could not determine icon type.", TCL_STATIC ); return TCL_ERROR; } } } if ( obj != NULL ) { Tcl_SetObjResult ( interp, obj ); return TCL_OK; } return gnoclCgetNotImplemented ( interp, options + idx ); }
static int itemCget( Tcl_Interp *interp, int objc, Tcl_Obj * const objv[], CanvasParams *param, GPtrArray *items ) { /* canvas itemCget tag-or-id option */ Gnocl_CanvasItemInfo *info; int idx; if( objc != 4 ) { Tcl_WrongNumArgs( interp, 2, objv, "tag-or-id option" ); return TCL_ERROR; } if( items == NULL || items->len == 0 ) return TCL_OK; if( items->len > 1 ) { Tcl_SetResult( interp, "tag-or-id must specify a single item", TCL_STATIC ); return TCL_ERROR; } info = GET_INFO( items, 0 ); switch( gnoclCgetOne( interp, objv[3], G_OBJECT( info->item ), info->options, &idx ) ) { case GNOCL_CGET_ERROR: return TCL_ERROR; case GNOCL_CGET_HANDLED: return TCL_OK; case GNOCL_CGET_NOTHANDLED: { Tcl_Obj *ret = NULL; if( info->getOption ) ret = (*info->getOption)( interp, idx, info ); if( ret == NULL ) return gnoclCgetNotImplemented( interp, info->options + idx ); Tcl_SetObjResult( interp, ret ); return TCL_OK; } } return TCL_ERROR; }
static int cget ( Tcl_Interp *interp, ComboParams *para, GnoclOption options[], int idx ) { Tcl_Obj *obj = NULL; GtkEntry *entry = GTK_ENTRY ( para->combo->entry ); if ( idx == variableIdx ) obj = Tcl_NewStringObj ( para->variable, -1 ); else if ( idx == onChangedIdx ) obj = Tcl_NewStringObj ( para->onChanged ? para->onChanged : "", -1 ); else if ( idx == itemsIdx ) { obj = Tcl_NewListObj ( 0, NULL ); gtk_container_foreach ( GTK_CONTAINER ( para->combo->list ), getAllItems, obj ); } else if ( idx == valueIdx ) obj = Tcl_NewStringObj ( gtk_entry_get_text ( entry ), -1 ); else if ( idx == tooltipIdx ) gnoclOptTooltip ( interp, &options[tooltipIdx], G_OBJECT ( entry ), &obj ); else if ( idx == editableIdx ) { gboolean on; g_object_get ( G_OBJECT ( entry ), "editable", &on, NULL ); obj = Tcl_NewBooleanObj ( on ); } if ( obj != NULL ) { Tcl_SetObjResult ( interp, obj ); return TCL_OK; } return gnoclCgetNotImplemented ( interp, options + idx ); }
static int cget( Tcl_Interp *interp, ComboParams *para, GnoclOption options[], int idx ) { Tcl_Obj *obj = NULL; if( idx == variableIdx ) obj = Tcl_NewStringObj( para->variable, -1 ); else if( idx == onChangedIdx ) obj = Tcl_NewStringObj( para->onChanged ? para->onChanged : "", -1 ); else if( idx == itemsIdx ) { GtkTreeModel *model = gtk_combo_box_get_model( para->comboBox ); obj = Tcl_NewListObj( 0, NULL ); if( model ) { GtkTreeIter iter; gboolean valid = gtk_tree_model_get_iter_first( model, &iter ); while( valid ) { const char *txt; gtk_tree_model_get( model, &iter, TEXT_COLUMN, &txt, -1 ); Tcl_ListObjAppendElement( NULL, obj, Tcl_NewStringObj( txt, -1 ) ); valid = gtk_tree_model_iter_next( model, &iter); } } } else if( idx == itemValueIdx ) { GtkTreeModel *model = gtk_combo_box_get_model( para->comboBox ); obj = Tcl_NewListObj( 0, NULL ); if( model ) { GtkTreeIter iter; gboolean valid = gtk_tree_model_get_iter_first( model, &iter ); while( valid ) { const char *val, *txt; Tcl_Obj *ll = Tcl_NewListObj( 0, NULL ); gtk_tree_model_get( model, &iter, VALUE_COLUMN, &val, TEXT_COLUMN, &txt, -1 ); Tcl_ListObjAppendElement( NULL, ll, Tcl_NewStringObj( txt, -1 ) ); Tcl_ListObjAppendElement( NULL, ll, Tcl_NewStringObj( val, -1 ) ); Tcl_ListObjAppendElement( NULL, obj, ll ); valid = gtk_tree_model_iter_next( model, &iter); } } } else if( idx == valueIdx ) { const char *val = getActiveValue( para->comboBox ); obj = Tcl_NewStringObj( val ? val : "", -1 ); } if( obj != NULL ) { Tcl_SetObjResult( interp, obj ); return TCL_OK; } return gnoclCgetNotImplemented( interp, options + idx ); }
/** \brief \author William J Giddings **/ static int cget ( Tcl_Interp *interp, GtkWidget *widget, GnoclOption options[], int idx ) { printf ( "cget\n" ); const char *dataIDa = "gnocl::data1"; const char *dataIDb = "gnocl::data2"; GtkWidget *arrow = gnoclFindChild ( GTK_WIDGET ( widget ), GTK_TYPE_BUTTON ); char *str; /* this will enable us to obtain widget data for the arrow object */ char *result = g_object_get_data ( G_OBJECT ( arrow ), dataIDa ); printf ( "cget result = %s\n", result ); result = g_object_get_data ( G_OBJECT ( arrow ), dataIDb ); printf ( "cget result = %s\n", result ); str = gnoclGetNameFromWidget ( arrow ); printf ( "configure %s\n", str ); /*-----*/ /* Tcl_Obj *obj = NULL; if ( idx == textIdx ) { obj = gnoclCgetButtonText ( interp, widget ); } else if ( idx == iconsIdx ) { GtkWidget *image = gnoclFindChild ( GTK_WIDGET ( widget ), GTK_TYPE_IMAGE ); if ( image == NULL ) obj = Tcl_NewStringObj ( "", 0 ); else { gchar *st; g_object_get ( G_OBJECT ( image ), "stock", &st, NULL ); if ( st ) { obj = Tcl_NewStringObj ( "%#", 2 ); Tcl_AppendObjToObj ( obj, gnoclGtkToStockName ( st ) ); g_free ( st ); } else { Tcl_SetResult ( interp, "Could not determine icon type.", TCL_STATIC ); return TCL_ERROR; } } } if ( obj != NULL ) { Tcl_SetObjResult ( interp, obj ); return TCL_OK; } */ return gnoclCgetNotImplemented ( interp, options + idx ); }
/** \brief Obtain current -option values. \author Peter G Baum, William J Giddings **/ static int cget ( Tcl_Interp *interp, GtkButton *button, GnoclOption options[], int idx ) { return gnoclCgetNotImplemented ( interp, options + idx ); }
/** \brief This function is only concerned with the reconfiguration of the button, not the dialog. \author William J Giddings \date **/ int fontButtonFunc ( ClientData data, Tcl_Interp *interp, int objc, Tcl_Obj * const objv[] ) { static const char *cmds[] = { "delete", "configure", "cget", "onClicked", "class", NULL }; enum cmdIdx { DeleteIdx, ConfigureIdx, CgetIdx, OnClickedIdx, ClassIdx }; GtkFontButton *button = GTK_FONT_BUTTON ( data ); int idx; if ( objc < 2 ) { Tcl_WrongNumArgs ( interp, 1, objv, "command" ); return TCL_ERROR; } 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 ( "fontButton", -1 ) ); break; case DeleteIdx: return gnoclDelete ( interp, GTK_WIDGET ( button ), objc, objv ); case ConfigureIdx: { int ret = TCL_ERROR; if ( gnoclParseAndSetOptions ( interp, objc - 1, objv + 1, fontButtonOptions, G_OBJECT ( button ) ) == TCL_OK ) { ret = configure ( interp, button, fontButtonOptions ); } gnoclClearOptions ( fontButtonOptions ); return ret; } break; case OnClickedIdx: { #ifdef DEBUG printf ( "fontButtonFunc - onClicked \n" ); #endif if ( objc != 2 ) { Tcl_WrongNumArgs ( interp, 2, objv, NULL ); return TCL_ERROR; } if ( GTK_WIDGET_IS_SENSITIVE ( GTK_WIDGET ( button ) ) ) { gtk_button_clicked ( GTK_BUTTON ( button ) ); } } break; case CgetIdx: { int idx; switch ( gnoclCget ( interp, objc, objv, G_OBJECT ( button ), fontButtonOptions, &idx ) ) { case GNOCL_CGET_ERROR: return TCL_ERROR; case GNOCL_CGET_HANDLED: return TCL_OK; case GNOCL_CGET_NOTHANDLED: return gnoclCgetNotImplemented ( interp, fontButtonOptions + idx ); } } } return TCL_OK; }