#include "DRW/drwwh.h"
#include "DRW/drwWwinit.h"
#include "DRW/drwWxdata.h"
#include "DRW/drwWmenu.h"
#include "DRW/drwPollMsl.h"
#include "DRW/drwWistate.h"
#include "DRW/drwWiflags.h"
#include "DRW/drwWmset.h"
#include "DRW/drwUMsl.h"
#include "DRW/drwPollNul.h"

#include "bartmpl/barwh.h"
#include "bartmpl/bartfns.h"


void bar_init_app_data(bar_bartmpl_barw_barobject_d *bd)

{

bd->objectid = 0;
bd->objicon = (wimp_i) -1;
bd->ll = 0;
bd->st = bar_def_stepx;
bd->barlimitx = bar_def_limitx;
bd->MANUAL = FALSE;
bd->whan = (wimp_w) -1;
bd->baricon = (wimp_i) -1;
bd->nudgeupicon = (wimp_i) -1;
bd->nudgedownicon = (wimp_i) -1;
/*bd->ammenu = NULL;*/
bd->otherdata = NULL;

}


void bar_enable_nudge_icons(bar_bartmpl_barw_barobject_d *bd,
                            int state)

{

if (bd->nudgeupicon != (wimp_i) -1)
 drw_wimp_iconenable(bd->whan,
                     bd->nudgeupicon,
                     state);

if (bd->nudgedownicon != (wimp_i) -1)
 drw_wimp_iconenable(bd->whan,
                     bd->nudgedownicon,
                     state);

}


void bar_auto(bar_bartmpl_barw_barobject_d *bd,
              wimp_menu *menu)

{

if (bd->MANUAL == FALSE)
 return;

/*if (bd->ammenu)*/
if (menu)
 {
/*  drw_wimp_menutick(bd->ammenu, 1, 2);
  drw_wimp_menutick(bd->ammenu, 2, 2);*/
  drw_wimp_menutick(menu, 1, 1);
  drw_wimp_menutick(menu, 2, 0);
 }

bd->MANUAL = FALSE;

bar_enable_nudge_icons(bd, 0);

drw_wimp_start_null_events(bd->objectid, bd->whan, bd->objicon);

}


void bar_manual(bar_bartmpl_barw_barobject_d *bd,
                wimp_menu *menu)

{

if (bd->MANUAL == TRUE)
 return;

/*if (bd->ammenu)*/
if (menu)
 {
/*  drw_wimp_menutick(bd->ammenu, 1, 2);
  drw_wimp_menutick(bd->ammenu, 2, 2);*/
  drw_wimp_menutick(menu, 1, 0);
  drw_wimp_menutick(menu, 2, 1);
 }

bd->MANUAL = TRUE;

bar_enable_nudge_icons(bd, 1);

}


void bar_null_event(bar_bartmpl_barw_barobject_d *bd)

{

if (!bd->MANUAL)
 {
  bd->ll += bd->st;

  if (bd->ll > bd->barlimitx)
   {
    bd->st = 0 - bd->st;
    bd->ll = bd->barlimitx;
   }

  if  (bd->ll < 0)
   {
    bd->st = 0 - bd->st;
    bd->ll = 0;
   }

  drw_wimp_bar(bd->whan, bd->baricon, bd->ll, 0);
 }

}


