ut_gtk.h File Reference


Detailed Description

#include <gtk/gtk.h>

Go to the source code of this file.

Data Structures

struct  GUIobj_mList

Defines

#define GUI_set_active(obj, mode)   gtk_widget_set_sensitive (obj,mode)
 makes widgets / groups of widgets unselectable (unpickable, inactive):
#define GUI_get_CkBox(wCheckBox)   (((GtkCheckMenuItem*)(wCheckBox))->active)
#define GUI_set_CkBox(wCheckBox, mode)   gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(wCheckBox),mode)

Functions

void GUI_Init (char *)
int GUI_WinTit (GtkWidget *window, char *wtit)
void GUI_GetWinPos (int *, int *, GtkWidget *)
void GUI_GetWidgetPos (int *, int *, GtkWidget *)
void GUI_SetWinpos (int, int)
GtkWidget * GUI_Window (char *, void *, void *, int)
GtkWidget * GUI_Hbox (GtkWidget *, int border)
GtkWidget * GUI_Vbox (GtkWidget *, int border)
int GUI_VSpace (GtkWidget *parent)
GtkWidget * GUI_Toolbox (GtkWidget *)
GtkWidget * GUI_Frame (GtkWidget *, char *, int)
GtkWidget * GUI_Hsep (GtkWidget *, int)
GtkWidget * GUI_Label (GtkWidget *, char *, int)
GtkWidget * GUI_Butt (GtkWidget *, char *, void *, void *, int)
GtkWidget * GUI_CkButt (GtkWidget *, char *, int, void *, void *, int)
int GUI_CkButt_get (GtkWidget *)
void GUI_CkButt_set (GtkWidget *ckb1, int mode)
GtkWidget * GUI_RadButt (GtkWidget *, char *, void *, void *, int)
GtkWidget * GUI_RadButtAdd (GtkWidget *, char *, void *, void *, int)
void GUI_RadButtSet (int)
GtkWidget * GUI_Entry (GtkWidget *, char *, char *, void *, int)
GtkWidget * GUI_EntryL (GtkWidget *, char *, char *, void *, int)
int GUI_Entry_set (GtkWidget *entry, char *text)
char * GUI_Entry_get (GtkWidget *entry)
GtkWidget * GUI_Pix (GtkWidget *, char *, int)
void GUI_ButtPix (GtkWidget *, char *, char *, void *, void *)
GtkWidget * GUI_MenuBar (GtkWidget *)
GtkWidget * GUI_Menu (GtkWidget *, char *, int)
GtkWidget * GUI_MenuEntry (GtkWidget *, char *, void *, void *)
GtkWidget * GUI_MenuCkBox (GtkWidget *, char *, void *, void *)
GtkWidget * GUI_MenuSub (GtkWidget *)
GtkWidget * GUI_MenuRadButt (GtkWidget *parent, char *ltxt)
GtkWidget * GUI_MenuRadButtAdd (GtkWidget *parent, char *ltxt)
void GUI_Tip (char *)
int GUI_Popup (char *optLst[], void *funcnam1, void *funcnam2)
GtkWidget * GUI_Combo (GtkWidget *, void *, int)
GtkWidget * GUI_OptMen (GtkWidget *, char *[], void *, int)
void GUI_OptMenActivate (GtkWidget *w1, int ind)
void GUI_OptMenChg (GtkWidget *parent, char *[], void *)
GtkWidget * GUI_Notebook__ (GtkWidget *parent, void *funcnam)
GtkWidget * GUI_Notebook_add (GtkWidget *wnb, char *title)
GtkWidget * GUI_Slider__ (GtkWidget *parent, int typ, void *funcnam, double valMin, double valMax, double valStart)
double GUI_Slider_get (GtkWidget *wsl1)
void GUI_Slider_set (GtkWidget *wsl1, double newVal)
GtkWidget * GUI_List (GtkWidget *, void *, void *)
void GUI_List_add (GtkWidget *, char *)
void GUI_List_remove (GtkWidget *, GtkList *)
void GUI_List_clear (GtkWidget *, int, int)
int GUI_List_select (GtkWidget *, int)
int GUI_List1 (char *, char *, void(*)())
int GUI_List2 (char *, char *, char *, void(*)())
int GUI_List3 (int, char *, char *, char *, char *, void(*)())
int GUI_List3_CBl (void *, void *)
int GUI_ListKill (GtkWidget *parent, void *data)
int GUI_save__ (char *, char *, char *, char *, void(*)())
void GUI_Dialog (GtkWidget *, char *)
void GUI_DialogY (char *, void *)
void GUI_DialogYN (char *, void *)
int GUI_GetText (char *text, char *label, int, void *)
int GUI_GetTextCB (GtkWidget *, void *)
GtkWidget * GUI_File_select (char *, void *)
GtkWidget * GUI_File_selext (char *, char *, void *, void *)
int GUI_File_selGet (char *filnam, void *data)
int GUI_ColSel (void *, void *)
void GUI_SetActW (GtkWidget *)
GtkWidget * GUI_GetActW ()
int GUI_WinUp (GtkWidget *)
int GUI_WinUpCB (GtkWidget *, GdkEventVisibility *, void *)
int GUI_CB_WinDel (GtkWidget *, GdkEvent *, void(*)())


