Added option to hide buttons. Changed label packing to fill and expand into all y-space.

git-svn-id: https://gpredict.svn.sourceforge.net/svnroot/gpredict/trunk@88 ab6734ba-2843-0410-b83b-99c217ef6c0f
This commit is contained in:
csete 2008-09-06 12:22:17 +00:00
parent 0375d2d8ce
commit 2f25cd87f5
2 changed files with 36 additions and 34 deletions

View file

@ -137,11 +137,12 @@ gtk_freq_knob_destroy (GtkObject *object)
/** \brief Create a new Frequency control widget.
* \param[in] val The initial value of the control.
* \param[in] buttons Flag indicating whether buttons should be shown
* \return A new frequency control widget.
*
*/
GtkWidget *
gtk_freq_knob_new (gdouble val)
gtk_freq_knob_new (gdouble val, gboolean buttons)
{
GtkWidget *widget;
GtkWidget *table;
@ -161,39 +162,40 @@ gtk_freq_knob_new (gdouble val)
/* labels */
GTK_FREQ_KNOB(widget)->digits[i] = gtk_label_new (NULL);
gtk_table_attach (GTK_TABLE (table), GTK_FREQ_KNOB(widget)->digits[i],
idx[i], idx[i]+1, 1, 2, GTK_SHRINK, GTK_SHRINK, 0, 0);
idx[i], idx[i]+1, 1, 2, GTK_SHRINK, GTK_FILL | GTK_EXPAND, 0, 0);
/* UP buttons */
GTK_FREQ_KNOB(widget)->buttons[i] = gtk_button_new ();
label = gtk_label_new ("\342\226\264");
gtk_container_add (GTK_CONTAINER(GTK_FREQ_KNOB(widget)->buttons[i]),
label);
gtk_button_set_relief (GTK_BUTTON(GTK_FREQ_KNOB(widget)->buttons[i]),
GTK_RELIEF_NONE);
delta = (gint) pow(10,9-i);
g_object_set_data (G_OBJECT (GTK_FREQ_KNOB(widget)->buttons[i]),
"delta", GINT_TO_POINTER(delta));
gtk_table_attach (GTK_TABLE (table), GTK_FREQ_KNOB(widget)->buttons[i],
idx[i], idx[i]+1, 0, 1, GTK_SHRINK, GTK_SHRINK, 0, 0);
g_signal_connect (GTK_FREQ_KNOB(widget)->buttons[i], "clicked",
G_CALLBACK (button_clicked_cb), widget);
/* DOWN buttons */
GTK_FREQ_KNOB(widget)->buttons[i+10] = gtk_button_new ();
label = gtk_label_new ("\342\226\276");
gtk_container_add (GTK_CONTAINER(GTK_FREQ_KNOB(widget)->buttons[i+10]),
label);
gtk_button_set_relief (GTK_BUTTON(GTK_FREQ_KNOB(widget)->buttons[i+10]),
GTK_RELIEF_NONE);
g_object_set_data (G_OBJECT (GTK_FREQ_KNOB(widget)->buttons[i+10]),
"delta", GINT_TO_POINTER(-delta));
gtk_table_attach (GTK_TABLE (table), GTK_FREQ_KNOB(widget)->buttons[i+10],
idx[i], idx[i]+1, 2, 3, GTK_SHRINK, GTK_SHRINK, 0, 0);
g_signal_connect (GTK_FREQ_KNOB(widget)->buttons[i+10], "clicked",
G_CALLBACK (button_clicked_cb), widget);
if (buttons) {
/* UP buttons */
GTK_FREQ_KNOB(widget)->buttons[i] = gtk_button_new ();
label = gtk_label_new ("\342\226\264");
gtk_container_add (GTK_CONTAINER(GTK_FREQ_KNOB(widget)->buttons[i]),
label);
gtk_button_set_relief (GTK_BUTTON(GTK_FREQ_KNOB(widget)->buttons[i]),
GTK_RELIEF_NONE);
delta = (gint) pow(10,9-i);
g_object_set_data (G_OBJECT (GTK_FREQ_KNOB(widget)->buttons[i]),
"delta", GINT_TO_POINTER(delta));
gtk_table_attach (GTK_TABLE (table), GTK_FREQ_KNOB(widget)->buttons[i],
idx[i], idx[i]+1, 0, 1, GTK_SHRINK, GTK_SHRINK, 0, 0);
g_signal_connect (GTK_FREQ_KNOB(widget)->buttons[i], "clicked",
G_CALLBACK (button_clicked_cb), widget);
/* DOWN buttons */
GTK_FREQ_KNOB(widget)->buttons[i+10] = gtk_button_new ();
label = gtk_label_new ("\342\226\276");
gtk_container_add (GTK_CONTAINER(GTK_FREQ_KNOB(widget)->buttons[i+10]),
label);
gtk_button_set_relief (GTK_BUTTON(GTK_FREQ_KNOB(widget)->buttons[i+10]),
GTK_RELIEF_NONE);
g_object_set_data (G_OBJECT (GTK_FREQ_KNOB(widget)->buttons[i+10]),
"delta", GINT_TO_POINTER(-delta));
gtk_table_attach (GTK_TABLE (table), GTK_FREQ_KNOB(widget)->buttons[i+10],
idx[i], idx[i]+1, 2, 3, GTK_SHRINK, GTK_SHRINK, 0, 0);
g_signal_connect (GTK_FREQ_KNOB(widget)->buttons[i+10], "clicked",
G_CALLBACK (button_clicked_cb), widget);
}
}
/* Add misc labels */

View file

@ -77,7 +77,7 @@ struct _GtkFreqKnobClass
GtkType gtk_freq_knob_get_type (void);
GtkWidget* gtk_freq_knob_new (gdouble val);
GtkWidget* gtk_freq_knob_new (gdouble val, gboolean buttons);
void gtk_freq_knob_set_value (GtkFreqKnob *knob, gdouble val);
gdouble gtk_freq_knob_get_value (GtkFreqKnob *knob);