Revision: 2552 http://geany.svn.sourceforge.net/geany/?rev=2552&view=rev Author: ntrel Date: 2008-05-06 10:04:06 -0700 (Tue, 06 May 2008)
Log Message: ----------- Remove unused filetype::item field. Create FullFileType private type that 'inherits' from filetype (FullFileType* can be cast to filetype*). This is used in filetypes_new() to hide filetype struct fields from the API. Remove radio_items[] and use FullFileType::menu_item instead.
Modified Paths: -------------- branches/custom-filetypes/ChangeLog branches/custom-filetypes/src/filetypes.c branches/custom-filetypes/src/filetypes.h
Modified: branches/custom-filetypes/ChangeLog =================================================================== --- branches/custom-filetypes/ChangeLog 2008-05-06 12:43:21 UTC (rev 2551) +++ branches/custom-filetypes/ChangeLog 2008-05-06 17:04:06 UTC (rev 2552) @@ -1,3 +1,13 @@ +2008-05-06 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com> + + * src/filetypes.c, src/filetypes.h: + Remove unused filetype::item field. + Create FullFileType private type that 'inherits' from filetype + (FullFileType* can be cast to filetype*). This is used in + filetypes_new() to hide filetype struct fields from the API. + Remove radio_items[] and use FullFileType::menu_item instead. + + 2008-05-01 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/plugindata.h, src/keyfile.c, src/filetypes.c, src/filetypes.h:
Modified: branches/custom-filetypes/src/filetypes.c =================================================================== --- branches/custom-filetypes/src/filetypes.c 2008-05-06 12:43:21 UTC (rev 2551) +++ branches/custom-filetypes/src/filetypes.c 2008-05-06 17:04:06 UTC (rev 2552) @@ -40,13 +40,21 @@ #include "ui_utils.h"
+/* This type 'inherits' from filetype so FullFileType* can be cast to filetype*. */ +typedef struct FullFileType +{ + filetype public; + /* Private fields */ + GtkWidget *menu_item; /* holds a pointer to the menu item for this filetype */ +} +FullFileType; + + GPtrArray *filetypes_array = NULL; /* Dynamic array of filetype pointers */
GHashTable *filetypes_hash = NULL; /* Hash of filetype pointers based on name keys */
-static GtkWidget *radio_items[GEANY_MAX_FILE_TYPES]; - static void create_radio_menu_item(GtkWidget *menu, const gchar *label, filetype *ftype);
@@ -408,12 +416,13 @@ /* initialize fields. */ static filetype *filetypes_new(void) { - filetype *ft = g_new0(filetype, 1); + FullFileType *fft = g_new0(FullFileType, 1); + filetype *ft = (filetype*) fft;
/* ft->id = GEANY_FILETYPES_OTHER; */ - ft->lang = -2; /* no tagmanager parser */ + ft->lang = -2; /* assume no tagmanager parser */ ft->programs = g_new0(struct build_programs, 1); ft->actions = g_new0(struct build_actions, 1); return ft; @@ -504,7 +513,6 @@ } default: break; } - ft->item = NULL; create_radio_menu_item(sub_menu, title, ft); } } @@ -693,12 +701,16 @@
void filetypes_select_radio_item(const filetype *ft) { + FullFileType *fft; + /* app->ignore_callback has to be set by the caller */ + g_return_if_fail(app->ignore_callback); + if (ft == NULL) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM( - radio_items[filetypes[GEANY_FILETYPES_ALL]->id]), TRUE); - else - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(radio_items[ft->id]), TRUE); + ft = filetypes[GEANY_FILETYPES_ALL]; + + fft = (FullFileType*)ft; + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(fft->menu_item), TRUE); }
@@ -717,10 +729,11 @@ { static GSList *group = NULL; GtkWidget *tmp; + FullFileType *fft = (FullFileType*)ftype;
tmp = gtk_radio_menu_item_new_with_label(group, label); group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(tmp)); - radio_items[ftype->id] = tmp; + fft->menu_item = tmp; gtk_widget_show(tmp); gtk_container_add(GTK_CONTAINER(menu), tmp); g_signal_connect((gpointer) tmp, "activate", G_CALLBACK(on_filetype_change), (gpointer) ftype);
Modified: branches/custom-filetypes/src/filetypes.h =================================================================== --- branches/custom-filetypes/src/filetypes.h 2008-05-06 12:43:21 UTC (rev 2551) +++ branches/custom-filetypes/src/filetypes.h 2008-05-06 17:04:06 UTC (rev 2552) @@ -106,7 +106,6 @@ struct filetype { filetype_id id; - GtkWidget *item; /* holds a pointer to the menu item for this filetypes */ langType lang; /* represents the langType of tagmanager(see the table */ /* in tagmanager/parsers.h), -1 represents all, -2 none */ gchar *name; /* will be used as name for tagmanager */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.