#include <signal.h>
#include <cerrno>
#include <fstream>
+#include <vector>
#include <sigc++/bind.h>
#include <gtkmm/settings.h>
gui_jack_error ()
{
MessageDialog win (string_compose (_("%1 could not connect to JACK."), PROGRAM_NAME),
- false,
- Gtk::MESSAGE_INFO,
- (Gtk::ButtonsType)(Gtk::BUTTONS_NONE));
+ false,
+ Gtk::MESSAGE_INFO,
+ Gtk::BUTTONS_NONE);
win.set_secondary_text(_("There are several possible reasons:\n\
\n\
1) JACK is not running.\n\
_NSGetExecutablePath (execpath, &pathsz);
- std::string exec_path (execpath);
- std::string dir_path = Glib::path_get_dirname (exec_path);
+ std::string dir_path = Glib::path_get_dirname (execpath);
std::string path;
const char *cstr = getenv ("PATH");
}
setenv ("PATH", path.c_str(), 1);
- path = dir_path;
- path += "/../Resources";
- path += dir_path;
- path += "/../Resources/Surfaces";
- path += dir_path;
- path += "/../Resources/Panners";
+ export_search_path (dir_path, "ARDOUR_DLL_PATH", "/../lib");
- setenv ("ARDOUR_MODULE_PATH", path.c_str(), 1);
-
- path = user_config_directory().to_string();
- path += ':';
- path += dir_path;
- path += "/../Resources/icons:";
- path += dir_path;
- path += "/../Resources/pixmaps:";
- path += dir_path;
- path += "/../Resources/share:";
path += dir_path;
path += "/../Resources";
- setenv ("ARDOUR_PATH", path.c_str(), 1);
- setenv ("ARDOUR_CONFIG_PATH", path.c_str(), 1);
+ /* inside an OS X .app bundle, there is no difference
+ between DATA and CONFIG locations, since OS X doesn't
+ attempt to do anything to expose the notion of
+ machine-independent shared data.
+ */
- path = dir_path;
- path += "/../Resources";
- setenv ("ARDOUR_INSTANT_XML_PATH", path.c_str(), 1);
+ export_search_path (dir_path, "ARDOUR_DATA_PATH", "/../Resources");
+ export_search_path (dir_path, "ARDOUR_CONFIG_PATH", "/../Resources");
+ export_search_path (dir_path, "ARDOUR_INSTANT_XML_PATH", "/../Resources");
export_search_path (dir_path, "LADSPA_PATH", "/../Plugins");
- export_search_path (dir_path, "VAMP_PATH", "/../Frameworks");
- export_search_path (dir_path, "ARDOUR_PANNER_PATH", "/../Panners");
- export_search_path (dir_path, "ARDOUR_SURFACES_PATH", "/../Surfaces");
- export_search_path (dir_path, "ARDOUR_MIDIMAPS_PATH", "/../MidiMaps");
- export_search_path (dir_path, "ARDOUR_EXPORT_FORMATS_PATH", "/../ExportFormats");
+ export_search_path (dir_path, "VAMP_PATH", "/../lib");
+ export_search_path (dir_path, "SUIL_MODULE_DIR", "/../lib");
path = dir_path;
- path += "/../Frameworks/clearlooks";
-
+ path += "/../lib/clearlooks";
setenv ("GTK_PATH", path.c_str(), 1);
/* unset GTK_RC_FILES so that we only load the RC files that we define
// JACK driver dir
path = dir_path;
- path += "/../Frameworks";
+ path += "/../lib";
setenv ("JACK_DRIVER_DIR", path.c_str(), 1);
}
void
fixup_bundle_environment (int /*argc*/, char* argv[])
{
+ /* THIS IS FOR LINUX - its just about the only place where its
+ * acceptable to build paths directly using '/'.
+ */
+
if (!getenv ("ARDOUR_BUNDLED")) {
return;
}
EnvironmentalProtectionAgency::set_global_epa (new EnvironmentalProtectionAgency (true, "PREBUNDLE_ENV"));
- Glib::ustring exec_path = argv[0];
- Glib::ustring dir_path = Glib::path_get_dirname (Glib::path_get_dirname (exec_path));
+ Glib::ustring dir_path = Glib::path_get_dirname (Glib::path_get_dirname (argv[0]));
Glib::ustring path;
Glib::ustring userconfigdir = user_config_directory().to_string();
- /* ensure that we find any bundled executables (e.g. JACK),
- and find them before any instances of the same name
- elsewhere in PATH
- */
-
/* note that this function is POSIX/Linux specific, so using / as
a dir separator in this context is just fine.
*/
- path = dir_path;
- path += "/etc:";
- path += dir_path;
- path += "/lib/surfaces:";
- path += dir_path;
- path += "/lib/panners:";
-
- setenv ("ARDOUR_MODULE_PATH", path.c_str(), 1);
-
- path = userconfigdir;
- path += ':';
- path += dir_path;
- path += "/etc/icons:";
- path += dir_path;
- path += "/etc/pixmaps:";
- path += dir_path;
- path += "/share:";
- path += dir_path;
- path += "/etc";
-
- setenv ("ARDOUR_PATH", path.c_str(), 1);
- setenv ("ARDOUR_CONFIG_PATH", path.c_str(), 1);
-
- path = dir_path;
- path += "/etc";
- setenv ("ARDOUR_INSTANT_XML_PATH", path.c_str(), 1);
+ export_search_path (dir_path, "ARDOUR_DLL_PATH", "/lib");
+ export_search_path (dir_path, "ARDOUR_CONFIG_PATH", "/etc");
+ export_search_path (dir_path, "ARDOUR_INSTANT_XML_PATH", "/share");
+ export_search_path (dir_path, "ARDOUR_DATA_PATH", "/share");
export_search_path (dir_path, "LADSPA_PATH", "/../plugins");
export_search_path (dir_path, "VAMP_PATH", "/lib");
- export_search_path (dir_path, "ARDOUR_PANNER_PATH", "/lib/panners");
- export_search_path (dir_path, "ARDOUR_SURFACES_PATH", "/lib/surfaces");
- export_search_path (dir_path, "ARDOUR_MIDIMAPS_PATH", "/share/midi_maps");
- export_search_path (dir_path, "ARDOUR_EXPORT_FORMATS_PATH", "/share/export");
+ export_search_path (dir_path, "SUIL_MODULE_DIR", "/lib");
path = dir_path;
path += "/lib/clearlooks";
setenv ("GTK_LOCALEDIR", localedir, 1);
}
+ /* Tell fontconfig where to find fonts.conf. Use the system version
+ if it exists, otherwise use the stuff we included in the bundle
+ */
+
+ if (Glib::file_test ("/etc/fonts/fonts.conf", Glib::FILE_TEST_EXISTS)) {
+ setenv ("FONTCONFIG_FILE", "/etc/fonts/fonts.conf", 1);
+ setenv ("FONTCONFIG_PATH", "/etc/fonts", 1);
+ } else {
+ /* use the one included in the bundle */
+
+ path = Glib::build_filename (dir_path, "etc/fonts/fonts.conf");
+ setenv ("FONTCONFIG_FILE", path.c_str(), 1);
+ path = Glib::build_filename (dir_path, "etc/fonts");
+ setenv ("FONTCONFIG_PATH", "/etc/fonts", 1);
+ }
+
/* write a pango.rc file and tell pango to use it. we'd love
to put this into the Ardour.app bundle and leave it there,
but the user may not have write permission. so ...
if (g_mkdir_with_parents (userconfigdir.c_str(), 0755) < 0) {
error << string_compose (_("cannot create user ardour folder %1 (%2)"), userconfigdir, strerror (errno))
<< endmsg;
- } else {
-
- Glib::ustring mpath;
-
- path = Glib::build_filename (userconfigdir, "pango.rc");
-
- std::ofstream pangorc (path.c_str());
- if (!pangorc) {
- error << string_compose (_("cannot open pango.rc file %1") , path) << endmsg;
- } else {
- mpath = Glib::build_filename (userconfigdir, "pango.modules");
-
- pangorc << "[Pango]\nModuleFiles=";
- pangorc << mpath << endl;
- pangorc.close ();
- }
-
- setenv ("PANGO_RC_FILE", path.c_str(), 1);
-
- /* similar for GDK pixbuf loaders, but there's no RC file required
- to specify where it lives.
- */
+ return;
+ }
- mpath = Glib::build_filename (userconfigdir, "gdk-pixbuf.loaders");
- setenv ("GDK_PIXBUF_MODULE_FILE", mpath.c_str(), 1);
+ Glib::ustring mpath;
+
+ path = Glib::build_filename (userconfigdir, "pango.rc");
+
+ std::ofstream pangorc (path.c_str());
+ if (!pangorc) {
+ error << string_compose (_("cannot open pango.rc file %1") , path) << endmsg;
+ } else {
+ mpath = Glib::build_filename (userconfigdir, "pango.modules");
+
+ pangorc << "[Pango]\nModuleFiles=";
+ pangorc << mpath << endl;
+ pangorc.close ();
}
+
+ setenv ("PANGO_RC_FILE", path.c_str(), 1);
+
+ /* similar for GDK pixbuf loaders, but there's no RC file required
+ to specify where it lives.
+ */
+
+ mpath = Glib::build_filename (userconfigdir, "gdk-pixbuf.loaders");
+ setenv ("GDK_PIXBUF_MODULE_FILE", mpath.c_str(), 1);
}
#endif
{
if (AudioEngine::instance()->processed_frames() == 0) {
/* died during startup */
- MessageDialog msg (_("JACK exited"), false, Gtk::MESSAGE_INFO, Gtk::BUTTONS_OK);
+ MessageDialog msg (_("JACK exited"), false);
msg.set_position (Gtk::WIN_POS_CENTER);
msg.set_secondary_text (string_compose (_(
"JACK exited unexpectedly, and without notifying %1.\n\
/* engine has already run, so this is a mid-session JACK death */
- MessageDialog* msg = manage (new MessageDialog (_("JACK exited"), false, Gtk::MESSAGE_INFO, Gtk::BUTTONS_NONE));
+ MessageDialog* msg = manage (new MessageDialog (_("JACK exited"), false));
msg->set_secondary_text (string_compose (_(
"JACK exited unexpectedly, and without notifying %1.\n\
\n\
void close_external_ui_windows();
#endif
-#ifdef VST_SUPPORT
+#ifdef WINDOWS_VST_SUPPORT
-extern int gui_init (int* argc, char** argv[]);
+extern int windows_vst_gui_init (int* argc, char** argv[]);
/* this is called from the entry point of a wine-compiled
executable that is linked against gtk2_ardour built
gtk_set_locale ();
-#ifdef VST_SUPPORT
+#ifdef WINDOWS_VST_SUPPORT
/* this does some magic that is needed to make GTK and Wine's own
X11 client interact properly.
*/
- gui_init (&argc, &argv);
+ windows_vst_gui_init (&argc, &argv);
#endif
(void) bindtextdomain (PACKAGE, localedir);
}
if (no_splash) {
- cerr << _("Copyright (C) 1999-2011 Paul Davis") << endl
+ cerr << _("Copyright (C) 1999-2012 Paul Davis") << endl
<< _("Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker") << endl
<< endl
<< string_compose (_("%1 comes with ABSOLUTELY NO WARRANTY"), PROGRAM_NAME) << endl
#endif
return 0;
}
-#ifdef VST_SUPPORT
+#ifdef WINDOWS_VST_SUPPORT
} // end of extern C block
#endif