Mailinglist Archive: opensuse-programming-de (148 mails)
| < Previous | Next > |
gtk: v-ruler signal-connect
- From: Günther Montag <Safari.Doktor@xxxxxxxxx>
- Date: Mon, 17 Jan 2005 13:39:43 +0100
- Message-id: <200501171330.19492.Safari.Doktor@xxxxxxxxx>
Hallo Freunde
im Frequenz-Spektrum meines Amateurfunk-Programms
ist rechts ein vruler, ein Lineal mit Maßeinteilung, mit
einem Zeigerchen, das sich auch wunderschön bewegt wenn ich
mit der Maus dfarüberfahre.
... snip
vruler1 = gtk_vruler_new ();
gtk_widget_set_name (vruler1, "vruler1");
gtk_widget_ref (vruler1);
gtk_object_set_data_full (GTK_OBJECT (wspec), "vruler1",
vruler1,
(GtkDestroyNotify)
gtk_widget_unref);
gtk_widget_show (vruler1);
gtk_table_attach (GTK_TABLE (table9), vruler1, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND |
GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_ruler_set_range (GTK_RULER (vruler1), 0, 10, 4.24479,
10);
... snap
Ich würde gerne durch Klick darauf den Stand des Zeigers als
Wert für meine squelch-Funktion gewinnen (schwache Signale
nicht ausgeben).
Wie geht das? Geht es überhaupt?
Im Spectrum selbst ist eine gut gehende Funktion für eine
ähnliche Aufgabe, sie wird durch gtk_signal_connect
aufgerufen: Sie holt den x-Wert des events heraus.
... snip
gboolean on_spec_button_press_event(GtkWidget *widget,
GdkEventButton *event, gpointer user_data)
{
unsigned int freq;
static int shift = 0;
static unsigned int freq1 = 0, freq2 = 0;
static int clickcount = 0;
int usershift = 0;
shift = get_freq_shift();
freq = ((SRATE/2) * event->x + SPECTRUM_WIDTH/2)
/SPECTRUM_WIDTH;
if (shift) {
switch (event->button) {
case 1:
set_fsk_freq(freq, freq+shift);
break;
case 2:
set_fsk_freq(freq-shift/2, freq+shift/2);
break;
case 3:
set_fsk_freq(freq-shift, freq);
break;
}
return FALSE;
}
..... snap
aber es gelang mir nicht, ähnlichen Code für den Ruler und
seinen y-Wert zum Laufen zu bringen.
--
Günther Montag
Safari.Doktor@xxxxxxxxx
im Frequenz-Spektrum meines Amateurfunk-Programms
ist rechts ein vruler, ein Lineal mit Maßeinteilung, mit
einem Zeigerchen, das sich auch wunderschön bewegt wenn ich
mit der Maus dfarüberfahre.
... snip
vruler1 = gtk_vruler_new ();
gtk_widget_set_name (vruler1, "vruler1");
gtk_widget_ref (vruler1);
gtk_object_set_data_full (GTK_OBJECT (wspec), "vruler1",
vruler1,
(GtkDestroyNotify)
gtk_widget_unref);
gtk_widget_show (vruler1);
gtk_table_attach (GTK_TABLE (table9), vruler1, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND |
GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_ruler_set_range (GTK_RULER (vruler1), 0, 10, 4.24479,
10);
... snap
Ich würde gerne durch Klick darauf den Stand des Zeigers als
Wert für meine squelch-Funktion gewinnen (schwache Signale
nicht ausgeben).
Wie geht das? Geht es überhaupt?
Im Spectrum selbst ist eine gut gehende Funktion für eine
ähnliche Aufgabe, sie wird durch gtk_signal_connect
aufgerufen: Sie holt den x-Wert des events heraus.
... snip
gboolean on_spec_button_press_event(GtkWidget *widget,
GdkEventButton *event, gpointer user_data)
{
unsigned int freq;
static int shift = 0;
static unsigned int freq1 = 0, freq2 = 0;
static int clickcount = 0;
int usershift = 0;
shift = get_freq_shift();
freq = ((SRATE/2) * event->x + SPECTRUM_WIDTH/2)
/SPECTRUM_WIDTH;
if (shift) {
switch (event->button) {
case 1:
set_fsk_freq(freq, freq+shift);
break;
case 2:
set_fsk_freq(freq-shift/2, freq+shift/2);
break;
case 3:
set_fsk_freq(freq-shift, freq);
break;
}
return FALSE;
}
..... snap
aber es gelang mir nicht, ähnlichen Code für den Ruler und
seinen y-Wert zum Laufen zu bringen.
--
Günther Montag
Safari.Doktor@xxxxxxxxx
| < Previous | Next > |