/* Application specific Window functions. */

#include "DRW/drwwh.h"
#include "DRW/drwWwinit.h"
#include "DRW/drwWxdata.h"
#include "DRW/drwReasons.h"
#include "DRW/drwWmsetup.h"
#include "DRW/drwWmcr.h"
#include "DRW/drwWitext.h"
#include "DRW/drwChoices.h"

#include "DRW/drwWcreate.h"
#include "DRW/drwWtitle.h"
#include "DRW/drwWopenW.h"

#include "DRW/drwWiinit.h"
#include "DRW/drwWiflags.h"

#include "DRW/drwUwinit.h"

#include "Create/Createh.h"


static create_app_data cd;
static char _savetype[5];


void drw_u_get_appname(char *appnamebuff,
                       int buffsize)

{

return;

}


void drw_u_get_apppurpose(char *purposenamebuff,
                          int buffsize)

{

strcpy(purposenamebuff, "DRW Skeleton App");

}


void drw_u_get_appauthor(char *authornamebuff,
                         int buffsize)

{

strcpy(authornamebuff, " DRW APR 2004");

}


void drw_u_get_appversion(char *versionbuff,
                          int buffsize)

{

return;

}


/* drw_uw_init is called from drw_wimp_initialise to do any wimp
   specific initialisation for drwapp. */


void drw_uw_init(drw_uw_data *uwd)

{

wimp_i bordericon;

uwd->appdata = (void *) &cd;

cd.dragicon = (wimp_i) -1;
cd.writeicon = (wimp_i) -1;
cd.okicon = (wimp_i) -1;

drw_wimp_copy_default_wdefn(NULL);
drw_wimp_init_vwpos(NULL, 0, 0, 314, 216);
drw_wimp_init_vwclrs(NULL,
                    (int) wimp_COLOUR_VERY_LIGHT_GREY,
                    pwnv, pwnv, pwnv, pwnv);
drw_wimp_init_stackpos(NULL, (wimp_w) -1);
drw_wimp_init_wtitle(NULL, "Save as:", NULL, 8);
drw_wimp_init_wwk_data(NULL, 0, -216, 314, 0, wimp_BUTTON_NEVER);
drw_wimp_init_winxy_and_sprrea(NULL, 0, 0, (osspriteop_area *) 1);

uwd->barwin = drw_wimp_cr_window(NULL, NULL, "", NULL, NULL, 0, NULL);

drw_wimp_set_imem_flags(TRUE, TRUE, FALSE);

drw_wimp_init_ic_flags(NULL,
                       TRUE,
                       FALSE,
                       TRUE,
                       TRUE,
                       FALSE,
                       FALSE,
                       FALSE,
                       TRUE,
                       TRUE);

drw_wimp_init_icon_only_flags(NULL,
                              TRUE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE);

drw_wimp_init_itext("",
                    "r2",
                    NULL,
                    1,
                    NULL,
                    FALSE,
                    TRUE,
                    NULL);

drw_wimp_init_iext(NULL, 8, -136, 306, -8);
drw_wimp_init_ibtype(wimp_BUTTON_NEVER, NULL);
drw_wimp_init_iesg(0, NULL);
drw_wimp_init_col_font(wimp_COLOUR_BLACK, wimp_COLOUR_LIGHT_GREY, pwnv, NULL);

bordericon = drw_wimp_cr_icon(uwd->barwin, NULL, NULL);

drw_wimp_init_ic_flags(NULL,
                       FALSE,
                       TRUE,
                       TRUE,
                       TRUE,
                       FALSE,
                       FALSE,
                       FALSE,
                       TRUE,
                       TRUE);

drw_wimp_init_itext(NULL,
                    NULL,
                    "file_fff",
                    1,
                    NULL,
                    TRUE,
                    TRUE,
                    NULL);

drw_wimp_init_iext(NULL, 118, -108, 194, -36);
drw_wimp_init_ibtype(wimp_BUTTON_CLICK_DRAG, NULL);
drw_wimp_init_iesg(0, NULL);
drw_wimp_init_col_font(wimp_COLOUR_BLACK,
                       wimp_COLOUR_VERY_LIGHT_GREY,
                       pwnv,
                       NULL);

cd.dragicon = drw_wimp_cr_icon(uwd->barwin, NULL, NULL);

drw_wimp_init_ic_flags(NULL,
                       TRUE,
                       FALSE,
                       TRUE,
                       TRUE,
                       FALSE,
                       FALSE,
                       FALSE,
                       TRUE,
                       TRUE);

drw_wimp_init_icon_only_flags(NULL,
                              TRUE,
                              TRUE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE);

drw_wimp_init_itext("Textfile",
                    "r7;Pptr_write",
                    NULL,
                    256,
                    NULL,
                    FALSE,
                    TRUE,
                    NULL);

drw_wimp_init_iext(NULL, 8, -208, 206, -144);
drw_wimp_init_ibtype(wimp_BUTTON_WRITABLE, NULL);
drw_wimp_init_iesg(0, NULL);
drw_wimp_init_col_font(wimp_COLOUR_BLACK, wimp_COLOUR_WHITE, pwnv, NULL);

cd.writeicon = drw_wimp_cr_icon(uwd->barwin, NULL, NULL);

drw_wimp_init_ic_flags(NULL,
                       TRUE,
                       FALSE,
                       TRUE,
                       TRUE,
                       FALSE,
                       FALSE,
                       FALSE,
                       TRUE,
                       TRUE);

drw_wimp_init_icon_only_flags(NULL,
                              TRUE,
                              TRUE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE,
                              FALSE);

drw_wimp_init_itext("OK",
                    "r6,3",
                    NULL,
                    3,
                    NULL,
                    FALSE,
                    TRUE,
                    NULL);

drw_wimp_init_iext(NULL, 214, -208, 306, -144);
drw_wimp_init_ibtype(wimp_BUTTON_CLICK, NULL);
drw_wimp_init_iesg(0, NULL);
drw_wimp_init_col_font(wimp_COLOUR_BLACK,
                       wimp_COLOUR_VERY_LIGHT_GREY,
                       pwnv,
                       NULL);

cd.okicon = drw_wimp_cr_icon(uwd->barwin, NULL, NULL);

}


