#include <intuition/intuition.h>
#include <libraries/commodities.h>
#include <libraries/locale.h>
#include <libraries/gadtools.h>

#include <proto/locale.h>
#include <proto/exec.h>

#define CATCOMP_NUMBERS
#define CATCOMP_BLOCK
#define CATCOMP_CODE
#include "Split_strings.h"

#include "split.h"

extern STRPTR __asm GetString(register __a0 struct LocaleInfo *li,
                       register __d0 LONG stringNum);

/* In commodity.c */
extern struct NewBroker newbroker;

/* In doslist.c */
extern STRPTR str_unreadable, str_unknown;

/* in window.c */
extern struct EasyStruct easyr;
extern struct NewMenu newmenus[];
extern STRPTR msg_author, msg_cool,
	msg_warnfilenotproc, msg_filenotprocgadgets, msg_filenotprocquitgad,
	msg_warninvalidchunk, msg_invalidchunkgadgets,
	msg_warnmangledsource, msg_warnmangleddest, msg_ok,
	msg_selectsource, msg_selectdest, msg_hide, msg_quit;

/* in split.c */
extern STRPTR statname[4], status_title;

struct Library *LocaleBase;

STRPTR msg_write, msg_chunkoffs, msg_chunksize, msg_chunknum, msg_chunkname,
	msg_file, msg_size, msg_warnbadpatch;

struct LocaleInfo li;

void initLocale( void )
{
li.li_Catalog = NULL;
if ( LocaleBase = OpenLibrary( "locale.library", 38L ) )
	{
	li.li_LocaleBase = LocaleBase;
	li.li_Catalog = OpenCatalogA( NULL, "Split.catalog", NULL );
	}

newbroker.nb_Descr = GetString( &li, MSG_NEWBROKER );
easyr.es_Title = GetString( &li, MSG_REQUESTTITLE );
newmenus[0].nm_Label = GetString( &li, MSG_PROJECT );
newmenus[1].nm_Label = GetString( &li, MSG_ABOUT_MENU );
newmenus[1].nm_CommKey = GetString( &li, MSG_ABOUT_KEY );
newmenus[2].nm_Label = GetString( &li, MSG_HIDE_MENU );
newmenus[2].nm_CommKey = GetString( &li, MSG_HIDE_KEY );
newmenus[3].nm_Label = GetString( &li, MSG_QUIT_MENU );
newmenus[3].nm_CommKey = GetString( &li, MSG_QUIT_KEY );
newmenus[4].nm_Label = GetString( &li, MSG_SPL_TYPE );
msg_author = GetString( &li, MSG_AUTHOR );
msg_cool = GetString( &li, MSG_COOL );

msg_warnfilenotproc = GetString( &li, MSG_WARNFILENOTPROC );
msg_filenotprocgadgets = GetString( &li, MSG_FILENOTPROCGADGETS );
msg_filenotprocquitgad = GetString( &li, MSG_FILENOTPROCQUITGAD );
msg_warninvalidchunk = GetString( &li, MSG_WARNINVALIDCHUNK );
msg_invalidchunkgadgets = GetString( &li, MSG_INVALIDCHUNKGADGETS );
msg_warnmangledsource = GetString( &li, MSG_WARNMANGLEDSOURCE );
msg_warnmangleddest = GetString( &li, MSG_WARNMANGLEDDEST );
msg_selectsource = GetString( &li, MSG_SELECTSOURCE );
msg_selectdest = GetString( &li, MSG_SELECTDEST );
msg_ok = GetString( &li, MSG_OK );
status_title = GetString( &li, MSG_STATUS );
statname[STATUS_IDLE] = GetString( &li, MSG_STATUS_IDLE );
statname[STATUS_SPLITTING] = GetString( &li, MSG_STATUS_SPLITTING );
statname[STATUS_READING] = GetString( &li, MSG_STATUS_READING );
statname[STATUS_WRITING] = GetString( &li, MSG_STATUS_WRITING );
msg_write = GetString( &li, MSG_WRITE );
msg_chunknum = GetString( &li, MSG_CHUNKNUM );
msg_chunkoffs = GetString( &li, MSG_CHUNKOFFS );
msg_chunkname = GetString( &li, MSG_CHUNKNAME );
msg_chunksize = GetString( &li, MSG_CHUNKSIZE );
msg_size = GetString( &li, MSG_SIZE );
msg_file = GetString( &li, MSG_FILE );
msg_hide = GetString( &li, MSG_HIDE );
msg_quit = GetString( &li, MSG_QUIT );
msg_warnbadpatch = GetString( &li, MSG_WARNBADPATCH );
}


void flushLocale( void )
{
if ( LocaleBase )
	{
	if ( li.li_Catalog )
		CloseCatalog( li.li_Catalog );
	CloseLibrary( LocaleBase );
	}
}
