[anjuta] Updated starter plugin



commit 912ffd03c794b568dfd7f58264048887579d83ce
Author: Tristian Celestin <tristian celestin outlook com>
Date:   Sat Apr 26 16:02:56 2014 -0400

    Updated starter plugin
    
    Use a GtkStack and GtkStackSwitcher to present the same information
    as before. Updated minimum required GTK+ to 3.10

 configure.ac                                       |    2 +-
 plugins/starter/Makefile.am                        |   11 +-
 .../org.gnome.anjuta.starter.gschema.xml.in        |    7 +
 plugins/starter/plugin.c                           |  521 ++++++++++++--------
 plugins/starter/plugin.h                           |   31 +-
 plugins/starter/starter.ui                         |  449 +++++++++--------
 6 files changed, 606 insertions(+), 415 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index f646cc5..0998b11 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,7 @@ AC_SUBST(BUGZILLA_VERSION)
 
 dnl Anjuta core
 GLIB_REQUIRED=2.34.0
-GTK_REQUIRED=3.6.0
+GTK_REQUIRED=3.10.0
 GTHREAD_REQUIRED=2.22.0
 GDK_PIXBUF_REQUIRED=2.0.0
 GDA4_REQUIRED=4.2.0
diff --git a/plugins/starter/Makefile.am b/plugins/starter/Makefile.am
index 6c81a7e..8cd6295 100644
--- a/plugins/starter/Makefile.am
+++ b/plugins/starter/Makefile.am
@@ -1,3 +1,8 @@
+# Schema file
+gsettings_in_file = org.gnome.anjuta.starter.gschema.xml.in
+ INTLTOOL_XML_NOMERGE_RULE@
+ GSETTINGS_RULES@
+
 # Plugin file
 plugin_in_files = anjuta-starter.plugin.in
 %.plugin: %.plugin.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) ; $(INTLTOOL_MERGE) 
