Update the screenshot window.

2005-11-23  Soeren Sandmann  <sandmann@redhat.com>

	* sysprof.c (update_screenshot_window): Update the screenshot
	window.
This commit is contained in:
Soeren Sandmann
2005-11-24 04:53:19 +00:00
committed by Søren Sandmann Pedersen
parent 22d15cd2cc
commit 96188f3c99
2 changed files with 74 additions and 20 deletions

View File

@ -1,3 +1,8 @@
2005-11-23 Soeren Sandmann <sandmann@redhat.com>
* sysprof.c (update_screenshot_window): Update the screenshot
window.
Wed Nov 23 00:44:34 2005 Soeren Sandmann <sandmann@redhat.com> Wed Nov 23 00:44:34 2005 Soeren Sandmann <sandmann@redhat.com>
* module/sysprof-module.c: Various cleanups * module/sysprof-module.c: Various cleanups

View File

@ -260,7 +260,7 @@ set_busy (GtkWidget *widget,
if (cursor) if (cursor)
gdk_cursor_unref (cursor); gdk_cursor_unref (cursor);
gdk_flush (); gdk_display_flush (gdk_display_get_default ());
} }
static void static void
@ -1024,29 +1024,71 @@ expand_descendants_tree (Application *app)
g_list_free (all_paths); g_list_free (all_paths);
} }
typedef struct static void
get_data (GtkTreeView *view,
GtkTreeIter *iter,
gchar **name,
double *self,
double *cumulative)
{ {
int text_width; char *dummy1;
int self_width; double dummy2;
int cumulative_width; double dummy3;
} Widths;
GtkTreeModel *model = gtk_tree_view_get_model (view);
gtk_tree_model_get (
model, iter,
DESCENDANTS_NAME, name? name : &dummy1,
DESCENDANTS_SELF, self? self : &dummy2,
DESCENDANTS_NON_RECURSE, cumulative? cumulative : &dummy3,
-1);
}
static void static void
compute_widths (GtkTreeView *view, compute_text_width (GtkTreeView *view,
GtkTreePath *path, GtkTreePath *path,
GtkTreeIter *iter, GtkTreeIter *iter,
gpointer data) gpointer data)
{ {
GtkTreeModel *model = gtk_tree_view_get_model (view); int *width = data;
char *name;
get_data (view, iter, &name, NULL, NULL);
*width = MAX (g_utf8_strlen (name, -1), *width);
} }
typedef struct
{
int max_width;
GString *text;
} AddTextInfo;
static void static void
add_text (GtkTreeView *view, add_text (GtkTreeView *view,
GtkTreePath *path, GtkTreePath *path,
GtkTreeIter *iter, GtkTreeIter *iter,
gpointer data) gpointer data)
{ {
Application *app = data; AddTextInfo *info = data;
char *name;
double self;
double cumulative;
get_data (view, iter, &name, &self, &cumulative);
g_string_append_printf (info->text, "%-*s %6.2f %6.2f\n", info->max_width, name, self, cumulative);
}
static void
set_monospace (GtkWidget *widget)
{
PangoFontDescription *desc =
pango_font_description_from_string ("monospace");
gtk_widget_modify_font (widget, desc);
pango_font_description_free (desc);
} }
static void static void
@ -1058,19 +1100,26 @@ update_screenshot_window (Application *app)
if (app->descendants) if (app->descendants)
{ {
Widths widths; AddTextInfo info;
widths.text_width = 0; info.max_width = 0;
widths.self_width = 0; info.text = g_string_new ("");
widths.cumulative_width = 0;
tree_view_foreach_visible (app->descendants_view, tree_view_foreach_visible (app->descendants_view,
compute_widths, compute_text_width,
&widths); &info.max_width);
tree_view_foreach_visible (app->descendants_view, tree_view_foreach_visible (app->descendants_view,
add_text, add_text,
app); &info);
gtk_text_buffer_set_text (
gtk_text_view_get_buffer (GTK_TEXT_VIEW (app->screenshot_textview)),
info.text->str, -1);
set_monospace (app->screenshot_textview);
g_string_free (info.text, TRUE);
} }
} }