{$if not def AP_PREFS_H}

CONST AP_PREFS_H = 0;

CONST vorx=355;
      vory=55;


PROCEDURE SavePrefs;
VAR f:TEXT;
 BEGIN
  s:='Fehler beim Speichern der Voreinstellungsdatei'+chr(10)+prefsfile;
  assign(f,prefsfile)
  rewrite(f);
  IF (IORESULT=0) THEN
  BEGIN
   buffer(f,1000);
   writeln(f,kennung);                         { Kennung schreiben  }
   FOR i:=1 TO 10 DO writeln(f,Selecttexte[i]);{ 10 Selecttexte     } 
   writeln(f,intstr(aslf_width));              { Filerequesterdaten }
   writeln(f,intstr(aslf_height));
   writeln(f,intstr(aslf_topedge));
   writeln(f,intstr(aslf_leftedge));
   writeln(f,editor);                          { Pfad+Editorname      }
   writeln(f,textanzeiger);                    { Pfad+textanzeigername}
                                               { Koordinaten f�r:     }
   writeln(f,intstr(EditWinleft));             { Editfenster          }
   writeln(f,intstr(Editwintop));
   writeln(f,intstr(Bl�tterwinleft));          { Bl�tterfenster       }
   writeln(f,intstr(Bl�tterwintop));
   writeln(f,intstr(Einstellwinleft));         { Einstellfenster      }
   writeln(f,intstr(Einstellwintop));            
   writeln(f,intstr(druckwinleft));            { Passwortfenster !!!! }     
   writeln(f,intstr(druckwintop));             
   writeln(f,intstr(suchwinleft));             { Suchfenster          }
   writeln(f,intstr(suchwintop));
   writeln(f,intstr(seriendruckwinleft));      { seriendruckfenster   }
   writeln(f,intstr(seriendruckwintop));
   writeln(f,intstr(formulardruckwinleft));    { Formulardruckfenster }
   writeln(f,intstr(formulardruckwintop));
   writeln(f,intstr(listendruckwinleft));      { Listendruckfenster   }
   writeln(f,intstr(listendruckwintop));
   writeln(f);                                 { Speichern/Ladefenster}
   writeln(f); 
   writeln(f,intstr(sortierwinleft));          { Sortierfenster       } 
   writeln(f,intstr(sortierwintop)); 
   writeln(f,intstr(Suchpfadwinleft));         { Suchpfadfenster      }
   writeln(f,intstr(Suchpfadwintop)); 
   writeln(f,intstr(selectwinleft));           { Selecttextefenster   }
   writeln(f,intstr(selectwintop));
   writeln(f);                                 { Arexxfenster         }
   writeln(f);
   writeln(f);                                 { verschluesseln?      }
   writeln(f,LONG(iconsave));                  { mit Icon Speichern   }
   writeln(f,LONG(autoload));                  { Autoload             }
   ok:=AddPart(pfad,datei,200);   
   writeln(f,pfad);                            { Autoloadfilename     }
   close(f);
  END ELSE umeld(s);
 END;   

PROCEDURE LoadPrefs;
VAR f:TEXT;

{ -- Voreinstellungen laden (DruckerAusgabe, SelectTexte etc.) -- }
 BEGIN
  assign(f,prefsfile)
  reset(f);
{  s:='Fehler beim laden der Voreinstellungsdatei'+chr(10)+prefsfile;}
  IF (IORESULT=0) THEN
  BEGIN
   buffer(f,1000);
   read(f,s);                        
   FOR i:=1 TO 10 DO read(f,Selecttexte[i]);
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   aslf_width:=i;              
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   aslf_height:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   aslf_topedge:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   aslf_leftedge:=i;
   read(f,editor);                          
   read(f,textanzeiger);                    
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   EditWinleft:=i;             
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   Editwintop:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   Bl�tterwinleft:=i;          
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   Bl�tterwintop:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   Einstellwinleft:=i;         
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   Einstellwintop:=i;          
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   druckwinleft:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   druckwintop:=i;             
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   suchwinleft:=i;             
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   suchwintop:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   seriendruckwinleft:=i;      
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   seriendruckwintop:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   formulardruckwinleft:=i;    
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   formulardruckwintop:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   listendruckwinleft:=i;      
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   listendruckwintop:=i;
   read(f,s);
   read(f,s);
 
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   sortierwinleft:=i; 
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   sortierwintop:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   Suchpfadwinleft:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   suchpfadwintop:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   selectwinleft:=i;
   read(f,s);
   VAL(s,i,ww);
   IF ww=0 THEN
   selectwintop:=i;
   read(f,s);
   read(f,s);
   read(f,s);
   read(f,s); 
   VAL(s,i,ww);
   IF ww=0 THEN
    IF i=1 THEN iconsave:=TRUE;
   read(f,s); 
   VAL(s,i,ww);
   IF ww=0 THEN
    IF i=1 THEN autoload:=TRUE;  
   read(f,datei);
   close(f);
  END;{ ELSE umeld(s);}
 END;

