ut_gtk.c File Reference


Detailed Description

GTK-2 - widgets, utilities GUI_.

=====================================================
Liste_Funktionen_Beginn:

GUI_Init
GUI_Window
GUI_Hbox
GUI_Vbox
GUI_VSpace                make a vertical (free) space
GUI_Hsep                  horiz. Trennlinie Ruler
GUI_Frame                 Rahmen um ein Feld

GUI_Label                 BackgroundText (Label)
GUI_Label_mod             modify label

GUI_Butt
GUI_Butt_Att
GUI_Tip                   Tooltip (Zusatzinfo zu Widget)
GUI_CkButt                Checkbox
GUI_CkButt_get            returns state of checkbox; 0=not sel, 1=selected.
GUI_CkButt_set            activate/disactivate Checkbox, Radiobutton.
GUI_ButtPix

GUI_Entry                 Eingabefeld (+ Infotext)
GUI_EntryL                InputField; Labeltext right of InputField
GUI_Entry_set             set text in entryField
GUI_Entry_get             get text from entryField - gives back a Pointer

GUI_Menu
GUI_MenuSub
GUI_MenuCkBox
GUI_set_CkBox          sets state of GUI_MenuCkBox
GUI_get_CkBox          returns state of GUI_MenuCkBox
GUI_MenuEntry
GUI_MenuBar
GUI_MenuRadButt

GUI_RadButt
GUI_RadButtAdd
GUI_RadButtSet

GUI_OptMen
GUI_OptMenActivate
GUI_OptMenChg
GUI_Combo
GUI_Popup              disp. popup-Liste; callbacks f. mouseOver & select
GUI_Pix

GUI_Slider__           Slider = AdjustmentControl
GUI_Slider_get         query slider-value
GUI_Slider_set         change slider-value

GUI_List
GUI_List_add
GUI_List_clear
GUI_List_remove
GUI_List_select

GUI_Notebook__
GUI_Notebook_add       add a page to a notebook

GUI_ColSel             ColorselectionDilaog
GUI_GetText            Text vom User holen
GUI_GetText_CB         callback of GUI_GetText
GUI_GetxText           Query text from user extended
GUI_GetxText_get       get userInput from GUI_GetxText

GUI_MsgBox             display text, OK-Button, if GTK is not yet up
GUI_Dialog             Ausgabetext mit einem OK-Button zum Beenden
GUI_DialogY            Textausgabefenster mit OK-Button zum Beenden und Callback.
GUI_DialogYN           Ausgabetext, OK-Button, Cancel-Button, Callback.

GUI_File_selGet
GUI_File_select
GUI_File_selext

GUI_SetActW
GUI_GetActW
GUI_GetWidgetPos
GUI_GetWinPos
GUI_SetWinpos
GUI_Toolbox
GUI_CB_WinDel
GUI_WinUp              window always on top ..
GUI_WinDwn             remove alwaysOnTop-attribute
GUI_update__           update pending events ..
GUI_del_events         kill all pending events
GUI_Idle               register a idle-function
GUI_del_widged         delete widget

GUI_set_active         makes widgets / groups of widgets unselectable

Liste_Funktionen_Ende:
=====================================================

#include "../xa/MS_Def0.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gdk/gdkkeysyms.h>
#include "../ut/ut_txt.h"
#include "../gtk/ut_gtk.h"
#include "../gr/ut_UI.h"

Functions