Define Documentation

#define GUI_set_active ( obj,
mode   )     gtk_widget_set_sensitive (obj,mode)

makes widgets / groups of widgets unselectable (unpickable, inactive):

#define GUI_get_CkBox ( wCheckBox   )     (((GtkCheckMenuItem*)(wCheckBox))->active)

    returns state of GUI_MenuCkBox
    0=not checked; 1=checked

#define GUI_set_CkBox ( wCheckBox,
mode   )     gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(wCheckBox),mode)

    sets state of GUI_MenuCkBox
    0=not checked; 1=checked


Function Documentation

void GUI_Init ( char *   ) 

    Muss der erste Call sein.
    wtit = Resourcedatei fnam.rc
    
      GUI_Init ("");
      GUI_Init ("gtk1.rc");

int GUI_WinTit ( GtkWidget *  window,
char *  wtit 
)

void GUI_GetWinPos ( int *  ,
int *  ,
GtkWidget *   
)

ACHTUNG: geht nicht bei MS-Win!!!

void GUI_GetWidgetPos ( int *  ,
int *  ,
GtkWidget *   
)

     liefert leider nur die relative Position im Window od Toolbar.
    
        GUI_GetWinPos(&x1, &y1, wcGeo_tb);
        GUI_GetWidgetPos(&x2, &y2, wcGeo_tb); // rel. Posi des Toolbar
        x1 += x2;  y1 += y2;
        GUI_GetWidgetPos(&x2, &y2, parent);
        x1 += x2;  y1 += y2;
        GUI_SetWinpos (x1, y1);

void GUI_SetWinpos ( int  ,
int   
)

position only for auxiliary windows !!

GtkWidget* GUI_Window ( char *  ,
void *  ,
void *  ,
int   
)

    wtit:               WindowTitle.
    funcnam:    wird bei DestroyWindow (mit zugehörigem data) gerufen !
    border:             wieviel Platz innen (rundum) frei bleiben soll.
    
    winID = GUI_Window ("Line", NULL, NULL, 0);
    winID = GUI_Window ("Liste", UI_Typ_Ltyp, (void*)UI_FuncKill, 0);
    
    Die Size; normal unnutz.
      gtk_widget_set_usize (window, 550, 60);
    
    Position setzen:
      // auf fixe Pos.:
      gtk_widget_set_uposition (window, 100, 400);
      // oder auf aktuelle maouspos:
      gtk_window_set_position (window, GTK_WIN_POS_MOUSE);
    
    Windowtitle nachtraeglich nochmal korrigieren:
      gtk_window_set_title (GTK_WINDOW (winID), "neuer titel");
    
    Achtung: derzeit kann mit "destroy" und delete_event kein data mitgegeben
      werden, daher muss eigene Funktion gemacht werden.
    
    allow_grow und allow_shrink in gtk_window_set_policy.

GtkWidget* GUI_Hbox ( GtkWidget *  ,
int  border 
)

    border >= 0: wieviel Platz innen (rundum) frei bleiben soll.
    border = -1: expand widgets in box; box aber fixed size.
    
    Für jedes primäre Window ist eine primäre box notwendig.
    In Hboxen werden Widgets nebeneinander (Vboxen untereinander) geschlichtet.
    Wenn mehrere Widgets in einen frame sollen, Box notwendig.
    
    Den Level Vertikal mit Ziffern,  horiz. mit Buchstaben bezeichen.
    Also abwechselnd Ziffer - Buchstabe.
    
    border: wieviel Platz innen (rundum) frei bleiben soll.
    
      GtkWidget *boxneu;
    
      boxneu = GUI_Hbox (parentbox, 0);

