Jakub Filak 5cd6072
From 49791d07c907048de4e36a1fa777ebc3cebd36fd Mon Sep 17 00:00:00 2001
Jakub Filak 5cd6072
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak 5cd6072
Date: Mon, 25 Aug 2014 17:20:16 +0200
Jakub Filak 5cd6072
Subject: [LIBREPORT PATCH] gui: port to Problem Details suite
Jakub Filak 5cd6072
Jakub Filak 5cd6072
- show the "Details" button on the comment page
Jakub Filak 5cd6072
- use the problem details widget on the summary page
Jakub Filak 5cd6072
Jakub Filak 5cd6072
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak 5cd6072
---
Jakub Filak 5cd6072
 src/gui-wizard-gtk/wizard.c     | 43 ++++++++++++++++++++---------------------
Jakub Filak 5cd6072
 src/gui-wizard-gtk/wizard.glade | 16 +++++++--------
Jakub Filak 5cd6072
 2 files changed, 29 insertions(+), 30 deletions(-)
Jakub Filak 5cd6072
Jakub Filak 5cd6072
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
Jakub Filak 5cd6072
index 54b9b10..f0445eb 100644
Jakub Filak 5cd6072
--- a/src/gui-wizard-gtk/wizard.c
Jakub Filak 5cd6072
+++ b/src/gui-wizard-gtk/wizard.c
Jakub Filak 5cd6072
@@ -69,6 +69,7 @@ static GtkWidget *g_btn_close;
Jakub Filak 5cd6072
 static GtkWidget *g_btn_next;
Jakub Filak 5cd6072
 static GtkWidget *g_btn_onfail;
Jakub Filak 5cd6072
 static GtkWidget *g_btn_repeat;
Jakub Filak 5cd6072
+static GtkWidget *g_btn_detail;
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
 static GtkBox *g_box_events;
Jakub Filak 5cd6072
 static GtkBox *g_box_workflows;
Jakub Filak 5cd6072
@@ -2673,6 +2674,7 @@ static void on_page_prepare(GtkNotebook *assistant, GtkWidget *page, gpointer us
Jakub Filak 5cd6072
         clear_warnings();
Jakub Filak 5cd6072
     }
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
+    gtk_widget_hide(g_btn_detail);
Jakub Filak 5cd6072
     gtk_widget_hide(g_btn_onfail);
Jakub Filak 5cd6072
     if (!g_expert_mode)
Jakub Filak 5cd6072
         gtk_widget_hide(g_btn_repeat);
Jakub Filak 5cd6072
@@ -2710,31 +2712,12 @@ static void on_page_prepare(GtkNotebook *assistant, GtkWidget *page, gpointer us
Jakub Filak 5cd6072
         show_warnings();
Jakub Filak 5cd6072
     }
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
-    if (pages[PAGENO_SUMMARY].page_widget == page
Jakub Filak 5cd6072
-     || pages[PAGENO_REVIEW_DATA].page_widget == page
Jakub Filak 5cd6072
-    ) {
Jakub Filak 5cd6072
-        GtkWidget *w = GTK_WIDGET(g_tv_details);
Jakub Filak 5cd6072
-        GtkContainer *c = GTK_CONTAINER(gtk_widget_get_parent(w));
Jakub Filak 5cd6072
-        if (c)
Jakub Filak 5cd6072
-            gtk_container_remove(c, w);
Jakub Filak 5cd6072
-        gtk_container_add(pages[PAGENO_SUMMARY].page_widget == page ?
Jakub Filak 5cd6072
-                        g_container_details1 : g_container_details2,
Jakub Filak 5cd6072
-                w
Jakub Filak 5cd6072
-        );
Jakub Filak 5cd6072
-        /* Make checkbox column visible only on the last page */
Jakub Filak 5cd6072
-        gtk_tree_view_column_set_visible(g_tv_details_col_checkbox,
Jakub Filak 5cd6072
-                (pages[PAGENO_REVIEW_DATA].page_widget == page)
Jakub Filak 5cd6072
-        );
Jakub Filak 5cd6072
-
Jakub Filak 5cd6072
-        if (pages[PAGENO_REVIEW_DATA].page_widget == page)
Jakub Filak 5cd6072
-        {
Jakub Filak 5cd6072
-            gtk_widget_set_sensitive(g_btn_next, gtk_toggle_button_get_active(g_tb_approve_bt));
Jakub Filak 5cd6072
-            update_ls_details_checkboxes(g_event_selected);
Jakub Filak 5cd6072
-        }
Jakub Filak 5cd6072
-    }
Jakub Filak 5cd6072
+    if (pages[PAGENO_REVIEW_DATA].page_widget == page)
Jakub Filak 5cd6072
+        update_ls_details_checkboxes(g_event_selected);
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
     if (pages[PAGENO_EDIT_COMMENT].page_widget == page)
