1 /* denemo.h 2 * 3 * the important data structures and defines for denemo, a gtk+ frontend to 4 * Lilypond, the GNU music typesetter 5 * 6 * (c) 1999-2005 Matthew Hiller, Adam Tee 7 * 8 */ 9 10 #ifndef DENEMO_DATASTRUCTURES 11 #define DENEMO_DATASTRUCTURES 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 /* Include the internationalization stuff. */ 17 #include <libintl.h> 18 #include <locale.h> 19 20 #define _(String) gettext (String) 21 #ifndef gettext_noop 22 # define gettext_noop(String) String 23 #endif 24 #ifndef N_ 25 # define N_(String) gettext_noop (String) 26 #endif 27 28 29 #include <glib.h> 30 #include <gmodule.h> 31 32 #include "denemo_api.h" 33 34 35 36 /*Set maximum number of undos*/ 37 #define MAX_UNDOS 50 38 39 /* This unit of memory size is used all over the place. */ 40 #define SEVENGINTS (sizeof (gint) * 7) 41 42 #define CHECKING_MASK (GDK_CONTROL_MASK) 43 #define ADDING_MASK (GDK_MOD1_MASK) //Alt 44 #define CHORD_MASK (1<<25) //Not used by GDK 45 46 #define DENEMO_INITIAL_MEASURE_WIDTH 160 47 #define DENEMO_INITIAL_STAFF_HEIGHT 100 48 49 #define DENEMO_FILE_SUFFIX ".denemo" 50 #define XML_EXT ".xml" 51 #define SCM_EXT ".scm" 52 #define LILYPOND_EXT ".ly" 53 #define KEYMAP_EXT ".commands" 54 55 #define SCHEME_INIT "denemo.scm" 56 #define DENEMO_NO_COMMAND (-1) /* command id for no command */ 57 58 #define g_malloc(a) g_malloc0(a) /* for extensible debuggable code */ 59 #if 0 60 //use this to detect bad access to G_OBJECT 61 #define g_object_set_data(a,b,c) (G_IS_OBJECT((a))? g_object_set_data((a),(b),(c)):((gpointer)fprintf(stderr,"Bad G_OBJECT at %s line %d\n",__FILE__, __LINE__), NULL)) 62 #define g_object_get_data(a,b) (G_IS_OBJECT(a)? g_object_get_data((a),(b)):((gpointer)fprintf(stderr,"Bad G_OBJECT at %s line %d\n",__FILE__, __LINE__), NULL)) 63 #define gtk_action_get_name(a) (GTK_IS_ACTION(a)? gtk_action_get_name(a):((gpointer)fprintf(stderr,"Bad GTK_ACTION at %s line %d\n",__FILE__, __LINE__), NULL)) 64 65 66 #endif 67 #if 0 68 // use these to test for bad frees. 69 #define g_list_free 70 #define g_error_free 71 #define gtk_tree_path_free 72 #define g_free(a) (a) 73 #define g_string_free(a, b) (((GString*)(a))->str) 74 #endif 75 76 #if ((GTK_MAJOR_VERSION == 3) && (GTK_MINOR_VERSION >= 10)) 77 #define FAKE_TOOLTIPS 1 78 #endif 79 80 #ifdef FAKE_TOOLTIPS 81 #define FAKE_TOOLTIPS_MASK GDK_ENTER_NOTIFY_MASK //GDK_POINTER_MOTION_MASK 82 #define FAKE_TOOLTIPS_SIGNAL "enter-notify-event" //"motion-notify-event" 83 #define fake_put_tooltip(w, t) {gchar *tip = g_strdup(t);g_object_set_data(G_OBJECT(w), "tooltip", (gpointer)tip);gtk_widget_add_events (w, FAKE_TOOLTIPS_MASK);g_signal_connect_after (w, "destroy", G_CALLBACK(free_tooltip), tip);g_signal_connect (w, FAKE_TOOLTIPS_SIGNAL, G_CALLBACK (show_tooltip), tip);} 84 #define denemo_widget_set_tooltip_text(w, t) {gtk_widget_add_events (w, FAKE_TOOLTIPS_MASK);g_signal_connect (w, FAKE_TOOLTIPS_SIGNAL, G_CALLBACK (show_tooltip), g_strdup(t));} 85 #define gtk_widget_set_tooltip_markup(w, t) fake_put_tooltip(w, t) 86 #define gtk_widget_set_tooltip_text(w, t) fake_put_tooltip(w, t) 87 #define gtk_widget_get_tooltip_text(w) g_object_get_data (G_OBJECT(w), "tooltip") 88 89 #else 90 #define denemo_widget_set_tooltip_text gtk_widget_set_tooltip_text 91 #endif 92 93 94 #if GTK_MAJOR_VERSION == 2 95 #else 96 //we always have homogeneous FALSE which is the default 97 //so this is not needed. static GtkWidget *vbox_setter (gboolean homogeneous, gint spacing) {GtkWidget *ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, spacing);gtk_box_set_homogeneous (ret, homogeneous);return ret;} 98 #define gtk_vbox_new(homogeneous, spacing) gtk_box_new(GTK_ORIENTATION_VERTICAL, spacing) 99 #define gtk_hbox_new(homogeneous, spacing) gtk_box_new(GTK_ORIENTATION_HORIZONTAL, spacing) 100 #define gtk_hscale_new(adj) gtk_scale_new(GTK_ORIENTATION_HORIZONTAL, adj) 101 #define gtk_hscrollbar_new(adj) gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, adj) 102 #define gtk_vscrollbar_new(adj) gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, adj) 103 #define g_strcasecmp g_ascii_strcasecmp 104 105 106 #define g_idle_add gdk_threads_add_idle 107 #define g_timeout_add gdk_threads_add_timeout 108 #define g_timeout_add_seconds gdk_threads_add_timeout_seconds 109 110 #define g_timeout_add_full gdk_threads_add_timeout_full 111 #define g_idle_add_full gdk_threads_add_idle_full 112 #endif 113 114 #define DEFAULT_KEYMAP "Default" 115 #define DEFAULT_KEYBINDINGS "Default.shortcuts" 116 #ifdef G_OS_WIN32 117 #define PREFS_FILE "denemorcV2" 118 #else 119 #define PREFS_FILE "denemorc" 120 #endif 121 122 #ifdef G_OS_WIN32 123 #define mswin g_print 124 #else 125 #define mswin 126 #endif 127 128 extern const gchar *None; 129 extern const gchar *Jack; 130 extern const gchar *Portaudio; 131 extern const gchar *Fluidsynth; 132 133 #define COMMANDS_DIR "actions" 134 #define UI_DIR "ui" 135 #define SOUNDFONTS_DIR "soundfonts" 136 #define PIXMAPS_DIR "pixmaps" 137 #define FONTS_DIR "fonts" 138 #define LOCALE_DIR "po" 139 #define LILYPOND_INCLUDE_DIR "actions/lilypond" 140 141 typedef enum{ 142 DENEMO_DIR_COMMANDS, 143 DENEMO_DIR_UI, 144 DENEMO_DIR_SOUNDFONTS, 145 DENEMO_DIR_PIXMAPS, 146 DENEMO_DIR_FONTS, 147 DENEMO_DIR_LOCALE, 148 DENEMO_DIR_BIN, 149 DENEMO_DIR_LILYPOND_INCLUDE 150 } DenemoDirectory; 151 152 #ifdef __cplusplus 153 } 154 #endif 155 156 #endif /* #ifndef DENEMO_DATASTRUCTURES */ 157 158