===================================================== 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 |
void GUI_Notebook_CB | ( | GtkNotebook * | ntb, | |
GtkNotebookPage * | nbp, | |||
guint | pgNr, | |||
void * | data | |||
) |
callback of switch-notebook-page
void GUI_Init | ( | char * | wtit | ) |
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 | |||
) |
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 | |||
) |
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 | |||
) |
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 | |||
) |
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 | ) |
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 | ) |
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 | |||
) |
int GUI_del_widged | ( | GtkWidget * | wdg1 | ) |
GtkWidget* WinAct |
GtkWidget * ButtKett |
GtkWidget * ButtKettArr[25] |
int ButtKettAnz |
int UI_fontsizX |
int UI_fontsizY |
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] |