/************************************************************
**
** Application: UnitConv
**
** Title:       h.main
**
*************************************************************/

#pragma include_only_once

#ifndef __MAIN__H
#define __MAIN__H



#include "res.h"

        /* Units convert window */

#define MAX_UC_UNITITEMS    9
#define MAX_UC_UNITSETS     9
#define MAX_UC_MENU_ENTRIES 9
#define MAX_LEN_GROUPNAME   18
#define MAX_LEN_SETNAME     16
#define MAX_LEN_ITEMNAME    19
#define MAX_LEN_UNITVALUE   15
#define MAX_LEN_UCWINTITLE  40
#define MAX_LEN_FACTOR      19
/* application-wide globals  */

extern  osspriteop_area* SpriteArea;
extern  wimp_block       poll_block;
extern  toolbox_block    Id_Block;
extern  osbool           Quit;           // the global Quit flag

extern  messagetrans_control_block   Messages_cb;	// Messages file descriptor
extern  wimp_t    TaskHandle;     // this app's task handle


/* type definitions */
typedef struct conv_item        conv_item ;
typedef struct conv_set         conv_set ;
typedef struct conv_group       conv_group ;
typedef struct unitconv_data    unitconv_data ;


typedef struct
{
  int size;
  int ref_no;
  bits action_no;
  bits flags;
  toolbox_o menu_id;
} PopUpAboutToBeShownBlock;



typedef struct
{
  int                          dpi ;
  int                          units ;
  int                          select_click ;
  int                          adjust_click ;
  int                          shift_select_click ;
  int                          shift_adjust_click ;
  int                          ctrl_select_click ;
  int                          ctrl_adjust_click ;
  osbool                       show_gasmark;
} prefs ;


enum imagesize_units
{
  PREFS_IMAGESIZE_PIX,
  PREFS_IMAGESIZE_CM,
  PREFS_IMAGESIZE_INCH
} ;


#define CLICK_OPTIONS "Unit conversion,Image size,Bin-Oct-Hex-Dec,Gases,Choices,None"

enum iconbar_click
{
  PREFS_CLICK_UNITS,
  PREFS_CLICK_IMAGESIZE,
  PREFS_CLICK_BINHEX,
  PREFS_CLICK_GASES,
  PREFS_CLICK_CHOICES,
  PREFS_CLICK_NONE
} ;


enum pressure_flag
{
  PRES_ATM,
  PRES_N,
  PRES_TORR
} ;

enum xsection_flag
{
  XSECT_PM,
  XSECT_NM,
  XSECT_M
} ;




/* structures for unit convert factors */

struct conv_item
{
  char            unit_name[MAX_LEN_ITEMNAME + 1] ;
  double          factor ;
  char            factor_txt[MAX_LEN_FACTOR + 1];
} ;


struct conv_set
{
  char            set_name[MAX_LEN_SETNAME + 1] ;
  int             no_of_items ;
  conv_item       item [MAX_UC_UNITITEMS] ;
} ;


struct conv_group
{
  char            group_name[MAX_LEN_GROUPNAME + 1] ;
  int             no_of_sets ;
  conv_set        set [MAX_UC_UNITSETS] ;
} ;


struct unitconv_data
{
  int             no_of_groups ;
  int             current_group ;
  int             current_set ;
  conv_group      *group [MAX_UC_MENU_ENTRIES+1] ;
} ;



typedef struct
  {
    int                        pres_flag ;
    int                        xsect_flag ;
    osbool                     size_diameter ;
//////    char                       sigfigs [6] ;

  } globals;





typedef struct
{
////  wimp_globals          wimp;
  globals               gv;
  prefs                 ch;

} app_globals;


extern app_globals     app;
extern unitconv_data   uc_data ;





#endif



/*************  End of h.main  ***********************/