void GUI_Notebook_CB (GtkNotebook *, GtkNotebookPage *, guint, void *)
void GUI_Init (char *wtit)
void GUI_GetWinPos (int *x, int *y, GtkWidget *w1)
void GUI_GetWidgetPos (int *x, int *y, GtkWidget *w1)
void GUI_SetWinpos (int xpos, int ypos)
int GUI_CB_WinDel (GtkWidget *parent, GdkEvent *event, void(*data)())
int GUI_WinTit (GtkWidget *window, char *wtit)
GtkWidget * GUI_Window (char *wtit, void *funcnam, void *data, int border)
GtkWidget * GUI_Toolbox (GtkWidget *parent)
GtkWidget * GUI_Hbox (GtkWidget *parent, int border)
GtkWidget * GUI_Frame (GtkWidget *parent, char *ltxt, int border)
GtkWidget * GUI_Vbox (GtkWidget *parent, int border)
int GUI_VSpace (GtkWidget *parent)
GtkWidget * GUI_Hsep (GtkWidget *parent, int border)
int GUI_Label_mod (GtkWidget *wlb, char *txt)
GtkWidget * GUI_Label (GtkWidget *parent, char *ltxt, int border)
int GUI_CkButt_get (GtkWidget *cb)
void GUI_CkButt_set (GtkWidget *ckb1, int mode)
GtkWidget * GUI_CkButt (GtkWidget *parent, char *ltxt, int state, void *funcnam, void *data, int border)
GtkWidget * GUI_MenuRadButt (GtkWidget *parent, char *ltxt)
GtkWidget * GUI_MenuRadButtAdd (GtkWidget *parent, char *ltxt)
GtkWidget * GUI_RadButt (GtkWidget *parent, char *ltxt, void *funcnam, void *data, int border)
GtkWidget * GUI_RadButtAdd (GtkWidget *parent, char *ltxt, void *funcnam, void *data, int border)
void GUI_RadButtSet (int ind)
void GUI_OptMenActivate (GtkWidget *w1, int ind)
void GUI_OptMenChg (GtkWidget *parent, char *optLst[], void *funcnam)
GtkWidget * GUI_OptMen (GtkWidget *parent, char *optLst[], void *funcnam, int border)
GtkWidget * GUI_Combo (GtkWidget *parent, void *funcnam, int border)
int GUI_Entry_set (GtkWidget *entry, char *text)
char * GUI_Entry_get (GtkWidget *entry)
GtkWidget * GUI_Entry (GtkWidget *parent, char *ltxt, char *etxt, void *funcnam, int border)
GtkWidget * GUI_EntryL (GtkWidget *parent, char *ltxt, char *etxt, void *funcnam, int border)
int GUI_DialogYN_CB (GtkWidget *parent, void *data)
void GUI_DialogYN (char *text, void *funcnam)
int GUI_DialogY_CB (GtkWidget *parent, void *data)
int GUI_MsgBox (char *text)
void GUI_DialogY (char *text, void *funcnam)
void GUI_Dialog (GtkWidget *widget, char *dialogtext)
int GUI_ColSel (void *parent, void *mode)
int GUI_GetxText_get (char *txout)
int GUI_GetxText_CB (GtkWidget *parent, void *data)
int GUI_GetxText (char *label, char *text, int wSiz, void *funcnam, void *data)
int GUI_GetText_CB (GtkWidget *parent, void *data)
int GUI_GetText (char *label, char *text, int wSiz, void *funcnam)
int GUI_GetText1 (char *title, char *label, char *text, int wSiz, void *funcnam)
GtkWidget * GUI_Pix (GtkWidget *parent, char *filnam, int border)
void GUI_Butt_Att (int mode)
GtkWidget * GUI_Butt (GtkWidget *parent, char *ltext, void *funcnam, void *data, int border)
void GUI_Tip (char *txt)
GtkWidget * GUI_GetActW ()
void GUI_SetActW (GtkWidget *newAct)
void GUI_ButtPix (GtkWidget *parent, char *labeltext, char *filnam, void *funcnam, void *data)
int GUI_File_selGet (char *filnam, void *buttID)
GtkWidget * GUI_File_select (char *ltxt, void *funcnam)
int GUI_Popup (char *optLst[], void *funcnam1, void *funcnam2)
double GUI_Slider_get (GtkWidget *wsl1)
void GUI_Slider_set (GtkWidget *wsl1, double newVal)
GtkWidget * GUI_Slider__ (GtkWidget *parent, int typ, void *funcnam, double valMin, double valMax, double valStart)
GtkWidget * GUI_File_selext (char *wtit, char *ltxt, void *funcnam, void *data)
void GUI_List_add (GtkWidget *list, char *item)
void GUI_List_clear (GtkWidget *list, int ianf, int iend)
void GUI_List_remove (GtkWidget *widget, GtkList *list)
int GUI_List_select (GtkWidget *list, int mode)
GtkWidget * GUI_List (GtkWidget *parent, void *funcnam, void *data)
int GUI_unmap_act ()
GtkWidget * GUI_Notebook__ (GtkWidget *parent, void *funcnam)
GtkWidget * GUI_Notebook_add (GtkWidget *wnb, char *title)
int UI_test11 (GtkWidget *parent, void *data)
GtkWidget * GUI_MenuCkBox (GtkWidget *parent, char *ltxt, void *funcnam, void *data)
GtkWidget * GUI_MenuEntry (GtkWidget *parent, char *ltxt, void *funcnam, void *data)
GtkWidget * GUI_MenuBar (GtkWidget *parent)
GtkWidget * GUI_Menu (GtkWidget *menu_bar, char *ltxt, int mode)
GtkWidget * GUI_MenuSub (GtkWidget *item)
int GUI_WinDwn (GtkWidget *parent)
int GUI_WinUp (GtkWidget *parent)
int GUI_WinUpCB (GtkWidget *parent, GdkEventVisibility *event, void *data)
int GUI_update__ ()
int GUI_del_events ()
int GUI_Idle (void *funcnam, void *data)
int GUI_del_widged (GtkWidget *wdg1)

