[Gpredict-svn] SF.net SVN: gpredict:[928] trunk
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
From: <aa...@us...> - 2011-10-12 23:20:27
|
Revision: 928 http://gpredict.svn.sourceforge.net/gpredict/?rev=928&view=rev Author: aa1vs Date: 2011-10-12 23:20:21 +0000 (Wed, 12 Oct 2011) Log Message: ----------- Filter decayed satellites from event list. (Bug 3414666) Modified Paths: -------------- trunk/ChangeLog trunk/src/gtk-event-list.c trunk/src/gtk-event-list.h Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2011-10-12 23:16:48 UTC (rev 927) +++ trunk/ChangeLog 2011-10-12 23:20:21 UTC (rev 928) @@ -5,7 +5,12 @@ * src/gtk-sat-list.h Filter decayed satellites from satellite list. (Bug 3414666) + * ChangeLog + * src/gtk-event-list.c + * src/gtk-event-list.h + Filter decayed satellites from event list. (Bug 3414666) + 2011-10-10 Charles Suprin <hamaa1vs at gmail.com> * ChangeLog Modified: trunk/src/gtk-event-list.c =================================================================== --- trunk/src/gtk-event-list.c 2011-10-12 23:16:48 UTC (rev 927) +++ trunk/src/gtk-event-list.c 2011-10-12 23:20:21 UTC (rev 928) @@ -43,6 +43,7 @@ #include "locator.h" #include "sat-vis.h" #include "sat-info.h" +#include "orbit-tools.h" #ifdef HAVE_CONFIG_H # include <build-config.h> #endif @@ -234,7 +235,7 @@ { GtkWidget *widget; GtkEventList *evlist; - GtkTreeModel *model; + GtkTreeModel *model, *filter, *sortable; guint i; GtkCellRenderer *renderer; GtkTreeViewColumn *column; @@ -326,20 +327,26 @@ /* create model and finalise treeview */ model = create_and_fill_model (evlist->satellites); - gtk_tree_view_set_model (GTK_TREE_VIEW (evlist->treeview), model); + filter = gtk_tree_model_filter_new (model, NULL); + sortable =gtk_tree_model_sort_new_with_model(filter); + evlist->sortable = sortable; + gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER(filter), EVENT_LIST_COL_DECAY); + gtk_tree_view_set_model (GTK_TREE_VIEW (evlist->treeview), sortable); /* The time sort function needs to be special */ - gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (model), + gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE(sortable), EVENT_LIST_COL_TIME, event_cell_compare_function, NULL, NULL); /* initial sorting criteria */ - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), + gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sortable), evlist->sort_column, - evlist->sort_order), + evlist->sort_order); g_object_unref (model); + g_object_unref (filter); + g_object_unref (sortable); g_signal_connect (evlist->treeview, "button-press-event", G_CALLBACK (button_press_cb), widget); @@ -374,7 +381,8 @@ G_TYPE_DOUBLE, // az G_TYPE_DOUBLE, // el G_TYPE_BOOLEAN, // TRUE if AOS, FALSE if LOS - G_TYPE_DOUBLE); // time + G_TYPE_DOUBLE, // time + G_TYPE_BOOLEAN); // decayed /* add each satellite from hash table */ g_hash_table_foreach (sats, event_list_add_satellites, liststore); @@ -407,6 +415,7 @@ EVENT_LIST_COL_EL, sat->el, EVENT_LIST_COL_EVT, (sat->el >= 0) ? TRUE : FALSE, EVENT_LIST_COL_TIME, 0.0, + EVENT_LIST_COL_DECAY, !decayed(sat), -1); } @@ -428,10 +437,12 @@ } /* get and tranverse the model */ - model = gtk_tree_view_get_model (GTK_TREE_VIEW (evlist->treeview)); + model = gtk_tree_model_filter_get_model( GTK_TREE_MODEL_FILTER( + gtk_tree_model_sort_get_model( GTK_TREE_MODEL_SORT ( + gtk_tree_view_get_model (GTK_TREE_VIEW (evlist->treeview)))))); /*save the sort information */ - gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (model), + gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (evlist->sortable), &(evlist->sort_column), &(evlist->sort_order)); @@ -449,8 +460,9 @@ evlist->counter = 1; /* get and tranverse the model */ - model = gtk_tree_view_get_model (GTK_TREE_VIEW (evlist->treeview)); + model = gtk_tree_model_filter_get_model(gtk_tree_view_get_model (GTK_TREE_VIEW (evlist->treeview))); + /* update */ gtk_tree_model_foreach (model, event_list_update_sats, evlist); } @@ -518,6 +530,7 @@ EVENT_LIST_COL_EL, sat->el, EVENT_LIST_COL_EVT, (sat->el >= 0) ? TRUE : FALSE, EVENT_LIST_COL_TIME, number, + EVENT_LIST_COL_DECAY, !decayed(sat), -1); } @@ -712,17 +725,12 @@ { gint result; gdouble ta,tb; - gint sort_col; - GtkSortType sort_type; + gint sort_col = EVENT_LIST_COL_TIME; /* hard coded as it is the only option */ + /* extracting from models was not working */ + /* with filter and sorting */ (void) user_data; /* avoid unused warning compiler warning. */ - /* Since this function is used for both AOS and LOS columns, - we need to get the sort column */ - gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (model), - &sort_col, - &sort_type); - /* get a and b */ gtk_tree_model_get (model, a, sort_col, &ta, -1); gtk_tree_model_get (model, b, sort_col, &tb, -1); Modified: trunk/src/gtk-event-list.h =================================================================== --- trunk/src/gtk-event-list.h 2011-10-12 23:16:48 UTC (rev 927) +++ trunk/src/gtk-event-list.h 2011-10-12 23:20:21 UTC (rev 928) @@ -72,8 +72,10 @@ GKeyFile *cfgdata; gint sort_column; GtkSortType sort_order; + GtkTreeModel *sortable; void (* update) (GtkWidget *widget); /*!< update function */ + }; struct _GtkEventListClass @@ -90,6 +92,7 @@ EVENT_LIST_COL_EL, /*!< Satellite Elevation. */ EVENT_LIST_COL_EVT, /*!< Next event (AOS or LOS). */ EVENT_LIST_COL_TIME, /*!< Time countdown. */ + EVENT_LIST_COL_DECAY, /*!< Whether satellite is decayed or not. */ EVENT_LIST_COL_NUMBER } event_list_col_t; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |