Login
Log in using an SSO provider:
Fedora Account System
Red Hat Associate
Red Hat Customer
Login using a Red Hat Bugzilla account
Forgot Password
Create an Account
Red Hat Bugzilla – Attachment 379201 Details for
Bug 546833
[RFE - Usability]: Key for Interpreting Gantt Chart Data
Home
New
Search
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh90 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
[?]
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
otherwise, here's the implemenation for the UI keys and basic milestone key in html
planner-gnomeXXXXXX-showkey.patch (text/plain), 20.69 KB, created by
Caolan McNamara
on 2009-12-18 12:29:38 UTC
(
hide
)
Description:
otherwise, here's the implemenation for the UI keys and basic milestone key in html
Filename:
MIME Type:
Creator:
Caolan McNamara
Created:
2009-12-18 12:29:38 UTC
Size:
20.69 KB
patch
obsolete
>diff -ru planner-0.14.4.orig/data/stylesheets/html1_gantt.xsl planner-0.14.4/data/stylesheets/html1_gantt.xsl >--- planner-0.14.4.orig/data/stylesheets/html1_gantt.xsl 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/data/stylesheets/html1_gantt.xsl 2009-12-18 12:00:31.000000000 +0000 >@@ -78,6 +78,7 @@ > <xsl:template name="gantt"> > <div class="gantt"> > <h2><a name="gantt"><xsl:value-of select="I18N:gettext('Gantt Chart')"/></a></h2> >+ <p>◆ <xsl:value-of select="I18N:gettext('Milestone')"/></p> > > <!-- add 7 days to make room for at least part of the resource names of tasks > that end close to the end of the project --> >diff -ru planner-0.14.4.orig/data/ui/gantt-view.ui planner-0.14.4/data/ui/gantt-view.ui >--- planner-0.14.4.orig/data/ui/gantt-view.ui 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/data/ui/gantt-view.ui 2009-12-18 11:32:34.000000000 +0000 >@@ -16,6 +16,7 @@ > <menuitem action="HighlightCriticalTasks"/> > <menuitem action="ShowGuideLines"/> > <menuitem action="NonstandardDays"/> >+ <menuitem action="ShowExplanatoryKey"/> > </placeholder> > </menu> > >diff -ru planner-0.14.4.orig/data/ui/time-table-view.ui planner-0.14.4/data/ui/time-table-view.ui >--- planner-0.14.4.orig/data/ui/time-table-view.ui 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/data/ui/time-table-view.ui 2009-12-18 11:32:28.000000000 +0000 >@@ -17,6 +17,7 @@ > </placeholder> > <placeholder name="View specific placeholder bottom"> > <menuitem action="EditColumns"/> >+ <menuitem action="ShowExplanatoryKey"/> > </placeholder> > </menu> > >diff -ru planner-0.14.4.orig/src/planner-gantt-chart.c planner-0.14.4/src/planner-gantt-chart.c >--- planner-0.14.4.orig/src/planner-gantt-chart.c 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/src/planner-gantt-chart.c 2009-12-18 11:44:40.000000000 +0000 >@@ -56,6 +56,7 @@ > #define CRITICAL_PATH_KEY "/views/gantt_view/highlight_critical_path" > #define NOSTDDAYS_PATH_KEY "/views/gantt_view/display_nonstandard_days" > #define GUIDELINES_PATH_KEY "/views/gantt_view/show_guidelines" >+#define EXPLANATORY_PATH_KEY "/views/gantt_view/show_explanatorykey" > > > typedef struct _TreeNode TreeNode; >@@ -112,6 +113,9 @@ > /* GuideLines . */ > gboolean guidelines; > >+ /* Explanatory Key . */ >+ gboolean explanatorykey; >+ > /* Keep a list of signal connection ids, so we can remove them > * easily. > */ >@@ -399,6 +403,9 @@ > NULL); > priv->nonstandard_days = planner_conf_get_bool (NOSTDDAYS_PATH_KEY, > NULL); >+ priv->explanatorykey = planner_conf_get_bool (EXPLANATORY_PATH_KEY, >+ NULL); >+ > priv->guidelines = planner_conf_get_bool (GUIDELINES_PATH_KEY, NULL); > > g_object_set (G_OBJECT(chart->priv->background), >@@ -2032,3 +2039,30 @@ > > return chart->priv->nonstandard_days; > } >+ >+void >+planner_gantt_chart_set_show_explanatorykey (PlannerGanttChart *chart, >+ gboolean state) >+{ >+ PlannerGanttChartPriv *priv; >+ >+ g_return_if_fail (PLANNER_IS_GANTT_CHART (chart)); >+ >+ priv = chart->priv; >+ >+ if (priv->explanatorykey == state) { >+ return; >+ } >+ >+ priv->explanatorykey = state; >+ >+ planner_conf_set_bool (EXPLANATORY_PATH_KEY, state, NULL); >+} >+ >+gboolean >+planner_gantt_chart_get_show_explanatorykey (PlannerGanttChart *chart) >+{ >+ g_return_val_if_fail (PLANNER_IS_GANTT_CHART (chart), FALSE); >+ >+ return chart->priv->explanatorykey; >+} >diff -ru planner-0.14.4.orig/src/planner-gantt-chart.h planner-0.14.4/src/planner-gantt-chart.h >--- planner-0.14.4.orig/src/planner-gantt-chart.h 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/src/planner-gantt-chart.h 2009-12-18 11:41:32.000000000 +0000 >@@ -92,6 +92,12 @@ > planner_gantt_chart_get_highlight_critical_tasks (PlannerGanttChart *chart); > > void >+planner_gantt_chart_set_show_explanatory (PlannerGanttChart *chart, >+ gboolean state); >+gboolean >+planner_gantt_chart_get_show_explanatory (PlannerGanttChart *chart); >+ >+void > planner_gantt_chart_set_show_guidelines (PlannerGanttChart *chart, > gboolean state); > >diff -ru planner-0.14.4.orig/src/planner-gantt-view.c planner-0.14.4/src/planner-gantt-view.c >--- planner-0.14.4.orig/src/planner-gantt-view.c 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/src/planner-gantt-view.c 2009-12-18 11:49:53.000000000 +0000 >@@ -44,6 +44,8 @@ > GtkWidget *paned; > GtkWidget *tree; > GtkWidget *gantt; >+ GtkWidget *drawing_area; >+ GtkWidget *empty_area; > PlannerGanttPrintData *print_data; > > GtkUIManager *ui_manager; >@@ -89,6 +91,8 @@ > gpointer data); > static void gantt_view_nonstandard_days_cb (GtkAction *action, > gpointer data); >+static void gantt_view_explanatory_key_cb (GtkAction *action, >+ gpointer data); > static void gantt_view_edit_columns_cb (GtkAction *action, > gpointer data); > static gboolean gantt_view_expose_cb (GtkWidget *widget, >@@ -190,11 +194,13 @@ > G_CALLBACK (gantt_view_show_guidelines_cb), FALSE }, > { "NonstandardDays", NULL, N_("_Nonstandard Days"), > NULL, NULL, >- G_CALLBACK (gantt_view_nonstandard_days_cb), FALSE } >+ G_CALLBACK (gantt_view_nonstandard_days_cb), FALSE }, >+ { "ShowExplanatoryKey", NULL, N_("_Show Explanatory Key"), >+ NULL, NULL, >+ G_CALLBACK (gantt_view_explanatory_key_cb), FALSE } > }; > > >- > G_DEFINE_TYPE (PlannerGanttView, planner_gantt_view, PLANNER_TYPE_VIEW); > > >@@ -260,7 +266,7 @@ > gantt_view_activate (PlannerView *view) > { > PlannerGanttViewPriv *priv; >- gboolean show_critical, show_nostd_days, show_guidelines; >+ gboolean show_critical, show_nostd_days, show_guidelines, show_explanatorykey; > gchar *filename; > > priv = PLANNER_GANTT_VIEW (view)->priv; >@@ -295,6 +301,9 @@ > show_guidelines = planner_gantt_chart_get_show_guidelines ( > PLANNER_GANTT_CHART (priv->gantt)); > >+ show_explanatorykey = planner_gantt_chart_get_show_explanatorykey ( >+ PLANNER_GANTT_CHART (priv->gantt)); >+ > planner_task_tree_set_highlight_critical (PLANNER_TASK_TREE (priv->tree), > show_critical); > >@@ -313,6 +322,13 @@ > GTK_TOGGLE_ACTION (gtk_action_group_get_action (priv->actions, "ShowGuideLines")), > show_guidelines); > >+ gtk_toggle_action_set_active ( >+ GTK_TOGGLE_ACTION (gtk_action_group_get_action (priv->actions, "ShowExplanatoryKey")), >+ show_explanatorykey); >+ >+ gantt_view_explanatory_key_cb (gtk_action_group_get_action (priv->actions, "ShowExplanatoryKey"), >+ PLANNER_GANTT_VIEW (view)); >+ > gantt_view_selection_changed_cb (PLANNER_TASK_TREE (priv->tree), > PLANNER_GANTT_VIEW (view)); > gantt_view_update_zoom_sensitivity (PLANNER_GANTT_VIEW (view)); >@@ -553,6 +569,97 @@ > view); > } > >+static int >+draw_key_diamond(GtkWidget *widget, int x, int y, const char *text) >+{ >+ PangoLayout *layout; >+ PangoRectangle pixel_rect; >+ GdkPoint points[4]; >+ >+ layout = gtk_widget_create_pango_layout (widget, text); >+ pango_layout_get_pixel_extents (layout, NULL, &pixel_rect); >+ >+ points[0].x = x; >+ points[0].y = y+pixel_rect.height/2; >+ >+ points[1].x = x+pixel_rect.height/2; >+ points[1].y = y; >+ >+ points[2].x = x+pixel_rect.height; >+ points[2].y = y+pixel_rect.height/2; >+ >+ points[3].x = x+pixel_rect.height/2; >+ points[3].y = y+pixel_rect.height; >+ >+ gdk_draw_polygon (widget->window, >+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)], >+ TRUE, >+ points, >+ 4); >+ >+ gdk_draw_layout (widget->window, >+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)], >+ x + 10 + pixel_rect.height, >+ y, >+ layout); >+ >+ g_object_unref (layout); >+ >+ return pixel_rect.height; >+} >+ >+static int >+draw_key_bar(GtkWidget *widget, const char *colorname, int x, int y, const char *text) >+{ >+ PangoLayout *layout; >+ PangoRectangle pixel_rect; >+ GdkColor color_normal; >+ GdkGC* fill_gc = gdk_gc_new (widget->window); >+ >+ layout = gtk_widget_create_pango_layout (widget, text); >+ pango_layout_get_pixel_extents (layout, NULL, &pixel_rect); >+ >+ gdk_draw_rectangle (widget->window, >+ fill_gc, >+ FALSE, >+ x-1, y-1, pixel_rect.height, pixel_rect.height); >+ >+ gdk_draw_layout (widget->window, >+ fill_gc, >+ x + pixel_rect.height + 10, >+ y, >+ layout); >+ >+ gdk_color_parse (colorname, &color_normal); >+ gdk_gc_set_rgb_fg_color (fill_gc, &color_normal); >+ >+ gdk_draw_rectangle (widget->window, >+ fill_gc, >+ TRUE, >+ x, y, pixel_rect.height - 1, pixel_rect.height - 1); >+ >+ g_object_unref (layout); >+ gdk_gc_unref (fill_gc); >+ >+ return pixel_rect.height; >+} >+ >+static gboolean >+expose_event_callback (GtkWidget *widget, GdkEventExpose *event, GtkWidget *friend) >+{ >+ gint h = 5; >+ static gint gap = 10; >+ h += draw_key_diamond(widget, 5, h, "Milestone"); >+ h += gap; >+ h += draw_key_bar(widget, "grey", 5, h, "Nonworking Day"); >+ h += gap; >+ h += draw_key_bar(widget, "white", 5, h, "Working Day"); >+ h += gap; >+ gtk_widget_set_size_request (widget, -1, h); >+ gtk_widget_set_size_request (friend, -1, h); >+ return TRUE; >+} >+ > static GtkWidget * > gantt_view_create_widget (PlannerGanttView *view) > { >@@ -666,6 +773,11 @@ > view); > > vbox = gtk_vbox_new (FALSE, 3); >+ >+ priv->empty_area = gtk_label_new (NULL); >+ gtk_widget_set_no_show_all (priv->empty_area, TRUE); >+ gtk_box_pack_start (GTK_BOX (vbox), >+ priv->empty_area, FALSE, FALSE, 0); > > gtk_box_pack_start (GTK_BOX (vbox), tree, TRUE, TRUE, 0); > >@@ -696,10 +808,22 @@ > gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), > GTK_POLICY_ALWAYS, > GTK_POLICY_AUTOMATIC); >+ >+ vbox = gtk_vbox_new (FALSE, 2); >+ priv->drawing_area = gtk_drawing_area_new (); >+ gtk_widget_modify_bg (priv->drawing_area, >+ GTK_STATE_NORMAL, &priv->drawing_area->style->white); >+ gtk_widget_set_no_show_all (priv->drawing_area, TRUE); >+ g_signal_connect (G_OBJECT (priv->drawing_area), "expose_event", >+ G_CALLBACK (expose_event_callback), priv->empty_area); >+ gtk_box_pack_start (GTK_BOX (vbox), >+ priv->drawing_area, FALSE, FALSE, 0); >+ gtk_box_pack_start (GTK_BOX (vbox), >+ sw, TRUE, TRUE, 0); > > frame = gtk_frame_new (NULL); > gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); >- gtk_container_add (GTK_CONTAINER (frame), sw); >+ gtk_container_add (GTK_CONTAINER (frame), vbox); > > gtk_container_add (GTK_CONTAINER (sw), > GTK_WIDGET (priv->gantt)); >@@ -948,6 +1072,35 @@ > } > > static void >+gantt_view_explanatory_key_cb (GtkAction *action, >+ gpointer data) >+{ >+ PlannerGanttView *view; >+ PlannerGanttViewPriv *priv; >+ gboolean state; >+ >+ view = PLANNER_GANTT_VIEW (data); >+ priv = view->priv; >+ >+ state = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); >+ >+ if (state) >+ { >+ gtk_widget_show (priv->drawing_area); >+ gtk_widget_show (priv->empty_area); >+ } >+ else >+ { >+ gtk_widget_hide (priv->drawing_area); >+ gtk_widget_hide (priv->empty_area); >+ } >+ >+ planner_gantt_chart_set_show_explanatorykey ( >+ PLANNER_GANTT_CHART (priv->gantt), >+ state); >+} >+ >+static void > gantt_view_edit_columns_cb (GtkAction *action, > gpointer data) > { >diff -ru planner-0.14.4.orig/src/planner-usage-chart.c planner-0.14.4/src/planner-usage-chart.c >--- planner-0.14.4.orig/src/planner-usage-chart.c 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/src/planner-usage-chart.c 2009-12-18 11:45:17.000000000 +0000 >@@ -51,6 +51,8 @@ > #define SCALE(n) (f*pow(2,(n)-19)) > #define ZOOM(x) (log((x)/f)/log(2)+19) > >+#define EXPLANATORY_PATH_KEY "/views/usage_view/show_explanatorykey" >+ > /* Font width factor. */ > static gdouble f = 1.0; > >@@ -94,6 +96,9 @@ > gboolean height_changed; > guint reflow_idle_id; > GList *signal_ids; >+ >+ /* Explanatory Key . */ >+ gboolean explanatorykey; > }; > > enum { >@@ -359,6 +364,8 @@ > PLANNER_TYPE_GANTT_BACKGROUND, "scale", > SCALE (priv->zoom), "zoom", priv->zoom, > NULL); >+ >+ priv->explanatorykey = planner_conf_get_bool (EXPLANATORY_PATH_KEY, NULL); > } > > static TreeNode * >@@ -1574,3 +1581,30 @@ > > chart->priv->view = view; > } >+ >+void >+planner_usage_chart_set_show_explanatorykey (PlannerUsageChart *chart, >+ gboolean state) >+{ >+ PlannerUsageChartPriv *priv; >+ >+ g_return_if_fail (PLANNER_IS_USAGE_CHART (chart)); >+ >+ priv = chart->priv; >+ >+ if (priv->explanatorykey == state) { >+ return; >+ } >+ >+ priv->explanatorykey = state; >+ >+ planner_conf_set_bool (EXPLANATORY_PATH_KEY, state, NULL); >+} >+ >+gboolean >+planner_usage_chart_get_show_explanatorykey (PlannerUsageChart *chart) >+{ >+ g_return_val_if_fail (PLANNER_IS_USAGE_CHART (chart), FALSE); >+ >+ return chart->priv->explanatorykey; >+} >diff -ru planner-0.14.4.orig/src/planner-usage-chart.h planner-0.14.4/src/planner-usage-chart.h >--- planner-0.14.4.orig/src/planner-usage-chart.h 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/src/planner-usage-chart.h 2009-12-18 11:41:18.000000000 +0000 >@@ -78,6 +78,9 @@ > gdouble planner_usage_chart_get_zoom (PlannerUsageChart *chart); > void planner_usage_chart_status_updated (PlannerUsageChart *chart, > gchar *message); >+void planner_usage_chart_set_show_explanatory (PlannerUsageChart *chart, >+ gboolean state); >+gboolean planner_usage_chart_get_show_explanatory (PlannerUsageChart *chart); > > void planner_usage_chart_setup_root_task (PlannerUsageChart *chart); > >diff -ru planner-0.14.4.orig/src/planner-usage-view.c planner-0.14.4/src/planner-usage-view.c >--- planner-0.14.4.orig/src/planner-usage-view.c 2009-12-16 09:27:47.000000000 +0000 >+++ planner-0.14.4/src/planner-usage-view.c 2009-12-18 11:50:04.000000000 +0000 >@@ -36,6 +36,8 @@ > struct _PlannerUsageViewPriv { > GtkWidget *paned; > GtkWidget *tree; >+ GtkWidget *drawing_area; >+ GtkWidget *empty_area; > MrpProject *project; > > PlannerUsageChart *chart; >@@ -100,6 +102,8 @@ > static void usage_view_print_cleanup (PlannerView *view); > static void usage_view_save_columns (PlannerUsageView *view); > static void usage_view_load_columns (PlannerUsageView *view); >+static void usage_view_explanatory_key_cb (GtkAction *action, gpointer data); >+ > > > static const GtkActionEntry entries[] = { >@@ -117,8 +121,43 @@ > G_CALLBACK (usage_view_edit_columns_cb) } > }; > >+static const GtkToggleActionEntry toggle_entries[] = { >+ { "ShowExplanatoryKey", NULL, N_("_Show Explanatory Key"), >+ NULL, NULL, >+ G_CALLBACK (usage_view_explanatory_key_cb), FALSE } >+}; >+ > G_DEFINE_TYPE (PlannerUsageView, planner_usage_view, PLANNER_TYPE_VIEW); > >+static void >+usage_view_explanatory_key_cb (GtkAction *action, >+ gpointer data) >+{ >+ PlannerUsageView *view; >+ PlannerUsageViewPriv *priv; >+ gboolean state; >+ >+ view = PLANNER_USAGE_VIEW (data); >+ priv = view->priv; >+ >+ state = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); >+ >+ if (state) >+ { >+ gtk_widget_show (priv->drawing_area); >+ gtk_widget_show (priv->empty_area); >+ } >+ else >+ { >+ gtk_widget_hide (priv->drawing_area); >+ gtk_widget_hide (priv->empty_area); >+ } >+ >+ planner_usage_chart_set_show_explanatorykey ( >+ PLANNER_USAGE_CHART (priv->chart), >+ state); >+} >+ > static gboolean > usage_view_chart_scroll_event (GtkWidget * gki, GdkEventScroll * event, PlannerView *view) > { >@@ -183,6 +222,7 @@ > { > PlannerUsageViewPriv *priv; > gchar *filename; >+ gboolean show_explanatorykey; > > priv = PLANNER_USAGE_VIEW (view)->priv; > >@@ -191,6 +231,11 @@ > > gtk_action_group_add_actions (priv->actions, entries, G_N_ELEMENTS (entries), view); > >+ gtk_action_group_add_toggle_actions (priv->actions, >+ toggle_entries, >+ G_N_ELEMENTS (toggle_entries), >+ view); >+ > gtk_ui_manager_insert_action_group (priv->ui_manager, priv->actions, 0); > filename = mrp_paths_get_ui_dir ("time-table-view.ui"); > priv->merged_id = gtk_ui_manager_add_ui_from_file (priv->ui_manager, >@@ -201,6 +246,16 @@ > > usage_view_update_zoom_sensitivity (view); > >+ show_explanatorykey = planner_usage_chart_get_show_explanatorykey ( >+ PLANNER_USAGE_CHART (priv->chart)); >+ >+ gtk_toggle_action_set_active ( >+ GTK_TOGGLE_ACTION (gtk_action_group_get_action (priv->actions, "ShowExplanatoryKey")), >+ show_explanatorykey); >+ >+ usage_view_explanatory_key_cb (gtk_action_group_get_action (priv->actions, "ShowExplanatoryKey"), >+ PLANNER_USAGE_VIEW (view)); >+ > gtk_widget_grab_focus (priv->tree); > } > >@@ -402,6 +457,60 @@ > view); > } > >+static int >+draw_key_bar(GtkWidget *widget, const char *colorname, int x, int y, const char *text) >+{ >+ PangoLayout *layout; >+ PangoRectangle pixel_rect; >+ GdkColor color_normal; >+ GdkGC* fill_gc = gdk_gc_new (widget->window); >+ >+ layout = gtk_widget_create_pango_layout (widget, text); >+ pango_layout_get_pixel_extents (layout, NULL, &pixel_rect); >+ >+ gdk_draw_rectangle (widget->window, >+ fill_gc, >+ FALSE, >+ x-1, y-1, 240, pixel_rect.height); >+ >+ gdk_draw_layout (widget->window, >+ fill_gc, >+ x + 250, >+ y, >+ layout); >+ >+ gdk_color_parse (colorname, &color_normal); >+ gdk_gc_set_rgb_fg_color (fill_gc, &color_normal); >+ >+ gdk_draw_rectangle (widget->window, >+ fill_gc, >+ TRUE, >+ x, y, 240-1, pixel_rect.height - 1); >+ >+ g_object_unref (layout); >+ gdk_gc_unref (fill_gc); >+ >+ return pixel_rect.height; >+} >+ >+static gboolean >+expose_event_callback (GtkWidget *widget, GdkEventExpose *event, GtkWidget *friend) >+{ >+ gint h = 5; >+ static gint gap = 10; >+ h += draw_key_bar(widget, "medium sea green", 5, h, "Not allocated to any task"); >+ h += gap; >+ h += draw_key_bar(widget, "grey", 5, h, "Partially allocated"); >+ h += gap; >+ h += draw_key_bar(widget, "LightSkyBlue3", 5, h, "Allocated"); >+ h += gap; >+ h += draw_key_bar(widget, "indian red", 5, h, "Overallocated"); >+ h += 5; >+ gtk_widget_set_size_request (widget, -1, h); >+ gtk_widget_set_size_request (friend, -1, h); >+ return TRUE; >+} >+ > static GtkWidget * > usage_view_create_widget (PlannerView *view) > { >@@ -438,6 +547,10 @@ > right_frame = gtk_frame_new (NULL); > > vbox = gtk_vbox_new (FALSE, 3); >+ priv->empty_area = gtk_label_new (NULL); >+ gtk_widget_set_no_show_all (priv->empty_area, TRUE); >+ gtk_box_pack_start (GTK_BOX (vbox), >+ priv->empty_area, FALSE, FALSE, 0); > gtk_box_pack_start (GTK_BOX (vbox), tree, TRUE, TRUE, 0); > hadj = gtk_tree_view_get_hadjustment (GTK_TREE_VIEW (tree)); > gtk_box_pack_start (GTK_BOX (vbox), gtk_hscrollbar_new (hadj), FALSE, >@@ -462,7 +575,19 @@ > gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), > GTK_POLICY_ALWAYS, > GTK_POLICY_AUTOMATIC); >- gtk_container_add (GTK_CONTAINER (right_frame), sw); >+ >+ vbox = gtk_vbox_new (FALSE, 2); >+ priv->drawing_area = gtk_drawing_area_new (); >+ gtk_widget_set_no_show_all (priv->drawing_area, TRUE); >+ gtk_widget_modify_bg (priv->drawing_area, GTK_STATE_NORMAL, >+ &priv->drawing_area->style->white); >+ g_signal_connect (G_OBJECT (priv->drawing_area), "expose_event", >+ G_CALLBACK (expose_event_callback), priv->empty_area); >+ gtk_box_pack_start (GTK_BOX (vbox), >+ priv->drawing_area, FALSE, FALSE, 0); >+ gtk_box_pack_start (GTK_BOX (vbox), >+ sw, TRUE, TRUE, 0); >+ gtk_container_add (GTK_CONTAINER (right_frame), vbox); > gtk_container_add (GTK_CONTAINER (sw), chart); > > hpaned = gtk_hpaned_new ();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 546833
:
378799
| 379201