$(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache
@@ -34,11 +39,15 @@ libanjuta_starter_la_SOURCES= \
 nodist_libanjuta_starter_la_SOURCES= = \
        $(BUILT_SOURCES)
 
+gsettings_SCHEMAS = $(gsettings_in_file:.xml.in=.xml)
+
 CLEANFILES = \
-       $(BUILT_SOURCES)
+       $(BUILT_SOURCES) \
+       $(gsettings_SCHEMAS)
 
 EXTRA_DIST = \
        $(plugin_in_files) \
+       $(gsettings_in_file) \
        starter.gresource.xml \
        starter.ui
 
diff --git a/plugins/starter/org.gnome.anjuta.starter.gschema.xml.in 
b/plugins/starter/org.gnome.anjuta.starter.gschema.xml.in
new file mode 100644
index 0000000..17dd012
--- /dev/null
+++ b/plugins/starter/org.gnome.anjuta.starter.gschema.xml.in
@@ -0,0 +1,7 @@
+<schemalist>
+       <schema path="/org/gnome/anjuta/" id="org.gnome.anjuta.starter">
+               <key type="i" name="recent-limit">
+                       <default>10</default>
+               </key>
+       </schema>
+</schemalist>
diff --git a/plugins/starter/plugin.c b/plugins/starter/plugin.c
index 3117580..23a133d 100644
--- a/plugins/starter/plugin.c
+++ b/plugins/starter/plugin.c
@@ -2,6 +2,7 @@
 /*
     plugin.c
     Copyright (C) 2008 Ignacio Casal Quinteiro
+    Copyright (C) 2014 Tristian Celestin
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -26,61 +27,66 @@
 #include <libanjuta/interfaces/ianjuta-project-manager.h>
 #include <libanjuta/interfaces/ianjuta-file-loader.h>
 #include <libanjuta/interfaces/ianjuta-wizard.h>
-
 #include <gtk/gtk.h>
-
 #include "plugin.h"
 
-static gpointer parent_class;
-
-#define STARTER_VBOX "starter_vbox"
-#define RECENT_VBOX "recent_vbox"
-#define IMPORT_IMAGE "import_image"
-#define NEW_IMAGE "new_image"
-
-#define NEW_PROJECT_PIXMAP "anjuta-project-wizard-plugin-48.png"
-#define IMPORT_PROJECT_PIXMAP "anjuta-project-import-plugin-48.png"
-
+#define PREF_SCHEMA "org.gnome.anjuta.starter"
+#define RECENT_LIMIT "recent-limit"
+#define STARTER_BOX "starter_box"
+#define SWITCHER_BOX "switcher_box"
+#define ACTIONS_LISTBOX "actions_listbox"
+#define ACTIONS_FRAME "actions_frame"
+#define RECENT_PROJECTS_BOX "recent_projects_box"
+#define RECENT_LISTBOX "recent_listbox"
+#define IMPORT_ROW "import_row"
+#define ANJUTA_DOC_ROW "anjuta_doc_row"
+#define ANJUTA_FAQ_ROW "anjuta_faq_row"
+#define ONLINE_DOC_ROW "gtk_doc_row"
+#define RECENT_ROW "recent_row"
+#define CREATE_ROW "create_row"
+#define CODE_ROW "code_row"
+#define PROJECT_LABEL "project_label"
+#define PATH_LABEL "path_label"
+#define TRANSITION_TIME 90
+#define URI_KEY "uri"
+#define REMOVE_PROJECT_BUTTON "remove_project_button"
+#define ACTIONS_ID "actions"
+#define RECENT_PROJECTS_ID "recent_projects"
 #define PROJECT_WIZARD_ID "anjuta-project-wizard:NPWPlugin"
 #define PROJECT_IMPORT_ID "anjuta-project-import:AnjutaProjectImportPlugin"
 
-#define RECENT_LIMIT 3
+struct _StarterPluginPrivate {
+       GtkWidget *starter;
+       gint editor_watch_id;
+       gint project_watch_id;
+};
 
 void
-on_new_project_clicked (GtkButton *button, gpointer user_data);
-void
-on_import_project_clicked (GtkButton *button, gpointer user_data);
-
-static void
-on_recent_project_clicked (GtkButton *button, StarterPlugin *plugin)
+on_recent_project_activated (GtkListBox *box, GtkListBoxRow *row, gpointer user_data)
 {
        GFile *file;
-       IAnjutaFileLoader *loader = 
-               anjuta_shell_get_interface (anjuta_plugin_get_shell (ANJUTA_PLUGIN (plugin)),
-                                           IAnjutaFileLoader,
-                                           NULL);
-       
-       file = g_object_get_data (G_OBJECT (button), "file");
+       IAnjutaFileLoader *loader;
 
-       ianjuta_file_loader_load (IANJUTA_FILE_LOADER (loader),
-                                                         file, FALSE, NULL);
+       loader = anjuta_shell_get_interface (anjuta_plugin_get_shell (ANJUTA_PLUGIN (user_data)), 
IAnjutaFileLoader, NULL);
+       file = g_file_new_for_uri ((const char*) g_object_get_data (G_OBJECT (row), URI_KEY));
+       ianjuta_file_loader_load (IANJUTA_FILE_LOADER (loader), file, FALSE, NULL);
 }
 
-void
-on_new_project_clicked (GtkButton *button, gpointer user_data)
+static void
+on_new_project_activated (GtkListBoxRow *row, gpointer user_data)
 {
-       AnjutaPlugin* plugin = ANJUTA_PLUGIN (user_data);
-       AnjutaPluginManager* plugin_manager = 
+       AnjutaPlugin *plugin = ANJUTA_PLUGIN (user_data);
+       AnjutaPluginManager *plugin_manager =
                anjuta_shell_get_plugin_manager (anjuta_plugin_get_shell (plugin),
-                                                NULL);
+                                                                                NULL);
        GList *plugin_handles = NULL;
 
-       plugin_handles = anjuta_plugin_manager_query (plugin_manager,
-                                                     "Anjuta Plugin",
-                                                     "Location",
-                                                     PROJECT_WIZARD_ID,
-                                                     NULL);
 
+       plugin_handles = anjuta_plugin_manager_query (plugin_manager,
+                                                                                                 "Anjuta 
Plugin",
+                                                                                                 "Location",
+                                                                                                 
PROJECT_WIZARD_ID,
+                                                                                                 NULL);
        if (plugin_handles != NULL)
        {
                GObject* wizard =
@@ -91,20 +97,44 @@ on_new_project_clicked (GtkButton *button, gpointer user_data)
        g_list_free (plugin_handles);
 }
 
-void
-on_import_project_clicked (GtkButton *button, gpointer user_data)
+static void
+on_local_doc_activated (GtkListBoxRow *row, gpointer user_data)
+{
+       gtk_show_uri (NULL, "help:anjuta-manual", GDK_CURRENT_TIME, NULL);
+}
+
+static void
+on_local_faq_activated (GtkListBoxRow *row, gpointer user_data)
+{
+       gtk_show_uri (NULL, "help:anjuta-faqs", GDK_CURRENT_TIME, NULL);
+}
+
+static void
+on_online_doc_activated (GtkListBoxRow *row, gpointer user_data)
+{
+       gtk_show_uri (NULL, "https://developer.gnome.org/references";, GDK_CURRENT_TIME, NULL);
+}
+
+static void
+on_search_example_code_activated (GtkListBoxRow *row, gpointer user_data)
+{
+       gtk_show_uri (NULL, "http://www.koders.com";, GDK_CURRENT_TIME, NULL);
+}
+
+static void
+on_import_project_activated (GtkListBoxRow *row, gpointer user_data)
 {
        AnjutaPlugin* plugin = ANJUTA_PLUGIN (user_data);
        AnjutaPluginManager* plugin_manager = 
                anjuta_shell_get_plugin_manager (anjuta_plugin_get_shell (plugin),
-                                                NULL);
+                                                                                NULL);
        GList *plugin_handles = NULL;
 
        plugin_handles = anjuta_plugin_manager_query (plugin_manager,
-                                                     "Anjuta Plugin",
-                                                     "Location",
-                                                     PROJECT_IMPORT_ID,
-                                                     NULL);
+                                                                                                 "Anjuta 
Plugin",
+                                                                                                 "Location",
+                                                                                                 
PROJECT_IMPORT_ID,
+                                                                                                 NULL);
 
        if (plugin_handles != NULL)
        {
@@ -116,128 +146,212 @@ on_import_project_clicked (GtkButton *button, gpointer user_data)
        g_list_free (plugin_handles);
 }
 
+void
+on_row_activated (GtkListBox *box, GtkListBoxRow *row, gpointer user_data)
+{
+       gchar *name;
+
+       if (row != NULL)
+       {
+               name = gtk_widget_get_name (row);
+               if (name != NULL) {
+                       if (g_strcmp0 (name, CREATE_ROW) == 0)
+                               on_new_project_activated (row, user_data);
+                       else if (g_strcmp0 (name, IMPORT_ROW) == 0)
+                               on_import_project_activated (row, user_data);
+                       else if (g_strcmp0 (name, ANJUTA_DOC_ROW) == 0)
+                               on_local_doc_activated (row, user_data);
+                       else if (g_strcmp0 (name, ANJUTA_FAQ_ROW) == 0)
+                               on_local_faq_activated (row, user_data);
+                       else if (g_strcmp0 (name, ONLINE_DOC_ROW) == 0)
+                               on_online_doc_activated (row, user_data);
+                       else if (g_strcmp0 (name, CODE_ROW) == 0)
+                               on_search_example_code_activated (row, user_data);
+               }
+       }
+}
+
 static void
-build_recent_projects (GtkWidget *box, StarterPlugin* plugin)
+add_recent_project_row (GtkListBox *recent_project_box, GtkRecentData *recent_project)
 {
+       GtkBuilder *builder;
+       GFile *file;
+       GtkWidget *recent_row;
+       GtkLabel *project_label, *path_label;
+       GError *error;
+
+       error = NULL;
+       builder = gtk_builder_new ();
+       if (!gtk_builder_add_from_resource (builder, "/org/gnome/anjuta/ui/starter.ui", &error))
+       {
+               DEBUG_PRINT ("Could not load starter.ui! %s", error->message);
+               g_error_free (error);
+       }
+       else
+       {
+               file = g_file_new_for_uri (gtk_recent_info_get_uri (recent_project));
+               if (g_file_query_exists (file, NULL))
+               {
+                       recent_row = GTK_WIDGET (gtk_builder_get_object (builder, RECENT_ROW));
+                       project_label = GTK_WIDGET (gtk_builder_get_object (builder, PROJECT_LABEL));
+                       path_label = GTK_WIDGET (gtk_builder_get_object (builder, PATH_LABEL));
+                       gtk_label_set_text (project_label, gtk_recent_info_get_display_name(recent_project));
+                       gtk_label_set_text (path_label, g_file_get_path(file));
+                       g_object_set_data_full (G_OBJECT (recent_row), URI_KEY, g_file_get_uri(file), g_free);
+                       gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (recent_row)), recent_row);
+                       gtk_list_box_insert (recent_project_box, recent_row, -1);
+               }
+               g_object_unref (file);
+
+       }
+       g_object_unref (builder);
+}
+
+static void
+refresh_recent_project_view (GtkListBox *box)
+{
+       GSettings *settings;
        GtkRecentManager *manager;
+       GtkRecentData *recent_project;
        GList *items, *list;
-       gint i = 0;
-       
-       manager = gtk_recent_manager_get_default ();
+       gint i;
+       guint recent_limit;
 
+       manager = gtk_recent_manager_get_default ();
        items = gtk_recent_manager_get_items (manager);
        items = g_list_reverse (items);
-
        list = items;
-       while (i < RECENT_LIMIT && list != NULL)
+       settings = g_settings_new (PREF_SCHEMA);
+       i = 0;
+       g_settings_get (settings, RECENT_LIMIT, "i", &recent_limit);
+       while (i < recent_limit && list != NULL)
        {
                if (strcmp (gtk_recent_info_get_mime_type (list->data), "application/x-anjuta") == 0)
                {
-                       GtkWidget *button;
-                       GtkWidget *label;
-                       GtkWidget *button_box;
-                       GFile *file;
-                       GFileInfo* info;
-                       gchar *uri;
-                       GIcon* icon;
-
-                       button_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
-                       button = gtk_button_new ();
-                       gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
-                       gtk_widget_set_halign (button, GTK_ALIGN_START);
-
-                       label = gtk_label_new (gtk_recent_info_get_display_name (list->data));
-                       gtk_box_pack_end (GTK_BOX (button_box), label, FALSE, FALSE, 0);
-                       
-                       file = g_file_new_for_uri (gtk_recent_info_get_uri (list->data));
-
-                       if (!g_file_query_exists (file, NULL))
-                       {
-                               list = g_list_next (list);
-                               continue;
-                       }
-
-                       info = g_file_query_info (file,
-                                                 G_FILE_ATTRIBUTE_STANDARD_ICON,
-                                                 G_FILE_QUERY_INFO_NONE,
-                                                 NULL, NULL);
-                       if (info)
-                       {
-                               icon = g_file_info_get_icon (info);
-                               if (icon)
-                               {
-                                       GtkWidget* image = gtk_image_new_from_gicon (icon,
-                                                                                        
GTK_ICON_SIZE_BUTTON);
-                                       gtk_box_pack_start (GTK_BOX (button_box), image, FALSE, FALSE, 0);
-                               }
-                               g_object_unref (info);
-                       }
-                       gtk_container_add (GTK_CONTAINER (button), button_box);
-                       gtk_widget_show_all (button);
-                       
-                       gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
-
-                       g_object_set_data_full (G_OBJECT (button), "file", file,
-                                               (GDestroyNotify)g_object_unref);
-                       uri = gtk_recent_info_get_uri_display (list->data);
-                       if (uri)
-                       {
-                               gchar *tip;
-
-                               tip = g_strdup_printf (_("Open '%s'"), uri);
-                               gtk_widget_set_tooltip_text (button, tip);
-
-                               g_free (tip);
-                               g_free (uri);
-                       }
-
-                       g_signal_connect (button, "clicked",
-                                                         G_CALLBACK (on_recent_project_clicked),
-                                                         plugin);
+                       recent_project = list->data;
+                       add_recent_project_row (box, recent_project);
                        i++;
                }
-               list = g_list_next (list);
+               list = list->next;
        }
-
        g_list_free_full(items, (GDestroyNotify)gtk_recent_info_unref);
+       g_object_unref (settings);
 }
 
-static GtkWidget*
-create_starter_widget (StarterPlugin* plugin)
+static void
+on_remove_project_clicked (GtkButton *button, gpointer user_data)
 {
-       GError* error = NULL;
-       GtkWidget* starter_vbox;
-       GtkWidget* recent_vbox;
-       GtkBuilder* builder = gtk_builder_new ();
-       GtkWidget* image;
-       
-       if (!gtk_builder_add_from_resource (builder,
-                                           "/org/gnome/anjuta/ui/starter.ui",
-                                           &error))
+       GtkRecentManager *manager;
+       GtkListBox *recent_list_box;
+       GtkListBoxRow *row;
+       GError *error;
+
+       manager = gtk_recent_manager_get_default ();
+       recent_list_box = GTK_LIST_BOX (user_data);
+       row = gtk_list_box_get_selected_row (recent_list_box);
+       error = NULL;
+       if (row != NULL)
        {
-               DEBUG_PRINT ("Could load starter ui! %s", error->message);
-               g_error_free (error);
-               return NULL;
+               if (gtk_recent_manager_remove_item (manager, g_object_get_data (row, URI_KEY), &error))
+               {
+                       gtk_container_remove (GTK_CONTAINER (recent_list_box), row);
+               }
+               else
+               {
+                       DEBUG_PRINT ("Could not remove recent item. %s", error->message);
+                       g_error_free (error);
+               }
+
        }
-       starter_vbox = GTK_WIDGET (gtk_builder_get_object (builder, STARTER_VBOX));
-       recent_vbox = GTK_WIDGET (gtk_builder_get_object (builder, RECENT_VBOX));
+}
+
+static void
+add_action_separators (GtkListBoxRow *row, GtkListBoxRow *before, gpointer user_data)
+{
+       GtkWidget *current;
+
+       if (before == NULL)
+               return;
 
-       build_recent_projects (recent_vbox, plugin);
+       current = gtk_list_box_row_get_header (row);
+       if (current == NULL)
+       {
+               current = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
+               gtk_widget_show (current);
+               gtk_list_box_row_set_header (row, current);
+       }
+}
 
-       g_object_ref (starter_vbox);
-       gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (starter_vbox)),
-                             starter_vbox);
+static void
+show_starter_page ()
+{
+       return;
+}
 
-       image = GTK_WIDGET (gtk_builder_get_object (builder, NEW_IMAGE));
-       gtk_image_set_from_file (GTK_IMAGE (image),
-                                PACKAGE_PIXMAPS_DIR"/"NEW_PROJECT_PIXMAP);
-       image = GTK_WIDGET (gtk_builder_get_object (builder, IMPORT_IMAGE));
-       gtk_image_set_from_file (GTK_IMAGE (image),
-                                PACKAGE_PIXMAPS_DIR"/"IMPORT_PROJECT_PIXMAP);  
+static GtkWidget*
+create_starter_widget (StarterPlugin* plugin)
+{
+       GError *error;
+       GtkWidget *stack;
+       GtkWidget *switcher;
+       GtkWidget *starter_box;
+       GtkWidget *switcher_box;
+       GtkWidget *actions_frame;
+       GtkWidget *actions_listbox;
+       GtkWidget *recent_projects_box;
+       GtkWidget *recent_listbox;
+       GtkBuilder *builder;
+       GtkWidget *button;
        
-       gtk_builder_connect_signals (builder, plugin);
+       error = NULL;
+       builder = gtk_builder_new ();
 
-       return starter_vbox;
+       if (!gtk_builder_add_from_resource (builder, "/org/gnome/anjuta/ui/starter.ui", &error))
+       {
+               DEBUG_PRINT ("Could not load starter.ui! %s", error->message);
+               g_error_free (error);
+       }
+       else
+       {
+               /* Manually assembling stack and switcher because they are not available in glade yet */
+               switcher = gtk_stack_switcher_new ();
+               stack = gtk_stack_new ();
+               gtk_stack_switcher_set_stack (switcher, stack);
+               gtk_stack_set_transition_type (stack, GTK_STACK_TRANSITION_TYPE_CROSSFADE);
+               gtk_stack_set_transition_duration (stack, TRANSITION_TIME);
+
+               starter_box = GTK_WIDGET (gtk_builder_get_object (builder, STARTER_BOX));
+               switcher_box = GTK_WIDGET (gtk_builder_get_object (builder, SWITCHER_BOX));
+               gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (starter_box)), starter_box);
+               g_object_ref (starter_box);
+               gtk_box_pack_start (switcher_box, switcher, FALSE, FALSE, 0);
+               gtk_box_pack_start (starter_box, stack, FALSE, FALSE, 0);
+               gtk_widget_show_all (starter_box);
+
+               actions_listbox = GTK_WIDGET (gtk_builder_get_object (builder, ACTIONS_LISTBOX));
+               gtk_list_box_set_header_func (GTK_LIST_BOX (actions_listbox), add_action_separators, NULL, 
NULL);
+               actions_frame = GTK_WIDGET (gtk_builder_get_object (builder, ACTIONS_FRAME));
+               gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (actions_frame)), actions_frame);
+               g_object_ref (actions_frame);
+               gtk_stack_add_titled (stack, actions_frame, ACTIONS_ID, "Actions");
+
+               recent_projects_box = GTK_WIDGET (gtk_builder_get_object (builder, RECENT_PROJECTS_BOX));
+               gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (recent_projects_box)), 
recent_projects_box);
+               g_object_ref (recent_projects_box);
+
+               recent_listbox = GTK_WIDGET (gtk_builder_get_object (builder, RECENT_LISTBOX));
+               refresh_recent_project_view (GTK_LIST_BOX (recent_listbox));
+
+               gtk_stack_add_titled (stack, recent_projects_box, RECENT_PROJECTS_ID, "Recent Projects");
+
+               button = GTK_WIDGET (gtk_builder_get_object (builder, REMOVE_PROJECT_BUTTON));
+               g_signal_connect_object (G_OBJECT (button), "clicked",
+                       G_CALLBACK (on_remove_project_clicked), recent_listbox, G_CONNECT_AFTER);
+
+               gtk_builder_connect_signals (builder, plugin);
+       }
+       g_object_unref (builder);
+       return starter_box;
 }
 
 /* Remove the starter plugin once a document was opened */
