gCAD3D 2.40
gui_gtk2/gtk_lists.c File Reference

lists with 1 or 2 columns More...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "../ut/ut_cast.h"
#include "../ut/ut_umem.h"
#include "../ut/ut_os.h"
#include "../gui/gui_types.h"
#include "../gui/gui_base.h"
#include "../gui_gtk2/gtk_base.h"
#include "../gui_gtk2/gtk_lists.h"

Data Structures

struct  CSV_struct
 

Functions

int GUI_list2_modCol (MemObj *mo, int iCol, char *txt)
 
int GUI_list1_dlg_w (char *sels, int sSiz, void *parWin, char *winTit, char *fNam, char *mode, char *titLst[], char *opts)
 
int GUI_list1_dlg_exit (void *parent, void *data)
 
void GUI_list1_dlg_del ()
 
int GUI_list1_dlg__ (MemObj *o_par, char *winTit, char *fNam, char *mode, char *titLst[], void *funcnam, char *opts)
 
MemObj GUI_list1__ (MemObj *o_par, char *fNam, char *mode, char *titLst[], void *funcnam, char *opts)
 
MemObj GUI_list2__ (MemObj *o_par, char *fNam, char *mode, char *titLst[], void *funcnam, char *opts)
 
int GUI_list1_add_f (MemObj *mo, char *fNam, char *mode)
 
int GUI_list2_add_f (MemObj *mo, char *fNam, char *mode)
 
int GUI_list1_add_l (MemObj *mo, char *c1, char *c2, char *c3)
 
int GUI_list1_clear (MemObj *mo)
 
int GUI_list1_f (void *list_store, char *fnam, char *mode)
 
int GUI_list2_f (void *list_store, char *fnam, char *mode)
 
int GUI_list1_cbKey (void *parent, void *event, MemObj mo)
 
int GUI_list1_cbMouse (void *parent, void *ev, MemObj mo)
 
int GUI_list1_cbSel (void *selection, MemObj mo)
 
int GUI_list1_dlg_cbw (Obj_gui2 *go, void **data)
 
int GUI_list1_h2_cb1 (void *selection, void *data)
 
int GUI_list1_h2_cb3 (void *parent, void *data)
 
int GUI_list1_h2__ (char *titP, char *titC, char *lButP, char *txtP, char *fnamP, void *funcP, void *funcC, char *opts)
 

Variables

static GtkWidget * UI_list1_win =NULL
 
static void * UI_List_p1
 
static void * UI_List_p2
 
static void * UI_List_p3
 
static void * UI_List_p4
 
static void * UI_List_p5
 
static GtkListStore * UI_ListStore
 
static int GUI_list1_msbt
 
static int GUI_list1_evt
 
static int GUI_list1_stat
 
static char GUI_list1_s1 [256]
 
static char GUI_list1_s2 [256]
 
static char GUI_list1_s3 [256]
 
static char GUI_list1_s4 [256]
 
int UI_fontsizX
 
int UI_fontsizY
 
GtkWidget * UI_act_wi
 
GtkWidget * UI_MainWin
 

Detailed Description

lists with 1 or 2 columns

=====================================================
List_functions_start:
GUI_list1__ List from file, callback. 1 or 2 columns.
GUI_list1_clear also for GUI_list2__
GUI_list1_add_f add lines from file to list
GUI_list1_add_l add line to list (1,2 or 3 columns). Also for GUI_list2.
GUI_list2__ list from file; 2 or 3 columns(val.s with blanks); callback.
GUI_list2_add_f add lines from file to list
GUI_list2_modCol modify column # <iCol> of active (selected) Line
GUI_list1_dlg__ List from file in new window, callback.
GUI_list1_dlg_del delete list-window GUI_list1_dlg
GUI_list1_dlg_w list from file in a new window, waiting.
GUI_list1_h2__ make hierarchical SelectList.
GUI_list1_f INTERNAL populate list
GUI_list2_f INTERNAL populate list
GUI_list1_cbSel INTERNAL callback list selection
GUI_list1_dlg_cbw INTERNAL callback from GUI_list1_dlg_w
GUI_list1_dlg_exit INTERNAL list-window exiting
List_functions_end:
=====================================================

Function Documentation

