Added sorting
This commit is contained in:
parent
d96919a968
commit
9afd05968e
|
@ -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);
|
||||
|
|
Reference in New Issue