`% Place buggy things in here

' BUG \def
``\EXIT' \if' EXITif \def
```                  egui macro arguments
---------------------------------------------------------
OBJECTNAME CODE_ONCLICK TEXT           \button
H W                                    \gvoid
H W                                    \gvoidc
STATE OBJECTNAME TEXT                  \checkbox
TEXT OBJECTNAME H W                    \gsign
OBJECTNAME TEXT PROMPT SIZE            \textinput
CODE_ONENTER PROMPT SIZE               \readline
TEXT CODE_ONCLICK                      \row
ROWS_CODE OBJECTNAME CODE_ONCLICK H W  \rowarea
OBJECTNAME                             \radioopen
OBJECTNAME CODE TEXT                   \radio
                                       \radioclose
TITLE OBJECTNAME H W                   \editor

(*) Dimensions (H)eight and (W)idth are specified in
character cells, except \gvoid where its in pixels.
(*) SIZE is the size of the text input area.
(*) STATE is `1' for active anything else for inactive.
(*) The radio CODE specified at \radio will be executed
when calling the \radioopen #OBJECTNAME
' HELPSIGN 24 70 \gsign' `Widgets Help' HELPDESK \egui' Help \def
``
`\NIL \subgrprows'
GRPROWS ``\subgrprows'\xload#GRPROWS'
 15 60 \rowarea
\hcont
40 14 \gvoid
`:groupm' `Group manager command:' 30 \readline
\closeblock
`Command format:
"c <groupname>"          : create new group
"d <groupname>"          : remove group
"r <oldname> <newname>"  : rename group'
\NIL 4 50 \gsign' `Modify Groups' GROUPS \egui
' Groupm \def
```#' WINDOWSROWS 20 70 \egui_rows '
 `Open Sheets' WINDOWS \egui
' Navigator \def
``'
' NIL \def
`\e2svar \ifvar
  `\e2svar$ \ifobj 
    `\e2svar$#\kill' \if
   \e2svar \emptyvar' \if
\links \sname \e2svar \setvar
`]' \eid `Links of element [' \strcat\strcat
\setpublicname
' Links \def
`LNAV_S \ifvar
`SHIST \ifvar
  `$LNAV_S SHIST \setvar'
  `$LNAV_S $SHIST \strcmp
     `$LNAV_S SHIST \setvar' \ifnot'
  \ifelse
 -LNAV_S
' \if

\sname LNAV_S \setvar

' LNAV_LIST \def
``
 \LNAV_LIST
 `\srows' SROWS
 `
  % Global rowarea command
  \smdata \n \eid 
  `Selected Element ID:' \strcat
  \strcat \strcat \xload #CESIGN

  `\Links \LNAV_LIST
    `\srows' \xload #SROWS'
   \xload#LBUTTON

 ' 17 72 \rowarea

 \NIL 
   ``\Shistory `\srows' \xload #SROWS'
   `` 
   ``This sucks. Somebody rewrite macrocode'\echo'
      Help\item'\menu'
    \rightbutton \ifelse'
   ` < ' \button
\vcont
`No Element Selected' CESIGN 2 44 \gsign
LBUTTON ``No Element Selected' \echo'
 `  Get  Links  ' \button
' `Lndbase List' LNAV \egui #LNAV
' LNAV \def
`\push \push
\g2svar VAR \setvar
 $VAR \ifvar
  `$VAR$ \ifobj 
    `$VAR$#\kill' \if
   $VAR \emptyvar' \if
\lsgroup \sname $VAR \setvar
`Listing of ' \strcat -VAR
\setpublicname

' Lsgroup \def
``
\hcont
\vcont

`Macro code' epEDITOR 18 54 \editor

\hcont
\vcont

 epMACRO `' ` Macro: ' 22 \textinput

\hcont

 epLOAD `#epMACRO \isempty
  `No Name'\abortpopif,
 \ifdef `epUNDO \emptyvar
  #epEDITOR epUNDO \setvar
  `$epUNDO\xload#epEDITOR' \xload #epUNDO
  #epMACRO \macrodef \xload
  #epEDITOR' \if' ` Edit ' \button

