[Gpredict-svn] SF.net SVN: gpredict:[626] trunk/src/gtk-rig-ctrl.c
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
|
From: <cs...@us...> - 2010-07-09 13:02:33
|
Revision: 626
http://gpredict.svn.sourceforge.net/gpredict/?rev=626&view=rev
Author: csete
Date: 2010-07-09 13:02:26 +0000 (Fri, 09 Jul 2010)
Log Message:
-----------
Added function to capture key press events.
Modified Paths:
--------------
trunk/src/gtk-rig-ctrl.c
Modified: trunk/src/gtk-rig-ctrl.c
===================================================================
--- trunk/src/gtk-rig-ctrl.c 2010-07-09 10:36:13 UTC (rev 625)
+++ trunk/src/gtk-rig-ctrl.c 2010-07-09 13:02:26 UTC (rev 626)
@@ -39,6 +39,7 @@
*
*/
#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
#include <glib/gi18n.h>
#include <math.h>
#include <glib.h>
@@ -97,6 +98,7 @@
static gboolean rig_ctrl_timeout_cb (gpointer data);
static void downlink_changed_cb (GtkFreqKnob *knob, gpointer data);
static void uplink_changed_cb (GtkFreqKnob *knob, gpointer data);
+static gboolean key_press_cb (GtkWidget *widget, GdkEventKey *pKey, gpointer data);
/* radio control functions */
@@ -251,6 +253,10 @@
}
widget = g_object_new (GTK_TYPE_RIG_CTRL, NULL);
+
+ /* connect calback to catch key press events */
+ g_signal_connect (widget, "key-press-event",
+ G_CALLBACK(key_press_cb), NULL); // controller widget will be passed as primary param
/* store satellites */
g_hash_table_foreach (module->satellites, store_sats, widget);
@@ -3066,3 +3072,44 @@
return TRUE;
}
+
+
+/** \brief Manage key press event on the controller widget
+ * \param widget Pointer to the GtkRigCtrl widget that received the event
+ * \param pKey Pointer to the event that has happened
+ * \param data User data (always NULL)
+ * \return TRUE if the event is known and managed by this callback, FALSE otherwise
+ *
+ * This function is used to catch events when the user presses the SPACE key on the keyboard.
+ * This is used to toggle betweer RX/TX when using FT817/857/897 in manual mode.
+ */
+static gboolean key_press_cb (GtkWidget *widget, GdkEventKey *pKey, gpointer data)
+{
+ GtkRigCtrl *ctrl = GTK_RIG_CTRL(widget);
+ gboolean event_managed = FALSE;
+
+
+ /* filter GDK_KEY_PRESS events */
+ if (pKey->type == GDK_KEY_PRESS) {
+
+ switch (pKey->keyval) {
+ /* keyvals not in API docs. See <gdk/gdkkeysyms.h> for a complete list */
+ case GDK_space:
+ sat_log_log (SAT_LOG_LEVEL_MSG,
+ _("%s: Detected SPACEBAR pressed event"),
+ __FUNCTION__);
+
+ event_managed = TRUE;
+ break;
+
+ default:
+ sat_log_log (SAT_LOG_LEVEL_DEBUG,
+ _("%s: Keypress value %i not managed by this function"),
+ __FUNCTION__, pKey->keyval);
+ break;
+
+ }
+ }
+
+ return event_managed;
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|