

int convert_handle;
int convert_toolbox = 0;
int convert_views = 0;
int convert_centre = 1;


// display converter, centred first time

void convert_display(void)
{
 display_window(convert_handle, 0, convert_centre);
 convert_centre = 0;
} 


// deal with 'Converter' menu entry

int convert_entry(int entry,int subcode)
{
 convert_toolbox = !convert_toolbox;
 if(convert_toolbox)
  convert_display();
 else
  close_window(convert_handle);

 return(0);
}


// Tick or un-tick 'Converter' menu entry

int convert_flags(int entry, string &text)
{
 return(convert_toolbox);
}


// handler for Return key in writeable

int convert_keypress(int handle, int icon, int key)
{
 string s;
 int v;

 s = readicon(handle, 1);
 v = stringu(s, -1);

 if(key==13)
 {
  writeicon(handle, 3, ustring(v, 1));
  writeicon(handle, 5, ustring(v, 2));
  writeicon(handle, 7, ustring(v, 3));
  writeicon(handle, 9, ustring(v, 0));
  return(-1);
 }

 return(key);
}



// handler for convert window close icon

void convert_closetoolbox(int handle)
{
 close_window(handle);
 convert_toolbox = 0;
}


// count number of views opened and display converter

void convert_viewopen(int user, int view)
{
 ++convert_views;
}


// close converter when all views have been closed

void convert_viewclose(int user, int view)
{
 --convert_views;
 if(!convert_views)
  close_window(convert_handle);
}


// open converter when first document gets input focus

void convert_gaincaret(int user, int view, int gain)
{
 if(gain && convert_toolbox && convert_views == 1)
  convert_display();
}


// add 'Converter' option to 'Applets' menu
// create window and add window handlers

void main(void)
{
 script_menu_initialise();

 addentry_menu(script_handle, "convert_entry","convert_flags","","","{CONVERT_00}");

 convert_handle = create_window("convert_m");

 addwindowhandler(1,convert_handle,"convert_keypress");
 addwindowhandler(2,convert_handle,"convert_closetoolbox");

 addeventhandler(0x005, 0, "convert_viewopen");
 addeventhandler(0x006, 0, "convert_viewclose");
 addeventhandler(0x212, 0, "convert_gaincaret");
}