GtkWidget* GUI_Vbox ( GtkWidget *  ,
int  border 
)

    border >= 0: wieviel Platz innen (rundum) frei bleiben soll.
    border = -1: expand widgets in box

int GUI_VSpace ( GtkWidget *  parent  ) 

GtkWidget* GUI_Toolbox ( GtkWidget *   ) 

    vi /usr/include/gtk/gtkhandlebox.h
    gtk_handle_box_set_handle_position
    gtk_handle_box_set_snap_edge

GtkWidget* GUI_Frame ( GtkWidget *  ,
char *  ,
int   
)

    Wenn mehrere Widgets in einen frame sollen, Box notwendig!
    
    border: wieviel Platz innen (rundum) frei bleiben soll.
    
      w1 = GUI_Hbox (box0, -1);
      w2 = GUI_Frame (w1, "FrameTitel", 0);
      w3 = GUI_Hbox (w2, 1);
      w_info = GUI_Label (w3, "text", 0);
    
    Optional:
      gtk_widget_set_usize (frm1, 100, 75);

GtkWidget* GUI_Hsep ( GtkWidget *  ,
int   
)

    Hor. Trennlinie.
    Border: Abstand ober- und unterhalb der Trennlinie.

GtkWidget* GUI_Label ( GtkWidget *  ,
char *  ,
int   
)

    border:  >0:  wieviel Platz innen (rundum) frei bleiben soll.
             <0:  absoluter Platzbedarf; - fixed size.
    
    more than 1 line: use \n
    
    modify label: GUI_Label_mod (w_nam, "modified Text");
    
    Lable nach links ausrichten: ( , xalign, yalign)
      gtk_misc_set_alignment (GTK_MISC (label), 0.2, 0.5);
    
    ??
    gtk_misc_set_padding (GTK_MISC (label), 10, 10);
    
    gtk_widget_set_usize(button, 250, 40);
    
    // geht ned ?
      // GTK_JUSTIFY_RIGHT od GTK_JUSTIFY_CENTER
    
    
    ??
    gtk_box_pack_start_defaults(GTK_BOX(vbox), lbl);

GtkWidget* GUI_Butt ( GtkWidget *  ,
char *  ,
void *  ,
void *  ,
int   
)

    Button.
    ltext    Beschriftung Button
    funcnam  wird beim drücken mit data gerufen = callbackfunktion.
    border   > 0:  freier Raum rund um Button.
             < 0:  absolut size of Button
    
    GUI_Butt (box0, "TestButton", UI_func1, NULL, 10);
    
    int UI_func1 (GtkWidget *parent, void *data) {
      ..
    }
    
      Dzt braucht man (Linux u MS) keine Parameter anzugeben! 
      Es geht also auch "int UI_func1 () { ..};"
    
    
    Disactivate:
    gtk_widget_set_sensitive (ckb1, (gint)1); //1=activ, 0=inaktiv.
    
    change text:
      gtk_button_set_label (wButt1, " newText ");

GtkWidget* GUI_CkButt ( GtkWidget *  ,
char *  ,
int  ,
void *  ,
void *  ,
int   
)

    Checkbox.
    state: Vorbelegeung - int, 0=not checked; TRUE od FALSE.
    
    ---------------------------
    Example without callback:
    
      int istate;
      GtkWidget  *cb1;
      // create checkbox
      cb1 = GUI_CkButt (box0, "ckb 1", TRUE, NULL, NULL, 0);
      // query state
      istate = GUI_CkButt_get (cb1)        // 0=not sel, 1=selected.
    
    
    ---------------------------
    Example with callback:
    
      w1=GUI_CkButt (box0, "ckb 1", 0, f_ckbutt, NULL, 0);
    
    int f_ckbutt (GtkWidget *parent, void *data) {
    
      if(GUI_CkButt_get(parent)) goto L_activate;
      printf("f_ckbutt disactivate\n");
      ..
      L_activate:
      ..
    }
    
    ---------------------------
    Optional:
    
    activate with:
      GUI_CkButt_set (ckb1, TRUE);
      // gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (ckb1), TRUE);
      // gtk_toggle_button_toggled (ckb1);

