/* prf_swd.c */
/* V1.1 9-3-92 */

#include "prf.h"


struct TextAttr topaz8 = {
    ( STRPTR )"topaz.font", 8, 0x00, 0x01 };

struct TagItem    SwdTags[] = {
    WA_Left,          10,
    WA_Top,           15,
    WA_Width,         338,
    WA_Height,        180,
    WA_IDCMP,         IDCMP_MOUSEBUTTONS|IDCMP_MOUSEMOVE|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
    WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
    WA_Gadgets,       0l,
    WA_Title,         (ULONG)SWD_TITLE,
    WA_ScreenTitle,   (ULONG)SCREEN_TITLE,
    WA_MinWidth,      67,
    WA_MinHeight,     21,
    WA_MaxWidth,      640,
    WA_MaxHeight,     256,
    WA_AutoAdjust,    1l,
    TAG_DONE };

long OpenSwd(struct prf_info *info)
{
    struct NewGadget     ng;
    struct Gadget       *g;
    if(info->Swd) return (1L);
    if ( NOT( g = CreateContext( &info->SGlist ))) return( 0L );
    ng.ng_LeftEdge        =    6;
    ng.ng_TopEdge         =    info->BarHeight + 2;
    ng.ng_Width           =    100;
    ng.ng_Height          =    17;
    ng.ng_GadgetText      =    GAD_PwdButton;
    ng.ng_TextAttr        =    &topaz8;
    ng.ng_GadgetID        =    GD_PwdButton;
    ng.ng_Flags           =    PLACETEXT_IN;
    ng.ng_VisualInfo      =    info->VisualInfo;

    g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 0 ] = g;

    ng.ng_LeftEdge        =    232;
    ng.ng_GadgetText      =    GAD_About;
    ng.ng_GadgetID        =    GD_About;

    g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 1 ] = g;

    ng.ng_LeftEdge        =    102;
    ng.ng_TopEdge         =    info->BarHeight + 22;
    ng.ng_Width           =    230;
    ng.ng_Height          =    16;
    ng.ng_GadgetText      =    GAD_Headline;
    ng.ng_GadgetID        =    GD_Headline;
    ng.ng_Flags           =    PLACETEXT_LEFT;

    g = CreateGadget( STRING_KIND, g, &ng, GTST_String,info->Headline,GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 2 ] = g;

    ng.ng_TopEdge         =    info->BarHeight + 38;
    ng.ng_GadgetText      =    GAD_Footline;
    ng.ng_GadgetID        =    GD_Footline;

    g = CreateGadget( STRING_KIND, g, &ng, GTST_String,info->Footline,GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 3 ] = g;

    ng.ng_LeftEdge        =    6;
    ng.ng_TopEdge         =    info->BarHeight + 56;
    ng.ng_GadgetText      =    GAD_Date;
    ng.ng_GadgetID        =    GD_Date;
    ng.ng_Flags           =    PLACETEXT_RIGHT;

    g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 4 ] = g;

    ng.ng_LeftEdge        =    102;
    ng.ng_GadgetText      =    GAD_Time;
    ng.ng_GadgetID        =    GD_Time;

    g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 5 ] = g;

    ng.ng_LeftEdge        =    175;
    ng.ng_GadgetText      =    GAD_Filename;
    ng.ng_GadgetID        =    GD_Filename;

    g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 6 ] = g;

    ng.ng_LeftEdge        =    6;
    ng.ng_TopEdge         =    info->BarHeight + 70;
    ng.ng_GadgetText      =    GAD_Pagenumber;
    ng.ng_GadgetID        =    GD_Pagenumber;

    g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 7 ] = g;

    ng.ng_LeftEdge        =    175;
    ng.ng_GadgetText      =    GAD_Linenumber;
    ng.ng_GadgetID        =    GD_Linenumber;

    g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 8 ] = g;

    ng.ng_LeftEdge        =    6;
    ng.ng_TopEdge         =    info->BarHeight + 82;
    ng.ng_GadgetText      =    GAD_CRLF;
    ng.ng_GadgetID        =    GD_CRLF;

    g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 9 ] = g;

    ng.ng_LeftEdge        =    175;
    ng.ng_GadgetText      =    GAD_FF;
    ng.ng_GadgetID        =    GD_FF;

    g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 10 ] = g;

    ng.ng_Width           =    323;
    ng.ng_Height          =    15;
    ng.ng_GadgetText      =    0l;
    ng.ng_GadgetID        =    GD_Gadget11;
    ng.ng_Flags           =    0;

    g = CreateGadget( STRING_KIND, g,&ng,GTST_String,info->Insertline, GTST_MaxChars, 256, TAG_DONE );

    info->SGadgets[ 11 ] = g;

    ng.ng_LeftEdge        =    6;
    ng.ng_TopEdge         =    info->BarHeight + 94;
    ng.ng_Height          =    48;
    ng.ng_GadgetText      =    0l;
    ng.ng_GadgetID        =    GD_List;

    g = CreateGadget( LISTVIEW_KIND, g, &ng,GTLV_Labels,&info->FileList, GTLV_ShowSelected, info->SGadgets[11], TAG_DONE );

    info->SGadgets[ 12 ] = g;

    ng.ng_LeftEdge        =    6;
    ng.ng_TopEdge         =    info->BarHeight + 146;
    ng.ng_Width           =    148;
    ng.ng_Height          =    14;
    ng.ng_GadgetText      =    GAD_Filereq;
    ng.ng_GadgetID        =    GD_Filereq;
    ng.ng_Flags           =    PLACETEXT_IN;

    g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 13 ] = g;

    ng.ng_LeftEdge        =    181;
    ng.ng_GadgetText      =    GAD_Remove;
    ng.ng_GadgetID        =    GD_Remove;

    g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 14 ] = g;

    ng.ng_LeftEdge        =    6;
    ng.ng_TopEdge         =    info->BarHeight + 162;
    ng.ng_GadgetText      =    GAD_Print;
    ng.ng_GadgetID        =    GD_Print;

    g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 15 ] = g;

    ng.ng_LeftEdge        =    182;
    ng.ng_GadgetText      =    GAD_quit;
    ng.ng_GadgetID        =    GD_quit;

    g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );

    info->SGadgets[ 16 ] = g;

    if ( NOT g ) return(0L);

    SwdTags[ 6 ].ti_Data = (ULONG)info->SGlist;

    if ( NOT( info->Swd = OpenWindowTagList( 0l,SwdTags )))
        return(0L);

    GT_RefreshWindow( info->Swd,0l);
    SetPrfSignals(info);
    RefreshSwd(info);
    return( 1L );
}

