gtk_ed1.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>
#include "../ut/ut_umem.h"
#include "../gui/gui_types.h"
#include "../gui/gui_base.h"
#include "../gui/gui_gtk_ut.h"
#include "../gui_gtk/gtk_base.h"

Functions

int GUI_edi_getModif (MemObj *mo)
long GUI_edi_getEof (MemObj *mo)
long GUI_edi_getLnMax (MemObj *mo)
int GUI_ed1_cb2 (void *parent, void *iter, void *mark, MemObj mo)
int GUI_ed1_cb1 (void *parent, void *event, MemObj mo)
MemObj GUI_edi__ (MemObj *o_par, void *funcnam, int mode, char *opts)
int GUI_edi_InsFile (MemObj *mo, char *fnam)
int GUI_edi_Insert (MemObj *mo, long cpos, char *txbuf, long txlen)
int GUI_edi_Write (MemObj *mo, char *txbuf, long *txlen, long maxlen)
int GUI_edi_Read (char *txbuf, long *txlen, long p1, long p2, MemObj *mo)
long GUI_edi_RdLn (char *sOut, int sSiz, long lNr, MemObj *mo)
int GUI_edi_Rd2it (char *txbuf, long txlen, GtkTextIter *it1, GtkTextIter *it2)
char GUI_edi_RdChr (MemObj *mo, int offset)
long GUI_edi_getCpos (MemObj *mo)
int GUI_edi_setCpos (MemObj *mo, long cpos)
long GUI_edi_getLsta (MemObj *mo, long lNr)
long GUI_edi_getLnr (MemObj *mo)
int GUI_edi_setLnr (MemObj *mo, long lNr)
int GUI_edi_scroll_s (MemObj *mo)
void GUI_edi_Focus (MemObj *mo)
int GUI_edi_sel__ (MemObj *mo, long von, long bis)
int GUI_edi_sel_get (long *p1, long *p2, MemObj *mo)
int GUI_edi_sel_wrf (MemObj *mo, char *fnam)
int GUI_edi_sel_ln (MemObj *mo, long lNr)
int GUI_edi_sel_del (MemObj *mo)
int GUI_edi_del (MemObj *mo, long von, long bis)
int GUI_ed1_decode (MemObj *mo)

Variables

static MemObj wEd
static GtkWidget * GUI_ed1_view
static GtkTextBuffer * GUI_ed1_buff
static Obj_gui1 * GUI_ed1_ActObj
static long GUI_ed1_cPos
static char * GUI_ed1_lcSet

Detailed Description

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

GUI_edi__              create editor-window
GUI_edi_Insert         insert text
GUI_edi_InsFile        insert file at curPos, make text selected
GUI_edi_Write          write memSpc -> editor
GUI_edi_Read           get text between 2 positions
GUI_edi_RdChr          get char near charPos
GUI_edi_RdLn           get line (copy)
GUI_edi_getLnMax       get total-lines-nr
GUI_edi_getEof         get FileSize (total-chars-nr, EOF-Position)
GUI_edi_del            delete text between 2 positions

GUI_edi_getLnr         get LineNr of act.Curpos
GUI_edi_setLnr         .
GUI_edi_getCpos        get Cursorposition as charOffset
GUI_edi_setCpos        set to curPos and view text at curPos
GUI_edi_getLsta        get startPos of Line

GUI_edi_sel__          select from-charOffset to-charOffset
GUI_edi_sel_get         
GUI_edi_sel_wrf        write selected -> file
GUI_edi_sel_ln         select line
GUI_edi_sel_del        delete selected text

GUI_edi_scroll_s       scroll to act.charOffset (= selected)
GUI_edi_Focus          set focus to EditWindow
GUI_edi_getModif       get if buffer is modfied 

GUI_ed1_cb1            INTERNAL
GUI_ed1_cb2            INTERNAL
GUI_ed1_decode         INTERNAL

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

Function Documentation

int GUI_edi_getModif ( MemObj *  mo  ) 

GUI_edi_getModif get if buffer is modfied if buffer is modied: save; this call resets the state. returns 1=modified; 0=unmodified.

long GUI_edi_getEof ( MemObj *  mo  ) 

GUI_edi_getEof get total nr of chars (not bytes)

gtk_text_buffer_get_char_count get nr of chars, not nr of bytes !

long GUI_edi_getLnMax ( MemObj *  mo  ) 

GUI_edi_getLnMax get total-lines-nr

int GUI_ed1_cb2 ( void *  parent,
void *  iter,
void *  mark,
MemObj  mo 
)

    INTERNAL 'set-mark'-callback

int GUI_ed1_cb1 ( void *  parent,
void *  event,
MemObj  mo 
)

    INTERNAL
    returns 0=event   TYP_EventEnter|TYP_EventRelease
            1=device  TYP_DeviceKeyb
            3=key
            4=modfier