int GUI_CkButt_get ( GtkWidget *   ) 

returns state of checkbox; 0=not sel, 1=selected.

void GUI_CkButt_set ( GtkWidget *  ckb1,
int  mode 
)

    activate/disactivate Checkbox, Radiobutton.
    Input:
      mode    1 = TRUE  = ON
              0 = FALSE = OFF

GtkWidget* GUI_RadButt ( GtkWidget *  ,
char *  ,
void *  ,
void *  ,
int   
)

    Radiobuttons:
    get state:
      printf("ckb1 = %d\n", GUI_CkButt_get (widget);  // 1=ON;0=OFF
    
    activate:
      GUI_CkButt_set (wb, TRUE|FALSE);
        //gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON  (bA), TRUE);
      // skip disactivation ..
      if(GTK_TOGGLE_BUTTON (parent)->active == 0) return 0;  // 1=ON;0=OFF
      oder
      if(GTK_TOGGLE_BUTTON (ckb1)->active == 0) return 0;  // 1=ON;0=OFF

GtkWidget* GUI_RadButtAdd ( GtkWidget *  ,
char *  ,
void *  ,
void *  ,
int   
)

    Radiobuttons.
      GUI_RadButt    (box0, "button1",f_radbutt,(void*)0,0);
      GUI_RadButtAdd (box0, "button2",f_radbutt,(void*)1,0);
      GUI_RadButtAdd (box0, "button3",f_radbutt,(void*)2,0);
    
      int f_radbutt (GtkWidget *parent, void *data) {
        if ((GTK_TOGGLE_BUTTON (parent)->active) == 0) {
          printf("skip pt disactivation\n");
          goto Fertig;
        }
        ..........
      }
    
    activate:    (deaktiviert den momentan aktiven Button):
      GUI_CkButt_set (w2, TRUE);
    or
      GUI_RadButtSet
    get state:
      printf("ckb1 = %d\n", GUI_CkButt_get (widget);  // 1=ON;0=OFF
    
    Ruft funcnam eigentlich 2-mal; einmal deactive voher aktiven Button, dann
        activate new Buttton.

void GUI_RadButtSet ( int   ) 

GtkWidget* GUI_Entry ( GtkWidget *  ,
char *  ,
char *  ,
void *  ,
int   
)

 ltxt:    Labeltext; NULL or "" for none
 etxt:    Text im Entryfield; NULL oder "" for none
 funcnam: callback-function for all Keypress & FocusIn-Events (none: NULL)
 border   < 0:   entSiz direkt (in Pixels;
          0:     via len von etxt
 
 
 entry = GUI_Entry (parent, "0.0", "sum", NULL, 0);
 
 Preset:
   GUI_Entry_set (GtkWidget* entry, char* text);
   //gtk_entry_set_text ((GtkEntry*) (w_nam), "newText");
 
 Read:
   char* text = GUI_Entry_get (GtkWidget* entry);
   //char* gtxt = gtk_entry_get_text ((GtkEntry*) (w_nam));  // DO NOT free!
 
 Readonly:
   gtk_entry_set_editable (entry, FALSE);

 Callbackroutine:
 
 //=====================================================================
   int Ent1_CB (GtkWidget *parent, GdkEventAny *event) {
 //=====================================================================
 
 #include <gdk/gdkkeysyms.h>         // f. GDK_Return
 
   char     *txt;
 
   // if(event->type == GDK_FOCUS_CHANGE) return;
   if(event->type != GDK_KEY_PRESS) return;
 
   switch (((GdkEventKey*)event)->keyval) {
 
     case GDK_Return:
     case GDK_Tab:
       txt = gtk_entry_get_text ((GtkEntry*) (parent));
       // g_free (txt);  // damit Absturz !!
       break;
   }
 
   return FALSE;  // do defaultOperations (set focus to this field)
   // return TRUE;  // do no defaultOperations
 
 }
 
 vi /usr/include/gtk/gtkentry.h

GtkWidget* GUI_EntryL ( GtkWidget *  ,
char *  ,
char *  ,
void *  ,
int   
)

    InputField - Labeltext  (Labeltext right of InputField))
    see also GUI_Entry (Labeltext left of InputField))

int GUI_Entry_set ( GtkWidget *  entry,
char *  text 
)

set text in entryField

char* GUI_Entry_get ( GtkWidget *  entry  ) 

get text from entryField - gives back a Pointer !

GtkWidget* GUI_Pix ( GtkWidget *  ,
char *  ,
int   
)

    Pixmap als Hintergrundbild
    .xpm oder (zumindest Linux) .jpg.

void GUI_ButtPix ( GtkWidget *  ,
char *  ,
char *  ,
void *  ,
void *   
)

Button mit Pixmap und Text erzeugen.

GtkWidget* GUI_MenuBar ( GtkWidget *   ) 

    Zuerst eine vbox, dann den MenuBar.
    
    GtkWidget *menu_bar, *menu;
    
    box0 = GUI_Vbox (window, 0);
    menu_bar = GUI_MenuBar (box0);
    
    menu = GUI_Menu (menu_bar, "File  ");
      GUI_MenuEntry (menu, "New", MF_Menu, (void*)"new");

GtkWidget* GUI_Menu ( GtkWidget *  ,
char *  ,
int   
)

    Generiert ein neues Menu oder Submenu.
    mode: 0  = normal
          'r'= right-justified
          's'= Submenu.
    
    GtkWidget *menu_bar, *menu, *men_imp;
    GtkWidget *fil_men;
    
    menu_bar = GUI_MenuBar (box0);                      // create Menubar
    
    men_fil = GUI_Menu (menu_bar, "File ", 0);          // first Menu on Menubar
    
    men_hlp = GUI_Menu (menu_bar, "Help ", 'r');        // Menu rechts
    fil_men = GUI_GetActW();   // get RootWindow of menu for disactivate
                               // muss sofort nach GUI_Menu sein !
    
    GUI_MenuEntry   (men_fil,"New",UI_CB,(void*)"new"); // add entry to Menu
    men_imp=GUI_Menu(men_fil,"Import", 's');            // Menuentry mit Submenu
    
    // disactivate menu:
    gtk_widget_set_sensitive (fil_men, FALSE);

GtkWidget* GUI_MenuEntry ( GtkWidget *  ,
char *  ,
void *  ,
void *   
)

    Menupunkt oder MenuSeparator (wenn ltxt == "---")
    
    Offen:
    gtk_menu_item_set_submenu S.87,103
    
      GUI_MenuEntry (menu, "Save as", UI_CB,   (void*)"saveAs");
      GUI_MenuEntry (menu, "---",     NULL,    NULL);   // Separator

GtkWidget* GUI_MenuCkBox ( GtkWidget *  ,
char *  ,
void *  ,
void *   
)

    abfragen mit GUI_get_CkBox
     i1 = ((GtkCheckMenuItem*)parent)->active;   // 0=ON; else=Off.
    setzen mit: GUI_set_CkBox
      gtk_check_menu_item_set_active (parent, FALSE);
      gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(parent), TRUE);