@@ -245,18 +359,21 @@ static void
 on_value_added_current_project (AnjutaPlugin *plugin, const gchar *name,
                                                           const GValue *value, gpointer data)
 {
-       GObject* project = g_value_get_object (value);
-       AnjutaShell* shell = ANJUTA_PLUGIN(plugin)->shell;
-       StarterPlugin* splugin = ANJUTA_PLUGIN_STARTER (plugin);
+       GObject *project;
+       AnjutaShell *shell;
+       StarterPlugin *splugin;
        
+       project = g_value_get_object (value);
+       shell = ANJUTA_PLUGIN(plugin)->shell;
+       splugin = ANJUTA_PLUGIN_STARTER (plugin);
        if (project)
        {
-               if (splugin->starter)
+               if (splugin->priv->starter)
                {
                        DEBUG_PRINT ("Hiding starter");
-                       anjuta_shell_remove_widget (shell, splugin->starter, NULL);
+                       anjuta_shell_remove_widget (shell, splugin->priv->starter, NULL);
                }
-               splugin->starter = NULL;
+               splugin->priv->starter = NULL;
        }
 }
 
@@ -266,65 +383,69 @@ static void
 on_value_added_current_editor (AnjutaPlugin *plugin, const gchar *name,
                                                           const GValue *value, gpointer data)
 {
-       GObject* doc = g_value_get_object (value);
-       AnjutaShell* shell = ANJUTA_PLUGIN(plugin)->shell;
-       StarterPlugin* splugin = ANJUTA_PLUGIN_STARTER (plugin);
-       
+       GObject *doc;
+       AnjutaShell *shell;
+       StarterPlugin *splugin;
+
+       doc = g_value_get_object (value);
+       shell = ANJUTA_PLUGIN(plugin)->shell;
+       splugin = ANJUTA_PLUGIN_STARTER (plugin);
        if (doc)
        {
-               if (splugin->starter)
+               if (splugin->priv->starter)
                {
                        DEBUG_PRINT ("Hiding starter");
-                       anjuta_shell_remove_widget (shell, splugin->starter, NULL);
+                       anjuta_shell_remove_widget (shell, splugin->priv->starter, NULL);
                }
-               splugin->starter = NULL;
+               splugin->priv->starter = NULL;
        }
 }
 
 static void