MemObj GUI_edi__ ( MemObj *  o_par,
void *  funcnam,
int  mode,
char *  opts 
)

      o_par       parentBox
      funcnam     callback-function for Keypress & FocusIn-Events (none: NULL)
      mode        0 = do not wrap lines;  1=yes, wrap lines
   
    prototyp funcnam:
    int funcnam (MemObj *mo, void **data); 
      // data=table of 3 pointers;
      GUI_DATA_EVENT =*(int*)data[0]=TYP_EventEnter
      GUI_DATA_L1    =*(long*)data[1]=act.cursorPosition
      GUI_DATA_L2    =*(long*)data[2]=act.lineNr.
   
      GUI_DATA_EVENT =*(int*)data[0]=TYP_EventRelease
      GUI_DATA_I1    =*(int*)data[1]=keyvalue; eg 'a'
      GUI_DATA_I2    =*(int*)data[2]=state of modifierkeys;
                                     &1=shift; &4=ctrl; &8=alt.
      GUI_OBJ_TYP(mo)  = TYP_GUI_Editor
    
    Example without callback-function:
      ed1 = GUI_edi__ (&box1, NULL, 0, 0);
   
   
    Example with callback-function:
      ed2 = GUI_edi__ (&box1, ed1_cb, 50, 40);
      ..
      int ed1_cb (MemObj *mo, void **data) {
        printf(" event=%d typ=%d\n",GUI_DATA_EVENT,GUI_OBJ_TYP(mo));
        printf(" key=%d modi=%d\n",GUI_DATA_I1,GUI_DATA_I2);
      }

int GUI_edi_InsFile ( MemObj *  mo,
char *  fnam 
)

GUI_edi_InsFile insert file at curPos, make text selected

int GUI_edi_Insert ( MemObj *  mo,
long  cpos,
char *  txbuf,
long  txlen 
)

    text einfuegen
    cpos zB von GUI_edi_getCpos

int GUI_edi_Write ( MemObj *  mo,
char *  txbuf,
long *  txlen,
long  maxlen 
)

    das gesamte Editfenster neu schreiben (txbuf(=mem) -> Window).
    ATTENTION: GUI_edi_Write can modify txbuf (changes into UTF8)

int GUI_edi_Read ( char *  txbuf,
long *  txlen,
long  p1,
long  p2,
MemObj *  mo 
)

    get text between 2 positions
    p1, p2  character-offset, not byte offsets !
    get whole window with: p1=0L, p2=-1L
    Input:
      txlen         size of txbuf

long GUI_edi_RdLn ( char *  sOut,
int  sSiz,
long  lNr,
MemObj *  mo 
)

GUI_edi_RdLn get line (copy)

int GUI_edi_Rd2it ( char *  txbuf,
long  txlen,
GtkTextIter *  it1,
GtkTextIter *  it2 
)

    get text between 2 iters INTERNAL
    p1, p2  character-offset, not byte offsets !
    get whole window with: p1=0L, p2=-1L
    Input:
      txlen         size of txbuf

char GUI_edi_RdChr ( MemObj *  mo,
int  offset 
)

    read char near cursor;
    offset  0 = char right of cursor
    offset -1 = char left of cursor
    returns  '\0' for out-of-file-positions.
    returns  -1 for a multibyte-character

long GUI_edi_getCpos ( MemObj *  mo  ) 

    get cursorposition as offset from start-of-file.
    0=startpos; Linedelimiters '\n' is one char.
    cpos -> Zeilennummer: UTF_GetLnrPos

int GUI_edi_setCpos ( MemObj *  mo,
long  cpos 
)

    set to curPos and view text at curPos
    cpos  -1L  is end of file

long GUI_edi_getLsta ( MemObj *  mo,
long  lNr 
)

get startPos of Line; -1=line does not exist.

long GUI_edi_getLnr ( MemObj *  mo  ) 

    GUI_edi_getLnr        get LineNr of act.Curpos
    First line = 1 !

int GUI_edi_setLnr ( MemObj *  mo,
long  lNr 
)
int GUI_edi_scroll_s ( MemObj *  mo  ) 

scroll to active insert-mark makes unselect ?

void GUI_edi_Focus ( MemObj *  mo  ) 

den Focus auf EditWindow

int GUI_edi_sel__ ( MemObj *  mo,
long  von,
long  bis 
)

    select_region from-curPos to-curPos
    if(from-curPos < 0)  - unsect all !

int GUI_edi_sel_get ( long *  p1,
long *  p2,
MemObj *  mo 
)

    write selected -> file
      txlen   input = size of txbuf; Output = nr of characters read

int GUI_edi_sel_wrf ( MemObj *  mo,
char *  fnam 
)

    GUI_edi_sel_wrf              write selected -> file
    returns nr of chars

int GUI_edi_sel_ln ( MemObj *  mo,
long  lNr 
)

    GUI_edi_sel_ln        select Line, set Curpos to Line.
    Erste Zeile ist 1
    rc -1: lNr does not exist
    ACHTUNG: die ZeilenStart/Endposition wird aus dem mem gelesen !!!!

int GUI_edi_sel_del ( MemObj *  mo  ) 

GUI_edi_sel_del delete selected text

int GUI_edi_del ( MemObj *  mo,
long  von,
long  bis 
)

GUI_edi_del delete from-curPos to-curPos

int GUI_ed1_decode ( MemObj *  mo  ) 

Variable Documentation

MemObj wEd [static]
GtkWidget* GUI_ed1_view [static]
GtkTextBuffer* GUI_ed1_buff [static]
Obj_gui1* GUI_ed1_ActObj [static]
long GUI_ed1_cPos [static]
char* GUI_ed1_lcSet [static]
Generated on Fri Aug 17 09:22:02 2012 for C-KIT-GUI-GTK 0.10 by  doxygen 1.6.3