1 4 \gvoidc

 epUNDO `' ` Undo ' \button

1 4 \gvoidc

 epDEF `#epMACRO \isempty
   `No Name'\abortpopif,
  #epEDITOR \n \strcmp
   `No Text'\abortpopif,
  \ifdef 
  `` \undef' #epMACRO \strcat
   \xload #epUNDO'
  `#epMACRO  epUNDO \emptyvar
   \macrodef epUNDO \setvar
   `\def' #epMACRO `$epUNDO '
    \strcat \strcat \xload #epUNDO
   #epMACRO \undef' \ifelse
   #epEDITOR #epMACRO \def'
  ` Define ' \button

\closeblock
\closeblock
2 2 \gvoidc
\vcont

 epRUN `#epEDITOR \execarg'   `  Run  ' \button

 epCLEAR ``'\xload #epMACRO
 `'\xload #epEDITOR' ` Clear ' \button

\closeblock

2 2 \gvoidc
\hcont
 epVAR1 `epEDITOR epEDVAR1 \savetext' ` A ' \button
 epVAR2 `epEDITOR epEDVAR2 \savetext' ` B ' \button
 epVAR3 `epEDITOR epEDVAR3 \savetext' ` C ' \button
\closeblock

\closeblock

\closeblock

 `\xload #epMACRO' epMACROS 20 20 \macro_rows

\closeblock

epHELP `\Help' ` Help ' \button

' `Development' DEVEL \egui
' Program \def
``
1 70 \gvoidc
\vcont
  `\NIL \subgrprows'
 pickGROUP
 `\push`\subgrprows'\xload #pickGROUP
  \xload#pGROUP'
  8 36 \rowarea
pGROUP \NIL `Selected:' 30 \textinput
1 1 \gvoidc
\closeblock
\vcont
eTEXT \NIL `Element text:' 64 \textinput
\NIL `#eTEXT \NIL \strcmp
      `#pGROUP #eTEXT :newelement
      \NIL\xload#eTEXT' \ifnot'
2 2 \gvoidc
 `   CREATE ELEMENT  ' \button
' `Create new Element' CREAT \egui

' New \def
`URL \setvar

% Must start with http://
$URL `http://' \strncmp
`$URL -URL `http://' \strcat URL \setvar'
\ifnot

$URL\openurl
` { netscape $URL } \system'
\ifnot

-URL

' OpenURL \def
``10 28 \stack_rows
 10 1 \gvoidc
 \vcont
 `Variables' \NIL 1 20 \gsign
 `$ \echo' VARS 20 20 \variable_rows
 \closeblock
 10 1 \gvoidc
 \vcont
 `Objects' \NIL 1 20 \gsign
 `\echo' OBJSS 20 20 \object_rows
 \closeblock
 ' `epil state' STACK \egui
' Stack \def
`SHIST \ifvar
`$SHIST\ifobj
 `-SHIST \Shistory' 
 `LNAV_S \ifvar `-LNAV_S'\if 
    $SHIST#-SHIST'
  \ifelse
' \if
\LNAV_LIST
' Shistory \def
``\pop' `\echo \pop \EXIT' \ifelse
' abortpopif \def
`\getviewer
``No viewer application assigned' \echo
 \EXIT' \ifnot,

\ename \savedata
{ \push \ename } \system

`Data of element exported to: "' \echon
\ename \echon
`" and opened with "' \echon
\echon
`"' \echo



' View \def
`% This looks very much like \getViewer
% which goes by groups. They should
% be broken to common code...

\ename CESAVED \setvar
\edata `a.' \strproc EGRP \setvar
\NIL FND \setvar

\havecl
`\sname CLSAVED \setvar' \if

FBINDS \ifvar
``sys.bind.extensions' \lsgroup
  \sname FBINDS \setvar
  `Binded File Extensions to applications' \setpublicname'
\ifnot

$FBINDS#

`\edata $EGRP \strcmp
 `\ename FND \setvar \laststep' \if'
\foreach

-EGRP