int GUI_list2_modCol ( MemObj mo,
int  iCol,
char *  txt 
)
* modify column # <iCol> of active (selected) Line
* Input:
* iCol ColNr; 0=first !
* txt ColText
*
int GUI_list1_dlg_w ( char *  sels,
int  sSiz,
void *  parWin,
char *  winTit,
char *  fNam,
char *  mode,
char *  titLst[],
char *  opts 
)
* GUI_list1_dlg_w list from file in a new window, waiting.
*
* Inputs:
* sSiz size of sels in characters
* parWin, parent-window; NULL for primary window
* winTit window-title
* fNam filename of list to display; mode=nr of words per line
* mode "1" selection returns 1 word;
* "2" selection returns 2 words;
* titLst 1 or 2 headertitles; NULL = none
* opts options; (HorSiz,VertSiz)
* HorSiz,VertSiz: size in characters; default is automatic size.
* 'e' = expand widget; default is fixed size.
* Examples: "" or "10" or "10e,e"
* "10e,e" horiz. size 10 chars, hor. and vert. expandable.
* Output:
* sels selected string, 1 or 2 words, separated by \n
* RetCod: 0 OK, data valid
* -1 cancelled by user
*
* TODO:
* add option filter to GUI_List
*
int GUI_list1_dlg_exit ( void *  parent,
void *  data 
)
* INTERNAL
* list-window exiting; report to user ..
*
void GUI_list1_dlg_del ( )

GUI_list1_dlg_del delete list-window GUI_list1_dlg

