/*
 *  Source generated with GadToolsBox V1.3
 *  which is (c) Copyright 1991,92 Jaba Development
 *
 *  "DVIPrintSetUp_gad.c" generiert am 28. Juli 1992
 *  Da leider die Definitionsdatei "DVIPrintSetUp_gad.g" verloren
 *  gegangen ist, kann die Oberfl"ache nur noch per Hand editiert werden.
 */

#include <exec/types.h>
#include <exec/memory.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <string.h>

#include "DVIPrintSetUp_gad.h"

extern int Printer;
extern char HOffset[];
extern char VOffset[];
extern long int From;
extern long int To;
extern int hunitcount;
extern int vunitcount;
extern int pagemode;
extern BOOL IffOutput;
extern BOOL Landscaped;
extern BOOL FastPrint;
extern BOOL Optimize;
extern BOOL Unidirect;
extern BOOL SkipFF;
extern BOOL NoLogfile;
extern BOOL DraftMode;
extern BOOL Reverse;
extern BOOL Preload;
extern char *OutTo;

struct Screen        *Scr = NULL;
APTR                  VisualInfo = NULL;
struct Window        *DVIPrintSetUpWnd = NULL;
struct Window        *HelpWnd = NULL;
struct Gadget        *DVIPrintSetUpGList = NULL;
struct Gadget        *HelpGList = NULL;
struct Gadget        *DVIPrintSetUpGadgets[22];
struct Gadget        *HelpGadgets[1];
extern Class         *initGet( void );
Class                *getClass = NULL;
Object               *getImage = NULL;
UWORD                 DVIPrintSetUpLeft = 25;
UWORD                 DVIPrintSetUpTop = 12;
UWORD                 DVIPrintSetUpWidth = 320;
UWORD                 DVIPrintSetUpHeight = 189;
UWORD                 HelpLeft;
UWORD                 HelpTop;
UWORD                 HelpWidth = 301;
UWORD                 HelpHeight = 146;
UBYTE                *DVIPrintSetUpWdt = (UBYTE *)"DVIprint Setup";
UBYTE                *HelpWdt = (UBYTE *)"Hilfe";

UBYTE         *UnitLabels[] = {
    (UBYTE *)"in",
    (UBYTE *)"cm",
    (UBYTE *)"mm",
    (UBYTE *)"pt",
    (UBYTE *)"pc",
    (UBYTE *)"dd",
    (UBYTE *)"cc",
    (UBYTE *)"bp",
    (UBYTE *)"mi",
    (UBYTE *)"cp",
    NULL };

UBYTE         *Pages0Labels[] = {
    (UBYTE *)"All",
    (UBYTE *)"Even",
    (UBYTE *)"Odd",
    NULL };

extern struct MinList Printer0List;

struct Node    Printer0Nodes[] = {
    &Printer0Nodes[1], ( struct Node * )&Printer0List.mlh_Head, 0, 0, "NECP6",
    &Printer0Nodes[2], &Printer0Nodes[0], 0, 0, "NECP6c",
    &Printer0Nodes[3], &Printer0Nodes[1], 0, 0, "NECP7",
    &Printer0Nodes[4], &Printer0Nodes[2], 0, 0, "FX",
    &Printer0Nodes[5], &Printer0Nodes[3], 0, 0, "FXc",
    &Printer0Nodes[6], &Printer0Nodes[4], 0, 0, "LQ",
    &Printer0Nodes[7], &Printer0Nodes[5], 0, 0, "LQd",
    &Printer0Nodes[8], &Printer0Nodes[6], 0, 0, "DeskJet",
    &Printer0Nodes[9], &Printer0Nodes[7], 0, 0, "CheapDJ",
    &Printer0Nodes[10], &Printer0Nodes[8], 0, 0, "LaserJet",
    &Printer0Nodes[11], &Printer0Nodes[9], 0, 0, "FujitsuDL1100",
    ( struct Node * )&Printer0List.mlh_Tail, &Printer0Nodes[10], 0, 0, "generic" };

struct MinList Printer0List = {
    ( struct MinNode * )&Printer0Nodes[0], ( struct MinNode * )NULL, ( struct MinNode * )&Printer0Nodes[4] };

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

struct IntuiText  DVIPrintSetUpIText[] = {
    2, 0, JAM1, 200, 2, &topaz8, (UBYTE *)"Offset", NULL };

int SetupScreen( void )
{
    if ( ! ( Scr = LockPubScreen( "ShowDVI-PubScr" )))
        if ( ! ( Scr = LockPubScreen( NULL )))
           return( 1L );

    if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
        return( 2L );

    if ( ! ( getClass = initGet()))
        return( 3L );

    if ( ! ( getImage = NewObject( getClass, NULL, GT_VisualInfo, VisualInfo, TAG_DONE )))
        return( 4L );

    return( 0L );
}

