#include <stdint.h>
#include <gdk/gdkkeysyms.h>
#include <gtkmm/action.h>
-#include <gtkmm/action.h>
#include <gtkmm/radioaction.h>
#include <gtkmm/toggleaction.h>
KeyboardKey () {
_val = GDK_VoidSymbol;
}
-
+
KeyboardKey (uint32_t state, uint32_t keycode);
-
+
uint32_t state() const { return _val >> 32; }
uint32_t key() const { return _val & 0xffff; }
-
+
bool operator<(const KeyboardKey& other) const {
return _val < other._val;
}
std::string name() const;
static bool make_button (const std::string&, MouseButton&);
- static void set_ignored_state (int mask) {
- _ignored_state = mask;
- }
private:
uint64_t _val;
- static uint32_t _ignored_state;
};
class LIBGTKMM2EXT_API ActionMap {
ActionMap() {}
~ActionMap() {}
- Glib::RefPtr<Gtk::Action> register_action (const char* path,
+ Glib::RefPtr<Gtk::ActionGroup> create_action_group (const std::string& group_name);
+ void install_action_group (Glib::RefPtr<Gtk::ActionGroup>);
+
+ Glib::RefPtr<Gtk::Action> register_action (Glib::RefPtr<Gtk::ActionGroup> group, const char* name, const char* label);
+ Glib::RefPtr<Gtk::Action> register_action (Glib::RefPtr<Gtk::ActionGroup> group,
const char* name, const char* label, sigc::slot<void> sl);
+<<<<<<< HEAD
Glib::RefPtr<Gtk::Action> register_radio_action (const char* path, Gtk::RadioAction::Group&,
+ const char* name, const char* label,
+=======
+ Glib::RefPtr<Gtk::Action> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group,
+ Gtk::RadioAction::Group&,
const char* name, const char* label,
+>>>>>>> changes to Bindings and Keyboard API to support (mostly) GTK-free keyboard bindings
sigc::slot<void,GtkAction*> sl,
int value);
- Glib::RefPtr<Gtk::Action> register_toggle_action (const char*path,
+ Glib::RefPtr<Gtk::Action> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group,
+ Gtk::RadioAction::Group&,
+ const char* name, const char* label,
+ sigc::slot<void> sl);
+ Glib::RefPtr<Gtk::Action> register_toggle_action (Glib::RefPtr<Gtk::ActionGroup> group,
const char* name, const char* label, sigc::slot<void> sl);
Glib::RefPtr<Gtk::Action> find_action (const std::string& name);
private:
typedef std::map<std::string, Glib::RefPtr<Gtk::Action> > _ActionMap;
_ActionMap actions;
-};
+};
class LIBGTKMM2EXT_API Bindings {
public:
- enum Operation {
+ enum Operation {
Press,
Release
};
-
+
Bindings();
~Bindings ();
+ bool empty() const;
+ bool empty_keys () const;
+ bool empty_mouse () const;
+
void add (KeyboardKey, Operation, Glib::RefPtr<Gtk::Action>);
void remove (KeyboardKey, Operation);
bool activate (KeyboardKey, Operation);
void load (const XMLNode& node);
bool save (const std::string& path);
void save (XMLNode& root);
-
+
void set_action_map (ActionMap&);
static void set_ignored_state (int mask) {
KeybindingMap press_bindings;
KeybindingMap release_bindings;
-
+
typedef std::map<MouseButton,Glib::RefPtr<Gtk::Action> > MouseButtonBindingMap;
MouseButtonBindingMap button_press_bindings;
MouseButtonBindingMap button_release_bindings;
} // namespace
+std::ostream& operator<<(std::ostream& out, Gtkmm2ext::KeyboardKey const & k);
+
#endif /* __libgtkmm2ext_bindings_h__ */