Variables

GtkWidget * WinAct
GtkWidget * ButtKett
GtkWidget * ButtKettArr [25]
int ButtKettAnz
int UI_fontsizX
int UI_fontsizY
static int butt_expand = TRUE
static GtkWidget * UI_List3l
static GtkWidget * UI_List3w = NULL
static GtkWidget * UI_DialogYWin = NULL
static GtkWidget * UI_DialogYNWin = NULL
static void(* UI_DialogYNFunc )()
static GtkWidget * UI_GetTextWin = NULL
static GtkWidget * UI_GetTextEnt
static void(* UI_GetTextFunc )()
static GtkWidget * UI_act_wi
static GtkWidget * UI_act_FileSelBox
static GtkStyle * UI_style_act
static GtkTooltips * UI_tip = NULL
static int UI_WinposX = 0
static int UI_WinposY = 0


Function Documentation

void GUI_Notebook_CB ( GtkNotebook *  ntb,
GtkNotebookPage *  nbp,
guint  pgNr,
void *  data 
)

callback of switch-notebook-page

void GUI_Init ( char *  wtit  ) 

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

void GUI_GetWinPos ( int *  x,
int *  y,
GtkWidget *  w1 
)

ACHTUNG: geht nicht bei MS-Win!!!

void GUI_GetWidgetPos ( int *  x,
int *  y,
GtkWidget *  w1 
)

     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  xpos,
int  ypos 
)

position only for auxiliary windows !!

int GUI_CB_WinDel ( GtkWidget *  parent,
GdkEvent *  event,
void(*)()  data 
)

int GUI_WinTit ( GtkWidget *  window,
char *  wtit 
)

GtkWidget* GUI_Window ( char *  wtit,
void *  funcnam,
void *  data,
int  border 
)

    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_Toolbox ( GtkWidget *  parent  ) 

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

GtkWidget* GUI_Hbox ( GtkWidget *  parent,
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_Frame ( GtkWidget *  parent,
char *  ltxt,
int  border 
)

    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_Vbox ( GtkWidget *  parent,
int  border 
)

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

int GUI_VSpace ( GtkWidget *  parent  ) 

GtkWidget* GUI_Hsep ( GtkWidget *  parent,
int  border 
)

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

int GUI_Label_mod ( GtkWidget *  wlb,
char *  txt 
)

modify label

gtk_label_set_text((GtkLabel*)(lbl), GTK_JUSTIFY_FILL); gtk_label_set_text((GtkLabel*)(lbl), GTK_JUSTIFY_LEFT); gtk_label_set_text ((GtkLabel*) (label), FALSE); //

GtkWidget* GUI_Label ( GtkWidget *  parent,
char *  ltxt,
int  border 
)

    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);

