// Name: src/gtk/treeentry_gtk.c
// Purpose: GtkTreeEntry implementation
// Author: Ryan Norton
-// Id: $Id$
// Copyright: (c) 2006 Ryan Norton
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////// */
#define GSEAL(x) x
#endif
-#include "wx/gtk/treeentry_gtk.h"
+#include "wx/gtk/private/treeentry_gtk.h"
/*
GtkTreeEntry
*/
/* forwards */
-static void gtk_tree_entry_class_init(GtkTreeEntryClass* klass);
-static void gtk_tree_entry_init (GTypeInstance* instance, gpointer g_class);
-static void gtk_tree_entry_string_transform_func(const GValue *src_value,
+static void wx_tree_entry_class_init(void* g_class, void* class_data);
+static void wx_tree_entry_string_transform_func(const GValue *src_value,
GValue *dest_value);
-static void gtk_tree_entry_dispose(GObject* obj);
+static void wx_tree_entry_dispose(GObject* obj);
+static GObjectClass* parent_class;
/* public */
-GtkTreeEntry*
-gtk_tree_entry_new()
+wxTreeEntry*
+wx_tree_entry_new()
{
- return GTK_TREE_ENTRY(g_object_new(GTK_TYPE_TREE_ENTRY, NULL));
+ return WX_TREE_ENTRY(g_object_new(WX_TYPE_TREE_ENTRY, NULL));
}
-GtkType
-gtk_tree_entry_get_type ()
+GType
+wx_tree_entry_get_type()
{
- static GtkType tree_entry_type = 0;
+ static GType tree_entry_type = 0;
if (!tree_entry_type)
{
const GTypeInfo tree_entry_info =
{
- sizeof (GtkTreeEntryClass),
+ sizeof(GObjectClass),
NULL, /* base_init */
NULL, /* base_finalize */
- (GClassInitFunc) gtk_tree_entry_class_init, /* class_init */
+ wx_tree_entry_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
- sizeof (GtkTreeEntry),
+ sizeof(wxTreeEntry),
16, /* n_preallocs */
- (GInstanceInitFunc) gtk_tree_entry_init, /*instance_init*/
+ NULL, /* instance_init */
NULL /* value_table */
};
- tree_entry_type = g_type_register_static (G_TYPE_OBJECT, "GtkTreeEntry",
+ tree_entry_type = g_type_register_static (G_TYPE_OBJECT, "wxTreeEntry",
&tree_entry_info,
(GTypeFlags)0);
g_value_register_transform_func(tree_entry_type, G_TYPE_STRING,
- gtk_tree_entry_string_transform_func);
+ wx_tree_entry_string_transform_func);
}
return tree_entry_type;
}
-gchar* gtk_tree_entry_get_collate_key (GtkTreeEntry* entry)
+char* wx_tree_entry_get_collate_key(wxTreeEntry* entry)
{
+ if (entry->collate_key == NULL)
+ {
+ char* temp = g_utf8_casefold(entry->label, -1);
+ entry->collate_key = g_utf8_collate_key(temp, -1);
+ g_free(temp);
+ }
return entry->collate_key;
}
-gchar* gtk_tree_entry_get_label (GtkTreeEntry* entry)
+char* wx_tree_entry_get_label(wxTreeEntry* entry)
{
- g_assert(GTK_IS_TREE_ENTRY(entry));
+ g_assert(WX_IS_TREE_ENTRY(entry));
return entry->label;
}
-gpointer gtk_tree_entry_get_userdata (GtkTreeEntry* entry)
+void* wx_tree_entry_get_userdata(wxTreeEntry* entry)
{
- g_assert(GTK_IS_TREE_ENTRY(entry));
+ g_assert(WX_IS_TREE_ENTRY(entry));
return entry->userdata;
}
-void gtk_tree_entry_set_label (GtkTreeEntry* entry, const gchar* label)
+void wx_tree_entry_set_label(wxTreeEntry* entry, const char* label)
{
- g_assert(GTK_IS_TREE_ENTRY(entry));
+ g_assert(WX_IS_TREE_ENTRY(entry));
/* free previous if it exists */
if(entry->label)
}
entry->label = g_strdup(label);
- entry->collate_key = g_utf8_collate_key(label, -1); /* -1 == null terminated */
+ entry->collate_key = NULL;
}
-void gtk_tree_entry_set_userdata (GtkTreeEntry* entry, gpointer userdata)
+void wx_tree_entry_set_userdata(wxTreeEntry* entry, void* userdata)
{
- g_assert(GTK_IS_TREE_ENTRY(entry));
+ g_assert(WX_IS_TREE_ENTRY(entry));
entry->userdata = userdata;
}
-void gtk_tree_entry_set_destroy_func (GtkTreeEntry* entry,
- GtkTreeEntryDestroy destroy_func,
+void wx_tree_entry_set_destroy_func(wxTreeEntry* entry,
+ wxTreeEntryDestroy destroy_func,
gpointer destroy_func_data)
{
- g_assert(GTK_IS_TREE_ENTRY(entry));
+ g_assert(WX_IS_TREE_ENTRY(entry));
entry->destroy_func = destroy_func;
entry->destroy_func_data = destroy_func_data;
}
/* private */
-static void gtk_tree_entry_class_init(GtkTreeEntryClass* klass)
+static void wx_tree_entry_class_init(void* g_class, void* class_data)
{
- GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
- gobject_class->dispose = gtk_tree_entry_dispose;
+ GObjectClass* gobject_class = G_OBJECT_CLASS(g_class);
+ gobject_class->dispose = wx_tree_entry_dispose;
+ parent_class = G_OBJECT_CLASS(g_type_class_peek_parent(g_class));
}
-static void gtk_tree_entry_init (GTypeInstance* instance, gpointer g_class)
-{
- GtkTreeEntry* entry = (GtkTreeEntry*) instance;
-
- /* clear */
- entry->label = NULL;
- entry->collate_key = NULL;
- entry->userdata = NULL;
- entry->destroy_func_data = NULL;
- entry->destroy_func = NULL;
-}
-
-static void gtk_tree_entry_string_transform_func(const GValue *src_value,
+static void wx_tree_entry_string_transform_func(const GValue *src_value,
GValue *dest_value)
{
- GtkTreeEntry *entry;
+ wxTreeEntry* entry;
+ void* src_ptr = g_value_peek_pointer(src_value);
/* Make sure src is a treeentry and dest can hold a string */
- g_assert(GTK_IS_TREE_ENTRY(src_value->data[0].v_pointer));
+ g_assert(WX_IS_TREE_ENTRY(src_ptr));
g_assert(G_VALUE_HOLDS(dest_value, G_TYPE_STRING));
- /* TODO: Use strdup here or just pass it? */
- entry = GTK_TREE_ENTRY(src_value->data[0].v_pointer);
-
+ entry = WX_TREE_ENTRY(src_ptr);
g_value_set_string(dest_value, entry->label);
}
-static void gtk_tree_entry_dispose(GObject* obj)
+static void wx_tree_entry_dispose(GObject* obj)
{
- GtkTreeEntry *entry;
+ wxTreeEntry* entry;
- g_assert(GTK_IS_TREE_ENTRY(obj));
+ g_assert(WX_IS_TREE_ENTRY(obj));
- entry = GTK_TREE_ENTRY(obj);
+ entry = WX_TREE_ENTRY(obj);
/* free label if it exists */
if(entry->label)
/* clear userdata */
entry->userdata = NULL;
+
+ parent_class->dispose(obj);
}