void CloseDownScreen( void )
{
    if ( getImage   ) {
        DisposeObject( getImage );
        getImage = NULL;
    }

    if ( getClass   ) {
        FreeClass( getClass );
        getClass = NULL;
    }

    if ( VisualInfo ) {
        FreeVisualInfo( VisualInfo );
        VisualInfo = NULL;
    }

    if ( Scr        ) {
        UnlockPubScreen( NULL, Scr );
        Scr = NULL;
    }
}

void DVIPrintSetUpRender( void )
{
    UWORD        offx, offy;

    offx = DVIPrintSetUpWnd->BorderLeft;
    offy = DVIPrintSetUpWnd->BorderTop;

    PrintIText( DVIPrintSetUpWnd->RPort, DVIPrintSetUpIText, offx, offy );
}

int OpenDVIPrintSetUpWindow( void )
{
    struct NewGadget     ng;
    struct Gadget       *g;
    UWORD               offx, offy;

    offx = Scr->WBorLeft;
    offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;

    if ( ! ( g = CreateContext( &DVIPrintSetUpGList )))
        return( 1L );

    ng.ng_LeftEdge        =    offx + 16;
    ng.ng_TopEdge         =    offy + 14;
    ng.ng_Width           =    124;
    ng.ng_Height          =    40;
    ng.ng_GadgetText      =    (UBYTE *)"Printer";
    ng.ng_TextAttr        =    &topaz8;
    ng.ng_GadgetID        =    GD_Printer;
    ng.ng_Flags           =    PLACETEXT_ABOVE|NG_HIGHLABEL;
    ng.ng_VisualInfo      =    VisualInfo;

    g = CreateGadget( LISTVIEW_KIND, g, &ng, GTLV_Labels, &Printer0List, GTLV_ShowSelected, NULL, GTLV_Selected, Printer, GTLV_Top, Printer,TAG_DONE );

    DVIPrintSetUpGadgets[ 0 ] = g;

    ng.ng_LeftEdge        =    offx + 199;
    ng.ng_Width           =    100;
    ng.ng_Height          =    13;
    ng.ng_GadgetText      =    (UBYTE *)"_horiz";
    ng.ng_GadgetID        =    GD_HOffset;
    ng.ng_Flags           =    PLACETEXT_LEFT;

    g = CreateGadget( STRING_KIND, g, &ng, GTST_String, HOffset, GTST_MaxChars, 10, GT_Underscore, '_', STRINGA_ExitHelp, TRUE, TAG_DONE );

    DVIPrintSetUpGadgets[ 1 ] = g;

    ng.ng_TopEdge         =    offy + 30;
    ng.ng_GadgetText      =    (UBYTE *)"_vert";
    ng.ng_GadgetID        =    GD_VOffset;

    g = CreateGadget( STRING_KIND, g, &ng, GTST_String, VOffset, GTST_MaxChars, 10, GT_Underscore, '_', STRINGA_ExitHelp, TRUE, TAG_DONE );

    DVIPrintSetUpGadgets[ 2 ] = g;

    ng.ng_LeftEdge        =    offx + 137;
    ng.ng_TopEdge         =    offy + 62;
    ng.ng_Width           =    76;
    ng.ng_GadgetText      =    (UBYTE *)"_From";
    ng.ng_GadgetID        =    GD_From;
    ng.ng_Flags           =    PLACETEXT_ABOVE;

    g = CreateGadget( INTEGER_KIND, g, &ng, GTIN_Number, From, GTIN_MaxChars, 8, GT_Underscore, '_', STRINGA_ExitHelp, TRUE, TAG_DONE );

    DVIPrintSetUpGadgets[ 3 ] = g;

    ng.ng_LeftEdge        =    offx + 223;
    ng.ng_GadgetText      =    (UBYTE *)"_To";
    ng.ng_GadgetID        =    GD_To;

    g = CreateGadget( INTEGER_KIND, g, &ng, GTIN_Number, To, GTIN_MaxChars, 8, GT_Underscore, '_', STRINGA_ExitHelp, TRUE, TAG_DONE );

    DVIPrintSetUpGadgets[ 4 ] = g;

    ng.ng_LeftEdge        =    offx + 66;
    ng.ng_Width           =    61;
    ng.ng_GadgetText      =    (UBYTE *)"Pr_int";
    ng.ng_GadgetID        =    GD_Pages;
    ng.ng_Flags           =    PLACETEXT_LEFT|NG_HIGHLABEL;

    g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, &Pages0Labels[0], GTCY_Active, pagemode, GT_Underscore, '_', TAG_DONE );

    DVIPrintSetUpGadgets[ 5 ] = g;

    ng.ng_LeftEdge        =    offx + 161;
    ng.ng_TopEdge         =    offy + 167;
    ng.ng_Width           =    65;
    ng.ng_Height          =    15;
    ng.ng_GadgetText      =    (UBYTE *)"_Save";
    ng.ng_GadgetID        =    GD_Save;
    ng.ng_Flags           =    PLACETEXT_IN;

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

    DVIPrintSetUpGadgets[ 6 ] = g;

    ng.ng_LeftEdge        =    offx + 88;
    ng.ng_GadgetText      =    (UBYTE *)"_Load";
    ng.ng_GadgetID        =    GD_Load;

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

    DVIPrintSetUpGadgets[ 7 ] = g;

    ng.ng_LeftEdge        =    offx + 16;
    ng.ng_GadgetText      =    (UBYTE *)"_Print";
    ng.ng_GadgetID        =    GD_Use;

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

    DVIPrintSetUpGadgets[ 8 ] = g;

    ng.ng_LeftEdge        =    offx + 234;
    ng.ng_GadgetText      =    (UBYTE *)"_Cancel";
    ng.ng_GadgetID        =    GD_Cancel;

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

    DVIPrintSetUpGadgets[ 9 ] = g;

    ng.ng_LeftEdge        =    offx + 57;
    ng.ng_TopEdge         =    offy + 145;
    ng.ng_Width           =    20;
    ng.ng_Height          =    14;
    ng.ng_GadgetText      =    NULL;
    ng.ng_GadgetID        =    GD_Outfile;
    ng.ng_Flags           =    0;

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

    DVIPrintSetUpGadgets[ 10 ] = g;

    g->Flags             |= GFLG_GADGIMAGE | GFLG_GADGHIMAGE;
    g->Activation        |= GACT_RELVERIFY;
    g->GadgetRender       = (APTR)getImage;
    g->SelectRender       = (APTR)getImage;

    ng.ng_LeftEdge        =    offx + 77;
    ng.ng_Width           =    222;
    ng.ng_Height          =    14;
    ng.ng_GadgetText      =    (UBYTE *)"_OutTo  ";
    ng.ng_GadgetID        =    GD_OutTo;
    ng.ng_Flags           =    PLACETEXT_LEFT;

    g = CreateGadget( STRING_KIND, g, &ng, GTST_String, OutTo, GTST_MaxChars, 256, GT_Underscore, '_', STRINGA_ExitHelp, TRUE, TAG_DONE );

    DVIPrintSetUpGadgets[ 11 ] = g;

    ng.ng_LeftEdge        =    offx + 16;
    ng.ng_TopEdge         =    offy + 93;
    ng.ng_GadgetText      =    (UBYTE *)"_Draft";
    ng.ng_GadgetID        =    GD_Draft;
    ng.ng_Flags           =    PLACETEXT_RIGHT;

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

    DVIPrintSetUpGadgets[ 12 ] = g;

    ng.ng_TopEdge         =    offy + 115;
    ng.ng_GadgetText      =    (UBYTE *)"_IFF output";
    ng.ng_GadgetID        =    GD_Iff;

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

    DVIPrintSetUpGadgets[ 13 ] = g;

    ng.ng_TopEdge         =    offy + 104;
    ng.ng_GadgetText      =    (UBYTE *)"Opti_mize";
    ng.ng_GadgetID        =    GD_Optimize;

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

    DVIPrintSetUpGadgets[ 14 ] = g;

    ng.ng_TopEdge         =    offy + 82;
    ng.ng_GadgetText      =    (UBYTE *)"F_ast";
    ng.ng_GadgetID        =    GD_Fast;

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

    DVIPrintSetUpGadgets[ 15 ] = g;

    ng.ng_LeftEdge        =    offx + 273;
    ng.ng_TopEdge         =    offy + 115;
    ng.ng_GadgetText      =    (UBYTE *)"Landscap_ed";
    ng.ng_GadgetID        =    GD_Landscaped;
    ng.ng_Flags           =    PLACETEXT_LEFT;

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

    DVIPrintSetUpGadgets[ 16 ] = g;

    ng.ng_TopEdge         =    offy + 82;
    ng.ng_GadgetText      =    (UBYTE *)"Preloadin_g fonts";
    ng.ng_GadgetID        =    GD_Preload;

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

    DVIPrintSetUpGadgets[ 17 ] = g;

    ng.ng_TopEdge         =    offy + 126;
    ng.ng_GadgetText      =    (UBYTE *)"_Reverse";
    ng.ng_GadgetID        =    GD_Reverse;

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

    DVIPrintSetUpGadgets[ 18 ] = g;

    ng.ng_TopEdge         =    offy + 104;
    ng.ng_GadgetText      =    (UBYTE *)"_No Logfile";
    ng.ng_GadgetID        =    GD_NoLogfile;

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

    DVIPrintSetUpGadgets[ 19 ] = g;

    ng.ng_LeftEdge        =    offx + 16;
    ng.ng_TopEdge         =    offy + 126;
    ng.ng_GadgetText      =    (UBYTE *)"S_kip FormFeed";
    ng.ng_GadgetID        =    GD_SkipFF;
    ng.ng_Flags           =    PLACETEXT_RIGHT;

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

    DVIPrintSetUpGadgets[ 20 ] = g;

    ng.ng_LeftEdge        =    offx + 273;
    ng.ng_TopEdge         =    offy + 93;
    ng.ng_GadgetText      =    (UBYTE *)"U_nidirectional";
    ng.ng_GadgetID        =    GD_Unidirect;
    ng.ng_Flags           =    PLACETEXT_LEFT;

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

    DVIPrintSetUpGadgets[ 21 ] = g;

    if ( ! g )
        return( 2L );

    if ( ! ( DVIPrintSetUpWnd = OpenWindowTags( NULL,
                    WA_Left,          DVIPrintSetUpLeft,
                    WA_Top,           DVIPrintSetUpTop,
                    WA_Width,         DVIPrintSetUpWidth,
                    WA_Height,        DVIPrintSetUpHeight + offy,
                    WA_IDCMP,         LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|INTEGERIDCMP|BUTTONIDCMP|IDCMP_GADGETUP|CHECKBOXIDCMP|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
                    WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE|WFLG_RMBTRAP,
                    WA_Gadgets,       DVIPrintSetUpGList,
                    WA_Title,         DVIPrintSetUpWdt,
                    WA_ScreenTitle,   "DVIprint Setup",
                    WA_PubScreen,     Scr,
                    TAG_DONE )))
        return( 4L );

    GT_RefreshWindow( DVIPrintSetUpWnd, NULL );

    DVIPrintSetUpRender();

    return( 0L );
}