GtkWidget* GUI_MenuSub ( GtkWidget *   ) 

GtkWidget* GUI_MenuRadButt ( GtkWidget *  parent,
char *  ltxt 
)

GtkWidget* GUI_MenuRadButtAdd ( GtkWidget *  parent,
char *  ltxt 
)

void GUI_Tip ( char *   ) 

    Tooltips fuer das zuletzt erzeugte Objekt UI_act_wi.
    Zeilentrennung besser automatisch; mit \n gibts eine Leerzeile 
    \r tut nix \r\n auch nicht.
    Zum spaeteren Aendern use GUI_SetActW

int GUI_Popup ( char *  optLst[],
void *  funcnam1,
void *  funcnam2 
)

    callback funcnam2 if preselect (Cursor over Listentry).  Can be NULL.
    callback funcnam1 if select (mousebutton)
    ACHTUNG: funcnam1 unused; 
   
    char  *optLst[]={"func 1","func 2","\0"};
    GUI_Popup (optLst, NULL, CB_popup);
    ..
    int CB_popup (GtkWidget *widget, GdkEventAny *event, gpointer data) {
      static long isel=-1;
      if(event->type == GDK_ENTER_NOTIFY) {isel = (int)data; return 0;}
      if(event->type != GDK_BUTTON_RELEASE) return 0;
      printf("CB_popup %d\n",isel);
      ..
    }