int GUI_CkButt_get ( GtkWidget *  cb  ) 

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_CkButt ( GtkWidget *  parent,
char *  ltxt,
int  state,
void *  funcnam,
void *  data,
int  border 
)

    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);

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

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

GtkWidget* GUI_RadButt ( GtkWidget *  parent,
char *  ltxt,
void *  funcnam,
void *  data,
int  border 
)

    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 *  parent,
char *  ltxt,
void *  funcnam,
void *  data,
int  border 
)

    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  ind  ) 

void GUI_OptMenActivate ( GtkWidget *  w1,
int  ind 
)

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

    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_OptMen ( GtkWidget *  parent,
char *  optLst[],
void *  funcnam,
int  border 
)

    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

GtkWidget* GUI_Combo ( GtkWidget *  parent,
void *  funcnam,
int  border 
)

    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...

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_Entry ( GtkWidget *  parent,
char *  ltxt,
char *  etxt,
void *  funcnam,
int  border 
)

 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 *  parent,
char *  ltxt,
char *  etxt,
void *  funcnam,
int  border 
)

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

int GUI_DialogYN_CB ( GtkWidget *  parent,
void *  data 
)

void GUI_DialogYN ( char *  text,
void *  funcnam 
)

    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_DialogY_CB ( GtkWidget *  parent,
void *  data 
)

int GUI_MsgBox ( char *  text  ) 

    display messagewindow before having activated GTK (with gtk_main)
    eg Errormessages before starting mainapplication.

void GUI_DialogY ( char *  text,
void *  funcnam 
)

    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_Dialog ( GtkWidget *  widget,
char *  dialogtext 
)

    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);

int GUI_ColSel ( void *  parent,
void *  mode 
)

    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;
     }

int GUI_GetxText_get ( char *  txout  ) 

int GUI_GetxText_CB ( GtkWidget *  parent,
void *  data 
)

int GUI_GetxText ( char *  label,
char *  text,
int  wSiz,
void *  funcnam,
void *  data 
)

    Query text from user.
    label = text left of entryfield.
    text  = predefined text in entryfield.
    wsiz  = size of entryfield
    funcnam = callbackfunction if OK clicked; Cancel: NO callback !
   
    Example:
   
      // ask for input
      GUI_GetxText("keyIn","text", -200, my_CB, (void*)UI_FuncUCB1);
      ...
    }
   
    //=================================================================
      int my_CB (GtkWidget *parent, void *data) {
    //=================================================================
    // the callback if OK selected.
      char cbuf[256];
   
   
      if(data == NULL) return; // Cancel ?
   
      printf("my_CB |%s|\n",(int*)data);
   
      if ((int)(int*)data == UI_FuncUCB1) {
        // get keyIn & kill Window
        GUI_GetxText_get (cbuf);
      }
   
      return 0;
   
    }

int GUI_GetText_CB ( GtkWidget *  parent,
void *  data 
)

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

    Query text from user.
    parameters: see GUI_GetText1

int GUI_GetText1 ( char *  title,
char *  label,
char *  text,
int  wSiz,
void *  funcnam 
)

    Query text from user.
    title = windowtitle
    label = text left of entryfield.
    text  = predefined text in entryfield.
    wsiz  = size of entryfield
    funcnam = callbackfunction if OK clicked; Cancel: NO callback !
    
    Example:
    
      // ask for input
      GUI_GetText(" Name of Program: ","Nowprog", -200, f_GetText_CB);
      ...
    }
    
    //=================================================================
      int f_GetText_CB (GtkWidget *parent, void *data) {
    //=================================================================
    // the callback if OK selected.
    
      if(data == NULL) return; // Cancel ?
    
      printf("f_GetText_CB |%s|\n",(char*)data);
    
      // kill Window; muss explizit geschehen !
      GUI_GetText_CB (NULL, (void*)UI_FuncKill);
    
      return 0;
        
    }   

GtkWidget* GUI_Pix ( GtkWidget *  parent,
char *  filnam,
int  border 
)

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

void GUI_Butt_Att ( int  mode  ) 

TRUE: mehrere Buttons sollen die gesamte Breite ihrer Box benutzen.

