along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
#include <vector>
#include <gtkmm/uimanager.h>
#include <pbd/error.h>
+#include <pbd/file_utils.h>
#include <ardour/ardour.h>
+#include <ardour/filesystem_paths.h>
#include "actions.h"
#include "i18n.h"
ActionManager::init ()
{
ui_manager = UIManager::create ();
-
- std::string ui_file = ARDOUR::find_config_file("ardour.menus");
+
+ sys::path ui_file;
+
+ SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
+
+ find_file_in_search_path (spath, "ardour.menus", ui_file);
bool loaded = false;
try {
- ui_manager->add_ui_from_file (ui_file);
+ ui_manager->add_ui_from_file (ui_file.to_string());
loaded = true;
} catch (Glib::MarkupError& err) {
error << _("badly formatted UI definition file") << endmsg;
}
}
-RefPtr<Action>
-ActionManager::register_action (RefPtr<ActionGroup> group, const char * name, const char * label, slot<void> sl, guint key, Gdk::ModifierType mods)
-{
- RefPtr<Action> act = register_action (group, name, label, sl);
- cerr << "Reset A accel for " << name << endl;
- AccelMap::add_entry (act->get_accel_path(), key, mods);
-
- return act;
-}
-
RefPtr<Action>
ActionManager::register_action (RefPtr<ActionGroup> group, const char * name, const char * label, slot<void> sl)
{
}
-RefPtr<Action>
-ActionManager::register_radio_action (RefPtr<ActionGroup> group, RadioAction::Group& rgroup, const char * name, const char * label, slot<void> sl, guint key, Gdk::ModifierType mods)
-{
- RefPtr<Action> act = register_radio_action (group, rgroup, name, label, sl);
- cerr << "Reset B accel for " << name << endl;
- AccelMap::add_entry (act->get_accel_path(), key, mods);
-
- return act;
-}
-
RefPtr<Action>
ActionManager::register_radio_action (RefPtr<ActionGroup> group, RadioAction::Group& rgroup, const char * name, const char * label, slot<void> sl)
{
return act;
}
-RefPtr<Action>
-ActionManager::register_toggle_action (RefPtr<ActionGroup> group, const char * name, const char * label, slot<void> sl, guint key, Gdk::ModifierType mods)
-{
- RefPtr<Action> act = register_toggle_action (group,name, label, sl);
- cerr << "Reset C accel for " << name << endl;
- AccelMap::add_entry (act->get_accel_path(), key, mods);
-
- return act;
-}
-
RefPtr<Action>
ActionManager::register_toggle_action (RefPtr<ActionGroup> group, const char * name, const char * label, slot<void> sl)
{
delete [] group_name;
}
+/** Examine the state of a Configuration setting and a toggle action, and toggle the Configuration
+ * setting if its state doesn't match the toggle action.
+ * @param group Action group.
+ * @param action Action name.
+ * @param Method to set the state of the Configuration setting.
+ * @param Method to get the state of the Configuration setting.
+ */
void
ActionManager::toggle_config_state (const char* group, const char* action, bool (Configuration::*set)(bool), bool (Configuration::*get)(void) const)
{
if (tact) {
bool x = (Config->*get)();
-
+
if (x != tact->get_active()) {
(Config->*set) (!x);
}
}
}
+
+/** Set the state of a ToggleAction using a particular Configuration get() method
+ * @param group Action group.
+ * @param action Action name.
+ * @param get Method to obtain the state that the ToggleAction should have.
+ */
void
ActionManager::map_some_state (const char* group, const char* action, bool (Configuration::*get)() const)
{