PROCEDURE SuchPfade;
{ Suchpfade von Editor/Textanzeiger}
CONST
  SP_WIDTH = 404;
  SP_HEIGHT = 72;
  
VAR
  spwin          : p_Window;
  edig,txtanz,
  druck,gadl,
  okgad,abbr     : p_Gadget;
  gg             : ARRAY[1..3] OF p_Gadget;
  druckaus       : STRING[80];
  edi,txt        : STRING[256];
  dummy,ok       : BOOLEAN;
  x              : STRING[256];
  
BEGIN
  ComputeFont(SP_WIDTH,SP_HEIGHT);
  ww := ComputeX(SP_WIDTH);
  wh := ComputeY(SP_HEIGHT);
  
  druckaus := DruckerAusgabe;
  edi := Editor;
  txt := Textanzeiger;

  gadl := NIL;
  gadl := CreateContext(^gadl);
  
  t[1] := TagItem(GT_Underscore, LONG("_"));
  t[2].ti_Tag := GTST_STRING;
  t[3].ti_Tag := GTST_MaxChars;
  t[4].ti_Tag := TAG_DONE;
  
  ng := NewGadget(142,7,200,14,
                  "_Druckerausgabe:",mytattr,
                  1,PLACETEXT_LEFT,
                  vi,NIL);
  sensitivgadget(ng);                  
  t[2].ti_Data := druckaus;
  t[3].ti_Data := 79;
  druck := CreateGadgetA(STRING_KIND,gadl,^ng,^t);
  
  ng := NewGadget(142,22,200,14,
                  "_Textanzeiger:",mytattr,
                  2,PLACETEXT_LEFT,
                  vi,NIL);
  sensitivgadget(ng);
  t[2].ti_Data := txt;
  t[3].ti_Data := 255;
  txtanz := CreateGadgetA(STRING_KIND,druck,^ng,^t);
  
  ng := NewGadget(142,37,200,14,
                  "_Editor:",mytattr,
                  3,PLACETEXT_LEFT,
                  vi,NIL);
  sensitivgadget(ng);
  t[2].ti_Data := edi;
  t[3].ti_Data := 255;
  edig := CreateGadgetA(STRING_KIND,txtanz,^ng,^t);                                                      
  
  ng := NewGadget(343,7,45,14,
                  "Get",mytattr,
                  4,PLACETEXT_IN,
                  vi,NIL);
  sensitivgadget(ng);
  gg[1] := CreateGadgetA(BUTTON_KIND,edig,^ng,NIL);                  
  
  ng := NewGadget(343,22,45,14,
                  "Get",mytattr,
                  5,PLACETEXT_IN,
                  vi,NIL);
  sensitivgadget(ng);
  gg[2] := CreateGadgetA(BUTTON_KIND,gg[1],^ng,NIL);                 

  ng := NewGadget(343,37,45,14,
                  "Get",mytattr,
                  6,PLACETEXT_IN,
                  vi,NIL);
  sensitivgadget(ng);
  gg[3] := CreateGadgetA(BUTTON_KIND,gg[2],^ng,NIL);                 
  
  t[1] := TagItem(GT_Underscore, LONG("_"));
  t[2].ti_Tag := TAG_DONE;
  ng := NewGadget(8,56,150,14,
                  "_Benutzen",mytattr,
                  7,PLACETEXT_IN,
                  vi,NIL);
  sensitivgadget(ng);
  okgad := CreateGadgetA(BUTTON_KIND,gg[3],^ng,^t);
  
  ng := NewGadget(247,56,150,14,
                  "_Abbrechen",mytattr,
                  8,PLACETEXT_IN,
                  vi,NIL);
  sensitivgadget(ng);                  
  abbr := CreateGadgetA(BUTTON_KIND,okgad,^ng,^t);                                  

  t[1] := TagItem(WA_InnerWidth, ww);
  t[2] := TagItem(WA_InnerHeight, wh);
{  t[3] := TagItem(WA_Gadgets, LONG(gadl));}
  t[3].ti_Tag := WA_Title;
  t[3].ti_Data := "Suchpfade";
  t[4] := TagItem(WA_Flags, WFLG_DRAGBAR+
                            WFLG_DEPTHGADGET+
                            WFLG_CLOSEGADGET+
                            WFLG_HASZOOM+
                            WFLG_SMART_REFRESH+
                            WFLG_NOCAREREFRESH+
                            WFLG_ACTIVATE+
                            WFLG_RMBTRAP);
  t[6] := TagItem(WA_Idcmp, IDCMP_CLOSEWINDOW+
                            IDCMP_GADGETUP+
                            IDCMP_GADGETDOWN+
                            IDCMP_CHANGEWINDOW+
                            IDCMP_RAWKEY);
  t[7]:=TagItem(WA_LEFT,suchpfadwinleft);
  t[8]:=TagItem(WA_TOP,suchpfadwintop);
  t[9].ti_Tag := TAG_DONE;
  IF pubname <> "" THEN
  BEGIN
    t[9] := TagItem(WA_PubScreenFallBack, 1);
    t[10] := TagItem(WA_PubScreenName, LONG(pubname));
    t[11].ti_Tag := TAG_DONE;
  END;
  
  spwin := OpenWindowTagList(NIL,^t);
  IF spwin <> NIL THEN
  BEGIN
    raster(spwin,0,1,sp_width,sp_height);
    clearq(spwin,8,4,389,48);
    Rahmen(spwin,8,4,389,49,TRUE);  
    l:=addglist(spwin,gadl,0,-1,NIL);
    RefreshGlist(spwin^.firstgadget,spwin,NIL,-1);
    dummy := FALSE;
    REPEAT
      GetMessage(spwin,class,code,qual,gadnum);
      CASE class OF
        IDCMP_CLOSEWINDOW : dummy := TRUE;
        IDCMP_RAWKEY:
          CASE code OF
            34{D}: BEGIN
                     ButSelecter(spwin,gg[1]);
                     ok := FileReqPattern("Druckerausgabe:",ff,fd,"~(#?.info)");
                     IF ok THEN
                     BEGIN
                       x := fd;
                       ok := AddPart(x,ff,256);
                       druckaus := x;
                       t[1] := TagItem(GTST_String, LONG(^druckaus));
                       t[2].ti_Tag := TAG_DONE;
                       GT_SetGadgetAttrsA(druck,spwin,NIL,^t);    
                     END;
                   END;                
            20{T}: BEGIN
                     ButSelecter(spwin,gg[2]);
                     ok := FileReqPattern("Textanzeiger:",ff1,fd1,"~(#?.info)");
                     IF ok THEN
                     BEGIN
                       x := fd1;
                       ok := AddPart(x,ff1,256);
                       txt := x;
                       t[1] := TagItem(GTST_String, LONG(^txt));
                       t[2].ti_Tag := TAG_DONE;
                       GT_SetGadgetAttrsA(txtanz,spwin,NIL,^t);      
                     END;
                   END;
            18{E}: BEGIN
                     ButSelecter(spwin,gg[3]);
                     ok := FileReqPattern("Editor:",ff2,fd2,"~(#?.info)");
                     IF ok THEN
                     BEGIN
                       x := fd2;
                       ok := AddPart(x,ff2,256);
                       edi := x;
                       t[1] := TagItem(GTST_String, LONG(^edi));
                       t[2].ti_Tag := TAG_DONE;
                       GT_SetGadgetAttrsA(edig,spwin,NIL,^t);     
                     END;
                   END;
            53{B}: BEGIN
                    ButSelecter(spwin,okgad);
                    DruckerAusgabe := GetString(druck);
                    editor := GetString(edig);
                    textanzeiger := GetString(txtanz);
                    dummy := TRUE;        
                   END;       
            32,69:{A,ESC}BEGIN
                    Butselecter(spwin,abbr);
                    dummy:=TRUE;        
                   END;     
           ELSE
          END;
        IDCMP_GADGETUP:
          CASE GadNum OF
            1 : BEGIN ff:=GetString(druck); fd:=''; END;
            2 : BEGIN ff1:=GetString(txtanz); fd1:=''; END;
            3 : BEGIN ff2:=GetString(edig); fd2:=''; END;
            4 : BEGIN
                  ok := FileReqPattern("Druckerausgabe:",ff,fd,"~(#?.info)");
                  IF ok THEN
                  BEGIN
                    x := fd;
                    ok := AddPart(x,ff,256);
                    druckaus := x;
                    t[1] := TagItem(GTST_String, LONG(^druckaus));
                    t[2].ti_Tag := TAG_DONE;
                    GT_SetGadgetAttrsA(druck,spwin,NIL,^t);    
                  END;
                END;
            5 : BEGIN
                  ok := FileReqPattern("Textanzeiger:",ff1,fd1,"~(#?.info)");
                  IF ok THEN
                  BEGIN
                    x := fd1;
                    ok := AddPart(x,ff1,256);
                    txt := x;
                    t[1] := TagItem(GTST_String, LONG(^txt));
                    t[2].ti_Tag := TAG_DONE;
                    GT_SetGadgetAttrsA(txtanz,spwin,NIL,^t);      
                  END;
                END;
            6 : BEGIN
                  ok := FileReqPattern("Editor:",ff2,fd2,"~(#?.info)");
                  IF ok THEN
                  BEGIN
                    x := fd2;
                    ok := AddPart(x,ff2,256);
                    edi := x;
                    t[1] := TagItem(GTST_String, LONG(^edi));
                    t[2].ti_Tag := TAG_DONE;
                    GT_SetGadgetAttrsA(edig,spwin,NIL,^t);     
                  END;
                END;
            7 : BEGIN
                  DruckerAusgabe := GetString(druck);
                  editor := GetString(edig);
                  textanzeiger := GetString(txtanz);
                  dummy := TRUE;
                END;     
            8 : dummy := TRUE;
          ELSE END;
      ELSE END;
    UNTIL dummy;
    suchpfadwinleft:=spwin^.leftedge;
    suchpfadwintop:=spwin^.Topedge;
    CloseWindow(spwin);
  END;
  FreeGadgets(gadl);
  ComputeFont(vorx,vory);
