Commit 4aebbe58 authored by Sebastien Granjoux's avatar Sebastien Granjoux

Add a new project backend to open a directory as a project

parent 0a0e6869
......@@ -847,7 +847,9 @@ plugins/project-wizard/templates/gnome-applet/po/Makefile
plugins/project-wizard/templates/library/Makefile
plugins/project-wizard/templates/library/src/Makefile
plugins/project-wizard/templates/library/po/Makefile
plugins/project-wizard/templates/directory/Makefile
plugins/project-wizard/templates/m4/Makefile
plugins/dir-project/Makefile
plugins/language-support-cpp-java/Makefile
plugins/language-support-cpp-java/cxxparser/Makefile
plugins/run-program/Makefile
......
......@@ -31,6 +31,7 @@ SUBDIRS = . \
run-program \
gbf-am \
gbf-mkfile \
dir-project \
starter \
js-debugger \
language-support-js
......
# Plugin UI file
plugin_uidir = $(anjuta_ui_dir)
plugin_ui_DATA =
# Plugin glade file
plugin_gladedir = $(anjuta_glade_dir)
plugin_glade_DATA =
# Plugin data file
plugin_datadir = $(anjuta_data_dir)
plugin_data_DATA = sources.list
# Plugin icon file
plugin_pixmapsdir = $(anjuta_image_dir)
plugin_pixmaps_DATA = dir-project-plugin-48.png
# Plugin description file
plugin_in_files = dir-project.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
plugindir = $(anjuta_plugin_dir)
plugin_DATA = $(plugin_in_files:.plugin.in=.plugin)
AM_CPPFLAGS = \
$(WARN_CFLAGS) \
$(DEPRECATED_FLAGS) \
$(GIO_CFLAGS) \
$(LIBANJUTA_CFLAGS) \
-DG_LOG_DOMAIN=\"dir-project\"
plugin_LTLIBRARIES = \
libdir-project.la
libdir_project_la_SOURCES = \
plugin.c \
plugin.h \
dir-project.c \
dir-project.h
libdir_project_la_LDFLAGS = $(ANJUTA_PLUGIN_LDFLAGS)
libdir_project_la_LIBADD = \
$(GIO_LIBS) \
$(LIBANJUTA_LIBS)
EXTRA_DIST = \
$(plugin_in_files) \
$(plugin_DATA) \
$(plugin_ui_DATA) \
$(plugin_pixmaps_DATA) \
$(plugin_glade_DATA) \
$(plugin_data_DATA)
DISTCLEANFILES = \
$(plugin_DATA)
-include $(top_srcdir)/git.mk
This diff is collapsed.
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4; coding: utf-8 -*- */
/* am-project.h
*
* Copyright (C) 2009 Sébastien Granjoux
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _DIR_PROJECT_H_
#define _DIR_PROJECT_H_
#include <glib-object.h>
#include <libanjuta/anjuta-project.h>
G_BEGIN_DECLS
#define DIR_TYPE_PROJECT (dir_project_get_type ())
#define DIR_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DIR_TYPE_PROJECT, DirProject))
#define DIR_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DIR_TYPE_PROJECT, DirProjectClass))
#define DIR_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DIR_TYPE_PROJECT))
#define DIR_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), DIR_TYPE_PROJECT))
#define DIR_GROUP(obj) ((DirGroup *)obj)
#define DIR_TARGET(obj) ((DirTarget *)obj)
#define DIR_SOURCE(obj) ((DirSource *)obj)
typedef struct _DirProject DirProject;
typedef struct _DirProjectClass DirProjectClass;
struct _DirProjectClass {
GObjectClass parent_class;
};
typedef AnjutaProjectGroup DirGroup;
typedef AnjutaProjectTarget DirTarget;
typedef AnjutaProjectSource DirSource;
GType dir_project_get_type (void);
DirProject *dir_project_new (void);
gint dir_project_probe (GFile *directory, GError **error);
gboolean dir_project_load (DirProject *project, GFile *directory, GError **error);
gboolean dir_project_reload (DirProject *project, GError **error);
void dir_project_unload (DirProject *project);
#if 0
AmpGroup *amp_project_get_root (AmpProject *project);
AmpGroup *amp_project_get_group (AmpProject *project, const gchar *id);
AmpTarget *amp_project_get_target (AmpProject *project, const gchar *id);
AmpSource *amp_project_get_source (AmpProject *project, const gchar *id);
gboolean amp_project_get_token_location (AmpProject *project, AnjutaTokenFileLocation *location, AnjutaToken *token);
gboolean amp_project_move (AmpProject *project, const gchar *path);
gboolean amp_project_save (AmpProject *project, GError **error);
gchar * amp_project_get_uri (AmpProject *project);
GFile* amp_project_get_file (AmpProject *project);
AmpGroup* amp_project_add_group (AmpProject *project, AmpGroup *parent, const gchar *name, GError **error);
AmpGroup* amp_project_add_sibling_group (AmpProject *project, AmpGroup *parent, const gchar *name, gboolean after, AmpGroup *sibling, GError **error);
void amp_project_remove_group (AmpProject *project, AmpGroup *group, GError **error);
AmpTarget* amp_project_add_target (AmpProject *project, AmpGroup *parent, const gchar *name, AnjutaProjectTargetType type, GError **error);
AmpTarget* amp_project_add_sibling_target (AmpProject *project, AmpGroup *parent, const gchar *name, AnjutaProjectTargetType type, gboolean after, AmpTarget *sibling, GError **error);
void amp_project_remove_target (AmpProject *project, AmpTarget *target, GError **error);
AmpSource* amp_project_add_source (AmpProject *project, AmpTarget *parent, GFile *file, GError **error);
AmpSource* amp_project_add_sibling_source (AmpProject *project, AmpTarget *parent, GFile *file, gboolean after, AmpSource *sibling, GError **error);
void amp_project_remove_source (AmpProject *project, AmpSource *source, GError **error);
GList *amp_project_get_config_modules (AmpProject *project, GError **error);
GList *amp_project_get_config_packages (AmpProject *project, const gchar* module, GError **error);
GList *amp_project_get_target_types (AmpProject *project, GError **error);
gchar* amp_project_get_property (AmpProject *project, AmpPropertyType type);
gboolean amp_project_set_property (AmpProject *project, AmpPropertyType type, const gchar* value);
gchar * amp_project_get_node_id (AmpProject *project, const gchar *path);
AnjutaProjectNode *amp_node_parent (AnjutaProjectNode *node);
AnjutaProjectNode *amp_node_first_child (AnjutaProjectNode *node);
AnjutaProjectNode *amp_node_last_child (AnjutaProjectNode *node);
AnjutaProjectNode *amp_node_next_sibling (AnjutaProjectNode *node);
AnjutaProjectNode *amp_node_prev_sibling (AnjutaProjectNode *node);
AnjutaProjectNodeType amp_node_get_type (AnjutaProjectNode *node);
void amp_node_all_foreach (AnjutaProjectNode *node, AnjutaProjectNodeFunc func, gpointer data);
GFile *amp_group_get_directory (AmpGroup *group);
GFile *amp_group_get_makefile (AmpGroup *group);
gchar *amp_group_get_id (AmpGroup *group);
const gchar *amp_target_get_name (AmpTarget *target);
AnjutaProjectTargetType amp_target_get_type (AmpTarget *target);
gchar *amp_target_get_id (AmpTarget *target);
void amp_source_free (AmpSource *node);
gchar *amp_source_get_id (AmpSource *source);
GFile *amp_source_get_file (AmpSource *source);
#endif
G_END_DECLS
#endif /* _DIR_PROJECT_H_ */
[Anjuta Plugin]
_Name=Directory backend
_Description=Directory project backend, get only source files, use it when other backend fails
Location=dir-project:DirProjectPlugin
Icon=dir-project-plugin-48.png
Interfaces=IAnjutaProjectBackend
Dependencies=anjuta-project-manager:ProjectManagerPlugin
UserActivatable=no
[Project]
Supported-Project-Types=directory
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
/*
plugin.c
Copyright (C) 2009 Sébastien Granjoux
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
*/
#include <config.h>
#include <libanjuta/anjuta-debug.h>
#include <libanjuta/gbf-project.h>
#include <libanjuta/interfaces/ianjuta-project-backend.h>
#include "plugin.h"
#include "dir-project.h"
#define ICON_FILE "dir-project-plugin-48.png"
/* AnjutaPlugin functions
*---------------------------------------------------------------------------*/
static gboolean
activate_plugin (AnjutaPlugin *plugin)
{
DEBUG_PRINT ("DirProjectPlugin: Activating Anjuta directory backend Plugin ...");
return TRUE;
}
static gboolean
deactivate_plugin (AnjutaPlugin *plugin)
{
DEBUG_PRINT ("DirProjectPlugin: Deacctivating Anjuta directory backend Plugin ...");
return TRUE;
}
/* IAnjutaProjectBackend implementation
*---------------------------------------------------------------------------*/
static IAnjutaProject*
iproject_backend_new_project (IAnjutaProjectBackend* backend, GError** err)
{
IAnjutaProject *project;
DEBUG_PRINT("create new directory project");
project = (IAnjutaProject *)(g_object_new (DIR_TYPE_PROJECT, NULL));
return project;
}
static gint
iproject_backend_probe (IAnjutaProjectBackend* backend, GFile *directory, GError** err)
{
DEBUG_PRINT("probe directory project");
return dir_project_probe (directory, err);
}
static void
iproject_backend_iface_init(IAnjutaProjectBackendIface *iface)
{
iface->new_project = iproject_backend_new_project;
iface->probe = iproject_backend_probe;
}
/* GObject functions
*---------------------------------------------------------------------------*/
/* Used in dispose and finalize */
static gpointer parent_class;
static void
dir_project_plugin_instance_init (GObject *obj)
{
}
/* dispose is used to unref object created with instance_init */
static void
dispose (GObject *obj)
{
G_OBJECT_CLASS (parent_class)->dispose (obj);
}
/* finalize used to free object created with instance init */
static void
finalize (GObject *obj)
{
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
static void
dir_project_plugin_class_init (GObjectClass *klass)
{
AnjutaPluginClass *plugin_class = ANJUTA_PLUGIN_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
plugin_class->activate = activate_plugin;
plugin_class->deactivate = deactivate_plugin;
klass->dispose = dispose;
klass->finalize = finalize;
}
/* AnjutaPlugin declaration
*---------------------------------------------------------------------------*/
ANJUTA_PLUGIN_BEGIN (DirProjectPlugin, dir_project_plugin);
ANJUTA_PLUGIN_ADD_INTERFACE (iproject_backend, IANJUTA_TYPE_PROJECT_BACKEND);
ANJUTA_PLUGIN_END;
ANJUTA_SIMPLE_PLUGIN (DirProjectPlugin, dir_project_plugin);
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
/*
plugin.h
Copyright (C) 2009 Sébastien Granjoux
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 dir_project_plugin_get_type (GTypeModule *module);
#define ANJUTA_TYPE_PLUGIN_DIR_PROJECT (dir_project_plugin_get_type (NULL))
#define ANJUTA_PLUGIN_DIR_PROJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ANJUTA_TYPE_PLUGIN_DIR_PROJECT, DirProjectPlugin))
#define ANJUTA_PLUGIN_DIR_PROJECT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ANJUTA_TYPE_PLUGIN_DIR_PROJECT, DirProjectPluginClass))
#define ANJUTA_IS_PLUGIN_DIR_PROJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ANJUTA_TYPE_PLUGIN_DIR_PROJECT))
#define ANJUTA_IS_PLUGIN_DIR_PROJECT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ANJUTA_TYPE_PLUGIN_DIR_PROJECT))
#define ANJUTA_PLUGIN_DIR_PROJECT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ANJUTA_TYPE_PLUGIN_DIR_PROJECT, DirProjectPluginClass))
typedef struct _DirProjectPlugin DirProjectPlugin;
typedef struct _DirProjectPluginClass DirProjectPluginClass;
struct _DirProjectPlugin
{
AnjutaPlugin parent;
};
struct _DirProjectPluginClass
{
AnjutaPluginClass parent_class;
};
#endif
*.c
*.h
*.C
*.cpp
*.hpp
*.cxx
*.c++
*.cc
*.java
*.py
*.pl
*.rb
*.y
*.l
*.in
*.in.in
*.am
!CVS/
!.*/
......@@ -27,7 +27,6 @@
#include <libanjuta/interfaces/ianjuta-file-loader.h>
#include <libanjuta/interfaces/ianjuta-project-backend.h>
#include <libanjuta/interfaces/ianjuta-vcs.h>
#include <libanjuta/gbf-project.h>
#include <libanjuta/anjuta-async-notify.h>
#include "plugin.h"
......@@ -37,6 +36,7 @@
#define AM_PROJECT_FILE PACKAGE_DATA_DIR"/project/terminal/project.anjuta"
#define MKFILE_PROJECT_FILE PACKAGE_DATA_DIR"/project/mkfile/project.anjuta"
#define DIRECTORY_PROJECT_FILE PACKAGE_DATA_DIR"/project/directory/project.anjuta"
static gpointer parent_class;
......@@ -54,6 +54,8 @@ project_import_generate_file (AnjutaProjectImportPlugin* import_plugin, ProjectI
source_file = g_file_new_for_path (AM_PROJECT_FILE);
else if (!strcmp (import_plugin->backend_id, "make"))
source_file = g_file_new_for_path (MKFILE_PROJECT_FILE);
else if (!strcmp (import_plugin->backend_id, "directory"))
source_file = g_file_new_for_path (DIRECTORY_PROJECT_FILE);
else
{
/* We shouldn't get here, unless someone has upgraded their GBF */
......@@ -153,47 +155,61 @@ project_import_import_project (AnjutaProjectImportPlugin *import_plugin, Project
GList *desc;
AnjutaPluginDescription *backend;
gchar *name, *project_file_name;
/* Search for all valid project backend */
plugin_manager = anjuta_shell_get_plugin_manager (ANJUTA_PLUGIN(import_plugin)->shell, NULL);
descs = anjuta_plugin_manager_query (plugin_manager,
"Anjuta Plugin",
"Interfaces",
"IAnjutaProjectBackend",
NULL);
for (desc = g_list_first (descs); desc != NULL; desc = g_list_next (desc)) {
for (desc = g_list_first (descs); desc != NULL;) {
IAnjutaProjectBackend *plugin;
gchar *location = NULL;
GbfProject* proj;
GList *next;
backend = (AnjutaPluginDescription *)desc->data;
anjuta_plugin_description_get_string (backend, "Anjuta Plugin", "Location", &location);
plugin = (IAnjutaProjectBackend *)anjuta_plugin_manager_get_plugin_by_id (plugin_manager, location);
g_free (location);
/* Probe the backend to find out if the project directory is OK */
/* If probe() returns TRUE then we have a valid backend */
next = g_list_next (desc);
proj= ianjuta_project_backend_new_project (plugin, NULL);
if (proj)
/* Probe the project directory to find if the backend can handle it */
if (ianjuta_project_backend_probe (plugin, source_dir, NULL) <= 0)
{
gchar *path;
path = g_file_get_path (source_dir);
if (gbf_project_probe (proj, path, NULL))
{
/* This is a valid backend for this root directory */
/* FIXME: Possibility of more than one valid backend? */
break;
}
g_object_unref (proj);
g_free (path);
/* Remove invalid backend */
descs = g_list_delete_link (descs, desc);
}
plugin = NULL;
desc = next;
}
if (descs == NULL)
{
backend = NULL;
}
else if (g_list_next (descs) == NULL)
{
backend = (AnjutaPluginDescription *)descs->data;
}
else
{
/* Several backend are possible, ask the user to select one */
gchar *path = project_import_dialog_get_name (import_dialog);
gchar* message = g_strdup_printf (_("Please select a project backend to open %s."), path);
g_free (path);
backend = anjuta_plugin_manager_select (plugin_manager,
_("Open With"),
message,
descs);
g_free (message);
}
g_list_free (descs);
if (!backend)
if (backend == NULL)
{
gchar *path = project_import_dialog_get_name (import_dialog);
......
......@@ -1159,9 +1159,9 @@ project_manager_load_gbf (ProjectManagerPlugin *pm_plugin)
gchar *basename;
const gchar *root_uri;
GError *error = NULL;
GList *descs = NULL;
GList *desc;
IAnjutaProjectBackend *backend;
gint found = 0;
root_uri = pm_plugin->project_root_uri;
......@@ -1175,28 +1175,47 @@ project_manager_load_gbf (ProjectManagerPlugin *pm_plugin)
DEBUG_PRINT ("loading gbf backend…\n");
plugin_manager = anjuta_shell_get_plugin_manager (ANJUTA_PLUGIN(pm_plugin)->shell, NULL);
descs = anjuta_plugin_manager_query (plugin_manager,
"Anjuta Plugin",
"Interfaces",
"IAnjutaProjectBackend",
NULL);
for (desc = g_list_first (descs); desc != NULL; desc = g_list_next (desc)) {
AnjutaPluginDescription *backend_desc;
gchar *location = NULL;
backend_desc = (AnjutaPluginDescription *)desc->data;
anjuta_plugin_description_get_string (backend_desc, "Anjuta Plugin", "Location", &location);
backend = (IAnjutaProjectBackend *)anjuta_plugin_manager_get_plugin_by_id (plugin_manager, location);
g_free (location);
if (ianjuta_project_backend_probe (backend, dirfile, NULL))
{
/* Backend found */
break;
}
if (!anjuta_plugin_manager_is_active_plugin (plugin_manager, "IAnjutaProjectBackend"))
{
GList *descs = NULL;
descs = anjuta_plugin_manager_query (plugin_manager,
"Anjuta Plugin",
"Interfaces",
"IAnjutaProjectBackend",
NULL);
backend = NULL;
for (desc = g_list_first (descs); desc != NULL; desc = g_list_next (desc)) {
AnjutaPluginDescription *backend_desc;
gchar *location = NULL;
IAnjutaProjectBackend *plugin;
gint backend_val;
backend_desc = (AnjutaPluginDescription *)desc->data;
anjuta_plugin_description_get_string (backend_desc, "Anjuta Plugin", "Location", &location);
plugin = (IAnjutaProjectBackend *)anjuta_plugin_manager_get_plugin_by_id (plugin_manager, location);
g_message ("search plugin %s", location);
g_free (location);
backend_val = ianjuta_project_backend_probe (plugin, dirfile, NULL);
if (backend_val > found)
{
/* Backend found */;
backend = plugin;
found = backend_val;
}
}
g_list_free (descs);
}
else
{
/* A backend is already loaded, use it */
backend = IANJUTA_PROJECT_BACKEND (anjuta_shell_get_object (ANJUTA_PLUGIN (pm_plugin)->shell,
"IAnjutaProjectBackend", NULL));
g_object_ref (backend);
}
g_list_free (descs);
if (!backend)
{
......
SUBDIRS = minimal terminal cpp gtk anjuta-plugin \
gtkmm wxwin xlib xlib-dock gcj java gnome-applet\
python mkfile sdl library licenses m4 js_minimal
python mkfile sdl library directory licenses m4 js_minimal
wizard_filesdir = $(anjuta_data_dir)/project
wizard_files_DATA = \
......
wizard_filesdir = $(anjuta_data_dir)/project/directory
wizard_files_DATA = \
project.anjuta
EXTRA_DIST = $(wizard_files_DATA)
-include $(top_srcdir)/git.mk
<?xml version="1.0"?>
<anjuta>
<plugin name="GBF Project Manager"
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaProjectManager"/>
</plugin>
<plugin name="Directory Project Backend"
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaProjectBackend"/>
<require group="Project"
attribute="Supported-Project-Types"
value="directory"/>
</plugin>
<plugin name="Symbol Browser"
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaSymbolManager"/>
</plugin>
<plugin name="Make Build System"
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaBuildable"/>
<require group="Build"
attribute="Supported-Build-Types"
value="make"/>
</plugin>
<plugin name="Task Manager"
url="http://anjuta.org/plugins/"
mandatory="no">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaTodo"/>
</plugin>
<plugin name="Debug Manager"
url="http://anjuta.org/plugins/"
mandatory="no">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaDebugManager"/>
</plugin>
</anjuta>
......@@ -6,9 +6,16 @@
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaProjectManager"/>
</plugin>
<plugin name="Makefile Project Backend"
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaProjectBackend"/>
<require group="Project"
attribute="Supported-Project-Types"
value="make"/>
attribute="Supported-Project-Types"
value="make"/>
</plugin>
<plugin name="Symbol Browser"
url="http://anjuta.org/plugins/"
......
<?xml version="1.0"?>
<anjuta>
<plugin name="GBF Project Manager"
<plugin name="GBF Project Manager"
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaProjectManager"/>
</plugin>
<plugin name="AutoTools Project Backend"
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
attribute="Interfaces"
value="IAnjutaProjectBackend"/>
<require group="Project"
attribute="Supported-Project-Types"
value="automake"/>
......
......@@ -90,6 +90,7 @@ plugins/gbf-am/gbf-am-properties.c
plugins/gbf-mkfile/gbf-mkfile-config.c
plugins/gbf-mkfile/gbf-mkfile-project.c
plugins/gbf-mkfile/gbf-mkfile-properties.c
plugins/dir-project/dir-project.c
plugins/gdb/debugger.c
plugins/gdb/plugin.c
plugins/gdb/utilities.c
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment