SF.net SVN: geany: [2552] branches/custom-filetypes
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue May 6 17:04:07 UTC 2008
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.
More information about the Commits
mailing list