CONST_STRPTR MSG_STD(ULONG id) { CONST_STRPTR retval; if (locale) { retval = GetLocaleStr(locale, id); } else { retval = "Error"; } return retval; }
static ULONG mNew(struct IClass *cl,Object *obj,struct opSet *msg) { if (obj = (Object *)DoSuperNew(cl,obj, MUIA_Group_Horiz, TRUE, MUIA_Group_HorizSpacing, 1, MUIA_Group_SameSize, TRUE, TAG_MORE,(ULONG)msg->ops_AttrList)) { struct data *data = INST_DATA(cl,obj); int i; for (i= 0; i<7; i++) { Object *o; o = TextObject, MUIA_CycleChain, TRUE, MUIA_Font, MUIV_Font_Button, MUIA_InputMode, MUIV_InputMode_Immediate, ButtonFrame, MUIA_Background, MUII_ButtonBack, MUIA_Text_Contents, GetLocaleStr(lib_locale,ABDAY_1+i), MUIA_Text_PreParse, MUIX_C, MUIA_Text_SetMax, TRUE, End; if (o) { DoSuperMethod(cl,obj,OM_ADDMEMBER,(ULONG)o); DoMethod(o,MUIM_Notify,MUIA_Selected,TRUE,(ULONG)obj,3,MUIM_Set,MUIA_Calendar_StartDay,i); data->days[i] = o; } else { CoerceMethod(cl->cl_Super,obj,OM_DISPOSE); return 0; } } } return (ULONG)obj; }
// Create a global memory pool and GUI structure void startup_init_gui() { short a,proc=0; // Create a global memory pool and GUI structure if (!(global_memory_pool=NewMemHandle(1024,512,MEMF_CLEAR|MEMF_PUBLIC)) || !(GUI=AllocMemH(global_memory_pool,sizeof(GUI_Glue))) || !(GUI->screen_title=AllocMemH(global_memory_pool,256)) || !(GUI->filter_string=AllocMemH(global_memory_pool,256))) quit(0); // Initialise lists InitListLock(&GUI->lister_list,0); InitListLock(&GUI->buffer_list,0); InitListLock(&GUI->buttons_list,0); InitListLock(&GUI->process_list,0); InitListLock(&GUI->group_list,0); InitListLock(&GUI->filetypes,0); InitListLock(&GUI->notify_process_list,0); InitListLock(&GUI->function_traps,0); InitListLock(&GUI->positions,0); InitListLock(&GUI->rexx_readers,0); InitListLock(&GUI->function_list,0); InitListLock(&GUI->rexx_apps,0); InitListLock(&GUI->command_list,0); #ifdef __AROS__ GUI->command_list.list.lh_Type = 255; // requires special handling #endif InitListLock(&GUI->original_cmd_list,0); InitListLock(&GUI->modules_list,0); InitListLock(&GUI->popupext_list,0); InitListLock(&GUI->iconpos_list,0); InitListLock(&GUI->startmenu_list,0); InitListLock(&GUI->open_with_list,0); GUI->command_history=Att_NewList(LISTF_POOL|LISTF_LOCK); // Initialise locks InitSemaphore(&GUI->select_lock); InitSemaphore(&GUI->req_lock); InitSemaphore(&GUI->lister_menu_lock); InitSemaphore(&GUI->hotkeys_lock); InitSemaphore(&GUI->findfile_lock); InitSemaphore(&GUI->filter_lock); InitSemaphore(&GUI->scripts_lock); InitSemaphore(&GUI->user_menu_lock); InitSemaphore(&GUI->custom_pen_lock); // Signal for getting screen close GUI->screen_signal=AllocSignal(-1); // This pointer is cleared by the registration module; big crashes if that doesn't happen #if 0 GUI->screen=(struct Screen *)1; #endif GUI->def_filename_length=FILENAME_LEN; // Initialise filter string strcpy(GUI->filter_string,"#?"); // Initial requester coordinates GUI->req_coords.Left=64; GUI->req_coords.Top=32; GUI->req_coords.Width=320; GUI->req_coords.Height=200; // Initialise selection data GUI->select_data.type=SELECT_SIMPLE; GUI->select_data.entry_type=SELECT_ENTRY_BOTH; strcpy(GUI->select_data.name,"*"); GUI->select_data.name_match=SELECT_MATCH_MATCH; GUI->select_data.date_from[0]=0; GUI->select_data.date_to[0]=0; GUI->select_data.date_match=SELECT_MATCH_IGNORE; GUI->select_data.bits=0; GUI->select_data.bits_match=SELECT_MATCH_IGNORE; GUI->select_data.compare=0; GUI->select_data.compare_match=SELECT_MATCH_IGNORE; GUI->select_data.include=SELECT_INCLUDE; // Get decimal separator GUI->decimal_sep=(locale.li_Locale)?locale.li_Locale->loc_GroupSeparator[0]:','; // Locale patches installed? if (locale.li_LocaleBase && ((struct LocaleBase *)locale.li_LocaleBase)->lb_SysPatches) GUI->flags|=GUIF_LOCALE_OK; // Calculate width of date field if (locale.li_LocaleBase) { char *str; short day,len; #define LocaleBase locale.li_LocaleBase // Get lengths of days of the week for (day=DAY_1; day<=DAY_7; day++) { if ((str=(char *)GetLocaleStr(locale.li_Locale,day)) && (len=strlen(str))>GUI->date_length) GUI->date_length=len; } // Yesterday, etc for (day=YESTERDAYSTR; day<=FUTURESTR; day++) { if ((str=(char *)GetLocaleStr(locale.li_Locale,day)) && (len=strlen(str))>GUI->date_length) GUI->date_length=len; } } // Otherwise, use default (Yesterday) else GUI->date_length=9; // See if SysIHack is running if (FindTask("« sysihack »")) GUI->flags|=GUIF_SYSIHACK; // Allocate a string for spaces, and the global undo buffer if (!(str_space_string=AllocMemH(global_memory_pool,MAXDISPLAYLENGTH)) || !(GUI->global_undo_buffer=AllocMemH(global_memory_pool,1024))) quit(0); for (a=0; a<MAXDISPLAYLENGTH-1; a++) str_space_string[a]=' '; // Allocate backdrop patterns if (!(GUI->pattern=AllocMemH(global_memory_pool,sizeof(PatternData)*3))) quit(0); // Initialise requester pattern #if defined(__MORPHOS__) GUI->req_pattern.hook.h_Entry = (HOOKFUNC)HookEntry; GUI->req_pattern.hook.h_SubEntry=(ULONG (*)())PatternBackfill; #else GUI->req_pattern.hook.h_Entry=(ULONG (*)())PatternBackfill; #endif GUI->req_pattern.hook.h_Data=0; GUI->req_pattern.pattern=&GUI->pattern[PATTERN_REQ]; GUI->req_pattern.disabled=FALSE; // Set requester pattern hook in library SetReqBackFill(&GUI->req_pattern.hook,&GUI->screen_pointer); GUI->flags2|=GUIF2_BACKFILL_SET; // Build kickstart version string if (GetVar("Kickstart",GUI->ver_kickstart,15,GVF_GLOBAL_ONLY)<1) { char *ptr3; ULONG ptr,*ptr2; UWORD ver,rev; #ifdef __AROS__ ver = ((struct Library *)SysBase)->lib_Version; rev = ((struct Library *)SysBase)->lib_Revision; #else ptr2=(ULONG *)0xffffec; ptr=0x1000000-(*ptr2); ptr3=(char *)ptr+12; ptr2=(ULONG *)ptr3; ptr=*ptr2; ver=ptr>>16; rev=ptr&(((1<<32)-(1<<16))-1); #endif lsprintf(GUI->ver_kickstart,"%ld.%ld",ver,rev); }