mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 00:32:57 -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_transient_for(GTK_WINDOW(_window), GTK_WINDOW(parent_window));
|
||||||
//gtk_window_set_position(GTK_WINDOW(_window), GTK_WIN_POS_CENTER_ON_PARENT);
|
//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,
|
gtk_widget_add_events(_window,
|
||||||
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
|
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
|
||||||
GDK_POINTER_MOTION_MASK);
|
GDK_POINTER_MOTION_MASK);
|
||||||
|
@ -270,6 +270,14 @@ get_window() const {
|
|||||||
return _window;
|
return _window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
GtkAccelGroup *GtkStatsMonitor::
|
||||||
|
get_accel_group() const {
|
||||||
|
return ((GtkStatsServer *)_server)->get_accel_group();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the screen DPI.
|
* Returns the screen DPI.
|
||||||
*/
|
*/
|
||||||
|
@ -78,6 +78,7 @@ public:
|
|||||||
virtual void user_guide_bars_changed();
|
virtual void user_guide_bars_changed();
|
||||||
|
|
||||||
GtkWidget *get_window() const;
|
GtkWidget *get_window() const;
|
||||||
|
GtkAccelGroup *get_accel_group() const;
|
||||||
double get_resolution() const;
|
double get_resolution() const;
|
||||||
|
|
||||||
PStatGraph *open_timeline();
|
PStatGraph *open_timeline();
|
||||||
|
@ -30,9 +30,6 @@ GtkStatsServer() {
|
|||||||
#endif
|
#endif
|
||||||
_last_session.set_binary();
|
_last_session.set_binary();
|
||||||
|
|
||||||
_window = nullptr;
|
|
||||||
_menu_bar = nullptr;
|
|
||||||
_options_menu = nullptr;
|
|
||||||
|
|
||||||
_time_units = 0;
|
_time_units = 0;
|
||||||
|
|
||||||
@ -417,6 +414,14 @@ get_window() const {
|
|||||||
return _window;
|
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.
|
* Returns the menu handle to the server's menu bar.
|
||||||
*/
|
*/
|
||||||
@ -479,8 +484,8 @@ create_window() {
|
|||||||
}), this);
|
}), this);
|
||||||
|
|
||||||
// Set up the menu.
|
// Set up the menu.
|
||||||
GtkAccelGroup *accel_group = gtk_accel_group_new();
|
_accel_group = gtk_accel_group_new();
|
||||||
gtk_window_add_accel_group(GTK_WINDOW(_window), accel_group);
|
gtk_window_add_accel_group(GTK_WINDOW(_window), _accel_group);
|
||||||
_menu_bar = gtk_menu_bar_new();
|
_menu_bar = gtk_menu_bar_new();
|
||||||
|
|
||||||
setup_session_menu();
|
setup_session_menu();
|
||||||
@ -533,6 +538,8 @@ setup_session_menu() {
|
|||||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||||
self->new_session();
|
self->new_session();
|
||||||
}), this);
|
}), 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...");
|
item = gtk_menu_item_new_with_mnemonic("_Open Session...");
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(_session_menu), item);
|
gtk_menu_shell_append(GTK_MENU_SHELL(_session_menu), item);
|
||||||
@ -541,6 +548,8 @@ setup_session_menu() {
|
|||||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||||
self->open_session();
|
self->open_session();
|
||||||
}), this);
|
}), 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");
|
item = gtk_menu_item_new_with_mnemonic("Open _Last Session");
|
||||||
_open_last_session_menu_item = item;
|
_open_last_session_menu_item = item;
|
||||||
@ -564,6 +573,8 @@ setup_session_menu() {
|
|||||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||||
self->save_session();
|
self->save_session();
|
||||||
}), this);
|
}), 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");
|
item = gtk_menu_item_new_with_mnemonic("_Close Session");
|
||||||
_close_session_menu_item = item;
|
_close_session_menu_item = item;
|
||||||
@ -574,6 +585,8 @@ setup_session_menu() {
|
|||||||
GtkStatsServer *self = (GtkStatsServer *)data;
|
GtkStatsServer *self = (GtkStatsServer *)data;
|
||||||
self->close_session();
|
self->close_session();
|
||||||
}), this);
|
}), 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();
|
GtkWidget *sep = gtk_separator_menu_item_new();
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(_session_menu), sep);
|
gtk_menu_shell_append(GTK_MENU_SHELL(_session_menu), sep);
|
||||||
@ -600,40 +613,10 @@ setup_session_menu() {
|
|||||||
gtk_main_quit();
|
gtk_main_quit();
|
||||||
}
|
}
|
||||||
}), this);
|
}), this);
|
||||||
|
gtk_widget_add_accelerator(item, "activate", _accel_group,
|
||||||
|
GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||||
|
|
||||||
gtk_widget_show_all(_session_menu);
|
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();
|
bool close_session();
|
||||||
|
|
||||||
GtkWidget *get_window() const;
|
GtkWidget *get_window() const;
|
||||||
|
GtkAccelGroup *get_accel_group() const;
|
||||||
GtkWidget *get_menu_bar() const;
|
GtkWidget *get_menu_bar() const;
|
||||||
GtkWidget *get_status_bar() const;
|
GtkWidget *get_status_bar() const;
|
||||||
|
|
||||||
@ -57,10 +58,11 @@ private:
|
|||||||
Filename _last_session;
|
Filename _last_session;
|
||||||
Filename _save_filename;
|
Filename _save_filename;
|
||||||
|
|
||||||
GtkWidget *_window;
|
GtkWidget *_window = nullptr;
|
||||||
GtkWidget *_menu_bar;
|
GtkAccelGroup *_accel_group = nullptr;
|
||||||
GtkWidget *_session_menu;
|
GtkWidget *_menu_bar = nullptr;
|
||||||
GtkWidget *_options_menu;
|
GtkWidget *_session_menu = nullptr;
|
||||||
|
GtkWidget *_options_menu = nullptr;
|
||||||
GtkWidget *_status_bar;
|
GtkWidget *_status_bar;
|
||||||
GtkWidget *_status_bar_label = nullptr;
|
GtkWidget *_status_bar_label = nullptr;
|
||||||
GtkWidget *_new_session_menu_item;
|
GtkWidget *_new_session_menu_item;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user