/* * peas-utils-osx.m * This file is part of libpeas * * Copyright (C) 2008 Ignacio Casal Quinteiro * * libpeas is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * libpeas is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Author: Tom Schoonjans */ #include "config.h" #include "peas-utils-osx.h" #import #import void peas_open_url_osx (const char *uri) { [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[NSString stringWithUTF8String:uri]]]; } char * peas_dirs_os_x_get_bundle_resource_dir (void) { NSAutoreleasePool *pool; char *str = NULL; NSString *path; pool = [[NSAutoreleasePool alloc] init]; if ([[NSBundle mainBundle] bundleIdentifier] == nil) { [pool release]; return NULL; } path = [[NSBundle mainBundle] resourcePath]; if (!path) { [pool release]; return NULL; } str = g_strdup ([path UTF8String]); [pool release]; return str; } char * peas_dirs_os_x_get_resource_dir (const char *subdir, const char *default_dir) { char *res_dir; char *ret; res_dir = peas_dirs_os_x_get_bundle_resource_dir (); if (res_dir == NULL) { ret = g_build_filename (default_dir, "libpeas-1.0", NULL); } else { ret = g_build_filename (res_dir, subdir, "libpeas-1.0", NULL); g_free (res_dir); } return ret; } char * peas_dirs_os_x_get_data_dir (void) { return peas_dirs_os_x_get_resource_dir ("share", DATADIR); } char * peas_dirs_os_x_get_lib_dir (void) { return peas_dirs_os_x_get_resource_dir ("lib", LIBDIR); } char * peas_dirs_os_x_get_locale_dir (void) { char *res_dir; char *ret; res_dir = peas_dirs_os_x_get_bundle_resource_dir (); if (res_dir == NULL) { ret = g_build_filename (DATADIR, "locale", NULL); } else { ret = g_build_filename (res_dir, "share", "locale", NULL); g_free (res_dir); } return ret; }