-on_value_removed (AnjutaPlugin *plugin, const gchar *name,
-                  gpointer data)
+on_value_removed (AnjutaPlugin *plugin,
+                                 const gchar *name,
+                                 gpointer data)
 {
        AnjutaShell* shell = anjuta_plugin_get_shell (plugin);
        StarterPlugin* splugin = ANJUTA_PLUGIN_STARTER (plugin);
        IAnjutaDocumentManager* docman = anjuta_shell_get_interface (shell,
-                                                                    IAnjutaDocumentManager,
-                                                                    NULL);
+                                                                                                             
                   IAnjutaDocumentManager,
+                                                                                                             
                   NULL);
        IAnjutaProjectManager* pm = anjuta_shell_get_interface (shell,
-                                                               IAnjutaProjectManager,
-                                                               NULL);
+                                                                                                             
          IAnjutaProjectManager,
+                                                                                                             
          NULL);
        
        if (!(docman && ianjuta_document_manager_get_doc_widgets (docman, NULL)) &&
-           !(pm && ianjuta_project_manager_get_current_project (pm, NULL)))
+               !(pm && ianjuta_project_manager_get_current_project (pm, NULL)))
        {
                DEBUG_PRINT ("Showing starter");
-               splugin->starter = create_starter_widget (splugin);
-               anjuta_shell_add_widget (shell, splugin->starter,
-                                        "AnjutaStarter",
-                                        _("Start"),
-                                        GTK_STOCK_ABOUT,
-                                        ANJUTA_SHELL_PLACEMENT_CENTER,
-                                        NULL);
-               anjuta_shell_present_widget (shell, splugin->starter, NULL);
-               g_object_unref (splugin->starter);
+               splugin->priv->starter = create_starter_widget (splugin);
+               anjuta_shell_add_widget (shell, splugin->priv->starter,
+                                                                "AnjutaStarter",
+                                                                _("Start"),
+                                                                GTK_STOCK_ABOUT,
+                                                                ANJUTA_SHELL_PLACEMENT_CENTER,
+                                                                NULL);
+               anjuta_shell_present_widget (shell, splugin->priv->starter, NULL);
+               g_object_unref (splugin->priv->starter);
        }
 }
 
 static void
