From e8e9336f6aca73ce67f02e53f13030f2dc9129b6 Mon Sep 17 00:00:00 2001 From: David Rose Date: Sat, 10 Jan 2004 01:07:32 +0000 Subject: [PATCH] double-clicks on labels --- pandatool/src/win-stats/winStatsGraph.cxx | 5 +++-- pandatool/src/win-stats/winStatsGraph.h | 3 ++- pandatool/src/win-stats/winStatsLabel.cxx | 14 +++++++++---- pandatool/src/win-stats/winStatsLabel.h | 5 ++++- .../src/win-stats/winStatsLabelStack.cxx | 5 +++-- pandatool/src/win-stats/winStatsLabelStack.h | 3 ++- pandatool/src/win-stats/winStatsMonitor.cxx | 20 +++++++++++++------ pandatool/src/win-stats/winStatsMonitor.h | 1 + .../src/win-stats/winStatsStripChart.cxx | 11 +++++----- pandatool/src/win-stats/winStatsStripChart.h | 2 +- 10 files changed, 46 insertions(+), 23 deletions(-) diff --git a/pandatool/src/win-stats/winStatsGraph.cxx b/pandatool/src/win-stats/winStatsGraph.cxx index 1f0549853e..feb6784a67 100644 --- a/pandatool/src/win-stats/winStatsGraph.cxx +++ b/pandatool/src/win-stats/winStatsGraph.cxx @@ -29,8 +29,9 @@ const char * const WinStatsGraph::_graph_window_class_name = "graph"; // Description: //////////////////////////////////////////////////////////////////// WinStatsGraph:: -WinStatsGraph(WinStatsMonitor *monitor) : - _monitor(monitor) +WinStatsGraph(WinStatsMonitor *monitor, int thread_index) : + _monitor(monitor), + _thread_index(thread_index) { _window = 0; _graph_window = 0; diff --git a/pandatool/src/win-stats/winStatsGraph.h b/pandatool/src/win-stats/winStatsGraph.h index 96b448ec63..18a33dd79a 100644 --- a/pandatool/src/win-stats/winStatsGraph.h +++ b/pandatool/src/win-stats/winStatsGraph.h @@ -35,7 +35,7 @@ class WinStatsMonitor; //////////////////////////////////////////////////////////////////// class WinStatsGraph { public: - WinStatsGraph(WinStatsMonitor *monitor); + WinStatsGraph(WinStatsMonitor *monitor, int thread_index); virtual ~WinStatsGraph(); virtual void new_collector(int collector_index); @@ -59,6 +59,7 @@ protected: Brushes _brushes; WinStatsMonitor *_monitor; + int _thread_index; HWND _window; HWND _graph_window; WinStatsLabelStack _label_stack; diff --git a/pandatool/src/win-stats/winStatsLabel.cxx b/pandatool/src/win-stats/winStatsLabel.cxx index 6db09e5e66..7e35987fac 100755 --- a/pandatool/src/win-stats/winStatsLabel.cxx +++ b/pandatool/src/win-stats/winStatsLabel.cxx @@ -33,13 +33,15 @@ const char * const WinStatsLabel::_window_class_name = "label"; // Description: //////////////////////////////////////////////////////////////////// WinStatsLabel:: -WinStatsLabel(WinStatsMonitor *monitor, int collector_index) : +WinStatsLabel(WinStatsMonitor *monitor, int thread_index, int collector_index) : + _monitor(monitor), + _thread_index(thread_index), _collector_index(collector_index) { _window = 0; - _text = monitor->get_client_data()->get_collector_name(_collector_index); + _text = _monitor->get_client_data()->get_collector_name(_collector_index); - RGBColorf rgb = monitor->get_collector_color(_collector_index); + RGBColorf rgb = _monitor->get_collector_color(_collector_index); int r = (int)(rgb[0] * 255.0f); int g = (int)(rgb[1] * 255.0f); int b = (int)(rgb[2] * 255.0f); @@ -212,7 +214,7 @@ register_window_class(HINSTANCE application) { WNDCLASS wc; ZeroMemory(&wc, sizeof(WNDCLASS)); - wc.style = 0; + wc.style = CS_DBLCLKS; wc.lpfnWndProc = (WNDPROC)static_window_proc; wc.hInstance = application; wc.hCursor = LoadCursor(NULL, IDC_ARROW); @@ -254,6 +256,10 @@ static_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { LONG WinStatsLabel:: window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { + case WM_LBUTTONDBLCLK: + _monitor->open_strip_chart(_thread_index, _collector_index); + return 0; + case WM_PAINT: { PAINTSTRUCT ps; diff --git a/pandatool/src/win-stats/winStatsLabel.h b/pandatool/src/win-stats/winStatsLabel.h index 40c0ec455c..ab3e9d8b89 100755 --- a/pandatool/src/win-stats/winStatsLabel.h +++ b/pandatool/src/win-stats/winStatsLabel.h @@ -34,7 +34,8 @@ class WinStatsMonitor; //////////////////////////////////////////////////////////////////// class WinStatsLabel { public: - WinStatsLabel(WinStatsMonitor *monitor, int collector_index); + WinStatsLabel(WinStatsMonitor *monitor, int thread_index, + int collector_index); ~WinStatsLabel(); void setup(HWND parent_window); @@ -53,6 +54,8 @@ private: static LONG WINAPI static_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); LONG WINAPI window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); + WinStatsMonitor *_monitor; + int _thread_index; int _collector_index; string _text; HWND _window; diff --git a/pandatool/src/win-stats/winStatsLabelStack.cxx b/pandatool/src/win-stats/winStatsLabelStack.cxx index f88720ddad..e716482287 100755 --- a/pandatool/src/win-stats/winStatsLabelStack.cxx +++ b/pandatool/src/win-stats/winStatsLabelStack.cxx @@ -181,13 +181,14 @@ clear_labels() { // Description: Adds a new label to the top of the stack. //////////////////////////////////////////////////////////////////// void WinStatsLabelStack:: -add_label(WinStatsMonitor *monitor, int collector_index) { +add_label(WinStatsMonitor *monitor, int thread_index, int collector_index) { int yp = _height; if (!_labels.empty()) { WinStatsLabel *top_label = _labels.back(); yp = top_label->get_y() - top_label->get_height(); } - WinStatsLabel *label = new WinStatsLabel(monitor, collector_index); + WinStatsLabel *label = + new WinStatsLabel(monitor, thread_index, collector_index); if (_window) { label->setup(_window); label->set_pos(0, yp, _width); diff --git a/pandatool/src/win-stats/winStatsLabelStack.h b/pandatool/src/win-stats/winStatsLabelStack.h index fdf7f7c54c..3ba6d53269 100755 --- a/pandatool/src/win-stats/winStatsLabelStack.h +++ b/pandatool/src/win-stats/winStatsLabelStack.h @@ -48,7 +48,8 @@ public: int get_ideal_width() const; void clear_labels(); - void add_label(WinStatsMonitor *monitor, int collector_index); + void add_label(WinStatsMonitor *monitor, int thread_index, + int collector_index); private: void create_window(HWND parent_window); diff --git a/pandatool/src/win-stats/winStatsMonitor.cxx b/pandatool/src/win-stats/winStatsMonitor.cxx index 4ddef70ee3..2c95e889b0 100644 --- a/pandatool/src/win-stats/winStatsMonitor.cxx +++ b/pandatool/src/win-stats/winStatsMonitor.cxx @@ -103,8 +103,7 @@ initialized() { void WinStatsMonitor:: got_hello() { create_window(); - - add_graph(new WinStatsStripChart(this, get_view(0), 0)); + open_strip_chart(0, 0); } //////////////////////////////////////////////////////////////////// @@ -246,6 +245,18 @@ get_window() const { return _window; } +//////////////////////////////////////////////////////////////////// +// Function: WinStatsMonitor::open_strip_chart_ +// Access: Public +// Description: Opens a new strip chart showing the indicated data. +//////////////////////////////////////////////////////////////////// +void WinStatsMonitor:: +open_strip_chart(int thread_index, int collector_index) { + WinStatsStripChart *chart = + new WinStatsStripChart(this, thread_index, collector_index); + add_graph(chart); +} + //////////////////////////////////////////////////////////////////// // Function: WinStatsMonitor::lookup_menu // Access: Public @@ -414,10 +425,7 @@ window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { if (HIWORD(wparam) <= 1) { int menu_id = LOWORD(wparam); const MenuDef &menu_def = lookup_menu(menu_id); - WinStatsStripChart *chart = - new WinStatsStripChart(this, get_view(menu_def._thread_index), - menu_def._collector_index); - add_graph(chart); + open_strip_chart(menu_def._thread_index, menu_def._collector_index); return 0; } break; diff --git a/pandatool/src/win-stats/winStatsMonitor.h b/pandatool/src/win-stats/winStatsMonitor.h index 8a8c8cb165..04bf5e9dfa 100644 --- a/pandatool/src/win-stats/winStatsMonitor.h +++ b/pandatool/src/win-stats/winStatsMonitor.h @@ -65,6 +65,7 @@ public: virtual bool has_idle(); HWND get_window() const; + void open_strip_chart(int thread_index, int collector_index); const MenuDef &lookup_menu(int menu_id) const; int get_menu_id(const MenuDef &menu_def); diff --git a/pandatool/src/win-stats/winStatsStripChart.cxx b/pandatool/src/win-stats/winStatsStripChart.cxx index 3311c0c2e7..c6c653e2d5 100644 --- a/pandatool/src/win-stats/winStatsStripChart.cxx +++ b/pandatool/src/win-stats/winStatsStripChart.cxx @@ -31,12 +31,12 @@ const char * const WinStatsStripChart::_window_class_name = "strip"; // Description: //////////////////////////////////////////////////////////////////// WinStatsStripChart:: -WinStatsStripChart(WinStatsMonitor *monitor, PStatView &view, +WinStatsStripChart(WinStatsMonitor *monitor, int thread_index, int collector_index) : - PStatStripChart(monitor, view, collector_index, + PStatStripChart(monitor, monitor->get_view(thread_index), collector_index, default_strip_chart_width, default_strip_chart_height), - WinStatsGraph(monitor) + WinStatsGraph(monitor, thread_index) { _brush_origin = 0; @@ -117,7 +117,8 @@ update_labels() { _label_stack.clear_labels(); for (int i = 0; i < get_num_labels(); i++) { - _label_stack.add_label(WinStatsGraph::_monitor, get_label_collector(i)); + _label_stack.add_label(WinStatsGraph::_monitor, _thread_index, + get_label_collector(i)); } _labels_changed = false; } @@ -266,7 +267,7 @@ create_window() { _window = CreateWindow(_window_class_name, window_title.c_str(), window_style, - CW_USEDEFAULT, 0, + CW_USEDEFAULT, CW_USEDEFAULT, win_rect.right - win_rect.left, win_rect.bottom - win_rect.top, WinStatsGraph::_monitor->get_window(), NULL, application, 0); diff --git a/pandatool/src/win-stats/winStatsStripChart.h b/pandatool/src/win-stats/winStatsStripChart.h index 5628b6bed7..202701688d 100644 --- a/pandatool/src/win-stats/winStatsStripChart.h +++ b/pandatool/src/win-stats/winStatsStripChart.h @@ -36,7 +36,7 @@ class WinStatsMonitor; class WinStatsStripChart : public PStatStripChart, public WinStatsGraph { public: WinStatsStripChart(WinStatsMonitor *monitor, - PStatView &view, int collector_index); + int thread_index, int collector_index); virtual ~WinStatsStripChart(); virtual void new_collector(int collector_index);