END;

PROCEDURE Voreinstellungen;
{ -- Die eigentliche Voreinstellungsprozedur -- }  
 
VAR
  vgad : ARRAY[1..9] OF p_Gadget;
  buf  : STRING[80];
{  si   : p_StringInfo;}
  ok   : BOOLEAN;
  VEinstellReq : Requester;
  
  { Ediermen� f�r die SelectTexte }
  PROCEDURE SelTexte;
  
  CONST st_width=237;
        st_height=170;
  VAR
    gl2,vorg             : p_Gadget;
    sgad                 : ARRAY[1..12] OF p_Gadget;
    wp2                  : p_Window;
    buf                  : ARRAY[1..10] OF STRING[11];
    abbruch,dummy        : BOOLEAN;
    si                   : p_StringInfo;

  BEGIN
    ComputeFont(st_width,st_height);
    ww := ComputeX(st_width);
    wh := ComputeY(st_height);
    FOR i := 1 TO 10 DO buf[i] := SelectTexte[i];
    gl2 := NIL;
    gl2 := CreateContext(^gl2);
    j := yoff+3;
    vorg := gl2;
    ng := NewGadget(19,8,200,14,
                    NIL,MyTattr,
                    1,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1] := TagItem(GTST_String,LONG(^buf[1]));
    t[2] := TagItem(GTST_MaxChars,10);
    t[3] := TagItem(STRINGA_Justification,GACT_StringCenter);
    t[4].ti_Tag := TAG_DONE;
    sgad[1] := CreateGadgetA(STRING_KIND,gl2,^ng,^t);

    ng := NewGadget(19,22,200,14,
                    NIL,MyTattr,
                    2,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[2]);
    sgad[2] := CreateGadgetA(STRING_KIND,sgad[1],^ng,^t);

    ng := NewGadget(19,36,200,14,
                    NIL,MyTattr,
                    3,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[3]);
    sgad[3] := CreateGadgetA(STRING_KIND,sgad[2],^ng,^t);

    ng := NewGadget(19,50,200,14,
                    NIL,MyTattr,
                    4,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[4]);
    sgad[4] := CreateGadgetA(STRING_KIND,sgad[3],^ng,^t);

    ng := NewGadget(19,64,200,14,
                    NIL,MyTattr,
                    5,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[5]);
    sgad[5] := CreateGadgetA(STRING_KIND,sgad[4],^ng,^t);

    ng := NewGadget(19,78,200,14,
                    NIL,MyTattr,
                    6,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[6]);
    sgad[6] := CreateGadgetA(STRING_KIND,sgad[5],^ng,^t);

    ng := NewGadget(19,92,200,14,
                    NIL,MyTattr,
                    7,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[7]);
    sgad[7] := CreateGadgetA(STRING_KIND,sgad[6],^ng,^t);

    ng := NewGadget(19,106,200,14,
                    NIL,MyTattr,
                    8,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[8]);
    sgad[8] := CreateGadgetA(STRING_KIND,sgad[7],^ng,^t);

    ng := NewGadget(19,120,200,14,
                    NIL,MyTattr,
                    9,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[9]);
    sgad[9] := CreateGadgetA(STRING_KIND,sgad[8],^ng,^t);

    ng := NewGadget(19,134,200,14,
                    NIL,MyTattr,
                    10,0,
                    vi,NIL);
    SensitivGadget(ng);
    t[1].ti_Data := LONG(^buf[10]);
    sgad[10] := CreateGadgetA(STRING_KIND,sgad[9],^ng,^t);

    ng := NewGadget(8,155,100,14,
                    "_Benutzen",Mytattr,
                    11,PLACETEXT_IN,
                    vi,NIL);
    SensitivGadget(ng);
    t[1] := TagItem(GT_Underscore,LONG("_"));
    t[2].ti_Tag := TAG_DONE;
    sgad[11] := CreateGadgetA(BUTTON_KIND,sgad[10],^ng,^t);
    ng := NewGadget(128,155,100,14,
                    "_Abbrechen",MyTattr,
                    12,PLACETEXT_IN,
                    vi,NIL);
    SensitivGadget(ng);
    sgad[12] := CreateGadgetA(BUTTON_KIND,sgad[11],^ng,^t);
{    t[1] := TagItem(WA_Gadgets,LONG(gl2));}
    t[1] := TagItem(WA_InnerWidth,ww);
    t[2] := TagItem(WA_InnerHeight,wh);
    t[3] := TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_ACTIVATE+WFLG_DEPTHGADGET+
                    WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH+WFLG_DRAGBAR);
    t[4] := TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_RAWKEY);
    t[5].ti_Tag := WA_Title;
    t[5].ti_Data := "AddiPro - SelectTexte";
    t[6]:=TagItem(WA_Left,selectwinleft);
    t[7]:=TagItem(WA_Top,selectwintop);
    t[8].ti_Tag := TAG_DONE;
    IF pubname <> "" THEN
    BEGIN
      t[8] := TagItem(WA_PubScreenFallBack, 1);
      t[9] := TagItem(WA_PubScreenName, LONG(pubname));
      t[10].ti_Tag := TAG_DONE;
    END;

    wp2 := OpenWindowTagList(NIL,^t);
    IF wp2<>NIL THEN
    BEGIN
      raster(wp2,0,1,st_width,st_height);
      clearq(wp2,8,4,221,147);  
      Rahmen(wp2,8,4,221,148,TRUE);
      l:=addglist(wp2,gl2,0,-1,NIL);
      RefreshGlist(wp2^.firstgadget,wp2,NIL,-1);
      dummy := ActivateGadget(sgad[1],wp2,NIL);
      dummy := FALSE;
      abbruch := FALSE;
      REPEAT
        GetMessage(wp2,class,code,qual,GadNum);
        CASE class OF
          IDCMP_CLOSEWINDOW : dummy := TRUE;
          IDCMP_RAWKEY :
            IF qual IN [32768..32770,32772] THEN
            BEGIN
              CASE code OF
             32,69 : BEGIN
                       ButSelecter(wp2,sgad[12]);
                       dummy := TRUE;  abbruch := TRUE;
                     END;
                53 : BEGIN
                       ButSelecter(wp2,sgad[11]);
                       dummy := TRUE;
                     END;
              ELSE
              END;
            END;
          IDCMP_GADGETUP:
            CASE GadNum OF
              1..9 : ok := ActivateGadget(sgad[GadNum+1],wp2,NIL);
              11 : dummy := TRUE;
              12 : BEGIN
                     abbruch := TRUE;
                     dummy := TRUE;
                   END;
            ELSE END;
        ELSE END;
      UNTIL dummy;
      IF abbruch = FALSE THEN
      BEGIN
        FOR i := 1 TO 10 DO
        BEGIN
          SelectTexte[i] := GetString(sgad[i]);
        END;
      END;
      selectwinleft:=wp2^.leftedge;
      selectwintop:=wp2^.topedge;
      err := RemoveGList(wp2,wp2^.FirstGadget,-1);
      Fenster_Zu(wp2);
    END ELSE DisplayBeep(NIL);
    FreeGadgets(gl2);
    ComputeFont(vorx,vory);
  END;

