anjuta r3791 - in trunk: . plugins/project-import po
- From: naba svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r3791 - in trunk: . plugins/project-import po
- Date: Tue, 25 Mar 2008 20:05:17 +0000 (GMT)
Author: naba
Date: Tue Mar 25 20:05:17 2008
New Revision: 3791
URL: http://svn.gnome.org/viewvc/anjuta?rev=3791&view=rev
Log:
* plugins/project-import/Makefile.am:
* plugins/project-import/project-import.{ch}:
* plugins/project-import/anjuta-project-import.glade (removed):
* configure.in, po/POTFILES.in:
Ported the GnomeDruid stuff to GtkAssistant an removed the glade
file because libglade doesn\'t have GtkAssistant support.
Removed:
trunk/plugins/project-import/anjuta-project-import.glade
Modified:
trunk/configure.in
trunk/plugins/project-import/Makefile.am
trunk/plugins/project-import/project-import.c
trunk/plugins/project-import/project-import.h
trunk/po/POTFILES.in
Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in (original)
+++ trunk/configure.in Tue Mar 25 20:05:17 2008
@@ -24,7 +24,7 @@
GMODULE_REQUIRED=2.8.0
GTHREAD_REQUIRED=2.8.0
GDK_PIXBUF_REQUIRED=2.0.0
-GTK_REQUIRED=2.8.0
+GTK_REQUIRED=2.10.0
ORBIT_REQUIRED=2.6.0
LIBGLADE_REQUIRED=2.3.0
GNOME_REQUIRED=2.12.0
Modified: trunk/plugins/project-import/Makefile.am
==============================================================================
--- trunk/plugins/project-import/Makefile.am (original)
+++ trunk/plugins/project-import/Makefile.am Tue Mar 25 20:05:17 2008
@@ -1,6 +1,3 @@
-# Plugin glade file
-wizard_gladedir = $(anjuta_glade_dir)
-wizard_glade_DATA = anjuta-project-import.glade
# Plugin pixmaps
wizard_pixmapsdir = $(anjuta_image_dir)
@@ -40,5 +37,4 @@
EXTRA_DIST = \
$(plugin_in_files) \
$(wizard_pixmaps_DATA) \
- $(wizard_plugin_DATA) \
- $(wizard_glade_DATA)
+ $(wizard_plugin_DATA)
Modified: trunk/plugins/project-import/project-import.c
==============================================================================
--- trunk/plugins/project-import/project-import.c (original)
+++ trunk/plugins/project-import/project-import.c Tue Mar 25 20:05:17 2008
@@ -1,5 +1,7 @@
/*
* project-import.c (c) 2005 Johannes Schmid
+ * 2008 Ignacio Casal Quinteiro
+ *
* 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
@@ -16,15 +18,14 @@
*/
#include "project-import.h"
-#include <gnome.h>
#include <libgnomevfs/gnome-vfs.h>
#include <libanjuta/interfaces/ianjuta-file-loader.h>
+#include <libanjuta/anjuta-debug.h>
#include <config.h>
#include <gbf/gbf-backend.h>
-#define GLADE_FILE PACKAGE_DATA_DIR"/glade/anjuta-project-import.glade"
#define AM_PROJECT_FILE PACKAGE_DATA_DIR"/project/terminal/project.anjuta"
#define MKFILE_PROJECT_FILE PACKAGE_DATA_DIR"/project/mkfile/project.anjuta"
@@ -48,20 +49,23 @@
return FALSE;
}
-static gboolean
-on_import_next(GnomeDruidPage* page, GtkWidget* druid, ProjectImport* pi)
+static void
+on_import_next(GtkAssistant *assistant, GtkWidget *page, ProjectImport *pi)
{
GSList* l;
GbfBackend* backend = NULL;
GbfProject* proj;
- const gchar* name = gtk_entry_get_text(GTK_ENTRY(pi->import_name));
- gchar* path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(pi->import_path));
+ if (page != pi->import_finish)
+ return;
+
+ const gchar* name = gtk_entry_get_text (GTK_ENTRY (pi->import_name));
+ gchar* path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (pi->import_path));
if (!name || !path || !strlen(name) || !strlen(path))
{
g_free (path);
- return TRUE;
+ return;
}
gbf_backend_init();
@@ -90,7 +94,7 @@
g_object_unref(proj);
}
backend = NULL;
- }
+ }
if (!backend)
{
@@ -101,7 +105,7 @@
"the Gnome Build Framework."), path);
GtkDialog* message =
- GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(pi->window),
+ GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(pi->assistant),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
@@ -112,7 +116,13 @@
gtk_dialog_run(message);
gtk_widget_destroy(GTK_WIDGET(message));
g_free (path);
- return TRUE;
+
+ /*
+ * Now we can't apply
+ */
+ gtk_label_set_text (GTK_LABEL (pi->import_finish), _("Please, fix the configuration"));
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (pi->assistant), pi->import_finish, FALSE);
+ return;
}
gchar* summary;
@@ -121,21 +131,24 @@
"Project type: %s\n"
"Project path: %s\n"),
name, backend->name, path);
- gnome_druid_page_edge_set_text(GNOME_DRUID_PAGE_EDGE(pi->import_finish),
- summary);
+ gtk_label_set_text (GTK_LABEL (pi->import_finish),
+ summary);
g_free(summary);
+ /*
+ * If we are here, everything is ok
+ */
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (pi->assistant), pi->import_finish, TRUE);
+
if (pi->backend_id)
g_free(pi->backend_id);
pi->backend_id = g_strdup(backend->id);
g_free (path);
-
- return FALSE;
}
-static gboolean
-on_import_finish (GnomeDruidPage* page, GtkWidget* druid, ProjectImport* pi)
+static void
+on_import_apply (GtkAssistant *assistant, ProjectImport* pi)
{
const gchar* name = gtk_entry_get_text (GTK_ENTRY(pi->import_name));
gchar* path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(pi->import_path));
@@ -148,7 +161,7 @@
{
g_free (project_file);
g_free (path);
- return TRUE;
+ return;
}
loader = anjuta_shell_get_interface (ANJUTA_PLUGIN (pi->plugin)->shell,
@@ -156,43 +169,137 @@
if (!loader)
{
g_warning("No IAnjutaFileLoader interface! Cannot open project file!");
- g_object_unref (G_OBJECT (pi));
g_free (project_file);
- return FALSE;
+ return;
}
ianjuta_file_loader_load (loader, project_file, FALSE, NULL);
- g_object_unref (G_OBJECT (pi));
g_free (project_file);
g_free (path);
- return FALSE;
}
static void
-project_import_init(ProjectImport *pi)
+create_start_page (ProjectImport *pi)
{
- GladeXML* gxml = glade_xml_new(GLADE_FILE, "import_window", NULL);
- GtkWidget* import_page;
+ GtkWidget *box, *label;
+
+ box = gtk_hbox_new (FALSE, 12);
+ gtk_widget_show (box);
+ gtk_container_set_border_width (GTK_CONTAINER (box), 12);
+
+ label = gtk_label_new (_("This assistent will import an existing project into Anjuta."));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
+
+ gtk_assistant_append_page (GTK_ASSISTANT (pi->assistant), box);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (pi->assistant), box, _("Import Project"));
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (pi->assistant), box, TRUE);
+ gtk_assistant_set_page_type (GTK_ASSISTANT (pi->assistant), box, GTK_ASSISTANT_PAGE_INTRO);
+}
+
+static void
+on_entry_changed (GtkWidget *widget, gpointer data)
+{
+ GtkAssistant *assistant = GTK_ASSISTANT (data);
+ GtkWidget *current_page;
+ gint page_number;
+ const gchar *text;
+
+ page_number = gtk_assistant_get_current_page (assistant);
+ current_page = gtk_assistant_get_nth_page (assistant, page_number);
+ text = gtk_entry_get_text (GTK_ENTRY (widget));
+
+ if (text && *text)
+ gtk_assistant_set_page_complete (assistant, current_page, TRUE);
+ else
+ gtk_assistant_set_page_complete (assistant, current_page, FALSE);
+}
+
+static void
+create_import_page (ProjectImport *pi)
+{
+ GtkWidget *box, *vbox1, *vbox2;
+ GtkWidget *label;
+
+ box = gtk_vbox_new (FALSE, 12);
+ gtk_widget_show (box);
+ gtk_container_set_border_width (GTK_CONTAINER (box), 5);
+
+ /*
+ * Project name:
+ */
+ vbox1 = gtk_vbox_new (FALSE, 12);
+ gtk_widget_show (vbox1);
+ gtk_box_pack_start (GTK_BOX (box), vbox1, FALSE, FALSE, 0);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<b>Enter the project name:</b>"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (vbox1), label, FALSE, FALSE, 0);
+
+ pi->import_name = gtk_entry_new ();
+ gtk_widget_show (pi->import_name);
+ gtk_box_pack_start (GTK_BOX (vbox1), pi->import_name, FALSE, FALSE, 0);
+ g_signal_connect (G_OBJECT (pi->import_name), "changed",
+ G_CALLBACK (on_entry_changed), pi->assistant);
+
+ /*
+ * Base path:
+ */
+ vbox2 = gtk_vbox_new (FALSE, 12);
+ gtk_widget_show (vbox2);
+ gtk_box_pack_start (GTK_BOX (box), vbox2, FALSE, FALSE, 0);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label),
+ _("<b>Enter the base path of your project:</b>"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
+
+ pi->import_path = gtk_file_chooser_button_new (_("Select project directory"),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ gtk_widget_show (pi->import_path);
+ gtk_box_pack_start (GTK_BOX (vbox2), pi->import_path, FALSE, FALSE, 0);
+
+ gtk_assistant_append_page (GTK_ASSISTANT (pi->assistant), box);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (pi->assistant), box, _("Project to Import"));
+}
+
+static void
+create_finish_page (ProjectImport *pi)
+{
+ pi->import_finish = gtk_label_new (NULL);
+ gtk_widget_show (pi->import_finish);
- pi->window = glade_xml_get_widget(gxml, "import_window");
- pi->druid = glade_xml_get_widget(gxml, "import_druid");
- pi->import_name = glade_xml_get_widget(gxml, "import_name");
- pi->import_path = glade_xml_get_widget(gxml, "import_path");
- pi->import_finish = glade_xml_get_widget(gxml, "import_finish");
+ gtk_assistant_append_page (GTK_ASSISTANT (pi->assistant), pi->import_finish);
+ gtk_assistant_set_page_type (GTK_ASSISTANT (pi->assistant), pi->import_finish,
+ GTK_ASSISTANT_PAGE_CONFIRM);
+ gtk_assistant_set_page_complete (GTK_ASSISTANT (pi->assistant), pi->import_finish, TRUE);
+ gtk_assistant_set_page_title (GTK_ASSISTANT (pi->assistant), pi->import_finish, _("Confirmation"));
+}
+
+static void
+project_import_init (ProjectImport *pi)
+{
+ pi->assistant = gtk_assistant_new ();
+ create_start_page (pi);
+ create_import_page (pi);
+ create_finish_page (pi);
pi->backend_id = NULL;
- import_page = glade_xml_get_widget(gxml, "import_page");
- g_signal_connect(G_OBJECT(import_page), "next",
+ g_signal_connect(G_OBJECT (pi->assistant), "prepare",
G_CALLBACK(on_import_next), pi);
- g_signal_connect(G_OBJECT(pi->import_finish), "finish",
- G_CALLBACK(on_import_finish), pi);
- g_signal_connect(G_OBJECT(pi->druid), "cancel",
- G_CALLBACK(on_import_cancel), pi);
- g_signal_connect(G_OBJECT(pi->druid), "key-press-event",
- G_CALLBACK(on_import_key_press_event), pi);
+ g_signal_connect(G_OBJECT (pi->assistant), "apply",
+ G_CALLBACK (on_import_apply), pi);
+ g_signal_connect(G_OBJECT (pi->assistant), "cancel",
+ G_CALLBACK (on_import_cancel), pi);
+ g_signal_connect(G_OBJECT (pi->assistant), "close",
+ G_CALLBACK (on_import_cancel), pi);
+ g_signal_connect(G_OBJECT(pi->assistant), "key-press-event",
+ G_CALLBACK(on_import_key_press_event), pi);
- g_object_unref(G_OBJECT(gxml));
- gtk_widget_show_all(pi->window);
+ gtk_widget_show (pi->assistant);
}
static void
@@ -201,10 +308,12 @@
ProjectImport *cobj;
cobj = PROJECT_IMPORT(object);
+ DEBUG_PRINT ("Finalizing ProjectImport object");
+
if (cobj->backend_id)
g_free(cobj->backend_id);
- gtk_widget_destroy(cobj->window);
+ gtk_widget_destroy(cobj->assistant);
/* Deactivate plugin once wizard is finished */
if (anjuta_plugin_is_active(cobj->plugin))
@@ -254,7 +363,7 @@
obj = PROJECT_IMPORT(g_object_new(PROJECT_IMPORT_TYPE, NULL));
obj->plugin = plugin;
- gtk_window_set_transient_for (GTK_WINDOW (obj->window),
+ gtk_window_set_transient_for (GTK_WINDOW (obj->assistant),
GTK_WINDOW (ANJUTA_PLUGIN (plugin)->shell));
return obj;
@@ -299,7 +408,7 @@
GtkWidget *dlg;
- dlg = gtk_message_dialog_new(GTK_WINDOW(pi->window),
+ dlg = gtk_message_dialog_new(GTK_WINDOW(pi->assistant),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
@@ -325,7 +434,7 @@
/* Handle already existing file */
if (error == GNOME_VFS_ERROR_FILE_EXISTS)
{
- if (anjuta_util_dialog_boolean_question (GTK_WINDOW (pi->window),
+ if (anjuta_util_dialog_boolean_question (GTK_WINDOW (pi->assistant),
_("A file named \"%s\" already exists. "
"Do you want to replace it?"), prjfile))
{
@@ -366,7 +475,7 @@
case GNOME_VFS_ERROR_FILE_EXISTS:
return FALSE;
default:
- anjuta_util_dialog_error (GTK_WINDOW (pi->window),
+ anjuta_util_dialog_error (GTK_WINDOW (pi->assistant),
_("A file named \"%s\" cannot be written: %s. "
"Check if you have write access to the project directory."),
prjfile, gnome_vfs_result_to_string (error));
Modified: trunk/plugins/project-import/project-import.h
==============================================================================
--- trunk/plugins/project-import/project-import.h (original)
+++ trunk/plugins/project-import/project-import.h Tue Mar 25 20:05:17 2008
@@ -37,8 +37,7 @@
{
GObject parent;
- GtkWidget* window;
- GtkWidget* druid;
+ GtkWidget* assistant;
GtkWidget* import_name;
GtkWidget* import_path;
GtkWidget* import_finish;
Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in (original)
+++ trunk/po/POTFILES.in Tue Mar 25 20:05:17 2008
@@ -136,7 +136,6 @@
plugins/profiler/profiler-function-call-tree.glade
plugins/profiler/profiler.glade
plugins/profiler/string-utils.c
-plugins/project-import/anjuta-project-import.glade
plugins/project-import/project-import.c
plugins/project-manager/plugin.c
plugins/project-wizard/anjuta-project-wizard.glade
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]