Remove GEANY_MAX_FILE_TYPES and replace most uses of it with

filetypes_array->len.
Highlighting and templates now use GEANY_MAX_BUILT_IN_FILETYPES.
Move print_filetypes() out of parse_command_line_options();


git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/branches/custom-filetypes@2553 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
Nick Treleaven 2008-05-07 11:34:38 +00:00
parent a4cf5607a6
commit 67316db4c5
9 changed files with 46 additions and 27 deletions

View File

@ -1,3 +1,13 @@
2008-05-07 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/templates.c, src/win32.c, src/highlighting.c, src/dialogs.c,
src/keyfile.c, src/filetypes.c, src/filetypes.h, src/main.c:
Remove GEANY_MAX_FILE_TYPES and replace most uses of it with
filetypes_array->len.
Highlighting and templates now use GEANY_MAX_BUILT_IN_FILETYPES.
Move print_filetypes() out of parse_command_line_options();
2008-05-06 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/filetypes.c, src/filetypes.h:

View File

@ -169,7 +169,7 @@ static void create_open_file_dialog(void)
GtkWidget *filetype_combo, *encoding_combo;
GtkWidget *viewbtn;
GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
gint i;
guint i;
gchar *encoding_string;
ui_widgets.open_filesel = gtk_file_chooser_dialog_new(_("Open File"), GTK_WINDOW(app->window),
@ -205,14 +205,14 @@ static void create_open_file_dialog(void)
/* now create meta filter "All Source" */
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
filetypes_create_file_filter_all_source());
for (i = 0; i < GEANY_MAX_FILE_TYPES - 1; i++)
for (i = 0; i < filetypes_array->len - 1; i++)
{
gtk_combo_box_append_text(GTK_COMBO_BOX(filetype_combo), filetypes[i]->title);
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
filetypes_create_file_filter(filetypes[i]));
}
gtk_combo_box_append_text(GTK_COMBO_BOX(filetype_combo), _("Detect by file extension"));
gtk_combo_box_set_active(GTK_COMBO_BOX(filetype_combo), GEANY_MAX_FILE_TYPES - 1);
gtk_combo_box_set_active(GTK_COMBO_BOX(filetype_combo), filetypes_array->len - 1);
/* fill encoding combo box */
encoding_combo = lookup_widget(ui_widgets.open_filesel, "encoding_combo");

View File