GtkWidget* GUI_Combo ( GtkWidget *  ,
void *  ,
int   
)

    ONLY FOR DEMONSTRATION PURPOSES !!!
    
      // Auslesen der aktiven Zeile:
      char *txt;
      txt = gtk_entry_get_text ((GtkEntry*) (GTK_COMBO (cm1)->entry));
    
      // Listindex scheinbar nicht in der COMBO-struct.
      // gehen NICHT:
      // printf("    ind= %d\n",GTK_COMBO (cm1)->list_change_id);
      //ind = gtk_list_child_position(GTK_LIST(GTK_COMBO(cm1)->list),
      //      GTK_WIDGET(GTK_LIST(GTK_COMBO(cm1)->list)->last_focus_child));
      // printf("    ind= %d\n",ind);
      // printf("    ind= %d\n",GTK_LIST(GTK_COMBO(cm1)->list)->vtimer);
    
    
    vi /usr/include/gtk/gtkcombo.h
    vi /usr/include/glib-1.2/glib.h   //g_list...

GtkWidget* GUI_OptMen ( GtkWidget *  ,
char *  [],
void *  ,
int   
)

    OptionMenu ist eine Liste wie ComboBox, aber ohne Eingabemoeglichkeit.
    funcnam wird mit dem Index der gewaehlten Zeile gerufen
    Abfrage der aktiven Zeile nicht moeglich; nur via Callback funcnam.
   
    parent     parentBox
    optLst     a null-terminated list of words; NULL for empty List.
    funcnam    callback-function
    border     if negativ: width of list in pixels
               pos:  fixed pos; 16 bit dx, 16 bit dy.  (dx + (dy << 16);)
    
    AuxFunctions:
      GUI_OptMenChg      Load/Modify list later ..
      GUI_OptMenActivate     preselect a listEntry
    
    Examples:
      char *optLst[]={"Jaenner","Februar","Maerz",NULL};
    
      GUI_OptMen  (box0, optLst, OptMen_CB, 0);
    
    //=====================================================================
      int OptMen_CB (GtkWidget *parent, void *data) {
    //=====================================================================
    
      printf("OptMen_CB sel. Line = |%d|\n",(int)data);
      return 0;
    
    }
    ----------------------------------------------------------------------
    vi /usr/include/gtk/gtkoptionmenu.h
    gtk_option_menu_new S.469

void GUI_OptMenActivate ( GtkWidget *  w1,
int  ind 
)

void GUI_OptMenChg ( GtkWidget *  parent,
char *  [],
void *   
)

    Change the menu of existing OptionMenu.
    
    gtk_option_menu_remove_menu ??
    
    Windows: vor dem beladen aktivieren, sonst immer inaktiv !!
    
      char *optLst[]={"A1","A2",""};
    
    vi /usr/include/gtk/gtkoptionmenu.h
    vi /usr/include/gtk/gtkmenu.h
    vi /usr/include/gtk/gtkmenuitem.h
    vi /usr/include/gtk/gtkitem.h

GtkWidget* GUI_Notebook__ ( GtkWidget *  parent,
void *  funcnam 
)

    Create a new Notebook.
    Add Pages with GUI_Notebook_add.
    Example see tst_gtk6.c.
    parent should be a window;
    funcnam is called when noteBook-pages change; first Page has Nr 0.
      int my_Notebook_CB (int pgNr) {printf("_CB %d\n",pgNr); return;}

GtkWidget* GUI_Notebook_add ( GtkWidget *  wnb,
char *  title 
)

returns a VBOX in the new Notebook-Page.

GtkWidget* GUI_Slider__ ( GtkWidget *  parent,
int  typ,
void *  funcnam,
double  valMin,
double  valMax,
double  valStart 
)

    Input:
      typ       0=horizontal, 1=vertical.
      funcnam   callBack-function for moving the slider; NULL = no callback.
    RetCod:
   
    Example without callback:
    wsl1 = GUI_Slider__ (box1, 0, NULL, 0., 1., 0.5);
    // query slider-value
    printf(" sliVal=%f\n",GUI_Slider_get(wsl1));
    // change slider-value
    GUI_Slider_set (wsl1, 0.75);
   
    Example with callback:
    wsl1 = GUI_Slider__ (box1, 0, sl_CB, 0., 1., 0.5);
    int sl_CB (GtkAdjustment *adj1, void *data) {
      printf("sl_CB %f\n",gtk_adjustment_get_value(adj1));
    }