Jakub Filak 5cd6072
     {
Jakub Filak 5cd6072
+        gtk_widget_show(g_btn_detail);
Jakub Filak 5cd6072
         gtk_widget_set_sensitive(g_btn_next, false);
Jakub Filak 5cd6072
         on_comment_changed(gtk_text_view_get_buffer(g_tv_comment), NULL);
Jakub Filak 5cd6072
     }
Jakub Filak 5cd6072
@@ -3192,6 +3175,12 @@ static void on_btn_add_file(GtkButton *button)
Jakub Filak 5cd6072
     }
Jakub Filak 5cd6072
 }
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
+static void on_btn_detail(GtkButton *button)
Jakub Filak 5cd6072
+{
Jakub Filak 5cd6072
+    GtkWidget *pdd = problem_details_dialog_new(g_cd, g_wnd_assistant);
Jakub Filak 5cd6072
+    gtk_dialog_run(GTK_DIALOG(pdd));
Jakub Filak 5cd6072
+}
Jakub Filak 5cd6072
+
Jakub Filak 5cd6072
 /* [Del] key handling in item list */
Jakub Filak 5cd6072
 static void delete_item(GtkTreeView *treeview)
Jakub Filak 5cd6072
 {
Jakub Filak 5cd6072
@@ -3317,6 +3306,8 @@ static void add_pages(void)
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
     g_signal_connect(g_tv_details, "key-press-event", G_CALLBACK(on_key_press_event_in_item_list), NULL);
Jakub Filak 5cd6072
     g_tv_sensitive_sel_hndlr = g_signal_connect(g_tv_sensitive_sel, "changed", G_CALLBACK(on_sensitive_word_selection_changed), NULL);
Jakub Filak 5cd6072
+
Jakub Filak 5cd6072
+
Jakub Filak 5cd6072
 }
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
 static void create_details_treeview(void)
Jakub Filak 5cd6072
@@ -3487,6 +3478,8 @@ void create_assistant(GtkApplication *app, bool expert_mode)
Jakub Filak 5cd6072
     g_btn_next = gtk_button_new_with_mnemonic(_("_Forward"));
Jakub Filak 5cd6072
     gtk_button_set_image(GTK_BUTTON(g_btn_next), gtk_image_new_from_icon_name("go-next-symbolic", GTK_ICON_SIZE_BUTTON));
Jakub Filak 5cd6072
     gtk_widget_set_no_show_all(g_btn_next, true); /* else gtk_widget_hide won't work */
Jakub Filak 5cd6072
+    g_btn_detail = gtk_button_new_with_mnemonic(_("Details"));
Jakub Filak 5cd6072
+    gtk_widget_set_no_show_all(g_btn_detail, true); /* else gtk_widget_hide won't work */
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
     g_box_buttons = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
Jakub Filak 5cd6072
     gtk_box_pack_start(g_box_buttons, g_btn_close, false, false, 5);
Jakub Filak 5cd6072
@@ -3497,10 +3490,12 @@ void create_assistant(GtkApplication *app, bool expert_mode)
Jakub Filak 5cd6072
 #if ((GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION < 13) || (GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION == 13 && GTK_MICRO_VERSION < 5))
Jakub Filak 5cd6072
     GtkWidget *w = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
Jakub Filak 5cd6072
     gtk_box_pack_start(g_box_buttons, w, true, true, 5);
Jakub Filak 5cd6072
+    gtk_box_pack_start(g_box_buttons, g_btn_detail, false, false, 5);
Jakub Filak 5cd6072
     gtk_box_pack_start(g_box_buttons, g_btn_next, false, false, 5);
Jakub Filak 5cd6072
 #else
Jakub Filak 5cd6072
     gtk_widget_set_valign(GTK_WIDGET(g_btn_next), GTK_ALIGN_END);
Jakub Filak 5cd6072
     gtk_box_pack_end(g_box_buttons, g_btn_next, false, false, 5);
Jakub Filak 5cd6072
+    gtk_box_pack_end(g_box_buttons, g_btn_detail, false, false, 5);
Jakub Filak 5cd6072
 #endif
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
     {   /* Warnings area widget definition start */
Jakub Filak 5cd6072
@@ -3564,6 +3559,9 @@ void create_assistant(GtkApplication *app, bool expert_mode)
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
     create_details_treeview();
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
+    ProblemDetailsWidget *details = problem_details_widget_new(g_cd);
Jakub Filak 5cd6072
+    gtk_container_add(GTK_CONTAINER(g_container_details1), GTK_WIDGET(details));
Jakub Filak 5cd6072
+
Jakub Filak 5cd6072
     g_signal_connect(g_btn_close, "clicked", G_CALLBACK(assistant_quit_cb), g_wnd_assistant);
Jakub Filak 5cd6072
     g_signal_connect(g_btn_stop, "clicked", G_CALLBACK(on_btn_cancel_event), NULL);
Jakub Filak 5cd6072
     g_signal_connect(g_btn_onfail, "clicked", G_CALLBACK(on_btn_failed_cb), NULL);
Jakub Filak 5cd6072
@@ -3577,6 +3575,7 @@ void create_assistant(GtkApplication *app, bool expert_mode)
Jakub Filak 5cd6072
     g_signal_connect(gtk_text_view_get_buffer(g_tv_comment), "changed", G_CALLBACK(on_comment_changed), NULL);
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
     g_signal_connect(g_btn_add_file, "clicked", G_CALLBACK(on_btn_add_file), NULL);
Jakub Filak 5cd6072
+    g_signal_connect(g_btn_detail, "clicked", G_CALLBACK(on_btn_detail), NULL);
Jakub Filak 5cd6072
 
Jakub Filak 5cd6072
     if (is_screencast_available()) {
Jakub Filak 5cd6072
         /* we need to override the activate-link handler, because we use
Jakub Filak 5cd6072
diff --git a/src/gui-wizard-gtk/wizard.glade b/src/gui-wizard-gtk/wizard.glade
Jakub Filak 5cd6072
index b0953db..5edca64 100644
Jakub Filak 5cd6072
--- a/src/gui-wizard-gtk/wizard.glade
Jakub Filak 5cd6072
+++ b/src/gui-wizard-gtk/wizard.glade
Jakub Filak 5cd6072
@@ -405,13 +405,7 @@
Jakub Filak 5cd6072
                 <property name="can_focus">True</property>
Jakub Filak 5cd6072
                 <property name="shadow_type">out</property>
Jakub Filak 5cd6072
                 <child>
Jakub Filak 5cd6072
-                  <object class="GtkTreeView" id="tv_details">
Jakub Filak 5cd6072
-                    <property name="visible">True</property>
Jakub Filak 5cd6072
-                    <property name="can_focus">True</property>
Jakub Filak 5cd6072
-                    <child internal-child="selection">
Jakub Filak 5cd6072
-                      <object class="GtkTreeSelection" id="treeview-selection1"/>
Jakub Filak 5cd6072
-                    </child>
Jakub Filak 5cd6072
-                  </object>
Jakub Filak 5cd6072
+                  <placeholder/>
Jakub Filak 5cd6072
                 </child>
Jakub Filak 5cd6072
               </object>
Jakub Filak 5cd6072
             </child>
Jakub Filak 5cd6072
@@ -676,7 +670,13 @@
Jakub Filak 5cd6072
             <property name="can_focus">True</property>
Jakub Filak 5cd6072
             <property name="shadow_type">out</property>
Jakub Filak 5cd6072
             <child>
Jakub Filak 5cd6072
-              <placeholder/>
Jakub Filak 5cd6072
+              <object class="GtkTreeView" id="tv_details">
Jakub Filak 5cd6072
+                <property name="visible">True</property>
Jakub Filak 5cd6072
+                <property name="can_focus">True</property>
Jakub Filak 5cd6072
+                <child internal-child="selection">
Jakub Filak 5cd6072
+                  <object class="GtkTreeSelection" id="treeview-selection"/>
Jakub Filak 5cd6072
+                </child>
Jakub Filak 5cd6072
+              </object>
Jakub Filak 5cd6072
             </child>
Jakub Filak 5cd6072
           </object>
Jakub Filak 5cd6072
           <packing>
Jakub Filak 5cd6072
-- 
Jakub Filak 5cd6072
1.8.3.1
Jakub Filak 5cd6072