[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.
|