Added sorting

This commit is contained in:
Jesse van den Kieboom 2005-11-15 11:56:46 +00:00
parent d96919a968
commit 9afd05968e
1 changed files with 30 additions and 5 deletions

View File

@ -55,6 +55,7 @@ enum {
LOGO_COLUMN,
NAME_COLUMN,
WORLD_COLUMN,
SORT_COLUMN,
N_COLUMNS
};
@ -66,17 +67,21 @@ gm_worlds_list_dialog_widget(gchar *name) {
gchar *
gm_worlds_list_dialog_world_text(GmWorld *world) {
gchar *text;
const gchar *player, *server;
gchar const *player, *server, *mooname;
GmOptions *options = gm_world_options(world);
player = gm_options_get(options, "player_name");
server = gm_options_get(options, "host");
mooname = gm_options_get(options, "mooname");
text = g_strconcat("<b>", gm_options_get(options, "name"),
_("</b>\nServer: "),
_("</b>\n<small>MOO: "),
((mooname && *mooname != '\0') ? mooname : _("<i>unspecified</i>")),
_("\nServer: "),
((server && server[0] != '\0') ? server : _("<i>unspecified</i>")),
_("\nPlayer: "),
((player && player[0] != '\0') ? player : _("<i>unspecified</i>")),
"</small>",
NULL);
return text;
@ -99,7 +104,8 @@ gm_worlds_list_dialog_add_world(GmWorld *world) {
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, LOGO_COLUMN, pix_logo, NAME_COLUMN,
name, WORLD_COLUMN, world, -1);
name, WORLD_COLUMN, world, SORT_COLUMN,
gm_world_name(world), -1);
g_signal_connect(gm_world_options(world), "option_changed",
G_CALLBACK(on_gm_worlds_list_dialog_world_option_changed), world);
@ -131,11 +137,14 @@ gm_worlds_list_dialog_create_tree_view_worlds() {
GtkTreeViewColumn *column;
GtkTreeView *tree_view;
GtkTreeModel *model;
GtkTreeModel *sorted;
model = GTK_TREE_MODEL(gtk_list_store_new(N_COLUMNS, GDK_TYPE_PIXBUF,
G_TYPE_STRING, G_TYPE_POINTER));
G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING));
sorted = gtk_tree_model_sort_new_with_model(model);
tree_view = GTK_TREE_VIEW(gm_worlds_list_dialog_widget("tree_view_worlds"));
gtk_tree_view_set_model(tree_view, model);
gtk_tree_view_set_model(tree_view, sorted);
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(tree_view),
GTK_SELECTION_MULTIPLE);
@ -152,6 +161,9 @@ gm_worlds_list_dialog_create_tree_view_worlds() {
gm_worlds_list_dialog_instance->tree_view_worlds = tree_view;
gm_worlds_list_dialog_instance->model_worlds = model;
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(sorted),
SORT_COLUMN, GTK_SORT_ASCENDING);
gm_worlds_list_dialog_populate_worlds();
}
@ -328,6 +340,19 @@ gm_worlds_list_dialog_find(GmWorld *world, GtkTreeIter *iter) {
void
on_gm_worlds_list_dialog_response(GtkDialog *dialog, gint response,
gpointer user_data) {
GList *worlds = gm_app_worlds(gm_app_instance());
GList *item;
GmWorld *world;
for (item = worlds; item; item = item->next) {
world = (GmWorld *)(item->data);
g_signal_handlers_disconnect_by_func(gm_world_options(world),
G_CALLBACK(on_gm_worlds_list_dialog_world_option_changed), world);
}
g_list_free(worlds);
g_object_unref(gm_worlds_list_dialog_instance->xml);
gtk_widget_destroy(gm_worlds_list_dialog_instance->dialog);
g_free(gm_worlds_list_dialog_instance);