\NIL $FND \strcmp
`$FND# `sys.viewers' \glinks -FND
 \isemptylist 
  `/0\edata 1 FND \setvar'
  `\NIL FND \setvar' \ifelse \kill'
\ifnot

CLSAVED \ifvar `$CLSAVED# -CLSAVED' \if

\NIL $FND \strcmp `\T' `\F' \ifelse
-FND
$CESAVED# -CESAVED

{ \push \edata } \system

`Openning "' \echon \edata \echon
`" with "' \echon \echon `"' \echo
' ViewFile \def
`\laststep \EXIT' break \def
```\fbgen restorefb \def Instance :dump_macros' 
`Dump Macros to file ?' \item' \menu

' ask_dump \def
`\isbin
` \ce_menu_lnd'
``\ce_menu_nobin''
```\View' View \item''
\ifelse
\strcat
\menu
' ce_menu \def
``\eid `ID of element: ' \echon \echo'
  `Show ID' \item
\menusep
`:lset' lset \item
`\link' Link \item
`:unlink' Unlink \item


' ce_menu_lnd \def
``\edata\echo' Show \item
`\edittextelement' Edit \item

\menusep

\group `data.extern' \strncmp
``\ViewFile' View \item' \if

`net.URL' \checkgroup
``\OpenURL' \edata \epquote \strcat
 `Open WWW' \item' \if
' ce_menu_nobin \def
`\group \strcmp' checkgroup \def
`\ename LINKSOF_ \strcat
' e2svar \def
``
\eid `Edit element:' \strcat
\ename EDIT_ \strcat 20 75 \editor
\edata \xload \ename EDIT_ \strcat#

\NIL `:altelement' 
\ename `#' \strcat
\ename EDIT_ \strcat `#' \strcat
\strcat \strcat
`  Apply  ' \button
' \eid `Editing ' \strcat \eid Edit \strcat \egui
' edittextelement \def
`\push\ifvar `\pop' `\push-\emptyvar' \ifelse
' emptyvar \def
``._' \tr LISTOF_ \strcat
' g2svar \def
`\ename CESAVED \setvar
\group EGRP \setvar
\NIL FND \setvar

\havecl
`\sname CLSAVED \setvar' \if

BINDS \ifvar
``sys.bind' \lsgroup
  \sname BINDS \setvar
  `Binded Groups to applications' \setpublicname'
\ifnot

$BINDS#

`\edata $EGRP \strcmp
 `\ename FND \setvar \laststep' \if'
\foreach

-EGRP

\NIL $FND \strcmp
`$FND# `sys.viewers' \glinks -FND
 \isemptylist 
  `/0\edata 1 FND \setvar'
  `\NIL FND \setvar' \ifelse \kill'
\ifnot

CLSAVED \ifvar `$CLSAVED# -CLSAVED' \if

\NIL $FND \strcmp `\T' `\F' \ifelse
-FND

$CESAVED# -CESAVED
' getviewer \def
``(happyTip:)  ' \strcat' happytip \def
``':link
' link \def
``
\vcont
`It is possible (1) to start by searching for a specific keyword;
If found its links will be presented. It is also possible (2) to
perform a case insensitive search but that happens only for elements
declared to belong in the case PMT (by default almost all are).
Finally all the elements of a group can be listed (3)'
\NIL 5 70 \gsign

\hcont

\vcont
 2 30 \gvoidc
 ` 1 Query Lndbase Server ' \NIL 1 29 \gsign
 `\find 
   ``Lndbase knows nothing about that' \echo'
   `\Links \showlist' \ifelse'
  ` Search for: ' 20 \readline
 2 30 \gvoidc
 ` 2 Case insensitive search ' \NIL 1 29 \gsign
 `\cfind
   ``No matches' \echo'
    ``Case Insensitive search results'
      \setpublicname \showlist' \ifelse'
    ` Search for: ' 20 \readline
 2 30 \gvoidc
 ` 4 Start with ID' \NIL 1 18 \gsign
 ` `/i' \strcat \execarg \Links \showlist'
 ` Element ID: ' 8 \readline
\closeblock

 1 4 \gvoidc

