1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/* mwidthdialog.c
* a callback that creates a dialog box prompting the user to change the
* staff height
* for Denemo, a gtk+ frontend to GNU Lilypond
* (c) 1999, 2000, 2001 Matthew Hiller */
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include "calculatepositions.h"
#include "commandfuncs.h"
#include "contexts.h"
#include "datastructures.h"
#include "draw.h"
#include "staffops.h"
#include "utils.h"
struct callbackdata
{
struct scoreinfo *si;
GtkWidget *textentry;
};
void
set_mwidth (GtkWidget * widget, gpointer data)
{
struct callbackdata *cbdata = data;
gint width = atoi (gtk_entry_get_text (GTK_ENTRY (cbdata->textentry)));
if (width)
cbdata->si->measurewidth = width;
adjustmeasurewidth (cbdata->si, 0);
gtk_widget_draw (cbdata->si->scorearea, NULL);
}
void
score_mwidth_change (gpointer callback_data, guint callback_action,
GtkWidget * widget)
{
struct scoreinfo *si = callback_data;
GtkWidget *dialog;
GtkWidget *label;
GtkWidget *textentry;
GtkWidget *okbutton;
GtkWidget *cancelbutton;
static GString *entrycontent = NULL;
static struct callbackdata cbdata;
if (!entrycontent)
entrycontent = g_string_new (NULL);
dialog = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dialog), _("Set minimum measure width"));
label = gtk_label_new (_("Enter width (in pixels) of measures:"));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
label, TRUE, TRUE, 0);
gtk_widget_show (label);
textentry = gtk_entry_new ();
g_string_sprintf (entrycontent, "%d", si->measurewidth);
gtk_entry_set_text (GTK_ENTRY (textentry), entrycontent->str);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
textentry, TRUE, TRUE, 0);
gtk_widget_show (textentry);
okbutton = gtk_button_new_with_label (_("OK"));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
okbutton, TRUE, TRUE, 0);
cbdata.textentry = textentry;
cbdata.si = si;
processenter (textentry, set_mwidth, cbdata, dialog);
gtk_signal_connect (GTK_OBJECT (okbutton), "clicked",
GTK_SIGNAL_FUNC (set_mwidth), &cbdata);
gtk_signal_connect_object (GTK_OBJECT (okbutton), "clicked",
gtk_widget_destroy, GTK_OBJECT (dialog));
gtk_widget_show (okbutton);
cancelbutton = gtk_button_new_with_label (_("Cancel"));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
cancelbutton, TRUE, TRUE, 0);
gtk_signal_connect_object (GTK_OBJECT (cancelbutton), "clicked",
gtk_widget_destroy, GTK_OBJECT (dialog));
gtk_widget_show (cancelbutton);
gtk_widget_grab_focus (textentry);
gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
gtk_widget_show (dialog);
}
|