mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
Handle NULL models.
Thu Mar 2 22:54:37 2006 Soeren Sandmann <sandmann@redhat.com> * treeviewutils.c (tree_view_foreach_visible): Handle NULL models. * sysprof.glade, sysprof.c: Revert back to three pane layout.
This commit is contained in:
committed by
Søren Sandmann Pedersen
parent
dc51fea3b4
commit
0d6d997f4a
@ -1,3 +1,9 @@
|
||||
Thu Mar 2 22:54:37 2006 Soeren Sandmann <sandmann@redhat.com>
|
||||
|
||||
* treeviewutils.c (tree_view_foreach_visible): Handle NULL models.
|
||||
|
||||
* sysprof.glade, sysprof.c: Revert back to three pane layout.
|
||||
|
||||
2006-02-17 Bastien Nocera <hadess@hadess.net>
|
||||
|
||||
* configure.ac:
|
||||
|
||||
6
TODO
6
TODO
@ -244,8 +244,6 @@ http://www.linuxbase.org/spec/booksets/LSB-Embedded/LSB-Embedded/ehframe.html
|
||||
the details of a function are not that interesting
|
||||
together with a tree. (Could add radio buttons somewhere in
|
||||
in the right pane).
|
||||
- CVS head now has two radio buttons in the right pane, and
|
||||
caller pane is gone.
|
||||
|
||||
- rethink caller list, not terribly useful at the moment. Federico suggested
|
||||
listing all ancestors.
|
||||
@ -468,6 +466,10 @@ Later:
|
||||
|
||||
DONE:
|
||||
|
||||
- CVS head now has two radio buttons in the right pane, and
|
||||
caller pane is gone. (This turned out to be a bad idea, because it
|
||||
is often useful to click on ancestors to move up the tree).
|
||||
|
||||
* Don't build the GUI if gtk+ is not installed
|
||||
|
||||
* Find out why we sometimes get reports of time spent by [pid 0].
|
||||
|
||||
41
sysprof.c
41
sysprof.c
@ -55,10 +55,6 @@ struct Application
|
||||
GtkTreeView * object_view;
|
||||
GtkTreeView * callers_view;
|
||||
GtkTreeView * descendants_view;
|
||||
|
||||
GtkWidget * ancestors_radiobutton;
|
||||
GtkWidget * descendants_radiobutton;
|
||||
GtkWidget * view_notebook;
|
||||
|
||||
GtkWidget * start_button;
|
||||
GtkWidget * profile_button;
|
||||
@ -239,9 +235,6 @@ update_sensitivity (Application *app)
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (app->callers_view), sensitive_tree_views);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (app->descendants_view), sensitive_tree_views);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (app->samples_label), sensitive_samples_label);
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (app->descendants_radiobutton), sensitive_tree_views);
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (app->ancestors_radiobutton), sensitive_tree_views);
|
||||
|
||||
if (app->screenshot_window_visible)
|
||||
gtk_widget_show (app->screenshot_window);
|
||||
@ -312,10 +305,6 @@ delete_data (Application *app)
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (app->callers_view), NULL);
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (app->descendants_view), NULL);
|
||||
}
|
||||
|
||||
/* Show descendants by default for new profiles */
|
||||
gtk_toggle_button_set_active (
|
||||
GTK_TOGGLE_BUTTON (app->descendants_radiobutton), TRUE);
|
||||
|
||||
collector_reset (app->collector);
|
||||
|
||||
@ -1297,25 +1286,11 @@ on_screenshot_close_button_clicked (GtkWidget *widget,
|
||||
update_sensitivity (app);
|
||||
}
|
||||
|
||||
static void
|
||||
switch_views (GtkWidget *widget,
|
||||
Application *app)
|
||||
{
|
||||
if (gtk_toggle_button_get_active (
|
||||
GTK_TOGGLE_BUTTON (app->ancestors_radiobutton)))
|
||||
{
|
||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (app->view_notebook), 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (app->view_notebook), 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
set_sizes (GtkWindow *window,
|
||||
GtkWindow *screenshot_window,
|
||||
GtkWidget *hpaned)
|
||||
GtkWidget *hpaned,
|
||||
GtkWidget *vpaned)
|
||||
{
|
||||
GdkScreen *screen;
|
||||
int monitor_num;
|
||||
@ -1333,6 +1308,7 @@ set_sizes (GtkWindow *window,
|
||||
|
||||
gtk_window_resize (window, width, height);
|
||||
|
||||
gtk_paned_set_position (GTK_PANED (vpaned), height / 2);
|
||||
gtk_paned_set_position (GTK_PANED (hpaned), width * 3 / 8);
|
||||
|
||||
width = monitor.width * 5 / 8;
|
||||
@ -1493,14 +1469,6 @@ build_gui (Application *app)
|
||||
g_signal_connect (app->descendants_view, "row_collapsed",
|
||||
G_CALLBACK (on_descendants_row_expanded_or_collapsed), app);
|
||||
gtk_tree_view_column_set_expand (col, TRUE);
|
||||
|
||||
/* view notebook */
|
||||
app->view_notebook = glade_xml_get_widget (xml, "view_notebook");
|
||||
app->ancestors_radiobutton = glade_xml_get_widget (xml, "ancestors_radiobutton");
|
||||
app->descendants_radiobutton = glade_xml_get_widget (xml, "descendants_radiobutton");
|
||||
|
||||
g_signal_connect (app->ancestors_radiobutton, "toggled", G_CALLBACK (switch_views), app);
|
||||
g_signal_connect (app->descendants_radiobutton, "toggled", G_CALLBACK (switch_views), app);
|
||||
|
||||
/* screenshot window */
|
||||
app->screenshot_window = glade_xml_get_widget (xml, "screenshot_window");
|
||||
@ -1516,7 +1484,8 @@ build_gui (Application *app)
|
||||
/* set sizes */
|
||||
set_sizes (GTK_WINDOW (app->main_window),
|
||||
GTK_WINDOW (app->screenshot_window),
|
||||
glade_xml_get_widget (xml, "hpaned"));
|
||||
glade_xml_get_widget (xml, "hpaned"),
|
||||
glade_xml_get_widget (xml, "vpaned"));
|
||||
|
||||
/* hide/show widgets */
|
||||
gtk_widget_show_all (app->main_window);
|
||||
|
||||
261
sysprof.glade
261
sysprof.glade
@ -463,10 +463,78 @@
|
||||
<property name="border_width">3</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="position">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow7">
|
||||
<widget class="GtkVPaned" id="vpaned">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="shadow_type">GTK_SHADOW_IN</property>
|
||||
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="object_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="headers_visible">True</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="reorderable">False</property>
|
||||
<property name="enable_search">True</property>
|
||||
<property name="fixed_height_mode">False</property>
|
||||
<property name="hover_selection">False</property>
|
||||
<property name="hover_expand">False</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="shrink">True</property>
|
||||
<property name="resize">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="shadow_type">GTK_SHADOW_IN</property>
|
||||
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="callers_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="headers_visible">True</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="reorderable">False</property>
|
||||
<property name="enable_search">True</property>
|
||||
<property name="fixed_height_mode">False</property>
|
||||
<property name="hover_selection">False</property>
|
||||
<property name="hover_expand">False</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="shrink">True</property>
|
||||
<property name="resize">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="shrink">True</property>
|
||||
<property name="resize">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
@ -475,7 +543,7 @@
|
||||
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="object_view">
|
||||
<widget class="GtkTreeView" id="descendants_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="headers_visible">True</property>
|
||||
@ -488,193 +556,6 @@
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="shrink">True</property>
|
||||
<property name="resize">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox5">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkNotebook" id="view_notebook">
|
||||
<property name="visible">True</property>
|
||||
<property name="show_tabs">False</property>
|
||||
<property name="show_border">False</property>
|
||||
<property name="tab_pos">GTK_POS_TOP</property>
|
||||
<property name="scrollable">False</property>
|
||||
<property name="enable_popup">False</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow6">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="shadow_type">GTK_SHADOW_IN</property>
|
||||
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="descendants_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="headers_visible">True</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="reorderable">False</property>
|
||||
<property name="enable_search">True</property>
|
||||
<property name="fixed_height_mode">False</property>
|
||||
<property name="hover_selection">False</property>
|
||||
<property name="hover_expand">False</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="tab_expand">False</property>
|
||||
<property name="tab_fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label2">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Descendants</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="shadow_type">GTK_SHADOW_IN</property>
|
||||
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="callers_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="headers_visible">True</property>
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="reorderable">False</property>
|
||||
<property name="enable_search">True</property>
|
||||
<property name="fixed_height_mode">False</property>
|
||||
<property name="hover_selection">False</property>
|
||||
<property name="hover_expand">False</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="tab_expand">False</property>
|
||||
<property name="tab_fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ancestors</property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox2">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">12</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="descendants_radiobutton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Descendants</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkRadioButton" id="ancestors_radiobutton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Ancestors</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">descendants_radiobutton</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="shrink">True</property>
|
||||
<property name="resize">True</property>
|
||||
|
||||
@ -265,6 +265,6 @@ tree_view_foreach_visible (GtkTreeView *view,
|
||||
GtkTreeModel *model = gtk_tree_view_get_model (view);
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (gtk_tree_model_get_iter_first (model, &iter))
|
||||
if (model && gtk_tree_model_get_iter_first (model, &iter))
|
||||
process_iter (view, &iter, callback, data);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user