@ -46,6 +46,7 @@ typedef struct FullFileType
filetype public;
/* Private fields */
GtkWidget *menu_item; /* holds a pointer to the menu item for this filetype */
gboolean keyfile_loaded;
}
FullFileType;
@ -477,7 +478,7 @@ static void create_set_filetype_menu()
create_sub_menu(sub_menu_misc, sub_item_misc, _("M_iscellaneous Languages"));
/* Append all filetypes to the filetype menu */
for (ft_id = 0; ft_id < GEANY_MAX_FILE_TYPES; ft_id++)
for (ft_id = 0; ft_id < filetypes_array->len; ft_id++)
{
filetype *ft = filetypes[ft_id];
const gchar *title = ft->title;
@ -882,13 +883,13 @@ static void load_system_keyfile(GKeyFile *key_file, const gchar *file, GKeyFileF
void filetypes_load_config(gint ft_id)
{
GKeyFile *config, *config_home;
static gboolean loaded[GEANY_MAX_FILE_TYPES] = {FALSE};
FullFileType *fft = (FullFileType*)filetypes[ft_id];
g_return_if_fail(ft_id >= 0 && ft_id < GEANY_MAX_FILE_TYPES);
g_return_if_fail(ft_id >= 0 && ft_id < (gint) filetypes_array->len);
if (loaded[ft_id])
if (fft->keyfile_loaded)
return;
loaded[ft_id] = TRUE;
fft->keyfile_loaded = TRUE;
config = g_key_file_new();
config_home = g_key_file_new();

View File

@ -78,8 +78,7 @@ typedef enum
GEANY_FILETYPES_SQL,
GEANY_FILETYPES_ALL, /* must be last filetype, used for 'None' item. */
GEANY_MAX_BUILT_IN_FILETYPES,
GEANY_MAX_FILE_TYPES = GEANY_MAX_BUILT_IN_FILETYPES
GEANY_MAX_BUILT_IN_FILETYPES /* Use filetypes_array->len instead */
} filetype_id;
/* Safe wrapper to get the id field of a possibly NULL filetype pointer. */

View File

@ -52,7 +52,7 @@ typedef struct
} StyleSet;
/* each filetype has a styleset except GEANY_FILETYPE_ALL */
static StyleSet style_sets[GEANY_MAX_FILE_TYPES - 1] = {{NULL, NULL, NULL}};
static StyleSet style_sets[GEANY_MAX_BUILT_IN_FILETYPES - 1] = {{NULL, NULL, NULL}};
enum /* Geany common styling */
@ -289,7 +289,7 @@ void highlighting_free_styles()
{
gint i;
for (i = 0; i < GEANY_MAX_FILE_TYPES - 1; i++)
for (i = 0; i < GEANY_MAX_BUILT_IN_FILETYPES - 1; i++)
{
StyleSet *style_ptr;
style_ptr = &style_sets[i];
@ -3046,7 +3046,7 @@ void highlighting_set_styles(ScintillaObject *sci, gint filetype_idx)
* style_id is a Scintilla lexer style, see scintilla/SciLexer.h */
const HighlightingStyle *highlighting_get_style(gint ft_id, gint style_id)
{
if (ft_id < 0 || ft_id > GEANY_MAX_FILE_TYPES)
if (ft_id < 0 || ft_id > GEANY_MAX_BUILT_IN_FILETYPES)
return NULL;
if (style_sets[ft_id].styling == NULL)

View File

@ -981,7 +981,7 @@ static void generate_filetype_extensions(const gchar *output_dir)
g_key_file_set_comment(config, NULL, NULL,
"*** This file generated by: geany --generate-data-files ***", NULL);
/* add filetype keys */
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
for (i = 0; i < filetypes_array->len; i++)
{
g_key_file_set_string_list(config, "Extensions", filetypes[i]->name,
(const gchar**) filetypes[i]->pattern, g_strv_length(filetypes[i]->pattern));
@ -1026,7 +1026,7 @@ void configuration_read_filetype_extensions(void)
g_key_file_load_from_file(userconfig, userconfigfile, G_KEY_FILE_NONE, NULL);
/* read the keys */
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
for (i = 0; i < filetypes_array->len; i++)
{
gboolean userset =
g_key_file_has_key(userconfig, "Extensions", filetypes[i]->name, NULL);

View File

@ -473,6 +473,21 @@ static void locale_init(void)
}
static void print_filetypes(void)
{
guint i;
filetypes_init_types();
printf("Geany's internal filetype names:\n");
for (i = 0; i < filetypes_array->len; i++)
{
printf("%s\n", filetypes[i]->name);
}
filetypes_free_types();
}
static void parse_command_line_options(gint *argc, gchar ***argv)
{
GError *error = NULL;
@ -585,13 +600,7 @@ static void parse_command_line_options(gint *argc, gchar ***argv)
if (ft_names)
{
printf("Geany's internal filetype names:\n");
filetypes_init_types();
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
{
printf("%s\n", filetypes[i]->name);
}
filetypes_free_types();
print_filetypes();
exit(0);
}

View File

@ -226,7 +226,7 @@ if __name__ == '__main__': main()\n\
";
static gchar *templates[GEANY_MAX_TEMPLATES];
static gchar *ft_templates[GEANY_MAX_FILE_TYPES] = {NULL};
static gchar *ft_templates[GEANY_MAX_BUILT_IN_FILETYPES] = {NULL};
/* some simple macros to reduce code size and make the code readable */
@ -290,7 +290,7 @@ static void init_ft_templates(const gchar *year, const gchar *date)
{
filetype_id ft_id;
for (ft_id = 0; ft_id < GEANY_MAX_FILE_TYPES; ft_id++)
for (ft_id = 0; ft_id < GEANY_MAX_BUILT_IN_FILETYPES; ft_id++)
{
gchar *ext = filetypes_get_conf_extension(ft_id);
gchar *shortname = g_strconcat("filetype.", ext, NULL);
@ -338,7 +338,7 @@ static void create_new_menu_items(void)
GtkWidget *template_menu = lookup_widget(app->window, "menu_new_with_template1_menu");
filetype_id ft_id;
for (ft_id = 0; ft_id < GEANY_MAX_FILE_TYPES; ft_id++)
for (ft_id = 0; ft_id < GEANY_MAX_BUILT_IN_FILETYPES; ft_id++)
{
GtkWidget *tmp_menu, *tmp_button;
filetype *ft = filetypes[ft_id];

View File

@ -88,14 +88,14 @@ static gchar *get_file_filters()
GString *all_patterns = g_string_sized_new(100);
gchar *tmp;
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
for (i = 0; i < filetypes_array->len; i++)
{
tmp = g_strjoinv(";", filetypes[i]->pattern);
g_string_append_printf(str, "%s\t%s\t", filetypes[i]->title, tmp);
g_free(tmp);
}
/* create meta file filter "All Source" */
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
for (i = 0; i < filetypes_array->len; i++)
{
for (j = 0; filetypes[i]->pattern[j] != NULL; j++)
{