#include "bartmpl/barwI.h"

#ifndef drw_u_trdf_H
 #include "drwUTrdf.h"
#endif

#include "bartmpl/barwh.h"
#include "bartmpl/bartfns.h"
#include "DRW/drwnullIfn.h"
#include "DRW/drwWmset.h"

/*static wimp_menu *bar_menu = NULL;*/

/*static drw_wimp_data *pwdptr;*/


int bartmpl_barw_nudgeup(wimp_w whan,
                         wimp_i icon,
                         wimp_mouse_state buttontype,
                         int mousex,
                         int mousey,
                         int x,
                         int y,
                         void *userdata)

{

bar_bartmpl_barw_barobject_d *bd;

if ((bd = (bar_bartmpl_barw_barobject_d *) userdata))
 {
  if (bd->st < 0)
   bd->st = 0 - bd->st;

  bd->ll += bd->st;
  if (bd->ll > bd->barlimitx)
   bd->ll = bd->barlimitx;

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

return TRUE;

}


int bartmpl_barw_nudgedown(wimp_w whan,
                           wimp_i icon,
                           wimp_mouse_state buttontype,
                           int mousex,
                           int mousey,
                           int x,
                           int y,
                           void *userdata)

{

bar_bartmpl_barw_barobject_d *bd;

if ((bd = (bar_bartmpl_barw_barobject_d *) userdata))
 {
  if (bd->st < 0)
   bd->st = 0 - bd->st;

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

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

return TRUE;

}


void *bartmpl_barw_barobject_ini(drw_wimp_data *wpwd,
                                int objectid,
                                wimp_w whan,
                                wimp_i icon,
                                int occno,
                                int userwincode)

{

bar_bartmpl_barw_barobject_d *bd;

/*pwdptr = wpwd;*/

bd = (bar_bartmpl_barw_barobject_d *)
     drw_mem_alloc((int) sizeof(bar_bartmpl_barw_barobject_d),
                                    (drw_mem_flags) 0,
                                    (drwGP_ptr) 0,
                                    NULL);

if (bd)
 {
  bar_init_app_data(bd);
  bd->objectid = objectid;
  bd->whan = whan;
  bd->objicon = icon;
  bd->occno = occno;

  bd->nudgeupicon = drw_get_iconno(whan,
                                   "bar:bartmpl/barw.nudgeup",
                                   objectid,
                                   (wimp_i) -1);

  bd->nudgedownicon = drw_get_iconno(whan,
                                     "bar:bartmpl/barw.nudgedown",
                                     objectid,
                                     (wimp_i) -1);

  bd->baricon = drw_get_iconno(whan,
                               "bar:bartmpl/barw.baricon",
                               objectid,
                               (wimp_i) -1);

  bar_enable_nudge_icons(bd, 0);

  bd->MANUAL = FALSE;

  drw_wimp_start_null_events(objectid, whan, icon);
 }

return (void *) bd;

}


int bartmpl_barw_barobject_nul(void *userdata)

{

bar_bartmpl_barw_barobject_d *bd;

bd = (bar_bartmpl_barw_barobject_d *) userdata;

bar_null_event(bd);

if (bd->MANUAL)
 drw_wimp_stop_null_events(bd->objectid, bd->whan, bd->objicon, FALSE);

return FALSE;

}


void bartmpl_barw_barobject_msl(wimp_menu *menu,
                               wimp_i item,
                               char *font,
                               void *userdata)

{

bar_bartmpl_barw_barobject_d *bd;

bd =(bar_bartmpl_barw_barobject_d *) userdata;

/*if (menu == bd->ammenu)*/
 {
  if (item == (wimp_i) 1)
   bar_auto(bd, menu);
  else
   if (item == (wimp_i) 2)
    bar_manual(bd, menu);
 }

}


wimp_menu *bartmpl_barw_barobject_mid(wimp_w window,
                                     wimp_i icon,
                                     wimp_menu *menu,
                                     int mousex,
                                     int mousey,
                                     void *userdata,
                                     int *use_by_default)

{

/*bar_bartmpl_barw_barobject *bd;

bd =(bar_bartmpl_barw_barobject *) userdata;

if (window == bd->whan)
 {
  menu = bd->ammenu;
  if (use_by_default)
   *use_by_default = TRUE;
 }*/

return menu;

}


int bartmpl_barw_pwc(wimp_window *window,
                     int userwincode,
                     void *userdata)

{

return TRUE;

}


void bartmpl_barw_barobject_mop(wimp_menu *menu,
                               wimp_i icon,
                               void *userdata)

{

bar_bartmpl_barw_barobject_d *bd;

bd =(bar_bartmpl_barw_barobject_d *) userdata;

/*drw_wimp_menutick(bd->ammenu, 1, bd->MANUAL ? 0: 1);
drw_wimp_menutick(bd->ammenu, 2, bd->MANUAL ? 1: 0);*/

drw_wimp_menutick(menu, 1, bd->MANUAL ? 0: 1);
drw_wimp_menutick(menu, 2, bd->MANUAL ? 1: 0);

bar_enable_nudge_icons(bd, bd->MANUAL ? 1: 0);

}


extern wimp_menu *bartmpl_barw_nudgeup_mid(wimp_w window,
                                          wimp_i icon,
                                          wimp_menu *menu,
                                          int mousex,
                                          int mousey,
                                          void *userdata,
                                          int *use_by_default)

{

return menu;

}


extern int bartmpl_barw_barobject(wimp_w whan,
                                  wimp_i icon,
                                  wimp_mouse_state buttontype,
                                  int mousex,
                                  int mousey,
                                  int x,
                                  int y,
                                  void *userdata)

{

return FALSE;

}


extern wimp_menu *bartmpl_barw_mid(wimp_w window,
                                  wimp_i icon,
                                  wimp_menu *menu,
                                  int mousex,
                                  int mousey,
                                  void *userdata,
                                  int *use_by_default)

{

return menu;

}


extern int bartmpl_barw(wimp_w whan,
                        wimp_i icon,
                        wimp_mouse_state buttontype,
                        int mousex,
                        int mousey,
                        int x,
                        int y,
                        void *userdata)

{

/*if (!drw_wimp_windowhasfocus(whan))
 drw_wimp_putcaret(whan,
                   (wimp_i) -1,
                   0,
                   0,
                   0,
                   0);*/

return TRUE;

}


extern int bartmpl_barw_scuttest_kpr(wimp_w whan,
                                    wimp_i icon,
                                    wimp_key_no keyno,
                                    int dkinuse,
                                    drw_dk_flags dkflagwd)

{

return FALSE;

}


