Ejemplo n.º 1
0
int
SetCatalog(char *localeName, char *catName)
{
    int r = -1;

    struct TagItem tags[3] = {
	OC_Language, localeName,
	OC_BuiltInLanguage, "none",
	TAG_DONE, NULL
    };
    if (localeName == NULL)
	tags[0].ti_Tag = TAG_IGNORE;

    ILocaleExit();
    if (LocaleBase) {
	if (Catalog = OpenCatalogA(NULL, catName, tags)) {
	    long *al;

	    r = 0;

	    for (al = _AutoLocale + 1; *al; al += 2) {
		/* printf("%s ->", (char *)*al); */
		printf("GetCat: %d %08lx\n", al[1], GetCatalogStr(Catalog, al[1], NULL));
		*al = GetCatalogStr(Catalog, al[1], (char *)al[0]);
		/* printf("%s\n", (char *)*al); */
	    }
	}
    }
    return(r);
}
Ejemplo n.º 2
0
/*** Localise all strings of the program ***/
void InitLocale(void)
{
	if( (catalog = (APTR) OpenCatalogA(NULL, "System/Tools/Editor.catalog", NULL)) )
	{
		WORD n;
		/* Translate menu strings */
		{	register struct NewMenu * nm;
			register STRPTR           str;
			extern   struct NewMenu   newmenu[];

			for(nm = newmenu, n = MSG_PROJECTTITLE; nm->nm_Type != NM_END; nm++)
			{
				if (nm->nm_Label != NM_BARLABEL)
				{
					str = (STRPTR) GetCatalogStr( catalog, n++, nm->nm_Label );
					/* Change shortcut to user prefered one */
					if (*str == 127) {
						nm->nm_CommKey  = str+1; str += 2;
						nm->nm_Flags   &= ~NM_COMMANDSTRING;
					}
					nm->nm_Label = str;
				}
			}
		}
		/* Translate all other messages */
		{	register STRPTR * str;
			for(n = 0, str = JanoMessages; n < sizeof(JanoMessages)/sizeof(STRPTR); n++, str++)
				if (*str != NULL)
					*str = (STRPTR) GetCatalogStr( catalog, n + ERR_BADOS, *str );
		}
	}
}
Ejemplo n.º 3
0
void openCatalog(char *name)
{
static struct TagItem tags[3] = {
    OC_Language,"english",
    OC_BuiltInLanguage,"none",
    TAG_DONE, NULL};

   if(LocaleBase)Catalog  = OpenCatalogA(NULL,name,tags);
}
Ejemplo n.º 4
0
	struct Catalog * OpenCatalog (

/*  SYNOPSIS */
	const struct Locale * locale,
	CONST_STRPTR name,
	Tag             tag1,
	...             )