void CloseDVIPrintSetUpWindow( void )
{
    if ( DVIPrintSetUpWnd        ) {
        CloseWindow( DVIPrintSetUpWnd );
        DVIPrintSetUpWnd = NULL;
    }

    if ( DVIPrintSetUpGList      ) {
        FreeGadgets( DVIPrintSetUpGList );
        DVIPrintSetUpGList = NULL;
    }
}

int OpenHelpWindow( void )
{
    struct NewGadget     ng;
    struct Gadget       *g;
    UWORD               offx, offy;

    offx = Scr->WBorLeft;
    offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;

    if ( ! ( g = CreateContext( &HelpGList )))
        return( 1L );

    ng.ng_LeftEdge        =    offx + 223;
    ng.ng_TopEdge         =    offy + 125;
    ng.ng_Width           =    65;
    ng.ng_Height          =    15;
    ng.ng_GadgetText      =    (UBYTE *)"_Cancel";
    ng.ng_TextAttr        =    &topaz8;
    ng.ng_GadgetID        =    GD_HelpCancel;
    ng.ng_Flags           =    PLACETEXT_IN;
    ng.ng_VisualInfo      =    VisualInfo;

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

    HelpGadgets[ 0 ] = g;

    if ( ! g )
        return( 2L );

    HelpLeft = DVIPrintSetUpWnd->LeftEdge + DVIPrintSetUpWnd->Width + 1;
    HelpTop  = DVIPrintSetUpWnd->TopEdge;

    if ( ! ( HelpWnd = OpenWindowTags( NULL,
                    WA_Left,          HelpLeft,
                    WA_Top,           HelpTop,
                    WA_Width,         HelpWidth,
                    WA_Height,        HelpHeight + offy,
                    WA_IDCMP,         IDCMP_CLOSEWINDOW|BUTTONIDCMP|IDCMP_RAWKEY|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
                    WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_RMBTRAP,
                    WA_Gadgets,       HelpGList,
                    WA_Title,         HelpWdt,
                    WA_ScreenTitle,   "DVIprint Setup Hilfe",
                    WA_PubScreen,     Scr,
                    TAG_DONE )))
        return( 4L );

    GT_RefreshWindow( HelpWnd, NULL );

    return( 0L );
}

void CloseHelpWindow( void )
{
    if ( HelpWnd        ) {
        CloseWindow( HelpWnd );
        HelpWnd = NULL;
    }

    if ( HelpGList      ) {
        FreeGadgets( HelpGList );
        HelpGList = NULL;
    }
}