\vcont
 `  3 Listing of groups    ' \NIL 1 36 \gsign
  `\NIL \subgrprows'
 lnsGROUPR
 `\push`\subgrprows'\xload#lnsGROUPR
  \xload#lnsGROUP'
  12 36 \rowarea
lnsGROUP `' `Selected:' 30 \textinput
lnsGBUT `#lnsGROUP\Lsgroup \showlist'
  ` List selected group ' \button
\closeblock
' `Start' LNSTART \egui
' lnstart \def
``
 Notepad  eNOTEPAD 20 70 \editor
 NOTEPAD \iffs
 `NOTEPAD \fspop \xload #eNOTEPAD' \if
 \NIL `#eNOTEPAD NOTEPAD \fspush'
 ` Save Notepad Text ' \button
'
`Macro Notepad' NOTEPAD \egui
' mknotepad \def
`NOTEPAD \ifobj
`\mknotepad'
`#NOTEPAD'
\ifelse
' notepad \def
`{ cat `/proc/self/status' } \system
' proc_status \def
`ARG1 \setvar ARG2 \setvar $ARG1 $ARG2 -ARG1 -ARG2' r \def
``\Navigator' `Win' 0 \fastbutton
`\Stack' `epl' 1 \fastbutton
`\Groupm' `Grp' 2 \fastbutton
`DEVEL \ifobj `\Program'
`#DEVEL' \ifelse' ` P ' 3 \fastbutton
`\lnstart' `lnd' 4 \fastbutton
`\notepad' `Np' 5 \fastbutton
`\query_lset' `lse' 7 \fastbutton
`\slists' `Li' 8 \fastbutton
`\New' `New' 10 \fastbutton
`\ask_dump' `-D-' 11 \fastbutton
`:quit' `Q' 15 \fastbutton
' restorefb \def
`\r\setvar' rsetvar \def
`\r\strcat' rstrcat \def
`\push \ifvar 
`\NIL TMP \setvar'
`\push\push $ TMP \setvar -'
\ifelse
\r \push OBJ \setvar
#\r\setvar
$TMP \xload $OBJ#
-TMP -OBJ
' savetext \def
`$SELLIST
\ifobj
``No List Selected''
`$SELLIST# \publicname `Selected List: ' \strcat'
\ifelse
\xload #SELLISTSIGN

' selectedlistsign \def
`LNAV \ifobj
`\LNAV'
``'\xload#LNAV'
\ifelse

' showlist \def
``
\NIL SELLIST \setvar
\hcont
``\publicname 
 ` SELLIST\setvar\selectedlistsign' \sname
   \strcat \row'
 \foreachlist'
\NIL \NIL 20 50 \rowarea

2 2 \gvoidc

\vcont
\NIL `\slists' `   Refresh   ' \button
\NIL `$SELLIST\ifobj `$SELLIST#\showlist'\if'
               `  Show List  ' \button
\NIL `$SELLIST\ifobj `$SELLIST#\kill \slists'\if'
               ` Remove List ' \button

\closeblock

\closeblock

\NIL SELLISTSIGN 2 70 \gsign
\selectedlistsign

' `All the lists' `S-LISTS' \egui
' slists \def
`47 \elen \le`` bytes of data' \elen
 \strcat' `\edata' \ifelse
' smdata \def
`LNAV_S \ifvar
` % For each element loop

 % Displayed line text
 \sname TMP \setvar $LNAV_S#
`\smdata `]  '\rv \group \rv `['
 \strcat \strcat \strcat \strcat \strcat

 % Generate onclick command
 ``\ce_menu' \rightbutton\if'
 \ename `#' \strcat \strcat

 % Make the row
 \row'
\foreach
 $TMP# -TMP' \if

' srows \def
`CCM \setvar
 `Parent'\rv\strcat 
  $CCM \parentgroup \epquote \row
$CCM
`\push $CCM \NIL \strcmp
 ``.' $CCM\strcat\strcat' \ifnot
  \epquote \row'
 \foreachsubgroup
 `$CCM \NIL \strcmp `\NIL \subgrprows' \ifnot'
   \ifnot
-CCM
' subgrprows \def