/*  FUNCTION
	This is the varargs version of the locale.library OpenCatalogA().
	For information see locale.library/OpenCatalog()

    INPUTS
	locale      -   The locale describing the language the user
			wants.
	name        -   Name of the catalog file.
	tag1        -   TagList of extra arguments.

    RESULT
	Either a pointer to a Catalog, or NULL.

	Although the function may have returned NULL, that does not
	necessarily meant there is an error. If dos/IoErr() returns
	0, then there was no error, but the language of the built in
	strings is the same as that of a catalog.

	If IoErr() != 0, then there was an error however.

    NOTES

    EXAMPLE

    BUGS

    SEE ALSO
	locale.library/OpenCatalogA(), locale.library/CloseCatalog(),
	locale.library/GetCatalogStr()

    INTERNALS

*****************************************************************************/
{
    AROS_SLOWSTACKTAGS_PRE(tag1)

    retval = OpenCatalogA(locale, name, AROS_SLOWSTACKTAGS_ARG(tag1));

    AROS_SLOWSTACKTAGS_POST
} /* OpenCatalog */
Ejemplo n.º 5
0
int main(int argc,char **argv)
{
	font_data *data;

	// Need dopus library
	if (!(DOpusBase=OpenLibrary("dopus5.library",LIB_VERSION)))
		if (!(DOpusBase=OpenLibrary("dopus5:libs/dopus5.library",55)))
			return(10);
#ifdef __amigaos4__
	if (!(IDOpus = (struct DOpusIFace *)GetInterface(DOpusBase, "main", 1, NULL)))
	{
		CloseLibrary(DOpusBase);
		return(10);
	}
#endif

	// Allocate data
	if (!(data=AllocVec(sizeof(font_data),MEMF_CLEAR)))
	{
		font_free(0);
		return(5);
	}

	// Parse arguments
	data->args=
		ReadArgs(
			"FONT,SIZE/N,B=BOLD/S,I=ITALIC/S,U=ULINE/S,PUBSCREEN/K",
			(APTR)data->arg_array,
			NULL);

	// Default to topaz 8
#ifdef __AROS__
	strcpy(data->font_name,"ttcourier.font");
#else
	strcpy(data->font_name,"topaz.font");
#endif
	data->font_size=8;

	// Got font name?
	if (data->arg_array[ARG_FONT])
		font_get_name(data,(char *)data->arg_array[ARG_FONT]);

	// Got a font size?
	if (data->arg_array[ARG_SIZE] && *((long *)data->arg_array[ARG_SIZE]))
	{
		data->font_size=*((long *)data->arg_array[ARG_SIZE]);
		data->first=TRUE;
	}

	// Initialise locale
	init_locale_data(&data->locale);

	// Got locale library?
	if (LocaleBase)
	{
		BPTR lock;

		// Change PROGDIR: to dopus5:
		if ((lock=Lock("dopus5:",ACCESS_READ)))
#ifdef __AROS__
			// the lock returned here is the initial PROGDIR: which belongs to the system,
			// so it's not a very good idea to just UnLock it
			SetProgramDir(lock);
#else
			UnLock(SetProgramDir(lock));
#endif

		// Initialise
		data->locale.li_LocaleBase=LocaleBase;
		data->locale.li_Catalog=OpenCatalogA(0,"viewfont.catalog",0);
		data->locale.li_Locale=OpenLocale(0);
	}

	// Create message port
	data->appport=CreateMsgPort();

	// Open window
	if (!(font_open(data)))
	{
		font_free(data);
		return(5);
	}

	// Initial gadget settings
	if (data->arg_array[ARG_BOLD]) SetGadgetValue(data->list,GAD_FONT_BOLD,1);
	if (data->arg_array[ARG_ITALIC]) SetGadgetValue(data->list,GAD_FONT_ITALIC,1);
	if (data->arg_array[ARG_ULINE]) SetGadgetValue(data->list,GAD_FONT_ULINE,1);

	// Show font
	font_show_font(data,FALSE);

	// Initialise refresh hook
	data->refresh_hook.h_Entry=(ULONG (*)())font_refresh;
	data->refresh_hook.h_Data=data;

	// Event loop
	FOREVER
	{
		struct IntuiMessage *msg;
		BOOL quit_flag=FALSE;

		// AppWindow?
		if (data->appwindow)
		{
			struct AppMessage *amsg;

			// Get messages
			while ((amsg=(struct AppMessage *)GetMsg(data->appport)))
			{
				// Got file?
				if (amsg->am_NumArgs>0)
				{
					char buf[256];

					// Get name
					DevNameFromLockDopus(amsg->am_ArgList[0].wa_Lock,buf,256);
					if (amsg->am_ArgList[0].wa_Name && *amsg->am_ArgList[0].wa_Name)
						AddPart(buf,amsg->am_ArgList[0].wa_Name,256);

					// Get font name
					font_get_name(data,buf);

					// Get new font
					font_get_font(data);
					font_show_font(data,FALSE);
				}

				// Reply to message
				ReplyMsg((struct Message *)amsg);
			}
		}

		// Requester?
		if (data->about)
		{
			// Handle requester
			if (SysReqHandler(data->about,0,0)>=0)
			{
				// Close requester
				FreeSysRequest(data->about);
				data->about=NULL;
			}
		}

		// Intuition messages
		if (data->window)
		{
			while ((msg=GetWindowMsg(data->window->UserPort)))
			{
				struct IntuiMessage msg_copy;
				UWORD id=0;

				// Copy message and reply
				msg_copy=*msg;
				ReplyWindowMsg(msg);

				// Get gadget ID
				if (msg_copy.Class==IDCMP_GADGETUP)
					id=((struct Gadget *)msg_copy.IAddress)->GadgetID;

				// Look at message
				switch (msg_copy.Class)
				{
					// Close window
					case IDCMP_CLOSEWINDOW:
						quit_flag=TRUE;
						break;


					// New size
					case IDCMP_NEWSIZE:

						// Redraw font
						font_show_font(data,FALSE);

						// Set flag to say we resized
						data->resized=TRUE;
						break;


					// Menu
					case IDCMP_MENUPICK:
						{
							struct MenuItem *item;

							// Get item
							if (!(item=ItemAddress(data->window->MenuStrip,msg_copy.Code)))
								break;

							// Get ID
							id=GTMENUITEM_USERDATA(item);

							// Fall through
						}

					// Gadget
					case IDCMP_GADGETUP:
						switch (id)
						{
							// Show requester
							case GAD_FONT_FONT_POPUP:
							case MENU_OPEN_FONT:

								// Ask for name
								font_ask_name(data);
								break;


							// Font name typed
							case GAD_FONT_FONT:

								// Get name
								font_get_name(data,(char *)GetGadgetValue(data->list,GAD_FONT_FONT));

								// Get new font
								font_get_font(data);
								font_show_font(data,FALSE);
								break;


							// Font size up/down
							case GAD_FONT_UP:
							case GAD_FONT_DOWN:
								{
									short size;

									// Get next size
									size=font_get_size(data,(id==GAD_FONT_UP)?1:-1);

									// No change?
									if (size==data->font_size) break;

									// Use this size
									data->font_size=size;
									SetGadgetValue(data->list,GAD_FONT_SIZE,size);
								}

							// Font size given
							case GAD_FONT_CYCLE:

								// Check id
								if (id==GAD_FONT_CYCLE)
								{
									short size;

									// Get size
									if (!(size=atoi(data->size_labels[msg_copy.Code])))
										break;

									// Refresh gadget
									data->font_size=size;
									SetGadgetValue(data->list,GAD_FONT_SIZE,data->font_size);
								}

							// Font size
							case GAD_FONT_SIZE:

								// Entered size
								if (id==GAD_FONT_SIZE)
								{
									// Bounds check gadget
									data->font_size=
										BoundsCheckGadget(
											data->list,
											GAD_FONT_SIZE,
											4,
											255);
								}

								// Get new font
								font_get_font(data);
								font_show_font(data,FALSE);
								break;

							// Styles changed
							case GAD_FONT_BOLD:
							case GAD_FONT_ITALIC:
							case GAD_FONT_ULINE:

								// Redraw font
								font_show_font(data,FALSE);
								break;


							// Save settings
							case MENU_SAVE_SETTINGS:
								font_save_settings(data);
								break;


							// Quit
							case MENU_QUIT:
								quit_flag=TRUE;
								break;


							// About
							case MENU_ABOUT:
								font_show_about(data);
								break;
						}
						break;


					// Rawkey
					case IDCMP_RAWKEY:

						// Help?
						if (msg_copy.Code==0x5f)
							font_show_about(data);

					// Key
					case IDCMP_VANILLAKEY:

						// Escape does quit
						if (msg_copy.Code==0x1b) quit_flag=TRUE;
						break;


					// Refresh
					case IDCMP_REFRESHWINDOW:

						// Have we just resized?
						if (data->resized)
						{
							// Don't need to refresh
							BeginRefresh(data->window);
							EndRefresh(data->window,TRUE);
							data->resized=FALSE;
							break;
						}

						// Refresh font display
						font_show_font(data,TRUE);
						break;
				}

				// Check window is still valid
				if (!data->window) break;
			}
		}

		if (quit_flag) break;

		// Wait for signal (ctrl-c breaks)
		if ((Wait(SIGBREAKF_CTRL_C|
					((data->window)?(1<<data->window->UserPort->mp_SigBit):0)|
					((data->about)?(1<<data->about->UserPort->mp_SigBit):0)|
					((data->appwindow)?(1<<data->appport->mp_SigBit):0)))&SIGBREAKF_CTRL_C) break;
	}

	// Free stuff
	font_free(data);
	return(0);
}
Ejemplo n.º 6
0
struct Catalog *OpenCatalog(struct Locale *locale, STRPTR name, Tag tag1, ...)
{ return OpenCatalogA(locale, name, (struct TagItem *)&tag1); }
Ejemplo n.º 7
0
/*** Methods ****************************************************************/
Object *AboutWindow__OM_NEW
(
    Class *CLASS, Object *self, struct opSet *message 
)
{
    struct AboutWindow_DATA *data              = NULL; 
    const struct TagItem    *tstate            = message->ops_AttrList;
    struct TagItem          *tag               = NULL, 
                            *authorsTags       = NULL,
                            *sponsorsTags      = NULL;
    struct Catalog          *catalog           = NULL;
    APTR                     pool;
    Object                  *rootGroup         = NULL,
                            *imageGroup        = NULL,
                            *imageObject       = NULL,
                            *versionObject     = NULL,
                            *copyrightObject   = NULL,
                            *descriptionGroup  = NULL,
                            *descriptionObject = NULL,
                            *authorsList       = NULL,
                            *sponsorsList      = NULL;
    
    STRPTR                   title             = NULL,
                             versionNumber     = NULL,
                             versionDate       = NULL,
                             versionExtra      = NULL,
                             description       = NULL,
                             copyright         = NULL;
                             
    CONST_STRPTR             pages[]           = { NULL, NULL, NULL }; 
    UBYTE                    nextPage          = 0;
    
    /* Allocate memory pool ------------------------------------------------*/
    pool = CreatePool(MEMF_ANY, 4096, 4096);
    if (pool == NULL) return NULL;
        
    /* Initialize locale ---------------------------------------------------*/
    catalog = OpenCatalogA
    (
        NULL, "System/Classes/Zune/AboutWindow.catalog", NULL
    );
        
    /* Parse initial attributes --------------------------------------------*/
    while ((tag = NextTagItem(&tstate)) != NULL)
    {
        switch (tag->ti_Tag)
        {
            case MUIA_AboutWindow_Image:
                imageObject = (Object *) tag->ti_Data;
                break;
            
            case MUIA_AboutWindow_Title:
                title = StrDup((STRPTR) tag->ti_Data);
                if (title == NULL) title = IGNORE;
                break;
                
            case MUIA_AboutWindow_Version_Number:
                versionNumber = StrDup((STRPTR) tag->ti_Data);
                if (versionNumber == NULL) versionNumber = IGNORE;
                break;
                
            case MUIA_AboutWindow_Version_Date:
                versionDate = StrDup((STRPTR) tag->ti_Data);
                if (versionDate == NULL) versionDate = IGNORE;
                break;
                
            case MUIA_AboutWindow_Version_Extra:
                versionExtra = StrDup((STRPTR) tag->ti_Data);
                if (versionExtra == NULL) versionExtra = IGNORE;
                break;
                
            case MUIA_AboutWindow_Copyright:
                copyright = StrDup((STRPTR) tag->ti_Data);
                if (copyright == NULL) copyright = IGNORE;
                break;
                
            case MUIA_AboutWindow_Description:
                description = StrDup((STRPTR) tag->ti_Data);
                if (description == NULL) description = IGNORE;
                break;
            
            case MUIA_AboutWindow_Authors:
                authorsTags = (struct TagItem *) tag->ti_Data;
                break; 
                
            case MUIA_AboutWindow_Sponsors:
                sponsorsTags = (struct TagItem *) tag->ti_Data;
                break;
                            
            default:
                continue; /* Don't supress non-processed tags */
        }
        
        tag->ti_Tag = TAG_IGNORE;
    }
    
    /* Setup image ---------------------------------------------------------*/
    if (imageObject == NULL)
    {
        TEXT path[512], program[1024]; path[0] = '\0'; program[0] = '\0';
        
        if (GetProgramName(program, 1024))
        {
            strlcat(path, "PROGDIR:", 512);
            strlcat(path, FilePart(program), 512);
            imageObject = (Object *)IconImageObject,
                MUIA_IconImage_File, (IPTR) path,
            End;
        }
        
        if (imageObject == NULL)
        {
            imageObject = HVSpace;
        }
    }

    /* Setup pages ---------------------------------------------------------*/
    if (authorsTags != NULL)
    {
        pages[nextPage] = _(MSG_AUTHORS);
        nextPage++;
    }
    
    if (sponsorsTags != NULL)
    {
        pages[nextPage] = _(MSG_SPONSORS);
        nextPage++;
    }
    
    self = (Object *) DoSuperNewTags
    (
        CLASS, self, NULL,
        
        MUIA_Window_Activate, TRUE,
        MUIA_Window_NoMenus,  TRUE,
        MUIA_Window_Height,   MUIV_Window_Height_Visible(25),
        MUIA_Window_Width,    MUIV_Window_Width_Visible(25),
        
        WindowContents, (IPTR) VGroup,
            GroupSpacing(6),
            
            Child, (IPTR) (imageGroup = (Object *)HGroup,
                MUIA_Weight,  0,
                
                Child, (IPTR) HVSpace,
                Child, (IPTR) imageObject,
                Child, (IPTR) HVSpace,
            End),
            Child, (IPTR) (versionObject = (Object *)TextObject,
                MUIA_Text_PreParse, (IPTR) MUIX_C,
                MUIA_Text_Contents, (IPTR) NULL,
            End),
            Child, (IPTR) (copyrightObject = (Object *)TextObject,
                MUIA_Text_PreParse, (IPTR) MUIX_C,
                MUIA_Text_Contents, (IPTR) NULL,
            End),
            Child, (IPTR) (descriptionGroup = (Object *)VGroup,
                Child, (IPTR) VSpace(6),
                Child, (IPTR) (descriptionObject = (Object *)TextObject,
                    MUIA_Text_PreParse, (IPTR) MUIX_I MUIX_C,
                    MUIA_Text_Contents, (IPTR) NULL,
                End),
            End),
            Child, (IPTR) VSpace(6),
            Child, (IPTR) RegisterGroup(pages),
                Child, (IPTR) ListviewObject,
                    MUIA_Listview_List, (IPTR) (authorsList = (Object *)ListObject,
                        ReadListFrame,
                    End),
                End,
                Child, (IPTR) ListviewObject,
                    MUIA_Listview_List, (IPTR) (sponsorsList = (Object *)ListObject,
                        ReadListFrame,
                    End),
                End,
            End, 
        End,
        
        TAG_MORE, (IPTR) message->ops_AttrList
    );
    
    if (self == NULL) goto error;
    
    data = INST_DATA(CLASS, self);
    data->awd_Catalog           = catalog;
    data->awd_Pool              = pool;
    data->awd_RootGroup         = rootGroup;
    data->awd_ImageGroup        = imageGroup;
    data->awd_ImageObject       = imageObject;
    data->awd_VersionObject     = versionObject;
    data->awd_CopyrightObject   = copyrightObject;
    data->awd_DescriptionGroup  = descriptionGroup;
    data->awd_DescriptionObject = descriptionObject;
    data->awd_Title             = title;
    data->awd_VersionNumber     = versionNumber;
    data->awd_VersionDate       = versionDate;
    data->awd_VersionExtra      = versionExtra;
    data->awd_Copyright         = copyright;
    data->awd_Description       = description;
    
    if (authorsTags != NULL)  NamesToList(authorsList, authorsTags, data);
    if (sponsorsTags != NULL) NamesToList(sponsorsList, sponsorsTags, data);
    
    /* Setup notifications */
    DoMethod
    ( 
        self, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, 
        (IPTR) self, 2, MUIA_Window_Open, FALSE
    );
        
    return self;
    
error:
    if (catalog != NULL) CloseCatalog(catalog);
    
    return NULL;
}