[anjuta] project-manager: Add a help button on project properties dialogs



commit a1b87de2fdcd9741d103494cbecc129a4aca394e
Author: SÃbastien Granjoux <seb sfo free fr>
Date:   Sat Jan 21 12:44:58 2012 +0100

    project-manager: Add a help button on project properties dialogs

 plugins/project-manager/dialogs.c     |   50 +++--
 plugins/project-manager/pm_dialogs.ui |  347 +++++++++++++++++++++------------
 2 files changed, 251 insertions(+), 146 deletions(-)
---
diff --git a/plugins/project-manager/dialogs.c b/plugins/project-manager/dialogs.c
index e571567..69eb5e2 100644
--- a/plugins/project-manager/dialogs.c
+++ b/plugins/project-manager/dialogs.c
@@ -63,6 +63,8 @@ typedef struct _PropertiesTable
 	GtkWidget *extra;
 	GbfTreeData *data;
 	AnjutaProjectNode *node;
+	GtkWidget *help_button;
+	const gchar *help_id;
 	GList *properties;
 } PropertiesTable;
 
@@ -559,7 +561,14 @@ update_properties (PropertiesTable *table)
 		title = _("Project properties");
 		break;
 	case ANJUTA_PROJECT_GROUP:
-		title = _("Folder properties");
+		if ((anjuta_project_node_get_full_type (table->node) & ANJUTA_PROJECT_ID_MASK) == ANJUTA_PROJECT_ROOT_GROUP)
+		{
+			title = _("Project properties");
+		}
+		else
+		{
+			title = _("Folder properties");
+		}
 		break;
 	case ANJUTA_PROJECT_TARGET:
 		title = _("Target properties");
@@ -630,6 +639,18 @@ update_properties (PropertiesTable *table)
 		add_label (_("Type:"), anjuta_project_node_info_name (node_info), table->main, &main_pos);
 	}
 
+	/* Show help button if existing */
+	if ((node_info != NULL) && (anjuta_project_node_info_property_help_id (node_info) != NULL))
+	{
+		table->help_id = anjuta_project_node_info_property_help_id (node_info);
+		gtk_widget_show (table->help_button);
+	}
+	else
+	{
+		table->help_id = NULL;
+		gtk_widget_hide (table->help_button);
+	}
+
 	/* Display other node properties */
 	single = FALSE;
 
@@ -753,6 +774,11 @@ on_properties_dialog_response (GtkWidget *dialog,
 			}
 		}
 	}
+	else if (id == GTK_RESPONSE_HELP)
+	{
+		anjuta_util_help_display (GTK_WIDGET (dialog), ANJUTA_MANUAL, table->help_id);
+		return;
+	}
 	g_list_foreach (table->properties, (GFunc)pm_property_entry_free, NULL);
 	g_free (table);
 	gtk_widget_destroy (dialog);
@@ -795,7 +821,6 @@ static GtkWidget *
 pm_project_create_properties_dialog (AnjutaPmProject *project, GtkWindow *parent, GbfProjectView *view, GbfTreeData *data, GtkTreeIter *selected)
 {
 	PropertiesTable *table;
-	GtkWidget *dialog = NULL;
 	GtkBuilder *bxml;
 	GtkWidget *node_combo;
 	GtkTreeIter iter;
@@ -810,12 +835,14 @@ pm_project_create_properties_dialog (AnjutaPmProject *project, GtkWindow *parent
 	table->node = gbf_tree_data_get_node (data);
 	table->project = project;
 	anjuta_util_builder_get_objects (bxml,
+	                                "property_dialog", &table->dialog,
 									"properties", &table->table,
 	                                "nodes_combo", &node_combo,
 									"head_table", &table->head,
 									"main_table", &table->main,
 									"extra_table", &table->extra,
 									"extra_expand", &table->expand,
+	                                "property_help_button", &table->help_button,
 									NULL);
 	g_object_ref (table->table);
 	g_object_unref (bxml);
@@ -834,27 +861,16 @@ pm_project_create_properties_dialog (AnjutaPmProject *project, GtkWindow *parent
 					G_CALLBACK (on_node_changed),
 					table);
 
-	dialog = gtk_dialog_new_with_buttons (NULL,
-						   parent,
-						   GTK_DIALOG_DESTROY_WITH_PARENT,
-						   GTK_STOCK_CANCEL,
-						   GTK_RESPONSE_CANCEL,
-						   GTK_STOCK_APPLY,
-						   GTK_RESPONSE_APPLY, NULL);
-	table->dialog = dialog;
-
 	update_properties (table);
 
-	g_signal_connect (dialog, "response",
+	g_signal_connect (table->dialog, "response",
 					G_CALLBACK (on_properties_dialog_response),
 					table);
 
-	gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG(dialog))),
-					table->table);
-	gtk_window_set_default_size (GTK_WINDOW (dialog), 450, -1);
-	gtk_widget_show (dialog);
+	gtk_window_set_default_size (GTK_WINDOW (table->dialog), 450, -1);
+	gtk_widget_show (table->dialog);
 
