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


< Previous Next >
This Thread
  • No further messages