-on_session_load (AnjutaShell* shell,
-                 AnjutaSessionPhase phase,
-                 AnjutaSession* session,
-                 StarterPlugin* plugin)
+on_session_load (AnjutaShell *shell,
+                                AnjutaSessionPhase phase,
+                                AnjutaSession *session,
+                                StarterPlugin *plugin)
 {
        if (phase == ANJUTA_SESSION_PHASE_END)
        {
-               if (!plugin->starter)
+               if (!plugin->priv->starter)
                        on_value_removed (ANJUTA_PLUGIN (plugin), NULL, plugin);
-               if (plugin->starter)
+               if (plugin->priv->starter)
                {
                        anjuta_shell_maximize_widget (shell,
-                                                     "AnjutaStarter",
-                                                     NULL);
+                                                                                 "AnjutaStarter",
+                                                                                 NULL);
                }
        }
 }
@@ -332,28 +453,28 @@ on_session_load (AnjutaShell* shell,
 static gboolean
 activate_plugin (AnjutaPlugin *plugin)
 {
-       StarterPlugin* splugin = ANJUTA_PLUGIN_STARTER (plugin);
+       StarterPlugin *splugin = ANJUTA_PLUGIN_STARTER (plugin);
 
        DEBUG_PRINT ("StarterPlugin: Activating document manager plugin...");
        
-       splugin->editor_watch_id = 
+       splugin->priv->editor_watch_id =
                anjuta_plugin_add_watch (plugin,
-                                                                 IANJUTA_DOCUMENT_MANAGER_CURRENT_DOCUMENT,
+                                                                IANJUTA_DOCUMENT_MANAGER_CURRENT_DOCUMENT,
                                                                 on_value_added_current_editor,
                                                                 on_value_removed,
                                                                 NULL);
-       splugin->project_watch_id = 
+       splugin->priv->project_watch_id =
                anjuta_plugin_add_watch (plugin,
-                                                                 IANJUTA_PROJECT_MANAGER_CURRENT_PROJECT,
+                                                                IANJUTA_PROJECT_MANAGER_CURRENT_PROJECT,
                                                                 on_value_added_current_project,
                                                                 on_value_removed,
                                                                 NULL);
        on_value_removed (plugin, NULL, splugin);
 
        g_signal_connect (anjuta_plugin_get_shell (plugin),
-                         "load-session",
-                         G_CALLBACK (on_session_load),
-                         plugin);
+                                         "load-session",
+                                         G_CALLBACK (on_session_load),
+                                         plugin);
        
        return TRUE;
 }