int GUI_list1_dlg__ ( MemObj o_par,
char *  winTit,
char *  fNam,
char *  mode,
char *  titLst[],
void *  funcnam,
char *  opts 
)
* GUI_list1_dlg__ list from file in a new window, modal, callback.
*
* Inputs:
* o_par parent-window; NULL for primary window
* winTit window-title
* fNam filename of list to display; mode=nr of words per line
* mode "1" selection returns 1 word;
* "2" selection returns 2 words;
* titLst 1 or 2 headertitles; NULL = none
* funcnam callback-function of selection
* opts options; (HorSiz,VertSiz)
* HorSiz,VertSiz: size in characters; default is automatic size.
* 'e' = expand widget; default is fixed size.
* Examples: "" or "10" or "10e,e"
* "10e,e" horiz. size 10 chars, hor. and vert. expandable.
*
* funcnam prototype:
* int funcnam (MemObj *mo, void **data);
* // data=table of 5 pointers;
* 1=mousButtonNr(1|2|3) GUI_DATA_I1
* 2=colNr(1|2) GUI_DATA_I2
* 3=sel.Text col.1; GUI_DATA_S3
* 4=sel.Text col.2 (only if colNr=2) GUI_DATA_S4
*
* TYP_EventExit is returned from cancel list; no further data.
*
* Example see GUI_list1__
*
MemObj GUI_list1__ ( MemObj o_par,
char *  fNam,
char *  mode,
char *  titLst[],
void *  funcnam,
char *  opts 
)
* list from file; 1 or 2 columns; callback.
* Values may not have blanks.
* File with 2 columns: value1 - a single blank - value2
* Input:
* o_par parentBox
* fNam filename of list to display; mode=nr of words per line
* mode "1" selection returns 1 word;
* "2" selection returns 2 words;
* titLst 1 or 2 headertitles; NULL = none
* funcnam callback - returns the selected line (as list of words)
* opts options; (HorSiz,VertSiz)
* HorSiz,VertSiz: size in characters; default is automatic size.
* 'e' = expand widget; default is fixed size.
* negative values: size in pixels.
* Examples: "" or "10" or "10e,e"
* "10e,e" horiz. size 10 chars, hor. and vert. expandable.
*
* funcnam prototype:
* int funcnam (void *parent, void **data);
* // data=table of 5 pointers;
* 0=TYP_EventPress|TYP_EventEnter GUI_DATA_EVENT
* 1=mouseButtonNr or keyCode GUI_DATA_I1
* 2=colNr(1|2) GUI_DATA_I2
* 3=sel.Text col.1 GUI_DATA_S3
* 4=sel.Text col.2 (only if colNr=2) GUI_DATA_S4
*
* Cursorkeys (up,down), page-keys (up,down) provide a usercall of type
* TYP_EventEnter; GUI_DATA_I1 gives the keyCode (eg GUI_KeyCurUp)
* MousButtonClicks provide a usercall of type TYP_EventPress;
* GUI_DATA_I1 gives the mouseButtonNr (GUI_MouseL|GUI_MouseM|GUI_MouseR)
* DoubleClick provides 3 userCalls of type TYP_EventPress; first and second
* with GUI_MouseL, the third call with GUI_Mouse2L.
* The Enter-key provides a usercall of type TYP_EventPress;
* GUI_DATA_I1 = GUI_Mouse2L
*
* Example:
* GUI_list1__ (Box, "list2.dat", "2", NULL, cb_list_sel, "60,10");
* printf(" mouseButtNr=%d selColNr=%d\n",GUI_DATA_I1,GUI_DATA_I2);
* printf(" txt sel |%s|%s|\n",GUI_DATA_S3,GUI_DATA_S4);
* }
*
* Example with titles:
* char *tiTab[] = {"ID","Value"};
* GUI_list1__ (Box, "list2.dat", "2", tiTab, cbl, "");
*
*
MemObj GUI_list2__ ( MemObj o_par,
char *  fNam,
char *  mode,
char *  titLst[],
void *  funcnam,
char *  opts 
)
* list from file; 2 or 3 columns; callback.
* Values may have blanks ..
* Fileformat: csv ..
* Input:
* o_par parentBox
* fNam filename of list to display; mode=nr of vals; NULL = none.
* mode "2" selection returns 2 words;
* "3" selection returns 3 words;
* titLst 2 or 3 headertitles or NULL = no headers
* funcnam callback - returns the selected line (as list of words)
* opts options; (HorSiz,VertSiz)
* HorSiz,VertSiz: size in characters; default is automatic size.
* negative values: size in pixels.
* 'e' = expand widget; default is fixed size.
* Examples: "" or "10" or "10e,e"
* "10e,e" horiz. size 10 chars, hor. and vert. expandable.
*
* funcnam prototype:
* int funcnam (void *parent, void **data);
* // data=table of 5 pointers;
* 0=TYP_EventPress|TYP_EventEnter GUI_DATA_EVENT
* 1=mouseButtonNr or keyCode GUI_DATA_I1
* 2=colNr(1|2) GUI_DATA_I2
* 3=sel.Text col.1 GUI_DATA_S3
* 4=sel.Text col.2 (only if colNr=2) GUI_DATA_S4
* 5=sel.Text col.2 (only if colNr=3) GUI_DATA_S5
*
* Cursorkeys (up,down), page-keys (up,down) provide a usercall of type
* TYP_EventEnter; GUI_DATA_I1 gives the keyCode (eg GUI_KeyCurUp)
* MousButtonClicks or the Enter-key provide a usercall of type TYP_EventPress;
* GUI_DATA_I1 gives the mouseButtonNr (1|2|3) or DoubleClick (4) or
* ReturnKey (13).
* DoubleClick provides 3 userCalls of type TYP_EventPress; first and second
* with mouseButton 1, the third call with mouseButton=4.
*
* Example:
* GUI_list2__ (Box, "list3.csv", "3", NULL, cb_list_sel, "60,10");
* ..
* int cb_list_sel (MemObj *mo, void **data) {
* printf(" mouseButtNr=%d selColNr=%d\n",GUI_DATA_I1,GUI_DATA_I2);
* printf(" txt sel |%s|%s|%s|\n",GUI_DATA_S3,GUI_DATA_S4,GUI_DATA_S5);
* }
*
* Example with titles:
* char *tiTab[] = {"ID","Value","Info"};
* GUI_list2__ (Box, "list2.dat", "3", tiTab, cbl, "60,10");
*
*
int GUI_list1_add_f ( MemObj mo,
char *  fNam,
char *  mode 
)
* add lines from file to list
* fNam filename of list to display; mode=nr of words per line
* mode "1" selection returns 1 word;
* "2" selection returns 2 words;
*
int GUI_list2_add_f ( MemObj mo,
char *  fNam,
char *  mode 
)
* add lines from file to list
* fNam filename of list to display; mode=nr of words per line
* mode "1" selection returns 1 word;
* "2" selection returns 2 words;
*
int GUI_list1_add_l ( MemObj mo,
char *  c1,
char *  c2,
char *  c3 
)
* add line to list (1,2 or 3 columns)
* Also for GUI_list2.
*
int GUI_list1_clear ( MemObj mo)
int GUI_list1_f ( void *  list_store,
char *  fnam,
char *  mode 
)