GtkWidget* GUI_Butt ( GtkWidget *  parent,
char *  ltext,
void *  funcnam,
void *  data,
int  border 
)

    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 ");

void GUI_Tip ( char *  txt  ) 

    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

GtkWidget* GUI_GetActW (  ) 

void GUI_SetActW ( GtkWidget *  newAct  ) 

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

void GUI_ButtPix ( GtkWidget *  parent,
char *  labeltext,
char *  filnam,
void *  funcnam,
void *  data 
)

Button mit Pixmap und Text erzeugen.

int GUI_File_selGet ( char *  filnam,
void *  buttID 
)

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

GtkWidget* GUI_File_select ( char *  ltxt,
void *  funcnam 
)

    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;
    
    }

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);
      ..
    }

double GUI_Slider_get ( GtkWidget *  wsl1  ) 

query slider-value

void GUI_Slider_set ( GtkWidget *  wsl1,
double  newVal 
)

change slider-value

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));
    }

GtkWidget* GUI_File_selext ( char *  wtit,
char *  ltxt,
void *  funcnam,
void *  data 
)

    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")) {
        ..

void GUI_List_add ( GtkWidget *  list,
char *  item 
)

/usr/include/gtk/gtkscrolledwindow.h

void GUI_List_clear ( GtkWidget *  list,
int  ianf,
int  iend 
)

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

void GUI_List_remove ( GtkWidget *  widget,
GtkList *  list 
)

int GUI_List_select ( GtkWidget *  list,
int  mode 
)

    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

GtkWidget* GUI_List ( GtkWidget *  parent,
void *  funcnam,
void *  data 
)

      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);

int GUI_unmap_act (  ) 

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.

int UI_test11 ( GtkWidget *  parent,
void *  data 
)

GtkWidget* GUI_MenuCkBox ( GtkWidget *  parent,
char *  ltxt,
void *  funcnam,
void *  data 
)

    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_MenuEntry ( GtkWidget *  parent,
char *  ltxt,
void *  funcnam,
void *  data 
)

    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_MenuBar ( GtkWidget *  parent  ) 

    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 *  menu_bar,
char *  ltxt,
int  mode 
)

    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_MenuSub ( GtkWidget *  item  ) 

int GUI_WinDwn ( GtkWidget *  parent  ) 

    GUI_WinDwn             remove alwaysOnTop-attribute
    use it if you open an additional window ..

int GUI_WinUp ( GtkWidget *  parent  ) 

    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 *  parent,
GdkEventVisibility *  event,
void *  data 
)

    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_update__ (  ) 

update all windows

int GUI_del_events (  ) 

    GUI_del_events         kill all pending events
    
    Usage:
     gtk_main_quit ();   // stop collecting events ...
     .. langwierige work ..
     GUI_del_events ();  // kill pending events ...
     gtk_main ();        // resume collecting events ...

int GUI_Idle ( void *  funcnam,
void *  data 
)

    GUI_Idle               register a idle-function
    Example:
     GUI_Idle (AP_Idle_CB, NULL);
     int AP_Idle_CB (void *data) {
       .. work ..
       return 0; // removes idle-Call!
       return 1; // keep idle-Call; call AP_Idle_CB again.
     }

int GUI_del_widged ( GtkWidget *  wdg1  ) 


Variable Documentation

GtkWidget* WinAct

GtkWidget * ButtKett

GtkWidget * ButtKettArr[25]

int butt_expand = TRUE [static]

GtkWidget* UI_List3l [static]

GtkWidget * UI_List3w = NULL [static]

GtkWidget* UI_DialogYWin = NULL [static]

GtkWidget* UI_DialogYNWin = NULL [static]

void(* UI_DialogYNFunc)() [static]

GtkWidget* UI_GetTextWin = NULL [static]

GtkWidget * UI_GetTextEnt [static]

void(* UI_GetTextFunc)() [static]

GtkWidget* UI_act_wi [static]

GtkWidget* UI_act_FileSelBox [static]

GtkStyle* UI_style_act [static]

GtkTooltips* UI_tip = NULL [static]

int UI_WinposX = 0 [static]

int UI_WinposY = 0 [static]


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