extern int drw_uw_closedown(wimp_t taskhandle)

{

return 0;

}


extern int drw_uw_poll(void)

{

return drw_wimp_poll(DRW_NULLS_CV, NULL, FALSE);

}


extern int drw_u_pwnz(byte *addr,
                      int word)

{

return FALSE;

}


char *drw_u_savefiletype(wimp_w window, char *ftype)

{

if (window == pwd->uwd->barwin)
 {
  strcpy(_savetype, "FFF");
  if (ftype)
   {
    strcpy(ftype, _savetype);
    return ftype;
   }
  return _savetype;
 }

return NULL;

}


int drw_u_saveicon(wimp_w window,
                   wimp_i *drag,
                   wimp_i *write,
                   wimp_i *ok)

{

/* Prevent Compiler Warnings. */

if (drag)
 *drag = *drag;
if (write)
 *write = *write;
if (ok)
 *ok = *ok;

if (window == pwd->uwd->barwin)
 {
  if (drag)
   *drag = cd.dragicon;
  if (write)
   *write = cd.writeicon;
  if (ok)
   *ok = cd.okicon;
 }

return TRUE;

}


int drw_u_savedata(int myref,
                   char *filename,
                   char *leafname,
                   wimp_w window)

{

/* Return 0 if no data is saved 1 if data is saved 2 if error occured in q. */

FILE *fd;
int q;

q = 0;

if ((fd = fopen(filename, "w")))
 {
  fprintf(fd, "Saved from Create.\n");
  fclose(fd);
  q = 1;
 }

drw_wimp_closewindow(pwd->uwd->barwin);

return q;

}


void drw_u_datasave_my_ref(int my_ref, char *filename)


{

return;

}


int drw_u_loaddata(bits msgtype,
                   char *path,
                   char *leafname,
                   wimp_w whandle,
                   wimp_i iconno,
                   char *ftype,
                   bits filetype,
                   int workx,
                   int worky,
                   int dragged_seln,
                   wimp_caret *ghostcaret)

{

int action;

action = 0;

/* if (whandle == uwd->barwin && iconno == 1)
 drw_wimp_puticontext(whandle, iconno, path); */

return action;

}


extern int drw_u_dataloadack(wimp_t desttask,
                             int inmyref,
                             int inyourref,
                             wimp_w destwhan,
                             wimp_i destic,
                             int destx,
                             int desty,
                             int est_size,
                             bits filetype,
                             char *filename)

{

return FALSE;

}


void drw_u_post_loaddata(int action,
                         bits msgtype,
                         char *path,
                         char *leafname,
                         wimp_w whandle,
                         wimp_i iconno,
                         char *ftype,
                         bits filetype,
                         int workx,
                         int worky)

{

return;

}


int drw_u_quit(drw_quit_flags quittype)

{

return TRUE;

}


int drw_u_unsaved_data(void)

{

return FALSE;

}


void drw_u_recv_task_initialise(wimp_full_message_task_initialise *ftimsg)

{

return;

}


extern int  drw_u_wimpmessage(int messagenumber,
                              wimp_message *wmsg,
                              wimp_event_no reasoncode)

{

return FALSE;

}


int drw_u_qs_accept_filename(wimp_w w)

{

return TRUE;

}


/*void drw_u_set_choices_dir_data(void)

{

drw_set_choices_dir_data("DRW",
                         "NULL",
                         TRUE);

}
*/
