mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 08:15:18 -04:00
pstats: Add keyboard shortcuts in GTK+ implementation
This commit is contained in:
parent
0421ee31b3
commit
1e542a43a1
@ -55,6 +55,8 @@ GtkStatsGraph(GtkStatsMonitor *monitor, bool has_label_stack) :
|
||||
//gtk_window_set_transient_for(GTK_WINDOW(_window), GTK_WINDOW(parent_window));
|
||||
//gtk_window_set_position(GTK_WINDOW(_window), GTK_WIN_POS_CENTER_ON_PARENT);
|
||||
|
||||
gtk_window_add_accel_group(GTK_WINDOW(_window), monitor->get_accel_group());
|
||||
|
||||
gtk_widget_add_events(_window,
|
||||
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_POINTER_MOTION_MASK);
|
||||
|
@ -270,6 +270,14 @@ get_window() const {
|
||||
return _window;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
GtkAccelGroup *GtkStatsMonitor::
|
||||
get_accel_group() const {
|
||||
return ((GtkStatsServer *)_server)->get_accel_group();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the screen DPI.
|
||||
*/
|
||||
|
@ -78,6 +78,7 @@ public:
|
||||
virtual void user_guide_bars_changed();
|
||||
|
||||
GtkWidget *get_window() const;
|
||||
GtkAccelGroup *get_accel_group() const;
|
||||
double get_resolution() const;
|
||||
|
||||
PStatGraph *open_timeline();
|
||||
|
@ -30,9 +30,6 @@ GtkStatsServer() {
|
||||
#endif
|
||||
_last_session.set_binary();
|
||||
|
||||
_window = nullptr;
|
||||
_menu_bar = nullptr;
|
||||
_options_menu = nullptr;
|
||||
|
||||
_time_units = 0;
|
||||
|
||||
@ -417,6 +414,14 @@ get_window() const {
|
||||
return _window;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the server window's accelerator group.
|
||||
*/
|
||||
GtkAccelGroup *GtkStatsServer::
|
||||
get_accel_group() const {
|
||||
return _accel_group;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the menu handle to the server's menu bar.
|
||||
*/
|
||||
@ -479,8 +484,8 @@ create_window() {
|
||||
}), this);
|
||||
|
||||
// Set up the menu.
|
||||
GtkAccelGroup *accel_group = gtk_accel_group_new();
|
||||
gtk_window_add_accel_group(GTK_WINDOW(_window), accel_group);
|
||||
_accel_group = gtk_accel_group_new();
|
||||
gtk_window_add_accel_group(GTK_WINDOW(_window), _accel_group);
|
||||
_menu_bar = gtk_menu_bar_new();
|
||||
|
||||
setup_session_menu();
|
||||
@ -533,6 +538,8 @@ setup_session_menu() {
|
||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||
self->new_session();
|
||||
}), this);
|
||||
gtk_widget_add_accelerator(item, "activate", _accel_group,
|
||||
GDK_KEY_n, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic("_Open Session...");
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(_session_menu), item);
|
||||
@ -541,6 +548,8 @@ setup_session_menu() {
|
||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||
self->open_session();
|
||||
}), this);
|
||||
gtk_widget_add_accelerator(item, "activate", _accel_group,
|
||||
GDK_KEY_o, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic("Open _Last Session");
|
||||
_open_last_session_menu_item = item;
|
||||
@ -564,6 +573,8 @@ setup_session_menu() {
|
||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||
self->save_session();
|
||||
}), this);
|
||||
gtk_widget_add_accelerator(item, "activate", _accel_group,
|
||||
GDK_KEY_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||
|
||||
item = gtk_menu_item_new_with_mnemonic("_Close Session");
|
||||
_close_session_menu_item = item;
|
||||
@ -574,6 +585,8 @@ setup_session_menu() {
|
||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||
self->close_session();
|
||||
}), this);
|
||||
gtk_widget_add_accelerator(item, "activate", _accel_group,
|
||||
GDK_KEY_w, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||
|
||||
GtkWidget *sep = gtk_separator_menu_item_new();
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(_session_menu), sep);
|
||||
@ -600,40 +613,10 @@ setup_session_menu() {
|
||||
gtk_main_quit();
|
||||
}
|
||||
}), this);
|
||||
gtk_widget_add_accelerator(item, "activate", _accel_group,
|
||||
GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||
|
||||
gtk_widget_show_all(_session_menu);
|
||||
|
||||
/*
|
||||
_session_menu = CreatePopupMenu();
|
||||
|
||||
MENUITEMINFO mii;
|
||||
memset(&mii, 0, sizeof(mii));
|
||||
mii.cbSize = sizeof(mii);
|
||||
|
||||
mii.fMask = MIIM_STRING | MIIM_FTYPE | MIIM_SUBMENU;
|
||||
mii.fType = MFT_STRING;
|
||||
mii.hSubMenu = _session_menu;
|
||||
|
||||
mii.dwTypeData = "&Session";
|
||||
InsertMenuItem(_menu_bar, GetMenuItemCount(_menu_bar), TRUE, &mii);
|
||||
|
||||
AppendMenu(_session_menu, MF_STRING, MI_session_new, "&New Session\tCtrl+N");
|
||||
AppendMenu(_session_menu, MF_STRING, MI_session_open, "&Open Session...\tCtrl+O");
|
||||
|
||||
if (_last_session.exists()) {
|
||||
AppendMenu(_session_menu, MF_STRING, MI_session_open_last, "Open &Last Session");
|
||||
} else {
|
||||
AppendMenu(_session_menu, MF_STRING | MF_DISABLED, MI_session_open_last, "Open &Last Session");
|
||||
}
|
||||
|
||||
AppendMenu(_session_menu, MF_STRING | MF_DISABLED, MI_session_save, "&Save Session...\tCtrl+S");
|
||||
AppendMenu(_session_menu, MF_STRING | MF_DISABLED, MI_session_close, "&Close Session\tCtrl+W");
|
||||
|
||||
AppendMenu(_session_menu, MF_SEPARATOR, 0, nullptr);
|
||||
AppendMenu(_session_menu, MF_STRING | MF_DISABLED, MI_session_export_json, "&Export as JSON...");
|
||||
|
||||
AppendMenu(_session_menu, MF_SEPARATOR, 0, nullptr);
|
||||
AppendMenu(_session_menu, MF_STRING, MI_exit, "E&xit");*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -36,6 +36,7 @@ public:
|
||||
bool close_session();
|
||||
|
||||
GtkWidget *get_window() const;
|
||||
GtkAccelGroup *get_accel_group() const;
|
||||
GtkWidget *get_menu_bar() const;
|
||||
GtkWidget *get_status_bar() const;
|
||||
|
||||
@ -57,10 +58,11 @@ private:
|
||||
Filename _last_session;
|
||||
Filename _save_filename;
|
||||
|
||||
GtkWidget *_window;
|
||||
GtkWidget *_menu_bar;
|
||||
GtkWidget *_session_menu;
|
||||
GtkWidget *_options_menu;
|
||||
GtkWidget *_window = nullptr;
|
||||
GtkAccelGroup *_accel_group = nullptr;
|
||||
GtkWidget *_menu_bar = nullptr;
|
||||
GtkWidget *_session_menu = nullptr;
|
||||
GtkWidget *_options_menu = nullptr;
|
||||
GtkWidget *_status_bar;
|
||||
GtkWidget *_status_bar_label = nullptr;
|
||||
GtkWidget *_new_session_menu_item;
|
||||
|
Loading…
x
Reference in New Issue
Block a user