PROCEDURE zustandholen;
 BEGIN
  IF (vgad[6]^.flags AND SELECTED)=SELECTED THEN iconsave:=TRUE ELSE iconsave:=FALSE;
  IF (vgad[7]^.flags AND SELECTED)=SELECTED THEN autoload:=TRUE ELSE autoload:=FALSE;
 END;

BEGIN
  ComputeFont(vorx,vory);
  ww := ComputeX(vorx);
  wh := ComputeY(vory);
  gl1 := NIL;
  gl1 := CreateContext(^gl1);

  ng := NewGadget(19,7,150,14,
                  "_Select-Texte...",mytattr,
                  1,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  t[1] := TagItem(GT_Underscore,LONG("_"));
  t[2].ti_Tag := TAG_DONE;
  vgad[1] := CreateGadgetA(BUTTON_KIND,gl1,^ng,^t);

  ng := NewGadget(184,7,150,14,
                  "S_uchpfade...",mytattr,
                  2,PLACETEXT_IN,
                  vi,NIL);
  sensitivgadget(ng);
  vgad[2] := CreateGadgetA(BUTTON_KIND,vgad[1],^ng,^t);
                  
  ng := NewGadget(8,41,100,12,
                  "S_peichern",mytattr,
                  3,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  t[2].ti_Tag := TAG_DONE;

  vgad[3] := CreateGadgetA(BUTTON_KIND,vgad[2],^ng,^t);

  ng := NewGadget(124,41,100,12,
                  "_Benutzen",mytattr,
                  4,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  vgad[4] := CreateGadgetA(BUTTON_KIND,vgad[3],^ng,^t);

  ng := NewGadget(245,41,100,12,
                  "_Abbrechen",mytattr,
                  5,PLACETEXT_IN,
                  vi,NIL);
  SensitivGadget(ng);
  vgad[5] := CreateGadgetA(BUTTON_KIND,vgad[4],^Ng,^t);


  ng := NewGadget(19,24,40,CHECKBOX_HEIGHT,
                  "_Iconsave",mytattr,
                  6,PLACETEXT_RIGHT,
                  vi,NIL);
  SensitivGadget(ng);
  t[2]:=TagItem(GTCB_SCALED,LONG(TRUE));
  t[3]:=TagItem(GA_DISABLED,0);
  t[5].ti_Tag := TAG_DONE;
  IF iconsave THEN t[4]:=tagitem(GTCB_CHECKED,LONG(TRUE)) ELSE 
                                 t[4].ti_Tag := TAG_DONE;
  vgad[6] := CreateGadgetA(CHECKBOX_KIND,vgad[5],^ng,^t);

  ng := NewGadget(184,24,40,CHECKBOX_HEIGHT,
                  "Auto_laden",mytattr,
                  7,PLACETEXT_RIGHT,
                  vi,NIL);
  SensitivGadget(ng);
  IF autoload THEN t[3]:=tagitem(GTCB_CHECKED,LONG(TRUE)) ELSE 
                                 t[3].ti_Tag := TAG_DONE;
  t[4].ti_Tag := TAG_DONE;									
  vgad[7] := CreateGadgetA(CHECKBOX_KIND,vgad[6],^ng,^t);



  t[1] := TagItem(WA_InnerWidth, ww);
  t[2] := TagItem(WA_InnerHeight, wh);
  t[3] := TagItem(WA_Flags,WFLG_CLOSEGADGET+WFLG_ACTIVATE+WFLG_DEPTHGADGET+
                  WFLG_DRAGBAR+WFLG_SMART_REFRESH+WFLG_NOCAREREFRESH);
  t[4] := TagItem(WA_Idcmp,IDCMP_CLOSEWINDOW+IDCMP_GADGETUP+IDCMP_RAWKEY);
  t[5].ti_Tag := WA_Title;
  t[5].ti_Data := "AddiPro - Voreinstellungen";
{  t[6] := TagItem(WA_Gadgets,LONG(gl1));}
  t[6] := tagItem(WA_left,einstellwinleft);
  t[7] := TagItem(WA_Top,einstellwintop);
  t[8].ti_Tag := TAG_DONE;
  IF pubname <> "" THEN
  BEGIN
    t[8] := TagItem(WA_PubScreenFallBack, 1);
    t[9] := TagItem(WA_PubScreenName, LONG(pubname));
    t[10].ti_Tag := TAG_DONE;
  END;

  wp1 := OpenWindowTagList(NIL,^t);
  IF wp1 <> NIL THEN
  BEGIN
    raster(wp1,0,1,353,54);
    clearq(wp1,8,4,337,33);
    Rahmen(wp1,8,4,337,34,TRUE);
    l:=addglist(wp1,gl1,0,-1,NIL);
    RefreshGlist(wp1^.firstgadget,wp1,NIL,-1);
    dummy := FALSE;
    REPEAT
      GetMessage(wp1,class,code,qual,GadNum);
      CASE class OF
        IDCMP_CLOSEWINDOW : dummy := TRUE;
        IDCMP_RAWKEY :
          CASE code OF
              { a, A, Esc }
              32,69  : BEGIN
                      ButSelecter(wp1,vgad[5]);
                      dummy := TRUE;
                    END;
              { b, B }
              53 : BEGIN
                      si := vgad[2]^.SpecialInfo;
                      DruckerAusgabe := si^.Buffer;
                      dummy := TRUE;           
                      zustandholen;
                      ButSelecter(wp1,vgad[4]);
                    END;                      
              { p, P }
              25  : BEGIN
                      ButSelecter(wp1,vgad[3]);
                      zustandholen;
                      SavePrefs;
                      dummy := TRUE;
                    END;
              { u, U }
              22  : BEGIN                                                
                     Butselecter(wp1,vgad[2]);
                     SetBusyWindow(wp1,VEinstellReq);
                     suchpfade;
                     UnBusyWindow(wp1,VeinstellReq);
                    END; 
              { s, S }
              33 : BEGIN
                      ButSelecter(wp1,vgad[1]);
                      SetBusyWindow(wp1,VEinstellReq);
                      SelTexte;
                      UnBusyWindow(wp1,VeinstellReq);
                    END;
              {i,I}
              23 : BEGIN
                    checkit(wp1,vgad[6]);
                   END;
              {l,L}
              40 : BEGIN
                    checkit(wp1,vgad[7]);
                   END;
            ELSE END;
        IDCMP_GADGETUP:
          CASE GadNum OF
            1 : BEGIN
                  SetBusyWindow(wp1,VEinstellReq);
                  SelTexte;
                  UnBusyWindow(wp1,VEinstellReq);
                END;
            2 : BEGIN
                 UnBusyWindow(wp1,VEinstellReq);
                 SuchPfade;
                 UnBusyWindow(wp1,VEinstellReq);
                END;
            3 : BEGIN
                 zustandholen;
                 SavePrefs;
                 dummy:=TRUE;
                END;
            4 : BEGIN
                 dummy:=TRUE;
                 zustandholen;
                END;
            5 : dummy := TRUE;
          ELSE END;
      ELSE END;
    UNTIL dummy;
    einstellwinleft:=wp1^.leftedge;
    einstellwintop:=wp1^.topedge;
    err := RemoveGList(wp1,wp1^.FirstGadget,-1);
    Fenster_Zu(wp1);
  END;
  FreeGadgets(gl1);
  computefont(Mainwinwidth,mainwinheight);
END;

{$endif}