@@ -363,12 +484,12 @@ deactivate_plugin (AnjutaPlugin *plugin)
 {
        StarterPlugin* splugin = ANJUTA_PLUGIN_STARTER (plugin);
        DEBUG_PRINT ("StarterPlugin: Deactivating starter plugin...");
-       if (splugin->starter)
+       if (splugin->priv->starter)
                anjuta_shell_remove_widget (anjuta_plugin_get_shell (plugin),
-                                           splugin->starter, NULL);
+                                                                       splugin->priv->starter, NULL);
 
-       anjuta_plugin_remove_watch (plugin, splugin->editor_watch_id, FALSE);
-       anjuta_plugin_remove_watch (plugin, splugin->project_watch_id, FALSE);  
+       anjuta_plugin_remove_watch (plugin, splugin->priv->editor_watch_id, FALSE);
+       anjuta_plugin_remove_watch (plugin, splugin->priv->project_watch_id, FALSE);
        
        return TRUE;
 }
@@ -376,28 +497,42 @@ deactivate_plugin (AnjutaPlugin *plugin)
 static void
 dispose (GObject *obj)
 {
+       AnjutaPluginClass *klass;
+       gpointer parent_class;
+
+       klass =  ANJUTA_PLUGIN_GET_CLASS(obj);
+       parent_class = g_type_class_peek_parent (klass);
        G_OBJECT_CLASS (parent_class)->dispose (obj);
 }
 
 static void
 finalize (GObject *obj)
 {
+       AnjutaPluginClass *klass;
+       gpointer parent_class;
+
        /* Finalization codes here */
+       klass =  ANJUTA_PLUGIN_GET_CLASS(obj);
+       parent_class = g_type_class_peek_parent (klass);
        G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
 
 static void
 starter_plugin_instance_init (GObject *obj)
 {
+       StarterPlugin *splugin;
+
+       splugin = ANJUTA_PLUGIN_STARTER (obj);
+       splugin->priv = G_TYPE_INSTANCE_GET_PRIVATE (obj, ANJUTA_TYPE_PLUGIN_STARTER, StarterPluginPrivate);
 }
 
 static void
 starter_plugin_class_init (GObjectClass *klass) 
 {
-       AnjutaPluginClass *plugin_class = ANJUTA_PLUGIN_CLASS (klass);
-
-       parent_class = g_type_class_peek_parent (klass);
+       AnjutaPluginClass *plugin_class;
 
+       g_type_class_add_private (klass, sizeof (StarterPluginPrivate));
+       plugin_class = ANJUTA_PLUGIN_CLASS (klass);
        plugin_class->activate = activate_plugin;
        plugin_class->deactivate = deactivate_plugin;
        klass->dispose = dispose;
diff --git a/plugins/starter/plugin.h b/plugins/starter/plugin.h
index c15c80d..7bfedce 100644
--- a/plugins/starter/plugin.h
+++ b/plugins/starter/plugin.h
@@ -1,9 +1,28 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+/*
+    plugin.c
+    Copyright (C) 2014 Tristian Celestin
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
 #ifndef __PLUGIN_H__
 #define __PLUGIN_H__
 
 #include <libanjuta/anjuta-plugin.h>
 
-extern GType starter_plugin_get_type (GTypeModule *module);
 #define ANJUTA_TYPE_PLUGIN_STARTER         (starter_plugin_get_type (NULL))
 #define ANJUTA_PLUGIN_STARTER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), ANJUTA_TYPE_PLUGIN_STARTER, 
StarterPlugin))
 #define ANJUTA_PLUGIN_STARTER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), ANJUTA_TYPE_PLUGIN_STARTER, 
StarterPluginClass))
@@ -13,16 +32,20 @@ extern GType starter_plugin_get_type (GTypeModule *module);
 
 typedef struct _StarterPlugin StarterPlugin;
 typedef struct _StarterPluginClass StarterPluginClass;
+typedef struct _StarterPluginPrivate StarterPluginPrivate;
 
 struct _StarterPlugin{
        AnjutaPlugin parent;
-       GtkWidget *starter;
-       gint editor_watch_id;
-       gint project_watch_id;
+       StarterPluginPrivate *priv;
 };
 
 struct _StarterPluginClass{
        AnjutaPluginClass parent_class;
 };
 
+extern GType starter_plugin_get_type (GTypeModule *module);
+
+void on_recent_project_activated (GtkListBox *box, GtkListBoxRow *row, gpointer user_data);
+void on_row_activated (GtkListBox *box, GtkListBoxRow *row, gpointer user_data);
+
 #endif
diff --git a/plugins/starter/starter.ui b/plugins/starter/starter.ui
index 7da4df1..5baf1ac 100644
--- a/plugins/starter/starter.ui
+++ b/plugins/starter/starter.ui
@@ -1,280 +1,297 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
 <interface>
-  <!-- interface-requires gtk+ 3.0 -->
+  <requires lib="gtk+" version="3.10"/>
   <object class="GtkWindow" id="unused">
     <property name="can_focus">False</property>
     <child>
-      <object class="GtkVBox" id="starter_vbox">
+      <object class="GtkFrame" id="actions_frame">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="spacing">10</property>
+        <property name="halign">center</property>
+        <property name="valign">center</property>
+        <property name="margin_top">5</property>
+        <property name="margin_bottom">5</property>
+        <property name="label_xalign">0</property>
+        <property name="label_yalign">0</property>
+        <property name="shadow_type">in</property>
         <child>
-          <object class="GtkFrame" id="frame3">
+          <object class="GtkListBox" id="actions_listbox">
+            <property name="name">actions_listbox</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="label_xalign">0</property>
+            <property name="selection_mode">none</property>
+            <signal name="row-activated" handler="on_row_activated" swapped="no"/>
             <child>
-              <object class="GtkAlignment" id="alignment3">
+              <object class="GtkListBoxRow" id="create_row">
+                <property name="name">create_row</property>
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
+                <property name="can_focus">True</property>
                 <child>
-                  <object class="GtkHBox" id="hbox1">
+                  <object class="GtkLabel" id="label3">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="halign">start</property>
-                    <property name="valign">start</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkButton" id="new_button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="halign">start</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="relief">none</property>
-                        <signal name="clicked" handler="on_new_project_clicked" swapped="no"/>
-                        <child>
-                          <object class="GtkBox" id="box1">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkImage" id="new_image">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="icon-size">6</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label1">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Create a new project</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkButton" id="import_button">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="halign">start</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="relief">none</property>
-                        <signal name="clicked" handler="on_import_project_clicked" swapped="no"/>
-                        <child>
-                          <object class="GtkBox" id="box2">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkImage" id="import_image">
-                                <property name="can_focus">False</property>
-                                <property name="icon-size">6</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Import an existing 
project</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
+                    <property name="xpad">150</property>
+                    <property name="label" translatable="yes">Create a new project</property>
                   </object>
                 </child>
               </object>
             </child>
-            <child type="label_item">
-              <placeholder/>
+            <child>
+              <object class="GtkListBoxRow" id="import_row">
+                <property name="name">import_row</property>
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkLabel" id="label4">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Import a project</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="code_row">
+                <property name="name">code_row</property>
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Search for example code</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="anjuta_doc_row">
+                <property name="name">anjuta_doc_row</property>
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkLabel" id="label5">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">View local Anjuta documentation</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="anjuta_faq_row">
+                <property name="name">anjuta_faq_row</property>
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkLabel" id="label6">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">View local Anjuta FAQ</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkListBoxRow" id="gtk_doc_row">
+                <property name="name">gtk_doc_row</property>
+                <property name="width_request">100</property>
+                <property name="height_request">80</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">View online library documentation</property>
+                  </object>
+                </child>
+              </object>
             </child>
           </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="padding">10</property>
-            <property name="position">0</property>
-          </packing>
         </child>
+        <child type="label_item">
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="unused_1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkListBox" id="unused_2">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="selection_mode">none</property>
         <child>
-          <object class="GtkFrame" id="frame1">
+          <object class="GtkListBoxRow" id="recent_row">
+            <property name="width_request">100</property>
+            <property name="height_request">80</property>
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="label_xalign">0</property>
+            <property name="can_focus">True</property>
+            <property name="margin_bottom">2</property>
             <child>
-              <object class="GtkAlignment" id="alignment1">
+              <object class="GtkBox" id="box2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
+                <property name="valign">center</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkLabel" id="project_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="valign">center</property>
+                    <property name="label" translatable="yes">label</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
                 <child>
-                  <object class="GtkVBox" id="recent_vbox">
+                  <object class="GtkLabel" id="path_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="halign">start</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
+                    <property name="label" translatable="yes">label</property>
+                    <property name="wrap">True</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
                 </child>
               </object>
             </child>
-            <child type="label">
-              <object class="GtkLabel" id="label3">
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="unused_3">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkBox" id="recent_projects_box">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_left">5</property>
+        <property name="margin_right">5</property>
+        <property name="margin_top">5</property>
+        <property name="margin_bottom">5</property>
+        <property name="hexpand">True</property>
+        <property name="vexpand">True</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="vexpand">True</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkViewport" id="viewport">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Recent projects:</property>
-                <property name="use_markup">True</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
+                <child>
+                  <object class="GtkListBox" id="recent_listbox">
+                    <property name="name">recent_listbox</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="activate_on_single_click">False</property>
+                    <signal name="row-activated" handler="on_recent_project_activated" swapped="no"/>
+                  </object>
+                </child>
               </object>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="padding">10</property>
             <property name="position">1</property>
           </packing>
         </child>
         <child>
-          <object class="GtkFrame" id="frame2">
+          <object class="GtkToolbar" id="toolbar">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="label_xalign">0</property>
             <child>
-              <object class="GtkAlignment" id="alignment2">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="vbox4">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <object class="GtkLinkButton" id="tutorials_link">
-                        <property name="label" translatable="yes">Tutorials</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="has_tooltip">True</property>
-                        <property name="halign">start</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="relief">none</property>
-                        <property name="uri">http://developer.gnome.org</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLinkButton" id="manual_link">
-                        <property name="label" translatable="yes">Anjuta Manual</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="has_tooltip">True</property>
-                        <property name="halign">start</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="relief">none</property>
-                        <property name="uri">help:anjuta-manual</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLinkButton" id="faq_link">
-                        <property name="label" translatable="yes">FAQ</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="has_tooltip">True</property>
-                        <property name="halign">start</property>
-                        <property name="use_action_appearance">False</property>
-                        <property name="relief">none</property>
-                        <property name="uri">help:anjuta-faqs</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label4">
+              <object class="GtkToolButton" id="remove_project_button">
+                <property name="use_action_appearance">True</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Getting started:</property>
-                <property name="use_markup">True</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
+                <property name="tooltip_text" translatable="yes">Remove recently used project from 
list</property>
+                <property name="label" translatable="yes">Unlist Project</property>
+                <property name="stock_id">gtk-remove</property>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
             </child>
+            <style>
+              <class name="inline-toolbar"/>
+            </style>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="padding">10</property>
             <property name="position">2</property>
           </packing>
         </child>
       </object>
     </child>
   </object>
+  <object class="GtkWindow" id="unused_4">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkBox" id="starter_box">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="valign">center</property>
+        <property name="margin_left">5</property>
+        <property name="margin_right">5</property>
+        <property name="margin_top">5</property>
+        <property name="margin_bottom">5</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">5</property>
+        <child>
+          <object class="GtkBox" id="switcher_box">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">center</property>
+            <property name="valign">center</property>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+  </object>
 </interface>


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