9 #include "X11/Xlocale.h"
12 extern void W_InitNotificationCenter(void);
15 struct W_Application WMApplication
;
18 char *_WINGS_progname
= NULL
;
23 W_ApplicationInitialized(void)
25 return _WINGS_progname
!=NULL
;
30 WMInitializeApplication(char *applicationName
, int *argc
, char **argv
)
36 assert(applicationName
!=NULL
);
38 /* // TODO: check if to move inside #ifdef I18N */
39 setlocale(LC_ALL
, "");
42 if (getenv("NLSPATH"))
43 bindtextdomain("WINGs", getenv("NLSPATH"));
45 bindtextdomain("WINGs", LOCALEDIR
);
46 bind_textdomain_codeset("WINGs", "UTF-8");
49 _WINGS_progname
= argv
[0];
51 WMApplication
.applicationName
= wstrdup(applicationName
);
52 WMApplication
.argc
= *argc
;
54 WMApplication
.argv
= wmalloc((*argc
+1)*sizeof(char*));
55 for (i
=0; i
<*argc
; i
++) {
56 WMApplication
.argv
[i
] = wstrdup(argv
[i
]);
58 WMApplication
.argv
[i
] = NULL
;
60 /* initialize notification center */
61 W_InitNotificationCenter();
66 WMSetResourcePath(char *path
)
68 if (WMApplication
.resourcePath
)
69 wfree(WMApplication
.resourcePath
);
70 WMApplication
.resourcePath
= wstrdup(path
);
75 WMGetApplicationName()
77 return WMApplication
.applicationName
;
82 checkFile(char *path
, char *folder
, char *ext
, char *resource
)
87 extralen
= (ext
? strlen(ext
) : 0) + (folder
? strlen(folder
) : 0) + 4;
88 ret
= wmalloc(strlen(path
)+strlen(resource
)+extralen
+8);
99 strcat(ret
, resource
);
101 if (access(ret
, F_OK
)!=0) {
111 WMPathForResourceOfType(char *resource
, char *ext
)
118 * Paths are searched in this order:
121 * - GNUSTEP_USER_ROOT/Apps/ApplicationName.app/ext
122 * - ~/GNUstep/Apps/ApplicationName.app/ext
123 * - GNUSTEP_LOCAL_ROOT/Apps/ApplicationName.app/ext
124 * - /usr/local/GNUstep/Apps/ApplicationName.app/ext
125 * - GNUSTEP_SYSTEM_ROOT/Apps/ApplicationName.app/ext
126 * - /usr/GNUstep/Apps/ApplicationName.app/ext
129 if (WMApplication
.resourcePath
) {
130 path
= checkFile(WMApplication
.resourcePath
, NULL
, ext
, resource
);
135 if (WMApplication
.argv
[0]) {
136 tmp
= wstrdup(WMApplication
.argv
[0]);
138 while (i
> 0 && tmp
[i
]!='/')
142 path
= checkFile(tmp
, NULL
, ext
, resource
);
151 appdir
= wmalloc(strlen(WMApplication
.applicationName
)+10);
152 sprintf(appdir
, "Apps/%s.app", WMApplication
.applicationName
);
154 if (getenv("GNUSTEP_USER_ROOT")) {
155 path
= checkFile(getenv("GNUSTEP_USER_ROOT"), appdir
, ext
, resource
);
162 tmp
= wusergnusteppath();
164 path
= checkFile(tmp
, appdir
, ext
, resource
);
171 if (getenv("GNUSTEP_LOCAL_ROOT")) {
172 path
= checkFile(getenv("GNUSTEP_LOCAL_ROOT"), appdir
, ext
, resource
);
179 path
= checkFile("/usr/local/GNUstep", appdir
, ext
, resource
);
186 if (getenv("GNUSTEP_SYSTEM_ROOT")) {
187 path
= checkFile(getenv("GNUSTEP_SYSTEM_ROOT"), appdir
, ext
, resource
);
194 path
= checkFile("/usr/GNUstep", appdir
, ext
, resource
);