Initial German translation of the build tutorial
[anjuta.git] / plugins / am-project / am-project.h
blob6ab5624064682b8328de8e67ab4093fc9e373457
1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4; coding: utf-8 -*- */
2 /* am-project.h
4 * Copyright (C) 2009 Sébastien Granjoux
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of the
9 * License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public
17 * License along with this program; if not, write to the
18 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
22 #ifndef _AM_PROJECT_H_
23 #define _AM_PROJECT_H_
25 #include <glib-object.h>
27 #include "amp-root.h"
29 #include <libanjuta/anjuta-project.h>
30 #include <libanjuta/anjuta-token.h>
31 #include <libanjuta/anjuta-token-file.h>
32 #include <libanjuta/anjuta-token-list.h>
33 #include <libanjuta/interfaces/ianjuta-language.h>
35 G_BEGIN_DECLS
37 #define AMP_TYPE_PROJECT (amp_project_get_type ())
38 #define AMP_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), AMP_TYPE_PROJECT, AmpProject))
39 #define AMP_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), AMP_TYPE_PROJECT, AmpProjectClass))
40 #define AMP_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), AMP_TYPE_PROJECT))
41 #define AMP_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), AMP_TYPE_PROJECT))
44 typedef struct _AmpProjectClass AmpProjectClass;
46 typedef struct _AmpModuleNode AmpModuleNode;
47 typedef struct _AmpPackageNode AmpPackageNode;
48 typedef struct _AmpTargetNode AmpTargetNode;
49 typedef struct _AmpObjectNode AmpObjectNode;
50 typedef struct _AmpSourceNode AmpSourceNode;
52 struct _AmpProjectClass {
53 AmpRootNodeClass parent_class;
56 typedef struct _AmpProperty AmpProperty;
57 typedef struct _AmpPropertyInfo AmpPropertyInfo;
59 GType amp_project_get_type (void);
60 AmpProject *amp_project_new (GFile *file, IAnjutaLanguage *language, GError **error);
62 void amp_project_register (GTypeModule *module);
65 gint amp_project_probe (GFile *directory, GError **error);
66 void amp_project_unload (AmpProject *project);
67 gboolean amp_project_is_loaded (AmpProject *project);
70 void amp_project_load_config (AmpProject *project, AnjutaToken *arg_list);
71 void amp_project_load_properties (AmpProject *project, AnjutaToken *macro, AnjutaToken *list);
72 void amp_project_load_module (AmpProject *project, AnjutaToken *module);
74 AnjutaToken *amp_project_get_config_token (AmpProject *project, GFile *file);
76 AnjutaTokenFile* amp_project_set_configure (AmpProject *project, GFile *configure);
77 gboolean amp_project_update_configure (AmpProject *project, AnjutaToken *token);
78 AnjutaToken* amp_project_get_configure_token (AmpProject *project);
79 void amp_project_update_root (AmpProject *project, AmpProject *new_project);
81 AmpProject *amp_project_get_root (AmpProject *project);
82 AmpGroupNode *amp_project_get_group (AmpProject *project, const gchar *id);
83 AmpTargetNode *amp_project_get_target (AmpProject *project, const gchar *id);
84 AmpSourceNode *amp_project_get_source (AmpProject *project, const gchar *id);
85 gboolean amp_project_get_token_location (AmpProject *project, AnjutaTokenFileLocation *location, AnjutaToken *token);
87 gboolean amp_project_move (AmpProject *project, const gchar *path);
89 typedef enum _AmpFileType{
90 DUMP_MAKEFILE,
91 DUMP_CONFIGURE
92 } AmpFileType;
94 gboolean amp_project_dump (AmpProject *project, AnjutaProjectNode *node, AmpFileType type);
96 gchar * amp_project_get_uri (AmpProject *project);
97 GFile* amp_project_get_file (AmpProject *project);
99 gboolean amp_project_is_busy (AmpProject *project);
101 void amp_project_add_file (AmpProject *project, GFile *file, AnjutaTokenFile* token);
102 void amp_project_add_subst_variable (AmpProject *project, const gchar *name, AnjutaToken *value);
103 AnjutaToken *amp_project_get_subst_variable_token (AmpProject *project, const gchar *name);
106 AmpGroupNode* amp_project_add_group (AmpProject *project, AmpGroupNode *parent, const gchar *name, GError **error);
107 AmpGroupNode* amp_project_add_sibling_group (AmpProject *project, AmpGroupNode *parent, const gchar *name, gboolean after, AmpGroupNode *sibling, GError **error);
108 void amp_project_remove_group (AmpProject *project, AmpGroupNode *group, GError **error);
110 AmpTargetNode* amp_project_add_target (AmpProject *project, AmpGroupNode *parent, const gchar *name, AnjutaProjectNodeType type, GError **error);
111 AmpTargetNode* amp_project_add_sibling_target (AmpProject *project, AmpGroupNode *parent, const gchar *name, AnjutaProjectNodeType type, gboolean after, AmpTargetNode *sibling, GError **error);
112 void amp_project_remove_target (AmpProject *project, AmpTargetNode *target, GError **error);
114 AmpSourceNode* amp_project_add_source (AmpProject *project, AmpTargetNode *parent, GFile *file, GError **error);
115 AmpSourceNode* amp_project_add_sibling_source (AmpProject *project, AmpTargetNode *parent, GFile *file, gboolean after, AmpSourceNode *sibling, GError **error);
116 void amp_project_remove_source (AmpProject *project, AmpSourceNode *source, GError **error);
118 AnjutaProjectNodeInfo *amp_project_get_type_info (AmpProject *project, AnjutaProjectNodeType type);
119 const GList *amp_project_get_node_info (AmpProject *project, GError **error);
121 GList *amp_project_get_config_modules (AmpProject *project, GError **error);
122 GList *amp_project_get_config_packages (AmpProject *project, const gchar* module, GError **error);
124 GList *amp_project_get_target_types (AmpProject *project, GError **error);
126 AnjutaProjectNode *amp_node_parent (AnjutaProjectNode *node);
127 AnjutaProjectNode *amp_node_first_child (AnjutaProjectNode *node);
128 AnjutaProjectNode *amp_node_last_child (AnjutaProjectNode *node);
129 AnjutaProjectNode *amp_node_next_sibling (AnjutaProjectNode *node);
130 AnjutaProjectNode *amp_node_prev_sibling (AnjutaProjectNode *node);
131 //void amp_node_all_foreach (AnjutaProjectNode *node, AnjutaProjectNodeFunc func, gpointer data);
133 GFile *amp_group_node_get_directory (AmpGroupNode *group);
134 gchar *amp_group_node_get_id (AmpGroupNode *group);
135 void amp_group_node_update_variable (AmpGroupNode *group, AnjutaToken *variable);
137 const gchar *amp_target_node_get_name (AmpTargetNode *target);
138 gchar *amp_target_node_get_id (AmpTargetNode *target);
140 void amp_source_node_free (AmpSourceNode *node);
141 gchar *amp_source_node_get_id (AmpSourceNode *source);
142 GFile *amp_source_node_get_file (AmpSourceNode *source);
144 gchar* canonicalize_automake_variable (const gchar *name);
145 gboolean split_automake_variable (gchar *name, gint *flags, gchar **module, gchar **primary);
146 gchar* get_relative_path (GFile *parent, GFile *file);
147 GFileType file_type (GFile *file, const gchar *filename);
152 G_END_DECLS
154 #endif /* _AM_PROJECT_H_ */