-	return dialog;
+	return table->dialog;
 }
 
 
diff --git a/plugins/project-manager/pm_dialogs.ui b/plugins/project-manager/pm_dialogs.ui
index c7407a9..f47bd94 100644
--- a/plugins/project-manager/pm_dialogs.ui
+++ b/plugins/project-manager/pm_dialogs.ui
@@ -1193,166 +1193,255 @@
       <action-widget response="-5">ok_target_button</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkVBox" id="properties">
-    <property name="visible">True</property>
+  <object class="GtkDialog" id="property_dialog">
     <property name="can_focus">False</property>
-    <property name="border_width">6</property>
-    <property name="spacing">12</property>
-    <child>
-      <object class="AnjutaPmChooserButton" id="nodes_combo">
-        <property name="use_action_appearance">False</property>
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">True</property>
-        <property name="use_action_appearance">False</property>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">True</property>
-        <property name="position">0</property>
-      </packing>
-    </child>
-    <child>
-      <object class="GtkTable" id="head_table">
-        <property name="visible">True</property>
+    <property name="border_width">5</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox9">
         <property name="can_focus">False</property>
-        <property name="n_rows">3</property>
-        <property name="n_columns">2</property>
-        <property name="column_spacing">12</property>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">1</property>
-      </packing>
-    </child>
-    <child>
-      <object class="GtkScrolledWindow" id="scrolledwindow4">
-        <property name="width_request">600</property>
-        <property name="height_request">144</property>
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
         <child>
-          <object class="GtkViewport" id="viewport1">
+          <object class="GtkBox" id="properties">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="resize_mode">queue</property>
-            <property name="shadow_type">none</property>
+            <property name="border_width">6</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">12</property>
             <child>
-              <object class="GtkVBox" id="vbox">
+              <object class="AnjutaPmChooserButton" id="nodes_combo">
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTable" id="head_table">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="n_rows">3</property>
+                <property name="n_columns">2</property>
+                <property name="column_spacing">12</property>
                 <child>
-                  <object class="GtkTable" id="main_table">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="n_rows">3</property>
-                    <property name="n_columns">2</property>
-                    <property name="column_spacing">12</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
                 </child>
                 <child>
-                  <object class="GtkExpander" id="extra_expand">
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow4">
+                <property name="width_request">600</property>
+                <property name="height_request">144</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkViewport" id="viewport1">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="spacing">6</property>
+                    <property name="can_focus">False</property>
+                    <property name="resize_mode">queue</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkTable" id="extra_table">
+                      <object class="GtkVBox" id="vbox">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="n_rows">3</property>
-                        <property name="n_columns">2</property>
-                        <property name="column_spacing">12</property>
-                        <property name="row_spacing">6</property>
                         <child>
-                          <placeholder/>
+                          <object class="GtkTable" id="main_table">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="n_rows">3</property>
+                            <property name="n_columns">2</property>
+                            <property name="column_spacing">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
                         </child>
                         <child>
-                          <placeholder/>
+                          <object class="GtkExpander" id="extra_expand">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkTable" id="extra_table">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="n_rows">3</property>
+                                <property name="n_columns">2</property>
+                                <property name="column_spacing">12</property>
+                                <property name="row_spacing">6</property>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </object>
+                            </child>
+                            <child type="label">
+                              <object class="GtkLabel" id="label14">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="yalign">1</property>
+                                <property name="label" translatable="yes">More options:</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                         <child>
                           <placeholder/>
                         </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label14">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="yalign">1</property>
-                        <property name="label" translatable="yes">More options:</property>
                       </object>
                     </child>
                   </object>
-                  <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <placeholder/>
                 </child>
               </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area9">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="property_help_button">
+                <property name="label">gtk-help</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+                <property name="secondary">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button11">
+                <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="ok_property_button">
+                <property name="label">gtk-apply</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_action_appearance">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
             </child>
           </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
         </child>
       </object>
-      <packing>
-        <property name="expand">True</property>
-        <property name="fill">True</property>
-        <property name="position">2</property>
-      </packing>
     </child>
+    <action-widgets>
+      <action-widget response="-11">property_help_button</action-widget>
+      <action-widget response="-6">button11</action-widget>
+      <action-widget response="-5">ok_property_button</action-widget>
+    </action-widgets>
   </object>
 </interface>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]