double GUI_Slider_get ( GtkWidget *  wsl1  ) 

query slider-value

void GUI_Slider_set ( GtkWidget *  wsl1,
double  newVal 
)

change slider-value

GtkWidget* GUI_List ( GtkWidget *  ,
void *  ,
void *   
)

      GUI_Butt(box0,"List", UI_List3, (void*)UI_FuncInit, 10);
    
    int UI_List3 (GtkWidget *parent, void *data) {
    
      static GtkWidget *winID, *box1;
      static GtkList   *list;
      long             i1, selInd;
    
      static char *list_items[] = {"hello     ", "world     ", "\0"};
    
      i1 = (int)data;
    
      switch (i1) {
    
        case UI_FuncInit:
    
          if (winID) { return 0; }
    
          // Create Mainwindow
          winID = GUI_Window ("Undo", UI_undo, (void*)UI_FuncKill, 0);
    
          // damit Zeilenlänge setzen !
          gtk_widget_set_usize (winID, 200, 100);
    
          box1 = GUI_Vbox (winID, 0);
    
          // create Liste
          list = GUI_List (box1, UI_undo, (void*)0);
    
          // Liste befüllen
          for (i1 = 0; i1<10; i1++) {
            if (!strcmp(list_items[i1],"\0")) break;
            GUI_List_add (list, list_items[i1]);
          }
    
          GUI_Butt (box1, "done",  UI_undo, (void*)UI_FuncKill, 0);
          gtk_widget_show (winID);
          break;
    
        case 0:
          selInd = GUI_List_select (list);
          printf("list1_sel %d\n",selInd);
          break;
    
        case UI_FuncKill:
          if (winID) {
            gtk_widget_destroy (winID);
            winID = NULL;
            goto Fertig;
          }
      }
    }
    
    Problem:  beim Callback (von funcnam) wird data nicht mitgeliefert !
    Nachteil: man kann den Text nicht auslesen !
    ------------------------------------
    add. Features:
    gtk_list_set_selection_mode(GTK_LIST(wLst),GTK_SELECTION_MULTIPLE);

void GUI_List_add ( GtkWidget *  ,
char *   
)

/usr/include/gtk/gtkscrolledwindow.h

void GUI_List_remove ( GtkWidget *  ,
GtkList *   
)

void GUI_List_clear ( GtkWidget *  ,
int  ,
int   
)

alle loeschen: GUI_List_clear (w_list, 0, 9999);

int GUI_List_select ( GtkWidget *  ,
int   
)

    mode = 0: normal, Line bleibt nach Selektion selektiert
    mode = 1: line wird sofort unselektiert
    mode = 2: init selection (i1=99999)
    
    Retcodes: -1 = deselect Line
              >0 = line selected

int GUI_List1 ( char *  ,
char *  ,
void(*)()   
)

int GUI_List2 ( char *  ,
char *  ,
char *  ,
void(*)()   
)

int GUI_List3 ( int  ,
char *  ,
char *  ,
char *  ,
char *  ,
void(*)()   
)

int GUI_List3_CBl ( void *  ,
void *   
)

int GUI_ListKill ( GtkWidget *  parent,
void *  data 
)

int GUI_save__ ( char *  ,
char *  ,
char *  ,
char *  ,
void(*)()   
)

void GUI_Dialog ( GtkWidget *  ,
char *   
)

    Ein einfaches Textausgabefenster mit einem OK-Button zum Beenden.
    DOES NOT WAIT
    
    Beispiel:
      GUI_Dialog (NULL, " - Directory does not exist");
      GUI_Butt (box2,"DialogWindow",GUI_Dialog,"Hugo, mach was",0);

void GUI_DialogY ( char *  ,
void *   
)

    Textausgabefenster mit OK-Button zum Beenden und Callback.
    
    
    Beispiel:
      GUI_DialogY (" - Directory does not exist", func1);
      int func1 (GtkWidget *parent, void *data) { printf("closed ..\n"); }