void CloseSwd(struct prf_info *info)
{
 if (info->Swd)
 {
  SwdTags[0].ti_Data = (ULONG)info->Swd->LeftEdge;
  SwdTags[1].ti_Data = (ULONG)info->Swd->TopEdge;
  CloseWindow(info->Swd);
  info->Swd = NULL;
 }
 if(info->SGlist)
 {
  FreeGadgets(info->SGlist);
  info->SGlist = NULL;
 }
 SetPrfSignals(info);
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */


UBYTE         *QualityLabels[] = {
    GAD_Quality1,
    GAD_Quality2,
    0l };

UBYTE         *PitchLabels[] = {
    GAD_Pitch1,
    GAD_Pitch2,
    0L};

UBYTE         *cpiLabels[] = {
    GAD_CPI10,
    GAD_CPI12,
    GAD_CPI15,
    0l };

struct TagItem    PwdTags[] = {
    WA_Left,          261,
    WA_Top,           11,
    WA_Width,         368,
    WA_Height,        100,
    WA_IDCMP,         IDCMP_VANILLAKEY|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
    WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
    WA_Gadgets,       0l,
    WA_Title,         (ULONG)PWD_TITLE,
    WA_ScreenTitle,   (ULONG)SCREEN_TITLE,
    WA_MinWidth,      67,
    WA_MinHeight,     21,
    WA_MaxWidth,      640,
    WA_MaxHeight,     256,
    WA_AutoAdjust,    1l,
    TAG_DONE };


long OpenPwd(struct prf_info *info)
{
    struct NewGadget     ng;
    struct Gadget       *g;
    if(info->Pwd) return (1L);

    if ( NOT( g = CreateContext( &info->PGlist )))
        return(0L);
    ng.ng_LeftEdge        =    19;
    ng.ng_TopEdge         =    info->BarHeight + 2;
    ng.ng_Width           =    17;
    ng.ng_Height          =    9;
    ng.ng_GadgetText      =    0l;
    ng.ng_TextAttr        =    &topaz8;
    ng.ng_GadgetID        =    GD_Quality;
    ng.ng_Flags           =    PLACETEXT_RIGHT;
    ng.ng_VisualInfo      =    info->VisualInfo;

    g = CreateGadget( MX_KIND, g, &ng, GTMX_Labels, QualityLabels, GT_Underscore, '_', TAG_DONE );

    info->PGadgets[ 0 ] = g;

    ng.ng_LeftEdge        =    187;
    ng.ng_GadgetText      =    0l;
    ng.ng_GadgetID        =    GD_Pitch;

    g = CreateGadget( MX_KIND, g, &ng, GTMX_Labels, PitchLabels, GT_Underscore, '_', TAG_DONE );

    info->PGadgets[ 1 ] = g;

    ng.ng_LeftEdge        =    20;
    ng.ng_TopEdge         =    info->BarHeight + 22;
    ng.ng_Width           =    54;
    ng.ng_Height          =    15;
    ng.ng_GadgetText      =    GAD_Linesperpage;
    ng.ng_GadgetID        =    GD_Linesperpage;

    g = CreateGadget( INTEGER_KIND, g, &ng, GTIN_Number, info->Lines, GTIN_MaxChars, 3, TAG_DONE );

    info->PGadgets[ 2 ] = g;

    ng.ng_LeftEdge        =    188;
    ng.ng_TopEdge         =    info->BarHeight + 22;
    ng.ng_GadgetText      =    0l;
    ng.ng_GadgetID        =    GD_cpi;

    g = CreateGadget( MX_KIND, g, &ng, GTMX_Labels, cpiLabels, GT_Underscore, '_', TAG_DONE );

    info->PGadgets[ 3 ] = g;

    ng.ng_LeftEdge        =    21;
    ng.ng_TopEdge         =    info->BarHeight + 54;
    ng.ng_Width           =    54;
    ng.ng_Height          =    15;
    ng.ng_GadgetText      =    GAD_Lmargin;
    ng.ng_GadgetID        =    GD_Lmargin;

    g = CreateGadget( INTEGER_KIND, g, &ng, GTIN_Number, info->Lmargin, GTIN_MaxChars, 3, TAG_DONE );

    info->PGadgets[ 4 ] = g;

    ng.ng_LeftEdge        =    189;
    ng.ng_TopEdge         =    info->BarHeight + 54;
    ng.ng_GadgetText      =    GAD_Rmargin;
    ng.ng_GadgetID        =    GD_Rmargin;

    g = CreateGadget( INTEGER_KIND, g, &ng, GTIN_Number, info->Rmargin, GTIN_MaxChars, 3, TAG_DONE );

    info->PGadgets[ 5 ] = g;

    ng.ng_LeftEdge        =    23;
    ng.ng_TopEdge         =    info->BarHeight + 76;
    ng.ng_Width           =    150;
    ng.ng_Height          =    16;
    ng.ng_GadgetText      =    GAD_Saveprefs;
    ng.ng_GadgetID        =    GD_Saveprefs;
    ng.ng_Flags           =    PLACETEXT_IN;

    g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

    info->PGadgets[ 6 ] = g;

    ng.ng_LeftEdge        =    190;
    ng.ng_TopEdge         =    info->BarHeight + 76;
    ng.ng_GadgetText      =    GAD_PPrint;
    ng.ng_GadgetID        =    GD_PPrint;

    g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore , '_',TAG_DONE );

    info->PGadgets[ 7 ] = g;


    if ( NOT g )
        return( 0L );

    PwdTags[ 6 ].ti_Data = (ULONG)info->PGlist;

    if ( NOT( info->Pwd = OpenWindowTagList( 0l, PwdTags )))
        return( 0L );

    GT_RefreshWindow( info->Pwd, 0l );
    SetPrfSignals(info);
    RefreshPwd(info);
    return(1L);
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
void ClosePwd(struct prf_info *info)
{
 if (info->Pwd)
 {
  PwdTags[0].ti_Data = (ULONG)info->Pwd->LeftEdge;
  PwdTags[1].ti_Data = (ULONG)info->Pwd->TopEdge;
  CloseWindow(info->Pwd);
  info->Pwd = NULL;
 }
 if(info->PGlist)
 {
  FreeGadgets(info->PGlist);
  info->PGlist = NULL;
 }
 SetPrfSignals(info);
}

void RefreshPwd(struct prf_info *info)
{
 if(info->Pwd)
 {
  DoCommand(info,info->flags & FLAG_DRAFT ? CMD_DRAFT :
                 info->flags & FLAG_LQ    ? CMD_LQ    : CMD_NEUTRAL);
  DoCommand(info,info->flags & FLAG_PITCH6 ? CMD_PITCH6 :
                 info->flags & FLAG_PITCH8 ? CMD_PITCH8 : CMD_NEUTRAL);
  DoCommand(info,info->flags & FLAG_10CPI ? CMD_10CPI :
                info->flags & FLAG_12CPI ? CMD_12CPI :
                 info->flags & FLAG_15CPI ? CMD_15CPI : CMD_NEUTRAL);
  GT_SetGadgetAttrs(info->PGadgets[GD_Rmargin - PGD],info->Pwd,NULL,GTIN_Number,info->Rmargin,TAG_DONE);
  GT_SetGadgetAttrs(info->PGadgets[GD_Lmargin - PGD],info->Pwd,NULL,GTIN_Number,info->Lmargin,TAG_DONE);
  GT_SetGadgetAttrs(info->PGadgets[GD_Linesperpage - PGD],info->Pwd,NULL,GTIN_Number,info->Lines,TAG_DONE);
  if(info->flags & FLAG_PRINT)
   GT_SetGadgetAttrs(info->PGadgets[GD_PPrint - PGD],info->Pwd,NULL,GA_Disabled,TRUE,TAG_DONE);
 }
}

void RefreshSwd(struct prf_info *info)
{
 if(info->Swd)
 {
  GT_SetGadgetAttrs(info->SGadgets[GD_Headline],info->Swd,NULL,GTST_String,info->Headline,TAG_DONE);
  GT_SetGadgetAttrs(info->SGadgets[GD_Footline],info->Swd,NULL,GTST_String,info->Footline,TAG_DONE);
  if(info->flags & FLAG_PAGE)
   GT_SetGadgetAttrs(info->SGadgets[GD_Pagenumber],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  else
   GT_SetGadgetAttrs(info->SGadgets[GD_Pagenumber],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  if(info->flags & FLAG_LINE)
   GT_SetGadgetAttrs(info->SGadgets[GD_Linenumber],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  else
   GT_SetGadgetAttrs(info->SGadgets[GD_Linenumber],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  if(info->flags & FLAG_CRLF)
   GT_SetGadgetAttrs(info->SGadgets[GD_CRLF],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  else
   GT_SetGadgetAttrs(info->SGadgets[GD_CRLF],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  if(info->flags & FLAG_FF)
   GT_SetGadgetAttrs(info->SGadgets[GD_FF],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  else
   GT_SetGadgetAttrs(info->SGadgets[GD_FF],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  if(info->flags & FLAG_DATE)
   GT_SetGadgetAttrs(info->SGadgets[GD_Date],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  else
   GT_SetGadgetAttrs(info->SGadgets[GD_Date],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  if(info->flags & FLAG_TIME)
   GT_SetGadgetAttrs(info->SGadgets[GD_Time],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  else
   GT_SetGadgetAttrs(info->SGadgets[GD_Time],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  if(info->flags & FLAG_FILE)
   GT_SetGadgetAttrs(info->SGadgets[GD_Filename],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  else
   GT_SetGadgetAttrs(info->SGadgets[GD_Filename],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  if(info->flags & FLAG_PRINT)
   GT_SetGadgetAttrs(info->SGadgets[GD_Print],info->Swd,NULL,GA_Disabled,TRUE,TAG_DONE);
  AttachList(info);
 }
}