GUI_list1_f INTERNAL populate list 1 or 2 columns from file (sep = blank)

int GUI_list2_f ( void *  list_store,
char *  fnam,
char *  mode 
)

GUI_list2_f INTERNAL populate list 2 or 3 columns from csv-file

int GUI_list1_cbKey ( void *  parent,
void *  event,
MemObj  mo 
)
* INTERNAL
*
int GUI_list1_cbMouse ( void *  parent,
void *  ev,
MemObj  mo 
)
* INTERNAL
*
int GUI_list1_cbSel ( void *  selection,
MemObj  mo 
)
* GUI_list1_cbSel INTERNAL callback list selection (list1 & list2)
*
* sig changed: from mouse-select, key-blank, key-PageDwn !
* isel always 0
* calls user with 0=TYP_EventPress|TYP_EventEnter GUI_DATA_EVENT
* 1=mousButtonNr(1|2|3)Return(13) GUI_DATA_I1
* 2=columnNr(1|2|3) GUI_DATA_I2
* 3=sel.Text column.1; GUI_DATA_S3
* 4=sel.Text col.2 (only if colNr=2) GUI_DATA_S4
* 5=sel.Text col.3 (only if colNr=3) GUI_DATA_S5
*
int GUI_list1_dlg_cbw ( Obj_gui2 go,
void **  data 
)
* INTERNAL
*
int GUI_list1_h2_cb1 ( void *  selection,
void *  data 
)
* GUI_list1_cbSel INTERNAL callback list selection
*
* sig changed: from mouse-select, key-blank, key-PageDwn !
* isel always 0
* calls user with 0=TYP_EventPress; GUI_DATA_EVENT
* 2=mousButtonNr(1|2|3) GUI_DATA_I1
* 3=colNr(1|2) GUI_DATA_I2
* 4=sel.Text col.1;a GUI_DATA_S3
* 5=sel.Text col.2 (only if colNr=2) GUI_DATA_S4
*
int GUI_list1_h2_cb3 ( void *  parent,
void *  data 
)

INTERNAL; parent-button pressed; display parentList fnamP

int GUI_list1_h2__ ( char *  titP,
char *  titC,
char *  lButP,
char *  txtP,
char *  fnamP,
void *  funcP,
void *  funcC,
char *  opts 
)
* make hierarchical SelectList. Select childObject or
* select "Parents" with "<<--" -Button.
* selecting parents-button changes childList -> parentList
* selecting parentObject gets new childList by calling funcP
* selecting childObject exits (provides parentText and childText by funcC)
*
* Input:
* titP titletext for selection of parent
* titC titletext for selection of child
* lButP caption parents-button
* txtP active parent
* fnamP Name of file for parents
* funcP user has selected a parent; create childlist from selected parent.
* funcC user has selected a child; exit and report selection -> user.
* opts options; (HorSiz,VertSiz)
* HorSiz,VertSiz: size in characters; default is automatic size.
* 'e' = expand widget; default is fixed size.
* Examples: "" or "10" or "10e,e"
* "10e,e" horiz. size 10 chars, hor. and vert. expandable.
* Output:
* RetCod:
* 1 - destroy HList;
* 0 - keep HList.
* -2 file fnamP does not exist
*
* funcP (char *fnamC, char *parentTxt) {}
*
* funcC (char *parentTxt, char *childtxt) {}
*
*

Variable Documentation

GtkWidget* UI_list1_win =NULL
static
void* UI_List_p1
static
void * UI_List_p2
static
void * UI_List_p3
static
void * UI_List_p4
static
void * UI_List_p5
static
GtkListStore* UI_ListStore
static
int GUI_list1_msbt
static
int GUI_list1_evt
static
int GUI_list1_stat
static
char GUI_list1_s1[256]
static
char GUI_list1_s2[256]
static
char GUI_list1_s3[256]
static
char GUI_list1_s4[256]
static
int UI_fontsizX
int UI_fontsizY
GtkWidget* UI_act_wi
GtkWidget* UI_MainWin