void GUI_DialogYN ( char *  ,
void *   
)

    Ein Textausgabefenster mit einem OK-Button und einem Cancel-Butten.
    The callbackfunction is called with int-value UI_FuncOK or UI_FuncCancel.
    
    Mehrzeilig mit \n im Text.
    
    Beispiel:
      GUI_DialogYN ("OK to save file xy", f_CB_save);
    
    
    //=====================================================================
      int f_CB_save (GtkWidget *parent, void *data) {
    //=====================================================================
    
      int idat;
    
      printf("f_CB_save %d\n",(int)data);
    
      idat = (int)data;
    
      switch(idat) {
    
        case UI_FuncOK:
          // save ...
          break;
    
        case UI_FuncCancel:
          // skip saving ...
          break;
      }
    
      return 0;
    
    }

int GUI_GetText ( char *  text,
char *  label,
int  ,
void *   
)

    Query text from user.
    parameters: see GUI_GetText1

int GUI_GetTextCB ( GtkWidget *  ,
void *   
)

GtkWidget* GUI_File_select ( char *  ,
void *   
)

    Komplett eigenes Fenster zum Selektieren eines Files.
    Wird nach Fileselekt gelöscht.
    Der gelieferte Filename ist inclusive Dir.
    
    ltxt:  damit kann das Dir. eingestellt werden (soll mit "/" enden).
    
      GUI_File_select ("", UI_open);
    
    
    //=============================================
      int UI_open (GtkWidget *parent, void *data) {
    //===========
    
      char      *t1, buf[80];
    
      printf("UI_open %d\n", (int)data);
    
      // den filename (incl. Pfad) nach WC_modnam holen.
      GUI_File_selGet (WC_modnam , parent);
    
      return 0;
    
    }

GtkWidget* GUI_File_selext ( char *  ,
char *  ,
void *  ,
void *   
)

    Komplett eigenes Fenster zum Selektieren eines Files.
    Wird nach Fileselekt geloescht.
    Der gelieferte Filename ist inclusive Dir.
    
    ltxt:  damit kann das Dir. voreingestellt werden (soll mit "/" enden).
    
    
      GUI_File_selext ("WinTit","*.dat", UI_openCB,(void*)"open");
    
    
    //===============================================
      int UI_openCB (GtkWidget *parent, void *data) {
    //=============
    
      char      *cp1;
    
      cp1 = (char*)data;
    
      // selekt. Dateinamen einlesen
      GUI_File_selGet (xa_auxbuf1 , parent);
    
      if(!strcmp(cp1, "open")) {
        ..

int GUI_File_selGet ( char *  filnam,
void *  data 
)

    Den (selektierten) Dateinnamen (samt Pfad!) einlesen)
    In in data: die WidgetID der FileSelBox.

int GUI_ColSel ( void *  ,
void *   
)

    mode muss eine Callback-Function sein; zB:
    GUI_Butt (box0, " colDialog ", GUI_ColSel, col_CB, -5);
     int col_CB (ColRGB *cSel) {
       printf("col_CB %d %d %d\n",cSel->cr,cSel->cg,cSel->cb);
       return 0;
     }

void GUI_SetActW ( GtkWidget *   ) 

    ein Widget als aktives Widget setzen;
    useful for changing GUI_Tip's
    retrieve w. GUI_GetActW

GtkWidget* GUI_GetActW (  ) 

int GUI_WinUp ( GtkWidget *   ) 

    window always on top ..
    - muss vor gtk_widget_show gerufen werden !!!!
    - this events MUST (additonally) be activated: 
    gtk_widget_set_events (window, 
                                    GDK_FOCUS_CHANGE_MASK|
                                    GDK_VISIBILITY_NOTIFY_MASK);
    
    for additional Window: hide & restore the window_always_on_top:
    GUI_WinDwn (win0);
    after the new window is gone:
    GUI_WinUp (win0);  // - again
    
    DOES NOT WORK FOR THE PARENT-WINDOW: USE WM_raise_wTit

int GUI_WinUpCB ( GtkWidget *  ,
GdkEventVisibility *  ,
void *   
)

    this win always up
    UI_FuncInit muss vor gtk_widget_show gerufen werden !!!!
    UI_FuncExit = hide window; damit kann anders (zB FileSelection)
                  druebergelegt werden; reset mit gtk_widget_show !!
    jedoch nur das zuletzt aktivierte Raisen (sonst loop!)
    
    GUI_WinUpCB (NULL,NULL,(void*)UI_FuncExit);  // NOT always on top

int GUI_CB_WinDel ( GtkWidget *  ,
GdkEvent *  ,
void(*)()   
)


Generated on Sat May 30 09:31:56 2009 for gCAD3D by  doxygen 1.5.6