Binary files ../../denemo-cvs/denemo/fonts/Denemo.ttf and ./fonts/Denemo.ttf differ diff -urN ../../denemo-cvs/denemo/include/denemo/denemo_objects.h ./include/denemo/denemo_objects.h --- ../../denemo-cvs/denemo/include/denemo/denemo_objects.h 2007-09-20 21:20:21.000000000 +0100 +++ ./include/denemo/denemo_objects.h 2007-11-18 11:44:54.000000000 +0000 @@ -55,7 +55,7 @@ gint position_of_accidental; /**< Holds number of pixels to the left of the notehead that the accidental should be drawn at. */ gint y; /**< Holds y co-ordinate for drawing rather than recalculating it each - run through the drawing loop. */ + run through the drawing loop. see calculateheight */ enum headtype noteheadtype; /**< Holds note head type. */ gint x_off; /**< Holds x offset from default position. */ gint y_off; /**< Holds y offset from default position. */ diff -urN ../../denemo-cvs/denemo/include/denemo/denemo_types.h ./include/denemo/denemo_types.h --- ../../denemo-cvs/denemo/include/denemo/denemo_types.h 2007-10-10 04:14:29.000000000 +0100 +++ ./include/denemo/denemo_types.h 2007-11-18 18:07:06.000000000 +0000 @@ -199,6 +199,7 @@ gint space_above; /**< space above the staff used in the denemo gui */ gint space_below; /**< space below the staff used in the denemo gui */ + gboolean haslyrics; /**< TRUE if the staff has had lyrics attached */ gint voicenumber; /**< presently set to 2 for any non-primary voices; we might want to * change that, though */ measurenode ** is_parasite; /**< points to address of host staff's measures @@ -441,6 +442,7 @@ gint currentmeasurenum;/**< start at 1 */ objnode *currentobject; /**< currentobject points to the note preceding the cursor when the * cursor is appending. == NULL only when currentmeasure is empty. */ + gint highesty; /**< max value of highesty of chord in the staff */ gint cursor_x; gint cursor_y; gint staffletter_y; @@ -541,7 +543,15 @@ GtkWidget *vscrollbar; GtkObject *hadjustment; GtkWidget *hscrollbar; - GtkWidget *menubar; + GtkWidget *menubar;/**< Main menubar to giving load/save play etc functionality */ + GtkWidget *ClassicModeMenu;/**< Menu to give the note editing facilities in Classic mode */ + GtkWidget *InsertModeMenu;/**< Menu to give the note editing facilities in Insert mode */ + GtkWidget *EditModeMenu;/**< Menu to give the note editing facilities in Edit mode */ + GtkWidget *ModelessMenu;/**< Menu to give the note editing facilities when used without modes */ + + + + GtkWidget *statusbar; gint status_context_id; GtkTextBuffer *textbuffer; /**< text of lily input string corresponding to curobj */ diff -urN ../../denemo-cvs/denemo/keymaps/standard.accels ./keymaps/standard.accels --- ../../denemo-cvs/denemo/keymaps/standard.accels 1970-01-01 01:00:00.000000000 +0100 +++ ./keymaps/standard.accels 2007-11-18 16:56:29.000000000 +0000 @@ -0,0 +1,347 @@ +; denemo GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +; (gtk_accel_path "/MenuActions/SetInitialEflatmin" "") +; (gtk_accel_path "/MenuActions/StartTriplet" "") +; (gtk_accel_path "/MenuActions/Change2" "") +; (gtk_accel_path "/MenuActions/Bookmarks" "") +(gtk_accel_path "/MenuActions/AddTone" "Return") +; (gtk_accel_path "/MenuActions/EighthNote" "") +; (gtk_accel_path "/MenuActions/Change1" "") +; (gtk_accel_path "/MenuActions/Change0" "") +; (gtk_accel_path "/MenuActions/EditMenu" "") +; (gtk_accel_path "/MenuActions/InsertBlankWholeNote" "") +; (gtk_accel_path "/MenuActions/SaveParts" "") +; (gtk_accel_path "/MenuActions/InsertSopranoClef" "") +; (gtk_accel_path "/MenuActions/AppendMeasure" "") +; (gtk_accel_path "/MenuActions/EndBar" "") +; (gtk_accel_path "/MenuActions/Insert32Time" "") +; (gtk_accel_path "/MenuActions/ExpressionMarks" "") +; (gtk_accel_path "/MenuActions/SetInitialBmin" "") +(gtk_accel_path "/MenuActions/MeasureRight" "Right") +; (gtk_accel_path "/MenuActions/SetInitialDmaj" "") +; (gtk_accel_path "/MenuActions/InsertGmin" "") +; (gtk_accel_path "/MenuActions/InsertDSharpmin" "") +; (gtk_accel_path "/MenuActions/NewWindow" "") +; (gtk_accel_path "/MenuActions/EditMode" "") +; (gtk_accel_path "/MenuActions/Insert42Time" "") +; (gtk_accel_path "/MenuActions/Undo" "") +; (gtk_accel_path "/MenuActions/Insert" "") +; (gtk_accel_path "/MenuActions/Stub" "") +; (gtk_accel_path "/MenuActions/StaffMenu" "") +; (gtk_accel_path "/MenuActions/Close" "w") +; (gtk_accel_path "/MenuActions/ToggleStopped" "") +; (gtk_accel_path "/MenuActions/ChangeToG" "") +(gtk_accel_path "/MenuActions/NextRhythm" "Space") +; (gtk_accel_path "/MenuActions/FileMenu" "") +; (gtk_accel_path "/MenuActions/ClassicMode" "") +; (gtk_accel_path "/MenuActions/SetInitialAflatmaj" "") +; (gtk_accel_path "/MenuActions/ChangeToF" "") +; (gtk_accel_path "/MenuActions/ViewMenu" "") +; (gtk_accel_path "/MenuActions/ShrinkMeasures" "") +; (gtk_accel_path "/MenuActions/InsertRhythm" "") +; (gtk_accel_path "/MenuActions/ChangeToE" "") +; (gtk_accel_path "/MenuActions/InsertModeNote" "") +; (gtk_accel_path "/MenuActions/ChangeToD" "") +; (gtk_accel_path "/MenuActions/ChangeToC" "") +(gtk_accel_path "/MenuActions/CursorDown" "Down") +; (gtk_accel_path "/MenuActions/InsertCmin" "") +; (gtk_accel_path "/MenuActions/ChangeToB" "") +; (gtk_accel_path "/MenuActions/ChangePitch" "") +; (gtk_accel_path "/MenuActions/ChangeToA" "") +; (gtk_accel_path "/MenuActions/InsertEmaj" "") +; (gtk_accel_path "/MenuActions/SetInitialTenorClef" "") +; (gtk_accel_path "/MenuActions/InitialKey" "") +(gtk_accel_path "/MenuActions/InsertDuplet" "0") +; (gtk_accel_path "/MenuActions/HelpMenu" "") +(gtk_accel_path "/MenuActions/CursorLeft" "Left") +; (gtk_accel_path "/MenuActions/AddBefore" "") +; (gtk_accel_path "/MenuActions/Cut" "x") +(gtk_accel_path "/MenuActions/AddDot" "period") +; (gtk_accel_path "/MenuActions/GoToEnd" "End") +(gtk_accel_path "/MenuActions/InsertTriplet" "1") +; (gtk_accel_path "/MenuActions/ToggleNotationToolbar" "") +; (gtk_accel_path "/MenuActions/SetMark" "") +; (gtk_accel_path "/MenuActions/InsertBflatmaj" "") +(gtk_accel_path "/MenuActions/InsertWholeRest" "KP_0") +; (gtk_accel_path "/MenuActions/Insert128Time" "") +; (gtk_accel_path "/MenuActions/ToggleOpen" "") +; (gtk_accel_path "/MenuActions/InsertStaff" "") +; (gtk_accel_path "/MenuActions/SetGrace" "") +; (gtk_accel_path "/MenuActions/InsertAmaj" "") +; (gtk_accel_path "/MenuActions/SetInitialGmin" "") +; (gtk_accel_path "/MenuActions/Play" "") +; (gtk_accel_path "/MenuActions/Rest entry" "") +; (gtk_accel_path "/MenuActions/SetInitialBflatmin" "") +; (gtk_accel_path "/MenuActions/InsertCflatmaj" "") +; (gtk_accel_path "/MenuActions/EditLyric" "") +(gtk_accel_path "/MenuActions/StaffUp" "Up") +; (gtk_accel_path "/MenuActions/EditNote" "") +; (gtk_accel_path "/MenuActions/OpenNewWindow" "") +; (gtk_accel_path "/MenuActions/ToggleEndSlur" "") +; (gtk_accel_path "/MenuActions/NavigationMenu" "") +; (gtk_accel_path "/MenuActions/Cursor" "") +; (gtk_accel_path "/MenuActions/SetInitialFSharpmaj" "") +; (gtk_accel_path "/MenuActions/SetInitialCSharpmin" "") +; (gtk_accel_path "/MenuActions/SetInitialGflatmaj" "") +; (gtk_accel_path "/MenuActions/ToggleEndDiminuendo" "") +; (gtk_accel_path "/MenuActions/SetInitialCmin" "") +; (gtk_accel_path "/MenuActions/SelectDuration" "") +; (gtk_accel_path "/MenuActions/InitialTimeSig" "") +; (gtk_accel_path "/MenuActions/SetInitialEmaj" "") +; (gtk_accel_path "/MenuActions/DeleteAfter" "") +; (gtk_accel_path "/MenuActions/Preferences" "") +(gtk_accel_path "/MenuActions/InsertHalfRest" "KP_1") +; (gtk_accel_path "/MenuActions/UnsetMark" "") +; (gtk_accel_path "/MenuActions/Blank" "") +(gtk_accel_path "/MenuActions/OctaveUp" "apostrophe") +(gtk_accel_path "/MenuActions/CursorUp" "Up") +; (gtk_accel_path "/MenuActions/Edit" "") +; (gtk_accel_path "/MenuActions/ClefMenu" "") +; (gtk_accel_path "/MenuActions/New" "n") +; (gtk_accel_path "/MenuActions/ToggleThumb" "") +; (gtk_accel_path "/MenuActions/Ornaments" "") +(gtk_accel_path "/MenuActions/Sharpen/StemDown" "plus") +(gtk_accel_path "/MenuActions/InsertSeptuplet" "5") +; (gtk_accel_path "/MenuActions/Set22Time" "") +; (gtk_accel_path "/MenuActions/InsertTrebleClef" "") +; (gtk_accel_path "/MenuActions/SetInitialDSharpmin" "") +; (gtk_accel_path "/MenuActions/ShorterStaffs" "") +; (gtk_accel_path "/MenuActions/TimeSig" "") +; (gtk_accel_path "/MenuActions/InsertStem" "") +; (gtk_accel_path "/MenuActions/SetInitialAmaj" "") +; (gtk_accel_path "/MenuActions/InsertDmin" "") +(gtk_accel_path "/MenuActions/RemoveDot" "greater") +; (gtk_accel_path "/MenuActions/InsertFSharpmaj" "") +; (gtk_accel_path "/MenuActions/EndTuplet" "") +(gtk_accel_path "/MenuActions/StaffDown" "Down") +; (gtk_accel_path "/MenuActions/InsertFmaj" "") +; (gtk_accel_path "/MenuActions/Set32Time" "") +; (gtk_accel_path "/MenuActions/SetInitialSopranoClef" "") +; (gtk_accel_path "/MenuActions/SixtyfourthNote" "") +; (gtk_accel_path "/MenuActions/Measure" "") +; (gtk_accel_path "/MenuActions/SetInitialAltoClef" "") +; (gtk_accel_path "/MenuActions/DeleteBefore" "") +; (gtk_accel_path "/MenuActions/Insert38Time" "") +; (gtk_accel_path "/MenuActions/ToggleTurn" "") +; (gtk_accel_path "/MenuActions/InsertEflatmin" "") +; (gtk_accel_path "/MenuActions/Set42Time" "") +; (gtk_accel_path "/MenuActions/InsertDynamic" "") +; (gtk_accel_path "/MenuActions/InsertBlankThirtysecondNote" "") +; (gtk_accel_path "/MenuActions/ChangeNote" "") +; (gtk_accel_path "/MenuActions/CloseRepeat" "") +; (gtk_accel_path "/MenuActions/SetInitialg8clef" "") +; (gtk_accel_path "/MenuActions/Change" "") +(gtk_accel_path "/MenuActions/InsertSixteenthRest" "KP_4") +; (gtk_accel_path "/MenuActions/Note entry" "") +; (gtk_accel_path "/MenuActions/OpenRepeat" "") +; (gtk_accel_path "/MenuActions/InsertBmaj" "") +; (gtk_accel_path "/MenuActions/Redo" "") +; (gtk_accel_path "/MenuActions/ToggleStartDiminuendo" "") +; (gtk_accel_path "/MenuActions/Insert24Time" "") +; (gtk_accel_path "/MenuActions/SixteenthNote" "") +; (gtk_accel_path "/MenuActions/ToggleFermata" "") +; (gtk_accel_path "/MenuActions/ForceCaution" "") +; (gtk_accel_path "/MenuActions/ChordMenu" "") +; (gtk_accel_path "/MenuActions/ToggleStaccato" "") +; (gtk_accel_path "/MenuActions/AppendMesauresToScore" "") +; (gtk_accel_path "/MenuActions/AddInitial" "") +; (gtk_accel_path "/MenuActions/Set128Time" "") +; (gtk_accel_path "/MenuActions/ToggleBlankMode" "") +; (gtk_accel_path "/MenuActions/TogglePrallMordent" "") +; (gtk_accel_path "/MenuActions/EntryMenu" "") +; (gtk_accel_path "/MenuActions/Insert34Time" "") +; (gtk_accel_path "/MenuActions/SetInitialDflatmaj" "") +; (gtk_accel_path "/MenuActions/DoubleBar" "") +; (gtk_accel_path "/MenuActions/InsertGSharpmin" "") +; (gtk_accel_path "/MenuActions/InsertAflatmaj" "") +; (gtk_accel_path "/MenuActions/Insert68Time" "") +(gtk_accel_path "/MenuActions/InsertQuintuplet" "3") +; (gtk_accel_path "/MenuActions/SetInitialDmin" "") +; (gtk_accel_path "/MenuActions/SetInitialASharpmin" "") +; (gtk_accel_path "/MenuActions/SetInitialFmaj" "") +; (gtk_accel_path "/MenuActions/Insert44Time" "") +; (gtk_accel_path "/MenuActions/InsertMeasure" "") +; (gtk_accel_path "/MenuActions/SaveAs" "") +(gtk_accel_path "/MenuActions/Flatten/StemUp" "minus") +; (gtk_accel_path "/MenuActions/InsertCSharpmaj" "") +; (gtk_accel_path "/MenuActions/SetInitialBassClef" "") +; (gtk_accel_path "/MenuActions/Other" "") +; (gtk_accel_path "/MenuActions/WholeNote" "") +; (gtk_accel_path "/MenuActions/ToggleTrill" "") +(gtk_accel_path "/MenuActions/InsertQuarterRest" "KP_2") +; (gtk_accel_path "/MenuActions/DeleteStaff" "") +; (gtk_accel_path "/MenuActions/ToggleAccent" "") +(gtk_accel_path "/MenuActions/CursorRight" "Right") +; (gtk_accel_path "/MenuActions/SetInitialEflatmaj" "") +; (gtk_accel_path "/MenuActions/SetInitialAflatmin" "") +; (gtk_accel_path "/MenuActions/ToggleCoda" "") +; (gtk_accel_path "/MenuActions/Rest" "") +; (gtk_accel_path "/MenuActions/CreateRhythm" "") +; (gtk_accel_path "/MenuActions/Note" "") +; (gtk_accel_path "/MenuActions/InsertBlankEighthNote" "") +; (gtk_accel_path "/MenuActions/Help" "") +(gtk_accel_path "/MenuActions/InsertThirtysecondRest" "KP_5") +; (gtk_accel_path "/MenuActions/SetInitialBmaj" "") +; (gtk_accel_path "/MenuActions/InsertEmin" "") +; (gtk_accel_path "/MenuActions/Staff" "") +; (gtk_accel_path "/MenuActions/InsertBlankQuarterNote" "") +; (gtk_accel_path "/MenuActions/Insert64Time" "") +; (gtk_accel_path "/MenuActions/InsertGmaj" "") +; (gtk_accel_path "/MenuActions/EditChords" "") +; (gtk_accel_path "/MenuActions/SelectNote" "") +; (gtk_accel_path "/MenuActions/InsertASharpmin" "") +; (gtk_accel_path "/MenuActions/Insert98Time" "") +; (gtk_accel_path "/MenuActions/InsertBflatmin" "") +; (gtk_accel_path "/MenuActions/Select" "") +; (gtk_accel_path "/MenuActions/Insertg8clef" "") +; (gtk_accel_path "/MenuActions/AddLast" "") +; (gtk_accel_path "/MenuActions/ToggleStaccatissimo" "") +; (gtk_accel_path "/MenuActions/Copy" "c") +; (gtk_accel_path "/MenuActions/InsertBlankSixtyfourthNote" "") +; (gtk_accel_path "/MenuActions/ToggleStartCrescendo" "") +; (gtk_accel_path "/MenuActions/InsertBlankSixteenthNote" "") +; (gtk_accel_path "/MenuActions/InsertAmin" "") +; (gtk_accel_path "/MenuActions/TallerStaffs" "") +; (gtk_accel_path "/MenuActions/MeasureMenu" "") +(gtk_accel_path "/MenuActions/DeletePreviousObject" "BackSpace") +; (gtk_accel_path "/MenuActions/InsertCmaj" "") +; (gtk_accel_path "/MenuActions/ToggleSegno" "") +; (gtk_accel_path "/MenuActions/ToggleEndCrescendo" "") +; (gtk_accel_path "/MenuActions/ClassicModeNote" "") +; (gtk_accel_path "/MenuActions/InsertMode" "") +; (gtk_accel_path "/MenuActions/Properties" "") +; (gtk_accel_path "/MenuActions/Print" "") +; (gtk_accel_path "/MenuActions/InsertGflatmaj" "") +; (gtk_accel_path "/MenuActions/OpenTemplate" "") +; (gtk_accel_path "/MenuActions/InitialClef" "") +(gtk_accel_path "/MenuActions/InsertSextuplet" "4") +; (gtk_accel_path "/MenuActions/Keyboard" "") +(gtk_accel_path "/MenuActions/G" "g") +; (gtk_accel_path "/MenuActions/InsertTiedNote" "") +(gtk_accel_path "/MenuActions/F" "f") +(gtk_accel_path "/MenuActions/E" "e") +; (gtk_accel_path "/MenuActions/Paste" "v") +; (gtk_accel_path "/MenuActions/Open" "o") +(gtk_accel_path "/MenuActions/D" "d") +(gtk_accel_path "/MenuActions/C" "c") +; (gtk_accel_path "/MenuActions/ToggleFlageolet" "") +; (gtk_accel_path "/MenuActions/NoteProperties" "") +; (gtk_accel_path "/MenuActions/PlaybackMenu" "") +(gtk_accel_path "/MenuActions/B" "b") +; (gtk_accel_path "/MenuActions/SetInitialFSharpmin" "") +; (gtk_accel_path "/MenuActions/InsertBarline" "") +(gtk_accel_path "/MenuActions/A" "a") +; (gtk_accel_path "/MenuActions/OpenCloseRepeat" "") +; (gtk_accel_path "/MenuActions/Set38Time" "") +; (gtk_accel_path "/MenuActions/GotoBookMark" "") +; (gtk_accel_path "/MenuActions/SetInitialEmin" "") +; (gtk_accel_path "/MenuActions/SetInitialGmaj" "") +; (gtk_accel_path "/MenuActions/ToggleMordent" "") +; (gtk_accel_path "/MenuActions/ToggleRhythmToolbar" "") +; (gtk_accel_path "/MenuActions/SetInitialBflatmaj" "") +; (gtk_accel_path "/MenuActions/AllOther" "") +; (gtk_accel_path "/MenuActions/ReadOnly" "") +; (gtk_accel_path "/MenuActions/Modeless" "") +; (gtk_accel_path "/MenuActions/ToggleEntryToolbar" "") +; (gtk_accel_path "/MenuActions/Set24Time" "") +; (gtk_accel_path "/MenuActions/InsertAltoClef" "") +; (gtk_accel_path "/MenuActions/QuarterNote" "") +; (gtk_accel_path "/MenuActions/ExportPDF" "") +(gtk_accel_path "/MenuActions/InsertSixtyfourthRest" "KP_6") +(gtk_accel_path "/MenuActions/6" "KP_6") +; (gtk_accel_path "/MenuActions/SetInitialGSharpmin" "") +; (gtk_accel_path "/MenuActions/TogglePrall" "") +(gtk_accel_path "/MenuActions/5" "KP_5") +; (gtk_accel_path "/MenuActions/ToggleRestMode" "") +; (gtk_accel_path "/MenuActions/EditFiguredBass" "") +(gtk_accel_path "/MenuActions/4" "KP_4") +(gtk_accel_path "/MenuActions/DeleteMeasure" "Delete") +(gtk_accel_path "/MenuActions/3" "KP_3") +; (gtk_accel_path "/MenuActions/ConfigureScore" "") +(gtk_accel_path "/MenuActions/RemoveTone" "Return") +; (gtk_accel_path "/MenuActions/AddBookmark" "") +; (gtk_accel_path "/MenuActions/SetInitialAmin" "") +; (gtk_accel_path "/MenuActions/StaffProperties" "") +; (gtk_accel_path "/MenuActions/Tuplets" "") +; (gtk_accel_path "/MenuActions/ScoreProperties" "") +(gtk_accel_path "/MenuActions/2" "KP_2") +; (gtk_accel_path "/MenuActions/SetInitialCSharpmaj" "") +; (gtk_accel_path "/MenuActions/InsertFSharpmin" "") +; (gtk_accel_path "/MenuActions/ToggleTenuto" "") +(gtk_accel_path "/MenuActions/1" "KP_1") +; (gtk_accel_path "/MenuActions/SetInitialCflatmaj" "") +; (gtk_accel_path "/MenuActions/SetInitialCmaj" "") +; (gtk_accel_path "/MenuActions/InsertFmin" "") +; (gtk_accel_path "/MenuActions/Set34Time" "") +(gtk_accel_path "/MenuActions/GoToBeginning" "") +(gtk_accel_path "/MenuActions/0" "KP_0") +; (gtk_accel_path "/MenuActions/InsertClef" "") +; (gtk_accel_path "/MenuActions/About" "") +(gtk_accel_path "/MenuActions/DeleteObject" "Delete") +; (gtk_accel_path "/MenuActions/InsertG" "") +; (gtk_accel_path "/MenuActions/Set68Time" "") +; (gtk_accel_path "/MenuActions/InsertBlankHalfNote" "") +; (gtk_accel_path "/MenuActions/InsertF" "") +; (gtk_accel_path "/MenuActions/InsertTenorClef" "") +; (gtk_accel_path "/MenuActions/ExtendSelect" "") +; (gtk_accel_path "/MenuActions/InsertE" "") +; (gtk_accel_path "/MenuActions/EditDuration" "") +; (gtk_accel_path "/MenuActions/InsertD" "") +; (gtk_accel_path "/MenuActions/Set44Time" "") +; (gtk_accel_path "/MenuActions/InsertKey" "") +; (gtk_accel_path "/MenuActions/InsertNote" "") +; (gtk_accel_path "/MenuActions/InsertC" "") +; (gtk_accel_path "/MenuActions/InsertB" "") +; (gtk_accel_path "/MenuActions/InsertA" "") +; (gtk_accel_path "/MenuActions/InsertTimeSig" "") +; (gtk_accel_path "/MenuActions/ChangeDuration" "") +; (gtk_accel_path "/MenuActions/InsertBmin" "") +; (gtk_accel_path "/MenuActions/Quit" "q") +; (gtk_accel_path "/MenuActions/Save" "s") +; (gtk_accel_path "/MenuActions/InsertDflatmaj" "") +; (gtk_accel_path "/MenuActions/Playback" "") +; (gtk_accel_path "/MenuActions/InsertDmaj" "") +; (gtk_accel_path "/MenuActions/ToggleReverseTurn" "") +(gtk_accel_path "/MenuActions/InsertEighthRest" "KP_3") +; (gtk_accel_path "/MenuActions/TogglePrallPrall" "") +; (gtk_accel_path "/MenuActions/WidenMeasures" "") +; (gtk_accel_path "/MenuActions/ThirtysecondNote" "") +; (gtk_accel_path "/MenuActions/HalfNote" "") +; (gtk_accel_path "/MenuActions/ChangeNotehead" "") +; (gtk_accel_path "/MenuActions/AddAfter" "") +; (gtk_accel_path "/MenuActions/Set64Time" "") +; (gtk_accel_path "/MenuActions/InsertBassClef" "") +; (gtk_accel_path "/MenuActions/Delete" "") +; (gtk_accel_path "/MenuActions/ToggleSforzato" "") +; (gtk_accel_path "/MenuActions/OpenRecent" "") +; (gtk_accel_path "/MenuActions/ToggleArpeggio" "") +; (gtk_accel_path "/MenuActions/Insert6" "") +; (gtk_accel_path "/MenuActions/Insert5" "") +; (gtk_accel_path "/MenuActions/InsertEflatmaj" "") +; (gtk_accel_path "/MenuActions/Set98Time" "") +; (gtk_accel_path "/MenuActions/SetInitialTrebleClef" "") +; (gtk_accel_path "/MenuActions/Insert4" "") +; (gtk_accel_path "/MenuActions/InsertAflatmin" "") +; (gtk_accel_path "/MenuActions/GoToMeasure" "") +; (gtk_accel_path "/MenuActions/Insert3" "") +(gtk_accel_path "/MenuActions/MeasureLeft" "Left") +; (gtk_accel_path "/MenuActions/Insert2" "") +; (gtk_accel_path "/MenuActions/Insert1" "") +; (gtk_accel_path "/MenuActions/InsertDuration" "") +(gtk_accel_path "/MenuActions/InsertQuadtuplet" "2") +; (gtk_accel_path "/MenuActions/SetInitialFmin" "") +; (gtk_accel_path "/MenuActions/ToggleUpprall" "") +; (gtk_accel_path "/MenuActions/Change6" "") +; (gtk_accel_path "/MenuActions/Insert0" "") +; (gtk_accel_path "/MenuActions/InsertCSharpmin" "") +; (gtk_accel_path "/MenuActions/ToggleBeginSlur" "") +; (gtk_accel_path "/MenuActions/Change5" "") +(gtk_accel_path "/MenuActions/OctaveDown" "comma") +; (gtk_accel_path "/MenuActions/Change4" "") +; (gtk_accel_path "/MenuActions/Insert22Time" "") +; (gtk_accel_path "/MenuActions/Key" "") +; (gtk_accel_path "/MenuActions/EditModeNote" "") +; (gtk_accel_path "/MenuActions/Change3" "") +; (gtk_accel_path "/MenuActions/ToggleArticulationPalette" "") +; (gtk_accel_path "/MenuActions/PlayCSound" "") diff -urN ../../denemo-cvs/denemo/src/callbacks.h ./src/callbacks.h --- ../../denemo-cvs/denemo/src/callbacks.h 1970-01-01 01:00:00.000000000 +0100 +++ ./src/callbacks.h 2007-11-11 16:24:40.000000000 +0000 @@ -0,0 +1,1481 @@ +/******** generated automatically from generate_source. See generate_source.c */ +/*CursorLeft cursorleft*/ +static void cursorleft_cb (GtkAction *a, DenemoGUI *gui) { +cursorleft (gui); +displayhelper (gui); +} +/*CursorDown cursordown*/ +static void cursordown_cb (GtkAction *a, DenemoGUI *gui) { +cursordown (gui); +displayhelper (gui); +} +/*CursorUp cursorup*/ +static void cursorup_cb (GtkAction *a, DenemoGUI *gui) { +cursorup (gui); +displayhelper (gui); +} +/*CursorRight cursorright*/ +static void cursorright_cb (GtkAction *a, DenemoGUI *gui) { +cursorright (gui); +displayhelper (gui); +} +/*StaffUp staffup*/ +static void staffup_cb (GtkAction *a, DenemoGUI *gui) { +staffup (gui); +displayhelper (gui); +} +/*StaffDown staffdown*/ +static void staffdown_cb (GtkAction *a, DenemoGUI *gui) { +staffdown (gui); +displayhelper (gui); +} +/*MeasureLeft measureleft*/ +static void measureleft_cb (GtkAction *a, DenemoGUI *gui) { +measureleft (gui); +displayhelper (gui); +} +/*MeasureRight measureright*/ +static void measureright_cb (GtkAction *a, DenemoGUI *gui) { +measureright (gui); +displayhelper (gui); +} +/*A go_to_A_key*/ +static void go_to_A_key_cb (GtkAction *a, DenemoGUI *gui) { +go_to_A_key (gui); +displayhelper (gui); +} +/*B go_to_B_key*/ +static void go_to_B_key_cb (GtkAction *a, DenemoGUI *gui) { +go_to_B_key (gui); +displayhelper (gui); +} +/*C go_to_C_key*/ +static void go_to_C_key_cb (GtkAction *a, DenemoGUI *gui) { +go_to_C_key (gui); +displayhelper (gui); +} +/*D go_to_D_key*/ +static void go_to_D_key_cb (GtkAction *a, DenemoGUI *gui) { +go_to_D_key (gui); +displayhelper (gui); +} +/*E go_to_E_key*/ +static void go_to_E_key_cb (GtkAction *a, DenemoGUI *gui) { +go_to_E_key (gui); +displayhelper (gui); +} +/*F go_to_F_key*/ +static void go_to_F_key_cb (GtkAction *a, DenemoGUI *gui) { +go_to_F_key (gui); +displayhelper (gui); +} +/*G go_to_G_key*/ +static void go_to_G_key_cb (GtkAction *a, DenemoGUI *gui) { +go_to_G_key (gui); +displayhelper (gui); +} +/*OctaveUp octave_up_key*/ +static void octave_up_key_cb (GtkAction *a, DenemoGUI *gui) { +octave_up_key (gui); +displayhelper (gui); +} +/*OctaveDown octave_down_key*/ +static void octave_down_key_cb (GtkAction *a, DenemoGUI *gui) { +octave_down_key (gui); +displayhelper (gui); +} +/*WholeNote insert_chord_0key*/ +static void insert_chord_0key_cb (GtkAction *a, DenemoGUI *gui) { +insert_chord_0key (gui); +displayhelper (gui); +} +/*HalfNote insert_chord_1key*/ +static void insert_chord_1key_cb (GtkAction *a, DenemoGUI *gui) { +insert_chord_1key (gui); +displayhelper (gui); +} +/*QuarterNote insert_chord_2key*/ +static void insert_chord_2key_cb (GtkAction *a, DenemoGUI *gui) { +insert_chord_2key (gui); +displayhelper (gui); +} +/*EighthNote insert_chord_3key*/ +static void insert_chord_3key_cb (GtkAction *a, DenemoGUI *gui) { +insert_chord_3key (gui); +displayhelper (gui); +} +/*SixteenthNote insert_chord_4key*/ +static void insert_chord_4key_cb (GtkAction *a, DenemoGUI *gui) { +insert_chord_4key (gui); +displayhelper (gui); +} +/*ThirtysecondNote insert_chord_5key*/ +static void insert_chord_5key_cb (GtkAction *a, DenemoGUI *gui) { +insert_chord_5key (gui); +displayhelper (gui); +} +/*SixtyfourthNote insert_chord_6key*/ +static void insert_chord_6key_cb (GtkAction *a, DenemoGUI *gui) { +insert_chord_6key (gui); +displayhelper (gui); +} +/*InsertBlankWholeNote insert_blankchord_0key*/ +static void insert_blankchord_0key_cb (GtkAction *a, DenemoGUI *gui) { +insert_blankchord_0key (gui); +displayhelper (gui); +} +/*InsertBlankHalfNote insert_blankchord_1key*/ +static void insert_blankchord_1key_cb (GtkAction *a, DenemoGUI *gui) { +insert_blankchord_1key (gui); +displayhelper (gui); +} +/*InsertBlankQuarterNote insert_blankchord_2key*/ +static void insert_blankchord_2key_cb (GtkAction *a, DenemoGUI *gui) { +insert_blankchord_2key (gui); +displayhelper (gui); +} +/*InsertBlankEighthNote insert_blankchord_3key*/ +static void insert_blankchord_3key_cb (GtkAction *a, DenemoGUI *gui) { +insert_blankchord_3key (gui); +displayhelper (gui); +} +/*InsertBlankSixteenthNote insert_blankchord_4key*/ +static void insert_blankchord_4key_cb (GtkAction *a, DenemoGUI *gui) { +insert_blankchord_4key (gui); +displayhelper (gui); +} +/*InsertBlankThirtysecondNote insert_blankchord_5key*/ +static void insert_blankchord_5key_cb (GtkAction *a, DenemoGUI *gui) { +insert_blankchord_5key (gui); +displayhelper (gui); +} +/*InsertBlankSixtyfourthNote insert_blankchord_6key*/ +static void insert_blankchord_6key_cb (GtkAction *a, DenemoGUI *gui) { +insert_blankchord_6key (gui); +displayhelper (gui); +} +/*ToggleRestMode rest_toggle_key*/ +static void rest_toggle_key_cb (GtkAction *a, DenemoGUI *gui) { +rest_toggle_key (gui); +displayhelper (gui); +} +/*ToggleBlankMode toggle_blank*/ +static void toggle_blank_cb (GtkAction *a, DenemoGUI *gui) { +toggle_blank (gui); +displayhelper (gui); +} +/*InsertWholeRest insert_rest_0key*/ +static void insert_rest_0key_cb (GtkAction *a, DenemoGUI *gui) { +insert_rest_0key (gui); +displayhelper (gui); +} +/*InsertHalfRest insert_rest_1key*/ +static void insert_rest_1key_cb (GtkAction *a, DenemoGUI *gui) { +insert_rest_1key (gui); +displayhelper (gui); +} +/*InsertQuarterRest insert_rest_2key*/ +static void insert_rest_2key_cb (GtkAction *a, DenemoGUI *gui) { +insert_rest_2key (gui); +displayhelper (gui); +} +/*InsertEighthRest insert_rest_3key*/ +static void insert_rest_3key_cb (GtkAction *a, DenemoGUI *gui) { +insert_rest_3key (gui); +displayhelper (gui); +} +/*InsertSixteenthRest insert_rest_4key*/ +static void insert_rest_4key_cb (GtkAction *a, DenemoGUI *gui) { +insert_rest_4key (gui); +displayhelper (gui); +} +/*InsertThirtysecondRest insert_rest_5key*/ +static void insert_rest_5key_cb (GtkAction *a, DenemoGUI *gui) { +insert_rest_5key (gui); +displayhelper (gui); +} +/*InsertSixtyfourthRest insert_rest_6key*/ +static void insert_rest_6key_cb (GtkAction *a, DenemoGUI *gui) { +insert_rest_6key (gui); +displayhelper (gui); +} +/*InsertDuplet insert_duplet*/ +static void insert_duplet_cb (GtkAction *a, DenemoGUI *gui) { +insert_duplet (gui); +displayhelper (gui); +} +/*InsertTriplet insert_triplet*/ +static void insert_triplet_cb (GtkAction *a, DenemoGUI *gui) { +insert_triplet (gui); +displayhelper (gui); +} +/*StartTriplet start_triplet*/ +static void start_triplet_cb (GtkAction *a, DenemoGUI *gui) { +start_triplet (gui); +displayhelper (gui); +} +/*EndTuplet end_tuplet*/ +static void end_tuplet_cb (GtkAction *a, DenemoGUI *gui) { +end_tuplet (gui); +displayhelper (gui); +} +/*InsertQuadtuplet insert_quadtuplet*/ +static void insert_quadtuplet_cb (GtkAction *a, DenemoGUI *gui) { +insert_quadtuplet (gui); +displayhelper (gui); +} +/*InsertQuintuplet insert_quintuplet*/ +static void insert_quintuplet_cb (GtkAction *a, DenemoGUI *gui) { +insert_quintuplet (gui); +displayhelper (gui); +} +/*InsertSextuplet insert_sextuplet*/ +static void insert_sextuplet_cb (GtkAction *a, DenemoGUI *gui) { +insert_sextuplet (gui); +displayhelper (gui); +} +/*InsertSeptuplet insert_septuplet*/ +static void insert_septuplet_cb (GtkAction *a, DenemoGUI *gui) { +insert_septuplet (gui); +displayhelper (gui); +} +/*AddTone add_tone_key*/ +static void add_tone_key_cb (GtkAction *a, DenemoGUI *gui) { +add_tone_key (gui); +displayhelper (gui); +} +/*RemoveTone remove_tone_key*/ +static void remove_tone_key_cb (GtkAction *a, DenemoGUI *gui) { +remove_tone_key (gui); +displayhelper (gui); +} +/*Sharpen/StemDown sharpen_key*/ +static void sharpen_key_cb (GtkAction *a, DenemoGUI *gui) { +sharpen_key (gui); +displayhelper (gui); +} +/*Flatten/StemUp flatten_key*/ +static void flatten_key_cb (GtkAction *a, DenemoGUI *gui) { +flatten_key (gui); +displayhelper (gui); +} +/*AddDot add_dot_key*/ +static void add_dot_key_cb (GtkAction *a, DenemoGUI *gui) { +add_dot_key (gui); +displayhelper (gui); +} +/*RemoveDot remove_dot_key*/ +static void remove_dot_key_cb (GtkAction *a, DenemoGUI *gui) { +remove_dot_key (gui); +displayhelper (gui); +} +/*InsertTiedNote tie_notes_key*/ +static void tie_notes_key_cb (GtkAction *a, DenemoGUI *gui) { +tie_notes_key (gui); +displayhelper (gui); +} +/*DeleteObject deleteobject*/ +static void deleteobject_cb (GtkAction *a, DenemoGUI *gui) { +deleteobject (gui); +displayhelper (gui); +} +/*DeletePreviousObject deletepreviousobject*/ +static void deletepreviousobject_cb (GtkAction *a, DenemoGUI *gui) { +deletepreviousobject (gui); +displayhelper (gui); +} +/*InsertMeasure insert_measure_key*/ +static void insert_measure_key_cb (GtkAction *a, DenemoGUI *gui) { +insert_measure_key (gui); +displayhelper (gui); +} +/*AppendMeasure append_measure_key*/ +static void append_measure_key_cb (GtkAction *a, DenemoGUI *gui) { +append_measure_key (gui); +displayhelper (gui); +} +/*DeleteMeasure deletemeasure*/ +static void deletemeasure_cb (GtkAction *a, DenemoGUI *gui) { +deletemeasure (gui); +displayhelper (gui); +} +/*ShrinkMeasures adjust_measure_less_width_key*/ +static void adjust_measure_less_width_key_cb (GtkAction *a, DenemoGUI *gui) { +adjust_measure_less_width_key (gui); +displayhelper (gui); +} +/*WidenMeasures adjust_measure_more_width_key*/ +static void adjust_measure_more_width_key_cb (GtkAction *a, DenemoGUI *gui) { +adjust_measure_more_width_key (gui); +displayhelper (gui); +} +/*ShorterStaffs adjust_staff_less_height_key*/ +static void adjust_staff_less_height_key_cb (GtkAction *a, DenemoGUI *gui) { +adjust_staff_less_height_key (gui); +displayhelper (gui); +} +/*TallerStaffs adjust_staff_more_height_key*/ +static void adjust_staff_more_height_key_cb (GtkAction *a, DenemoGUI *gui) { +adjust_staff_more_height_key (gui); +displayhelper (gui); +} +/*InsertTrebleClef newcleftreble*/ +static void newcleftreble_cb (GtkAction *a, DenemoGUI *gui) { +newcleftreble (gui); +displayhelper (gui); +} +/*InsertBassClef newclefbass*/ +static void newclefbass_cb (GtkAction *a, DenemoGUI *gui) { +newclefbass (gui); +displayhelper (gui); +} +/*Insertg8clef newclefg8*/ +static void newclefg8_cb (GtkAction *a, DenemoGUI *gui) { +newclefg8 (gui); +displayhelper (gui); +} +/*InsertAltoClef newclefalto*/ +static void newclefalto_cb (GtkAction *a, DenemoGUI *gui) { +newclefalto (gui); +displayhelper (gui); +} +/*InsertTenorClef newcleftenor*/ +static void newcleftenor_cb (GtkAction *a, DenemoGUI *gui) { +newcleftenor (gui); +displayhelper (gui); +} +/*InsertSopranoClef newclefsoprano*/ +static void newclefsoprano_cb (GtkAction *a, DenemoGUI *gui) { +newclefsoprano (gui); +displayhelper (gui); +} +/*SetInitialTrebleClef setcleftreble*/ +static void setcleftreble_cb (GtkAction *a, DenemoGUI *gui) { +setcleftreble (gui); +displayhelper (gui); +} +/*SetInitialBassClef setclefbass*/ +static void setclefbass_cb (GtkAction *a, DenemoGUI *gui) { +setclefbass (gui); +displayhelper (gui); +} +/*SetInitialg8clef setclefg8*/ +static void setclefg8_cb (GtkAction *a, DenemoGUI *gui) { +setclefg8 (gui); +displayhelper (gui); +} +/*SetInitialAltoClef setclefalto*/ +static void setclefalto_cb (GtkAction *a, DenemoGUI *gui) { +setclefalto (gui); +displayhelper (gui); +} +/*SetInitialTenorClef setcleftenor*/ +static void setcleftenor_cb (GtkAction *a, DenemoGUI *gui) { +setcleftenor (gui); +displayhelper (gui); +} +/*SetInitialSopranoClef setclefsoprano*/ +static void setclefsoprano_cb (GtkAction *a, DenemoGUI *gui) { +setclefsoprano (gui); +displayhelper (gui); +} +/*Insert22Time newtimesig22*/ +static void newtimesig22_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig22 (gui); +displayhelper (gui); +} +/*Insert32Time newtimesig32*/ +static void newtimesig32_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig32 (gui); +displayhelper (gui); +} +/*Insert42Time newtimesig42*/ +static void newtimesig42_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig42 (gui); +displayhelper (gui); +} +/*Insert44Time newtimesig44*/ +static void newtimesig44_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig44 (gui); +displayhelper (gui); +} +/*Insert34Time newtimesig34*/ +static void newtimesig34_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig34 (gui); +displayhelper (gui); +} +/*Insert24Time newtimesig24*/ +static void newtimesig24_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig24 (gui); +displayhelper (gui); +} +/*Insert64Time newtimesig64*/ +static void newtimesig64_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig64 (gui); +displayhelper (gui); +} +/*Insert38Time newtimesig38*/ +static void newtimesig38_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig38 (gui); +displayhelper (gui); +} +/*Insert68Time newtimesig68*/ +static void newtimesig68_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig68 (gui); +displayhelper (gui); +} +/*Insert128Time newtimesig128*/ +static void newtimesig128_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig128 (gui); +displayhelper (gui); +} +/*Insert98Time newtimesig98*/ +static void newtimesig98_cb (GtkAction *a, DenemoGUI *gui) { +newtimesig98 (gui); +displayhelper (gui); +} +/*Set22Time settimesig22*/ +static void settimesig22_cb (GtkAction *a, DenemoGUI *gui) { +settimesig22 (gui); +displayhelper (gui); +} +/*Set32Time settimesig32*/ +static void settimesig32_cb (GtkAction *a, DenemoGUI *gui) { +settimesig32 (gui); +displayhelper (gui); +} +/*Set42Time settimesig42*/ +static void settimesig42_cb (GtkAction *a, DenemoGUI *gui) { +settimesig42 (gui); +displayhelper (gui); +} +/*Set44Time settimesig44*/ +static void settimesig44_cb (GtkAction *a, DenemoGUI *gui) { +settimesig44 (gui); +displayhelper (gui); +} +/*Set34Time settimesig34*/ +static void settimesig34_cb (GtkAction *a, DenemoGUI *gui) { +settimesig34 (gui); +displayhelper (gui); +} +/*Set24Time settimesig24*/ +static void settimesig24_cb (GtkAction *a, DenemoGUI *gui) { +settimesig24 (gui); +displayhelper (gui); +} +/*Set64Time settimesig64*/ +static void settimesig64_cb (GtkAction *a, DenemoGUI *gui) { +settimesig64 (gui); +displayhelper (gui); +} +/*Set38Time settimesig38*/ +static void settimesig38_cb (GtkAction *a, DenemoGUI *gui) { +settimesig38 (gui); +displayhelper (gui); +} +/*Set68Time settimesig68*/ +static void settimesig68_cb (GtkAction *a, DenemoGUI *gui) { +settimesig68 (gui); +displayhelper (gui); +} +/*Set128Time settimesig128*/ +static void settimesig128_cb (GtkAction *a, DenemoGUI *gui) { +settimesig128 (gui); +displayhelper (gui); +} +/*Set98Time settimesig98*/ +static void settimesig98_cb (GtkAction *a, DenemoGUI *gui) { +settimesig98 (gui); +displayhelper (gui); +} +/*InsertCmaj newkeysigcmaj*/ +static void newkeysigcmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigcmaj (gui); +displayhelper (gui); +} +/*InsertGmaj newkeysiggmaj*/ +static void newkeysiggmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysiggmaj (gui); +displayhelper (gui); +} +/*InsertDmaj newkeysigdmaj*/ +static void newkeysigdmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigdmaj (gui); +displayhelper (gui); +} +/*InsertAmaj newkeysigamaj*/ +static void newkeysigamaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigamaj (gui); +displayhelper (gui); +} +/*InsertEmaj newkeysigemaj*/ +static void newkeysigemaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigemaj (gui); +displayhelper (gui); +} +/*InsertBmaj newkeysigbmaj*/ +static void newkeysigbmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigbmaj (gui); +displayhelper (gui); +} +/*InsertFSharpmaj newkeysigfsharpmaj*/ +static void newkeysigfsharpmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigfsharpmaj (gui); +displayhelper (gui); +} +/*InsertCSharpmaj newkeysigcsharpmaj*/ +static void newkeysigcsharpmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigcsharpmaj (gui); +displayhelper (gui); +} +/*InsertFmaj newkeysigfmaj*/ +static void newkeysigfmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigfmaj (gui); +displayhelper (gui); +} +/*InsertBflatmaj newkeysigbflatmaj*/ +static void newkeysigbflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigbflatmaj (gui); +displayhelper (gui); +} +/*InsertEflatmaj newkeysigeflatmaj*/ +static void newkeysigeflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigeflatmaj (gui); +displayhelper (gui); +} +/*InsertAflatmaj newkeysigaflatmaj*/ +static void newkeysigaflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigaflatmaj (gui); +displayhelper (gui); +} +/*InsertDflatmaj newkeysigdflatmaj*/ +static void newkeysigdflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigdflatmaj (gui); +displayhelper (gui); +} +/*InsertGflatmaj newkeysiggflatmaj*/ +static void newkeysiggflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysiggflatmaj (gui); +displayhelper (gui); +} +/*InsertCflatmaj newkeysigcflatmaj*/ +static void newkeysigcflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigcflatmaj (gui); +displayhelper (gui); +} +/*InsertAmin newkeysigamin*/ +static void newkeysigamin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigamin (gui); +displayhelper (gui); +} +/*InsertEmin newkeysigemin*/ +static void newkeysigemin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigemin (gui); +displayhelper (gui); +} +/*InsertBmin newkeysigbmin*/ +static void newkeysigbmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigbmin (gui); +displayhelper (gui); +} +/*InsertFSharpmin newkeysigfsharpmin*/ +static void newkeysigfsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigfsharpmin (gui); +displayhelper (gui); +} +/*InsertCSharpmin newkeysigcsharpmin*/ +static void newkeysigcsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigcsharpmin (gui); +displayhelper (gui); +} +/*InsertGSharpmin newkeysiggsharpmin*/ +static void newkeysiggsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysiggsharpmin (gui); +displayhelper (gui); +} +/*InsertDSharpmin newkeysigdsharpmin*/ +static void newkeysigdsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigdsharpmin (gui); +displayhelper (gui); +} +/*InsertASharpmin newkeysigasharpmin*/ +static void newkeysigasharpmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigasharpmin (gui); +displayhelper (gui); +} +/*InsertDmin newkeysigdmin*/ +static void newkeysigdmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigdmin (gui); +displayhelper (gui); +} +/*InsertGmin newkeysiggmin*/ +static void newkeysiggmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysiggmin (gui); +displayhelper (gui); +} +/*InsertCmin newkeysigcmin*/ +static void newkeysigcmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigcmin (gui); +displayhelper (gui); +} +/*InsertFmin newkeysigfmin*/ +static void newkeysigfmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigfmin (gui); +displayhelper (gui); +} +/*InsertBflatmin newkeysigbflatmin*/ +static void newkeysigbflatmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigbflatmin (gui); +displayhelper (gui); +} +/*InsertEflatmin newkeysigeflatmin*/ +static void newkeysigeflatmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigeflatmin (gui); +displayhelper (gui); +} +/*InsertAflatmin newkeysigaflatmin*/ +static void newkeysigaflatmin_cb (GtkAction *a, DenemoGUI *gui) { +newkeysigaflatmin (gui); +displayhelper (gui); +} +/*SetInitialCmaj setkeysigcmaj*/ +static void setkeysigcmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigcmaj (gui); +displayhelper (gui); +} +/*SetInitialGmaj setkeysiggmaj*/ +static void setkeysiggmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysiggmaj (gui); +displayhelper (gui); +} +/*SetInitialDmaj setkeysigdmaj*/ +static void setkeysigdmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigdmaj (gui); +displayhelper (gui); +} +/*SetInitialAmaj setkeysigamaj*/ +static void setkeysigamaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigamaj (gui); +displayhelper (gui); +} +/*SetInitialEmaj setkeysigemaj*/ +static void setkeysigemaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigemaj (gui); +displayhelper (gui); +} +/*SetInitialBmaj setkeysigbmaj*/ +static void setkeysigbmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigbmaj (gui); +displayhelper (gui); +} +/*SetInitialFSharpmaj setkeysigfsharpmaj*/ +static void setkeysigfsharpmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigfsharpmaj (gui); +displayhelper (gui); +} +/*SetInitialCSharpmaj setkeysigcsharpmaj*/ +static void setkeysigcsharpmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigcsharpmaj (gui); +displayhelper (gui); +} +/*SetInitialFmaj setkeysigfmaj*/ +static void setkeysigfmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigfmaj (gui); +displayhelper (gui); +} +/*SetInitialBflatmaj setkeysigbflatmaj*/ +static void setkeysigbflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigbflatmaj (gui); +displayhelper (gui); +} +/*SetInitialEflatmaj setkeysigeflatmaj*/ +static void setkeysigeflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigeflatmaj (gui); +displayhelper (gui); +} +/*SetInitialAflatmaj setkeysigaflatmaj*/ +static void setkeysigaflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigaflatmaj (gui); +displayhelper (gui); +} +/*SetInitialDflatmaj setkeysigdflatmaj*/ +static void setkeysigdflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigdflatmaj (gui); +displayhelper (gui); +} +/*SetInitialGflatmaj setkeysiggflatmaj*/ +static void setkeysiggflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysiggflatmaj (gui); +displayhelper (gui); +} +/*SetInitialCflatmaj setkeysigcflatmaj*/ +static void setkeysigcflatmaj_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigcflatmaj (gui); +displayhelper (gui); +} +/*SetInitialAmin setkeysigamin*/ +static void setkeysigamin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigamin (gui); +displayhelper (gui); +} +/*SetInitialEmin setkeysigemin*/ +static void setkeysigemin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigemin (gui); +displayhelper (gui); +} +/*SetInitialBmin setkeysigbmin*/ +static void setkeysigbmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigbmin (gui); +displayhelper (gui); +} +/*SetInitialFSharpmin setkeysigfsharpmin*/ +static void setkeysigfsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigfsharpmin (gui); +displayhelper (gui); +} +/*SetInitialCSharpmin setkeysigcsharpmin*/ +static void setkeysigcsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigcsharpmin (gui); +displayhelper (gui); +} +/*SetInitialGSharpmin setkeysiggsharpmin*/ +static void setkeysiggsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysiggsharpmin (gui); +displayhelper (gui); +} +/*SetInitialDSharpmin setkeysigdsharpmin*/ +static void setkeysigdsharpmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigdsharpmin (gui); +displayhelper (gui); +} +/*SetInitialASharpmin setkeysigasharpmin*/ +static void setkeysigasharpmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigasharpmin (gui); +displayhelper (gui); +} +/*SetInitialDmin setkeysigdmin*/ +static void setkeysigdmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigdmin (gui); +displayhelper (gui); +} +/*SetInitialGmin setkeysiggmin*/ +static void setkeysiggmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysiggmin (gui); +displayhelper (gui); +} +/*SetInitialCmin setkeysigcmin*/ +static void setkeysigcmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigcmin (gui); +displayhelper (gui); +} +/*SetInitialFmin setkeysigfmin*/ +static void setkeysigfmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigfmin (gui); +displayhelper (gui); +} +/*SetInitialBflatmin setkeysigbflatmin*/ +static void setkeysigbflatmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigbflatmin (gui); +displayhelper (gui); +} +/*SetInitialEflatmin setkeysigeflatmin*/ +static void setkeysigeflatmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigeflatmin (gui); +displayhelper (gui); +} +/*SetInitialAflatmin setkeysigaflatmin*/ +static void setkeysigaflatmin_cb (GtkAction *a, DenemoGUI *gui) { +setkeysigaflatmin (gui); +displayhelper (gui); +} +/*SetMark set_mark*/ +static void set_mark_cb (GtkAction *a, DenemoGUI *gui) { +set_mark (gui); +displayhelper (gui); +} +/*UnsetMark unset_mark*/ +static void unset_mark_cb (GtkAction *a, DenemoGUI *gui) { +unset_mark (gui); +displayhelper (gui); +} +/*ToggleBeginSlur toggle_begin_slur*/ +static void toggle_begin_slur_cb (GtkAction *a, DenemoGUI *gui) { +toggle_begin_slur (gui); +displayhelper (gui); +} +/*ToggleEndSlur toggle_end_slur*/ +static void toggle_end_slur_cb (GtkAction *a, DenemoGUI *gui) { +toggle_end_slur (gui); +displayhelper (gui); +} +/*ToggleStartCrescendo toggle_start_crescendo*/ +static void toggle_start_crescendo_cb (GtkAction *a, DenemoGUI *gui) { +toggle_start_crescendo (gui); +displayhelper (gui); +} +/*ToggleEndCrescendo toggle_end_crescendo*/ +static void toggle_end_crescendo_cb (GtkAction *a, DenemoGUI *gui) { +toggle_end_crescendo (gui); +displayhelper (gui); +} +/*ToggleStartDiminuendo toggle_start_diminuendo*/ +static void toggle_start_diminuendo_cb (GtkAction *a, DenemoGUI *gui) { +toggle_start_diminuendo (gui); +displayhelper (gui); +} +/*ToggleEndDiminuendo toggle_end_diminuendo*/ +static void toggle_end_diminuendo_cb (GtkAction *a, DenemoGUI *gui) { +toggle_end_diminuendo (gui); +displayhelper (gui); +} +/*ToggleAccent add_accent*/ +static void add_accent_cb (GtkAction *a, DenemoGUI *gui) { +add_accent (gui); +displayhelper (gui); +} +/*ToggleFermata add_fermata*/ +static void add_fermata_cb (GtkAction *a, DenemoGUI *gui) { +add_fermata (gui); +displayhelper (gui); +} +/*ToggleStaccato add_staccato*/ +static void add_staccato_cb (GtkAction *a, DenemoGUI *gui) { +add_staccato (gui); +displayhelper (gui); +} +/*ToggleTenuto add_tenuto*/ +static void add_tenuto_cb (GtkAction *a, DenemoGUI *gui) { +add_tenuto (gui); +displayhelper (gui); +} +/*ToggleTrill add_trill*/ +static void add_trill_cb (GtkAction *a, DenemoGUI *gui) { +add_trill (gui); +displayhelper (gui); +} +/*ToggleTurn add_turn*/ +static void add_turn_cb (GtkAction *a, DenemoGUI *gui) { +add_turn (gui); +displayhelper (gui); +} +/*ToggleMordent add_mordent*/ +static void add_mordent_cb (GtkAction *a, DenemoGUI *gui) { +add_mordent (gui); +displayhelper (gui); +} +/*ToggleStaccatissimo add_staccatissimo*/ +static void add_staccatissimo_cb (GtkAction *a, DenemoGUI *gui) { +add_staccatissimo (gui); +displayhelper (gui); +} +/*ToggleCoda add_coda*/ +static void add_coda_cb (GtkAction *a, DenemoGUI *gui) { +add_coda (gui); +displayhelper (gui); +} +/*ToggleFlageolet add_flageolet*/ +static void add_flageolet_cb (GtkAction *a, DenemoGUI *gui) { +add_flageolet (gui); +displayhelper (gui); +} +/*ToggleOpen add_open*/ +static void add_open_cb (GtkAction *a, DenemoGUI *gui) { +add_open (gui); +displayhelper (gui); +} +/*TogglePrallMordent add_prallmordent*/ +static void add_prallmordent_cb (GtkAction *a, DenemoGUI *gui) { +add_prallmordent (gui); +displayhelper (gui); +} +/*TogglePrallPrall add_prallprall*/ +static void add_prallprall_cb (GtkAction *a, DenemoGUI *gui) { +add_prallprall (gui); +displayhelper (gui); +} +/*TogglePrall add_prall*/ +static void add_prall_cb (GtkAction *a, DenemoGUI *gui) { +add_prall (gui); +displayhelper (gui); +} +/*ToggleReverseTurn add_reverseturn*/ +static void add_reverseturn_cb (GtkAction *a, DenemoGUI *gui) { +add_reverseturn (gui); +displayhelper (gui); +} +/*ToggleSegno add_segno*/ +static void add_segno_cb (GtkAction *a, DenemoGUI *gui) { +add_segno (gui); +displayhelper (gui); +} +/*ToggleSforzato add_sforzato*/ +static void add_sforzato_cb (GtkAction *a, DenemoGUI *gui) { +add_sforzato (gui); +displayhelper (gui); +} +/*ToggleStopped add_stopped*/ +static void add_stopped_cb (GtkAction *a, DenemoGUI *gui) { +add_stopped (gui); +displayhelper (gui); +} +/*ToggleThumb add_thumb*/ +static void add_thumb_cb (GtkAction *a, DenemoGUI *gui) { +add_thumb (gui); +displayhelper (gui); +} +/*ToggleUpprall add_upprall*/ +static void add_upprall_cb (GtkAction *a, DenemoGUI *gui) { +add_upprall (gui); +displayhelper (gui); +} +/*ToggleArpeggio add_arpeggio*/ +static void add_arpeggio_cb (GtkAction *a, DenemoGUI *gui) { +add_arpeggio (gui); +displayhelper (gui); +} +/*SetGrace set_grace*/ +static void set_grace_cb (GtkAction *a, DenemoGUI *gui) { +set_grace (gui); +displayhelper (gui); +} +/*ForceCaution force_cautionary*/ +static void force_cautionary_cb (GtkAction *a, DenemoGUI *gui) { +force_cautionary (gui); +displayhelper (gui); +} +/*ChangePitch change_pitch*/ +static void change_pitch_cb (GtkAction *a, DenemoGUI *gui) { +change_pitch (gui); +displayhelper (gui); +} +/*DoubleBar insert_doublebar*/ +static void insert_doublebar_cb (GtkAction *a, DenemoGUI *gui) { +insert_doublebar (gui); +displayhelper (gui); +} +/*EndBar insert_endbar*/ +static void insert_endbar_cb (GtkAction *a, DenemoGUI *gui) { +insert_endbar (gui); +displayhelper (gui); +} +/*OpenRepeat insert_openrepeat*/ +static void insert_openrepeat_cb (GtkAction *a, DenemoGUI *gui) { +insert_openrepeat (gui); +displayhelper (gui); +} +/*CloseRepeat insert_closerepeat*/ +static void insert_closerepeat_cb (GtkAction *a, DenemoGUI *gui) { +insert_closerepeat (gui); +displayhelper (gui); +} +/*OpenCloseRepeat insert_opencloserepeat*/ +static void insert_opencloserepeat_cb (GtkAction *a, DenemoGUI *gui) { +insert_opencloserepeat (gui); +displayhelper (gui); +} +/*InsertRhythm insert_rhythm_pattern*/ +static void insert_rhythm_pattern_cb (GtkAction *a, DenemoGUI *gui) { +insert_rhythm_pattern (gui); +displayhelper (gui); +} +/*NextRhythm nextrhythm*/ +static void nextrhythm_cb (GtkAction *a, DenemoGUI *gui) { +nextrhythm (gui); +displayhelper (gui); +} +/*AppendMesauresToScore append_measure_score*/ +static void append_measure_score_cb (GtkAction *a, DenemoGUI *gui) { +append_measure_score (gui); +displayhelper (gui); +} +static void InsertRest0(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_0key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTREST; + insert_chord_0key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeRest0(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTREST; + insert_chord_0key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +void InsertDur0(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_0key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + insert_chord_0key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeDur0(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTNORMAL; + insert_chord_0key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void Dur0 (GtkWidget *w, DenemoGUI *gui) { + if(gui->mode&INPUTINSERT) + make_singleton_rhythm(gui, (gpointer)insert_chord_0key); + else + if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending)) + ChangeDur0 (w, gui); +else { + insert_chord_0key(gui); + displayhelper(gui); + } +} +static void InsertRest1(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_1key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTREST; + insert_chord_1key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeRest1(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTREST; + insert_chord_1key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +void InsertDur1(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_1key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + insert_chord_1key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeDur1(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTNORMAL; + insert_chord_1key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void Dur1 (GtkWidget *w, DenemoGUI *gui) { + if(gui->mode&INPUTINSERT) + make_singleton_rhythm(gui, (gpointer)insert_chord_1key); + else + if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending)) + ChangeDur1 (w, gui); +else { + insert_chord_1key(gui); + displayhelper(gui); + } +} +static void InsertRest2(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_2key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTREST; + insert_chord_2key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeRest2(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTREST; + insert_chord_2key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +void InsertDur2(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_2key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + insert_chord_2key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeDur2(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTNORMAL; + insert_chord_2key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void Dur2 (GtkWidget *w, DenemoGUI *gui) { + if(gui->mode&INPUTINSERT) + make_singleton_rhythm(gui, (gpointer)insert_chord_2key); + else + if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending)) + ChangeDur2 (w, gui); +else { + insert_chord_2key(gui); + displayhelper(gui); + } +} +static void InsertRest3(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_3key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTREST; + insert_chord_3key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeRest3(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTREST; + insert_chord_3key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +void InsertDur3(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_3key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + insert_chord_3key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeDur3(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTNORMAL; + insert_chord_3key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void Dur3 (GtkWidget *w, DenemoGUI *gui) { + if(gui->mode&INPUTINSERT) + make_singleton_rhythm(gui, (gpointer)insert_chord_3key); + else + if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending)) + ChangeDur3 (w, gui); +else { + insert_chord_3key(gui); + displayhelper(gui); + } +} +static void InsertRest4(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_4key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTREST; + insert_chord_4key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeRest4(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTREST; + insert_chord_4key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +void InsertDur4(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_4key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + insert_chord_4key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeDur4(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTNORMAL; + insert_chord_4key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void Dur4 (GtkWidget *w, DenemoGUI *gui) { + if(gui->mode&INPUTINSERT) + make_singleton_rhythm(gui, (gpointer)insert_chord_4key); + else + if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending)) + ChangeDur4 (w, gui); +else { + insert_chord_4key(gui); + displayhelper(gui); + } +} +static void InsertRest5(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_5key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTREST; + insert_chord_5key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeRest5(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTREST; + insert_chord_5key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +void InsertDur5(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_5key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + insert_chord_5key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeDur5(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTNORMAL; + insert_chord_5key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void Dur5 (GtkWidget *w, DenemoGUI *gui) { + if(gui->mode&INPUTINSERT) + make_singleton_rhythm(gui, (gpointer)insert_chord_5key); + else + if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending)) + ChangeDur5 (w, gui); +else { + insert_chord_5key(gui); + displayhelper(gui); + } +} +static void InsertRest6(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_6key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTREST; + insert_chord_6key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeRest6(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTREST; + insert_chord_6key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +void InsertDur6(GtkWidget *menuitem, DenemoGUI *gui){ + make_singleton_rhythm(gui, (gpointer)insert_chord_6key); + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + insert_chord_6key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void ChangeDur6(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gui->mode = INPUTEDIT|INPUTNORMAL; + insert_chord_6key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void Dur6 (GtkWidget *w, DenemoGUI *gui) { + if(gui->mode&INPUTINSERT) + make_singleton_rhythm(gui, (gpointer)insert_chord_6key); + else + if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending)) + ChangeDur6 (w, gui); +else { + insert_chord_6key(gui); + displayhelper(gui); + } +} +static void ChangeToA(GtkWidget *menuitem, DenemoGUI *gui){ + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gint mode = gui->mode; + gui->mode = INPUTEDIT|INPUTNORMAL; + go_to_A_key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void ChangeToB(GtkWidget *menuitem, DenemoGUI *gui){ + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gint mode = gui->mode; + gui->mode = INPUTEDIT|INPUTNORMAL; + go_to_B_key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void ChangeToC(GtkWidget *menuitem, DenemoGUI *gui){ + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gint mode = gui->mode; + gui->mode = INPUTEDIT|INPUTNORMAL; + go_to_C_key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void ChangeToD(GtkWidget *menuitem, DenemoGUI *gui){ + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gint mode = gui->mode; + gui->mode = INPUTEDIT|INPUTNORMAL; + go_to_D_key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void ChangeToE(GtkWidget *menuitem, DenemoGUI *gui){ + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gint mode = gui->mode; + gui->mode = INPUTEDIT|INPUTNORMAL; + go_to_E_key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void ChangeToF(GtkWidget *menuitem, DenemoGUI *gui){ + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gint mode = gui->mode; + gui->mode = INPUTEDIT|INPUTNORMAL; + go_to_F_key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void ChangeToG(GtkWidget *menuitem, DenemoGUI *gui){ + gboolean appending = gui->si->cursor_appending; + if(appending) + cursorleft(gui); + gint mode = gui->mode; + gui->mode = INPUTEDIT|INPUTNORMAL; + go_to_G_key(gui); + gui->mode = mode; + if(appending) + cursorright(gui); + displayhelper(gui); +} +static void InsertA(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + go_to_A_key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void InsertB(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + go_to_B_key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void InsertC(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + go_to_C_key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void InsertD(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + go_to_D_key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void InsertE(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + go_to_E_key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void InsertF(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + go_to_F_key(gui); + gui->mode = mode; + displayhelper(gui); +} +static void InsertG(GtkWidget *menuitem, DenemoGUI *gui){ + gint mode = gui->mode; + gui->mode = INPUTINSERT|INPUTNORMAL; + go_to_G_key(gui); + gui->mode = mode; + displayhelper(gui); +} diff -urN ../../denemo-cvs/denemo/src/chordops.c ./src/chordops.c --- ../../denemo-cvs/denemo/src/chordops.c 2007-09-25 18:49:06.000000000 +0100 +++ ./src/chordops.c 2007-11-18 11:51:49.000000000 +0000 @@ -212,8 +212,8 @@ return anote->mid_c_offset - bnote->mid_c_offset; } -/* modify the pitch of the note of a chord. - FIXME will not work for chords that have >1 notes. +/* modify the pitch of the note of a one note chord. + (for multi-note chords delete and add a note, do not use this). */ void modify_note(chord *thechord, gint mid_c_offset, gint enshift, gint dclef) { note *thenote = (note*)(thechord->notes->data); @@ -244,8 +244,8 @@ return newnote; } /** - * Add tone to the current chord - * The tone will not get added if it is + * Add note to the current chord + * The note will not get added if it is * present already */ void @@ -291,7 +291,7 @@ /* I don't think that I could have quite done this with a g_list_find_custom */ -GList * +static GList * findclosest (GList * notes, gint n) { GList *cur_tnode = notes; @@ -326,6 +326,11 @@ } /* End for loop */ } +objnode *nearestnote (DenemoObject * thechord, gint mid_c_offset) { + if( thechord && thechord->object && thechord->type==CHORD && ((chord *) thechord->object)->notes) + return findclosest (((chord *) thechord->object)->notes, mid_c_offset); + else return NULL; +} /** * Remove tone from current chord @@ -386,7 +391,7 @@ void changeenshift (DenemoObject * thechord, gint mid_c_offset, gint accidental) { - GList *tnode; /* Tone node to inflect */ + GList *tnode; /* note node to inflect */ note *tone; tnode = findclosest (((chord *) thechord->object)->notes, mid_c_offset); if (tnode) diff -urN ../../denemo-cvs/denemo/src/chordops.h ./src/chordops.h --- ../../denemo-cvs/denemo/src/chordops.h 2007-09-25 18:49:06.000000000 +0100 +++ ./src/chordops.h 2007-11-18 14:30:41.000000000 +0000 @@ -18,7 +18,9 @@ DenemoObject *newchord (gint baseduration, gint numdots, int tied); -void modify_note (chord *thechord, gint mid_c_offset, gint enshift, gint dclef); +objnode *nearestnote (DenemoObject * thechord, gint mid_c_offset); + +void modify_note (chord *thechord, gint mid_c_offset, gint enshift, gint dclef); void addtone (DenemoObject * mudelaobj, gint mid_c_offset, gint enshift, gint dclef); @@ -27,8 +29,10 @@ void shiftpitch (DenemoObject * mudelaobj, gint mid_c_offset, gint is_sharpening); -void -changeenshift (DenemoObject * thechord, gint mid_c_offset, gint accidental); + +void changenote (DenemoObject * thechord, gint mid_c_offset, gint new_offset, gint dclef); + +void changeenshift (DenemoObject * thechord, gint mid_c_offset, gint accidental); void changedur (DenemoObject * thechord, gint baseduration, gint numdots); diff -urN ../../denemo-cvs/denemo/src/commandfuncs.c ./src/commandfuncs.c --- ../../denemo-cvs/denemo/src/commandfuncs.c 2007-10-25 18:29:41.000000000 +0100 +++ ./src/commandfuncs.c 2007-11-18 18:11:30.000000000 +0000 @@ -43,8 +43,6 @@ * is easy to alternate rhythms. */ void nextrhythm(DenemoGUI *gui) { - if(!(gui->mode&(INPUTEDIT))) - return; if(!gui->si->rhythms) return; if(gui->si->currhythm==NULL) @@ -445,31 +443,41 @@ } /** - * Move the cursor to a given note value nearest the current cursor - * + * shiftcursor: FIXME change the name of this function! + * Mode sensitive note actions: + * In Classic mode: Move the cursor to a given note value nearest the current cursor + * In Edit mode: Change the current note (or insert if none) + * In Insert mode: Insert a note at the cursor */ void shiftcursor (DenemoGUI *gui, gint note_value) { gint oldstaffletter_y = gui->si->staffletter_y; - + gint oldcursor_y = gui->si->cursor_y; gui->si->staffletter_y = note_value; gui->si->cursor_y = jumpcursor (gui->si->cursor_y, oldstaffletter_y, gui->si->staffletter_y); + int mid_c_offset = gui->si->cursor_y; /* in edit mode edit the current note name */ if((gui->mode & INPUTEDIT) && gui->si->currentobject) { DenemoObject *theobj = (DenemoObject *)(gui->si->currentobject->data); if(theobj->type == CHORD && ((chord*)theobj->object)->notes) { + if(g_list_length( ((chord*)theobj->object)->notes)>1) {/* multi-note chord - remove and add a note */ + gui->si->cursor_y = oldcursor_y; + tonechange(gui->si, TRUE); + gui->si->cursor_y = mid_c_offset; + tonechange(gui->si, FALSE); + } else {/* single-note chord - change the note */ DenemoStaff *curstaff = ((DenemoStaff*)gui->si->currentstaff->data); find_leftmost_staffcontext (curstaff, gui->si); int dclef = curstaff->leftmost_clefcontext; - int mid_c_offset = gui->si->cursor_y; modify_note((chord*)theobj->object, mid_c_offset, gui->si->curmeasureaccs[note_value], dclef); showwhichaccidentals ((objnode *) gui->si->currentmeasure->data, gui->si->curmeasurekey, gui->si->curmeasureaccs); + } } } else - /* in INSERT or EDIT mode we insert a note using the next step of the rhythm pattern */ + /* in INSERT (or EDIT with no currentobject) we insert a note using the next step of the rhythm pattern */ #define g (gui->si->rstep) if((gui->mode&(INPUTEDIT|INPUTINSERT)) && g) { GList *start = g; @@ -726,8 +734,9 @@ } /** + * tonechange * If REMOVE delete the note closest to si->cursor_y in a ~si->currentobject - * else add a tone at si->cursor_y to the ~si->currentobject + * else add a note at si->cursor_y to the ~si->currentobject * FIXME ~si->currentobject in this comment means the thing gotten by the macro declaremudelaobj. This macro is a horrible hack induced by trying to be clever with tuplets - enforcing pairing of begin/end. tonechange * @param si pointer to the scoreinfo structure * @param remove whether to remove note or not @@ -741,10 +750,10 @@ if (curmudelaobj && curmudelaobj->type == CHORD) { if (remove == TRUE) - removetone (curmudelaobj, si->cursor_y, si->cursorclef); + removetone (curmudelaobj, si->cursor_y/*mid_c_offset*/, si->cursorclef/*dclef*/); else - addtone (curmudelaobj, si->cursor_y, - si->cursoraccs[si->staffletter_y], si->cursorclef); + addtone (curmudelaobj, si->cursor_y/* mid_c_offset*/, + si->cursoraccs[si->staffletter_y]/* enshift */, si->cursorclef /*dclef*/); if (curmudelaobj->user_string) { @@ -994,7 +1003,6 @@ removestaff (si, pos-1, 1); setcurrents (si); find_xes_in_all_measures (si); - si->haschanged = TRUE; si->markstaffnum = 0; } diff -urN ../../denemo-cvs/denemo/src/denemoui.xml ./src/denemoui.xml --- ../../denemo-cvs/denemo/src/denemoui.xml 2007-11-18 11:39:31.000000000 +0000 +++ ./src/denemoui.xml 2007-11-18 16:49:13.000000000 +0000 @@ -3,18 +3,18 @@ - + - + - + @@ -29,6 +29,14 @@ + + + + + + + + @@ -48,74 +56,31 @@ + + + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + + @@ -127,6 +92,677 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -150,21 +786,26 @@ - - - - - + + + + + + + + + + + - - + diff -urN ../../denemo-cvs/denemo/src/draw.c ./src/draw.c --- ../../denemo-cvs/denemo/src/draw.c 2007-09-22 13:36:28.000000000 +0100 +++ ./src/draw.c 2007-11-18 18:15:46.000000000 +0000 @@ -30,6 +30,7 @@ #define REDEXCL_WIDTH 3 #define REDEXCL_HEIGHT 13 + /** * scorearea_configure_event * @@ -86,6 +87,8 @@ GdkGC *gc; gboolean haslyrics; gint space_above; + gint highy;/*(return) the highest y value drawn*/ + gint lowy;/*(return) the lowest y value drawn*/ }; /** @@ -106,6 +109,7 @@ static GdkGC *blackgc = NULL; static GdkGC *redgc = NULL; //static GdkGC *greengc = NULL; + itp->highy = itp->lowy = 0; DenemoScore *si = gui->si; DenemoObject *mudelaitem = (DenemoObject *) curobj->data; /* The current note, rest, etc. being painted */ @@ -160,6 +164,15 @@ draw_chord (gui->pixmap, itp->gc, curobj, x + mudelaitem->x, y, GPOINTER_TO_INT (itp->mwidthiterator->data), itp->curaccs); + if((((chord *) mudelaitem->object)->highesty) < itp->highy) + itp->highy = ((chord *) mudelaitem->object)->highesty; + + if((((chord *) mudelaitem->object)->lowesty) > itp->lowy+STAFF_HEIGHT) + itp->lowy = ((chord *) mudelaitem->object)->lowesty-STAFF_HEIGHT; + + + + } if (((chord *) mudelaitem->object)->is_fakechord) draw_fakechord (gui->pixmap, itp->gc, @@ -360,7 +373,6 @@ TRUE); gdk_gc_set_foreground (blackgc, &thecolor); } - return (mudelaitem->starttickofnextnote > itp->tickspermeasure); } @@ -484,7 +496,7 @@ * @param gui pointer to the DenemoGUI structure * @param itp pointer to the infotopass structure */ -void +static void draw_staff (DenemoStaff * curstaffstruct, gint y, DenemoGUI * gui, struct infotopass *itp) { @@ -493,6 +505,7 @@ PangoFontDescription *desc; static GdkGC *blackgc; static GdkGC *yellowgc; + DenemoScore *si = gui->si; gint x, i; GdkGC *gc; @@ -559,6 +572,8 @@ itp->measurenum++; } + + /* now draw the staff lines, reset itp->slur_stack, and we're done */ for (i = 0; i < curstaffstruct->no_of_lines; i++, y += LINE_SPACE) gdk_draw_line (gui->pixmap, blackgc, LEFT_MARGIN, y, @@ -577,8 +592,9 @@ * This actually draws the score, staff-by-staff * @param widget pointer to the parent widget * @param gui pointer to the DenemoGUI structure + * returns whether the height of the drawing area was sufficient to draw everything */ -void +static gboolean draw_score (GtkWidget * widget, DenemoGUI * gui) { staffnode *curstaff; @@ -587,6 +603,7 @@ static GdkGC *blackgc = NULL; static GdkGC *bluegc; GList *mwidthiterator; + gboolean repeat = FALSE; DenemoScore *si = gui->si; /* One-time inits */ @@ -613,16 +630,16 @@ gint top_y = (si->staffspace / 4) + itp.space_above; itp.top_y = top_y; - if (curstaff && ((DenemoStaff *) curstaff->data)->voicenumber == 1 - && itp.staffnum < si->bottom_staff) - itp.y = - y + (si->staffspace + - ((DenemoStaff *) curstaff->data)->space_below); - else - itp.y = y; - - + itp.y = y; + gint highy = ((DenemoStaff *) curstaff->data)->space_above; + gint lowy = ((DenemoStaff *) curstaff->data)->space_below; draw_staff ((DenemoStaff *) curstaff->data, y, gui, &itp); + if(-itp.highy>highy) + ((DenemoStaff *) curstaff->data)->space_above = -itp.highy, repeat=TRUE; + if(itp.lowy>lowy) + ((DenemoStaff *) curstaff->data)->space_below = itp.lowy, repeat=TRUE; + + /* Now draw the barlines between the measures, across all the staffs */ mwidthiterator = g_list_nth (si->measurewidths, si->leftmeasurenum - 1); for (x = KEY_MARGIN + si->maxkeywidth + @@ -651,24 +668,30 @@ } } - curstaff = curstaff->next; + if (curstaff && ((DenemoStaff *) curstaff->data)->voicenumber == 1 && itp.staffnum < si->bottom_staff) { - if (itp.haslyrics) - y += STAFF_HEIGHT / 2; + if (itp.haslyrics) { + if(!((DenemoStaff *) curstaff->data)->haslyrics) + ((DenemoStaff *) curstaff->data)->haslyrics = TRUE;//, repeat=TRUE; + y += LYRICS_HEIGHT; + } y += (si->staffspace + ((DenemoStaff *) curstaff->data)->space_below); } itp.haslyrics = FALSE; - + curstaff = curstaff->next; } + /* Draw the selection rectangle */ if (si->markstaffnum) draw_selection (gui->pixmap, bluegc, itp.markx1, itp.marky1, itp.markx2, itp.marky2); + return repeat; + /* And we're done */ } @@ -682,7 +705,7 @@ gpointer data) { DenemoGUI *gui = (DenemoGUI *) data; - + do{ /* Clear the backing pixmap */ if(pitch_entry_active(gui)) { gdk_draw_rectangle (gui->pixmap, @@ -707,7 +730,7 @@ } /* Draw the score */ - draw_score (widget, gui); + } while(draw_score (widget, gui)); /* Now actually draw the backing pixmap onto the drawing area */ diff -urN ../../denemo-cvs/denemo/src/entries.h ./src/entries.h --- ../../denemo-cvs/denemo/src/entries.h 1970-01-01 01:00:00.000000000 +0100 +++ ./src/entries.h 2007-11-11 16:24:40.000000000 +0000 @@ -0,0 +1,307 @@ +/******** generated automatically from generate_source. See generate_source.c */ +{"AllOther", NULL, N_("All other actions")}, +{"Navigation", NULL, N_("Navigation")}, +{"Note entry", NULL, N_("Note entry")}, +{"Rest entry", NULL, N_("Rest entry")}, +{"Articulation", NULL, N_("Articulation")}, +{"Edit", NULL, N_("Edit")}, +{"Measure", NULL, N_("Measure")}, +{"Staff", NULL, N_("Staff")}, +{"Playback", NULL, N_("Playback")}, +{"Other", NULL, N_("Other")}, +{"CursorLeft", NULL, N_("CursorLeft"), NULL,N_("No Tooltip yet"),G_CALLBACK (cursorleft_cb)}, +{"CursorDown", NULL, N_("CursorDown"), NULL,N_("No Tooltip yet"),G_CALLBACK (cursordown_cb)}, +{"CursorUp", NULL, N_("CursorUp"), NULL,N_("No Tooltip yet"),G_CALLBACK (cursorup_cb)}, +{"CursorRight", NULL, N_("CursorRight"), NULL,N_("No Tooltip yet"),G_CALLBACK (cursorright_cb)}, +{"StaffUp", NULL, N_("StaffUp"), NULL,N_("No Tooltip yet"),G_CALLBACK (staffup_cb)}, +{"StaffDown", NULL, N_("StaffDown"), NULL,N_("No Tooltip yet"),G_CALLBACK (staffdown_cb)}, +{"MeasureLeft", NULL, N_("MeasureLeft"), NULL,N_("No Tooltip yet"),G_CALLBACK (measureleft_cb)}, +{"MeasureRight", NULL, N_("MeasureRight"), NULL,N_("No Tooltip yet"),G_CALLBACK (measureright_cb)}, +{"A", NULL, N_("A"), NULL,N_("No Tooltip yet"),G_CALLBACK (go_to_A_key_cb)}, +{"B", NULL, N_("B"), NULL,N_("No Tooltip yet"),G_CALLBACK (go_to_B_key_cb)}, +{"C", NULL, N_("C"), NULL,N_("No Tooltip yet"),G_CALLBACK (go_to_C_key_cb)}, +{"D", NULL, N_("D"), NULL,N_("No Tooltip yet"),G_CALLBACK (go_to_D_key_cb)}, +{"E", NULL, N_("E"), NULL,N_("No Tooltip yet"),G_CALLBACK (go_to_E_key_cb)}, +{"F", NULL, N_("F"), NULL,N_("No Tooltip yet"),G_CALLBACK (go_to_F_key_cb)}, +{"G", NULL, N_("G"), NULL,N_("No Tooltip yet"),G_CALLBACK (go_to_G_key_cb)}, +{"OctaveUp", NULL, N_("OctaveUp"), NULL,N_("No Tooltip yet"),G_CALLBACK (octave_up_key_cb)}, +{"OctaveDown", NULL, N_("OctaveDown"), NULL,N_("No Tooltip yet"),G_CALLBACK (octave_down_key_cb)}, +{"WholeNote", NULL, N_(""MUSIC_FONT("0")""), NULL,N_("Insert whole-note"),G_CALLBACK (insert_chord_0key_cb)}, +{"HalfNote", NULL, N_(""MUSIC_FONT("1")""), NULL,N_("Insert half-note"),G_CALLBACK (insert_chord_1key_cb)}, +{"QuarterNote", NULL, N_(""MUSIC_FONT("2")""), NULL,N_("Insert quarter-note"),G_CALLBACK (insert_chord_2key_cb)}, +{"EighthNote", NULL, N_(""MUSIC_FONT("3")""), NULL,N_("Insert eighth-note"),G_CALLBACK (insert_chord_3key_cb)}, +{"SixteenthNote", NULL, N_(""MUSIC_FONT("4")""), NULL,N_("Insert sixteenth-note"),G_CALLBACK (insert_chord_4key_cb)}, +{"ThirtysecondNote", NULL, N_(""MUSIC_FONT("5")""), NULL,N_("Insert thirty-second-note"),G_CALLBACK (insert_chord_5key_cb)}, +{"SixtyfourthNote", NULL, N_(""MUSIC_FONT("6")""), NULL,N_("Insert sixty-fourth-note"),G_CALLBACK (insert_chord_6key_cb)}, +{"InsertBlankWholeNote", NULL, N_("InsertBlankWholeNote"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_blankchord_0key_cb)}, +{"InsertBlankHalfNote", NULL, N_("InsertBlankHalfNote"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_blankchord_1key_cb)}, +{"InsertBlankQuarterNote", NULL, N_("InsertBlankQuarterNote"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_blankchord_2key_cb)}, +{"InsertBlankEighthNote", NULL, N_("InsertBlankEighthNote"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_blankchord_3key_cb)}, +{"InsertBlankSixteenthNote", NULL, N_("InsertBlankSixteenthNote"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_blankchord_4key_cb)}, +{"InsertBlankThirtysecondNote", NULL, N_("InsertBlankThirtysecondNote"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_blankchord_5key_cb)}, +{"InsertBlankSixtyfourthNote", NULL, N_("InsertBlankSixtyfourthNote"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_blankchord_6key_cb)}, +{"ToggleRestMode", NULL, N_("ToggleRestMode"), NULL,N_("No Tooltip yet"),G_CALLBACK (rest_toggle_key_cb)}, +{"ToggleBlankMode", NULL, N_("ToggleBlankMode"), NULL,N_("No Tooltip yet"),G_CALLBACK (toggle_blank_cb)}, +{"InsertWholeRest", NULL, N_(""MUSIC_FONT("r")""), NULL,N_("Insert whole-note rest"),G_CALLBACK (insert_rest_0key_cb)}, +{"InsertHalfRest", NULL, N_(""MUSIC_FONT("s")""), NULL,N_("Insert half-note rest"),G_CALLBACK (insert_rest_1key_cb)}, +{"InsertQuarterRest", NULL, N_(""MUSIC_FONT("t")""), NULL,N_("Insert quarter-note rest"),G_CALLBACK (insert_rest_2key_cb)}, +{"InsertEighthRest", NULL, N_(""MUSIC_FONT("u")""), NULL,N_("Insert eighth-note rest"),G_CALLBACK (insert_rest_3key_cb)}, +{"InsertSixteenthRest", NULL, N_(""MUSIC_FONT("v")""), NULL,N_("Insert sixteenth-note rest"),G_CALLBACK (insert_rest_4key_cb)}, +{"InsertThirtysecondRest", NULL, N_(""MUSIC_FONT("w")""), NULL,N_("Insert thirty-second note rest"),G_CALLBACK (insert_rest_5key_cb)}, +{"InsertSixtyfourthRest", NULL, N_(""MUSIC_FONT("x")""), NULL,N_("Insert sixty-fourth note rest"),G_CALLBACK (insert_rest_6key_cb)}, +{"InsertDuplet", NULL, N_("InsertDuplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_duplet_cb)}, +{"InsertTriplet", NULL, N_("InsertTriplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_triplet_cb)}, +{"StartTriplet", NULL, N_("StartTriplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (start_triplet_cb)}, +{"EndTuplet", NULL, N_("EndTuplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (end_tuplet_cb)}, +{"InsertQuadtuplet", NULL, N_("InsertQuadtuplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_quadtuplet_cb)}, +{"InsertQuintuplet", NULL, N_("InsertQuintuplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_quintuplet_cb)}, +{"InsertSextuplet", NULL, N_("InsertSextuplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_sextuplet_cb)}, +{"InsertSeptuplet", NULL, N_("InsertSeptuplet"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_septuplet_cb)}, +{"AddTone", NULL, N_("Add note"), NULL,N_("Add a note to the current chord\nThe cursor position determines which note to add"),G_CALLBACK (add_tone_key_cb)}, +{"RemoveTone", NULL, N_("Remove note"), NULL,N_("Remove a note from the current chord"),G_CALLBACK (remove_tone_key_cb)}, +{"Sharpen/StemDown", NULL, N_("Sharpen/StemDown"), NULL,N_("No Tooltip yet"),G_CALLBACK (sharpen_key_cb)}, +{"Flatten/StemUp", NULL, N_("Flatten/StemUp"), NULL,N_("No Tooltip yet"),G_CALLBACK (flatten_key_cb)}, +{"AddDot", NULL, N_("AddDot"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_dot_key_cb)}, +{"RemoveDot", NULL, N_("RemoveDot"), NULL,N_("No Tooltip yet"),G_CALLBACK (remove_dot_key_cb)}, +{"InsertTiedNote", NULL, N_("Tied note"), NULL,N_("Inserts a duplicate of the current note, tied"),G_CALLBACK (tie_notes_key_cb)}, +{"DeleteObject", NULL, N_("DeleteObject"), NULL,N_("No Tooltip yet"),G_CALLBACK (deleteobject_cb)}, +{"DeletePreviousObject", NULL, N_("DeletePreviousObject"), NULL,N_("No Tooltip yet"),G_CALLBACK (deletepreviousobject_cb)}, +{"InsertMeasure", NULL, N_("InsertMeasure"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_measure_key_cb)}, +{"AppendMeasure", NULL, N_("AppendMeasure"), NULL,N_("No Tooltip yet"),G_CALLBACK (append_measure_key_cb)}, +{"DeleteMeasure", NULL, N_("DeleteMeasure"), NULL,N_("No Tooltip yet"),G_CALLBACK (deletemeasure_cb)}, +{"ShrinkMeasures", NULL, N_("ShrinkMeasures"), NULL,N_("No Tooltip yet"),G_CALLBACK (adjust_measure_less_width_key_cb)}, +{"WidenMeasures", NULL, N_("WidenMeasures"), NULL,N_("No Tooltip yet"),G_CALLBACK (adjust_measure_more_width_key_cb)}, +{"ShorterStaffs", NULL, N_("ShorterStaffs"), NULL,N_("No Tooltip yet"),G_CALLBACK (adjust_staff_less_height_key_cb)}, +{"TallerStaffs", NULL, N_("TallerStaffs"), NULL,N_("No Tooltip yet"),G_CALLBACK (adjust_staff_more_height_key_cb)}, +{"InsertTrebleClef", NULL, N_("InsertTrebleClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (newcleftreble_cb)}, +{"InsertBassClef", NULL, N_("InsertBassClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (newclefbass_cb)}, +{"Insertg8clef", NULL, N_("Insertg8clef"), NULL,N_("No Tooltip yet"),G_CALLBACK (newclefg8_cb)}, +{"InsertAltoClef", NULL, N_("InsertAltoClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (newclefalto_cb)}, +{"InsertTenorClef", NULL, N_("InsertTenorClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (newcleftenor_cb)}, +{"InsertSopranoClef", NULL, N_("InsertSopranoClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (newclefsoprano_cb)}, +{"SetInitialTrebleClef", NULL, N_("SetInitialTrebleClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (setcleftreble_cb)}, +{"SetInitialBassClef", NULL, N_("SetInitialBassClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (setclefbass_cb)}, +{"SetInitialg8clef", NULL, N_("SetInitialg8clef"), NULL,N_("No Tooltip yet"),G_CALLBACK (setclefg8_cb)}, +{"SetInitialAltoClef", NULL, N_("SetInitialAltoClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (setclefalto_cb)}, +{"SetInitialTenorClef", NULL, N_("SetInitialTenorClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (setcleftenor_cb)}, +{"SetInitialSopranoClef", NULL, N_("SetInitialSopranoClef"), NULL,N_("No Tooltip yet"),G_CALLBACK (setclefsoprano_cb)}, +{"Insert22Time", NULL, N_("Insert22Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig22_cb)}, +{"Insert32Time", NULL, N_("Insert32Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig32_cb)}, +{"Insert42Time", NULL, N_("Insert42Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig42_cb)}, +{"Insert44Time", NULL, N_("Insert44Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig44_cb)}, +{"Insert34Time", NULL, N_("Insert34Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig34_cb)}, +{"Insert24Time", NULL, N_("Insert24Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig24_cb)}, +{"Insert64Time", NULL, N_("Insert64Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig64_cb)}, +{"Insert38Time", NULL, N_("Insert38Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig38_cb)}, +{"Insert68Time", NULL, N_("Insert68Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig68_cb)}, +{"Insert128Time", NULL, N_("Insert128Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig128_cb)}, +{"Insert98Time", NULL, N_("Insert98Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (newtimesig98_cb)}, +{"Set22Time", NULL, N_("Set22Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig22_cb)}, +{"Set32Time", NULL, N_("Set32Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig32_cb)}, +{"Set42Time", NULL, N_("Set42Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig42_cb)}, +{"Set44Time", NULL, N_("Set44Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig44_cb)}, +{"Set34Time", NULL, N_("Set34Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig34_cb)}, +{"Set24Time", NULL, N_("Set24Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig24_cb)}, +{"Set64Time", NULL, N_("Set64Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig64_cb)}, +{"Set38Time", NULL, N_("Set38Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig38_cb)}, +{"Set68Time", NULL, N_("Set68Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig68_cb)}, +{"Set128Time", NULL, N_("Set128Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig128_cb)}, +{"Set98Time", NULL, N_("Set98Time"), NULL,N_("No Tooltip yet"),G_CALLBACK (settimesig98_cb)}, +{"InsertCmaj", NULL, N_("InsertCmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigcmaj_cb)}, +{"InsertGmaj", NULL, N_("InsertGmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysiggmaj_cb)}, +{"InsertDmaj", NULL, N_("InsertDmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigdmaj_cb)}, +{"InsertAmaj", NULL, N_("InsertAmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigamaj_cb)}, +{"InsertEmaj", NULL, N_("InsertEmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigemaj_cb)}, +{"InsertBmaj", NULL, N_("InsertBmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigbmaj_cb)}, +{"InsertFSharpmaj", NULL, N_("InsertFSharpmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigfsharpmaj_cb)}, +{"InsertCSharpmaj", NULL, N_("InsertCSharpmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigcsharpmaj_cb)}, +{"InsertFmaj", NULL, N_("InsertFmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigfmaj_cb)}, +{"InsertBflatmaj", NULL, N_("InsertBflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigbflatmaj_cb)}, +{"InsertEflatmaj", NULL, N_("InsertEflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigeflatmaj_cb)}, +{"InsertAflatmaj", NULL, N_("InsertAflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigaflatmaj_cb)}, +{"InsertDflatmaj", NULL, N_("InsertDflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigdflatmaj_cb)}, +{"InsertGflatmaj", NULL, N_("InsertGflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysiggflatmaj_cb)}, +{"InsertCflatmaj", NULL, N_("InsertCflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigcflatmaj_cb)}, +{"InsertAmin", NULL, N_("InsertAmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigamin_cb)}, +{"InsertEmin", NULL, N_("InsertEmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigemin_cb)}, +{"InsertBmin", NULL, N_("InsertBmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigbmin_cb)}, +{"InsertFSharpmin", NULL, N_("InsertFSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigfsharpmin_cb)}, +{"InsertCSharpmin", NULL, N_("InsertCSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigcsharpmin_cb)}, +{"InsertGSharpmin", NULL, N_("InsertGSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysiggsharpmin_cb)}, +{"InsertDSharpmin", NULL, N_("InsertDSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigdsharpmin_cb)}, +{"InsertASharpmin", NULL, N_("InsertASharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigasharpmin_cb)}, +{"InsertDmin", NULL, N_("InsertDmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigdmin_cb)}, +{"InsertGmin", NULL, N_("InsertGmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysiggmin_cb)}, +{"InsertCmin", NULL, N_("InsertCmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigcmin_cb)}, +{"InsertFmin", NULL, N_("InsertFmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigfmin_cb)}, +{"InsertBflatmin", NULL, N_("InsertBflatmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigbflatmin_cb)}, +{"InsertEflatmin", NULL, N_("InsertEflatmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigeflatmin_cb)}, +{"InsertAflatmin", NULL, N_("InsertAflatmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (newkeysigaflatmin_cb)}, +{"SetInitialCmaj", NULL, N_("SetInitialCmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigcmaj_cb)}, +{"SetInitialGmaj", NULL, N_("SetInitialGmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysiggmaj_cb)}, +{"SetInitialDmaj", NULL, N_("SetInitialDmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigdmaj_cb)}, +{"SetInitialAmaj", NULL, N_("SetInitialAmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigamaj_cb)}, +{"SetInitialEmaj", NULL, N_("SetInitialEmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigemaj_cb)}, +{"SetInitialBmaj", NULL, N_("SetInitialBmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigbmaj_cb)}, +{"SetInitialFSharpmaj", NULL, N_("SetInitialFSharpmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigfsharpmaj_cb)}, +{"SetInitialCSharpmaj", NULL, N_("SetInitialCSharpmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigcsharpmaj_cb)}, +{"SetInitialFmaj", NULL, N_("SetInitialFmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigfmaj_cb)}, +{"SetInitialBflatmaj", NULL, N_("SetInitialBflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigbflatmaj_cb)}, +{"SetInitialEflatmaj", NULL, N_("SetInitialEflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigeflatmaj_cb)}, +{"SetInitialAflatmaj", NULL, N_("SetInitialAflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigaflatmaj_cb)}, +{"SetInitialDflatmaj", NULL, N_("SetInitialDflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigdflatmaj_cb)}, +{"SetInitialGflatmaj", NULL, N_("SetInitialGflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysiggflatmaj_cb)}, +{"SetInitialCflatmaj", NULL, N_("SetInitialCflatmaj"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigcflatmaj_cb)}, +{"SetInitialAmin", NULL, N_("SetInitialAmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigamin_cb)}, +{"SetInitialEmin", NULL, N_("SetInitialEmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigemin_cb)}, +{"SetInitialBmin", NULL, N_("SetInitialBmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigbmin_cb)}, +{"SetInitialFSharpmin", NULL, N_("SetInitialFSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigfsharpmin_cb)}, +{"SetInitialCSharpmin", NULL, N_("SetInitialCSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigcsharpmin_cb)}, +{"SetInitialGSharpmin", NULL, N_("SetInitialGSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysiggsharpmin_cb)}, +{"SetInitialDSharpmin", NULL, N_("SetInitialDSharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigdsharpmin_cb)}, +{"SetInitialASharpmin", NULL, N_("SetInitialASharpmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigasharpmin_cb)}, +{"SetInitialDmin", NULL, N_("SetInitialDmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigdmin_cb)}, +{"SetInitialGmin", NULL, N_("SetInitialGmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysiggmin_cb)}, +{"SetInitialCmin", NULL, N_("SetInitialCmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigcmin_cb)}, +{"SetInitialFmin", NULL, N_("SetInitialFmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigfmin_cb)}, +{"SetInitialBflatmin", NULL, N_("SetInitialBflatmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigbflatmin_cb)}, +{"SetInitialEflatmin", NULL, N_("SetInitialEflatmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigeflatmin_cb)}, +{"SetInitialAflatmin", NULL, N_("SetInitialAflatmin"), NULL,N_("No Tooltip yet"),G_CALLBACK (setkeysigaflatmin_cb)}, +{"SetMark", NULL, N_("SetMark"), NULL,N_("No Tooltip yet"),G_CALLBACK (set_mark_cb)}, +{"UnsetMark", NULL, N_("UnsetMark"), NULL,N_("No Tooltip yet"),G_CALLBACK (unset_mark_cb)}, +{"ToggleBeginSlur", NULL, N_("ToggleBeginSlur"), NULL,N_("No Tooltip yet"),G_CALLBACK (toggle_begin_slur_cb)}, +{"ToggleEndSlur", NULL, N_("ToggleEndSlur"), NULL,N_("No Tooltip yet"),G_CALLBACK (toggle_end_slur_cb)}, +{"ToggleStartCrescendo", NULL, N_("ToggleStartCrescendo"), NULL,N_("No Tooltip yet"),G_CALLBACK (toggle_start_crescendo_cb)}, +{"ToggleEndCrescendo", NULL, N_("ToggleEndCrescendo"), NULL,N_("No Tooltip yet"),G_CALLBACK (toggle_end_crescendo_cb)}, +{"ToggleStartDiminuendo", NULL, N_("ToggleStartDiminuendo"), NULL,N_("No Tooltip yet"),G_CALLBACK (toggle_start_diminuendo_cb)}, +{"ToggleEndDiminuendo", NULL, N_("ToggleEndDiminuendo"), NULL,N_("No Tooltip yet"),G_CALLBACK (toggle_end_diminuendo_cb)}, +{"ToggleAccent", NULL, N_("ToggleAccent"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_accent_cb)}, +{"ToggleFermata", NULL, N_("ToggleFermata"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_fermata_cb)}, +{"ToggleStaccato", NULL, N_("ToggleStaccato"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_staccato_cb)}, +{"ToggleTenuto", NULL, N_("ToggleTenuto"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_tenuto_cb)}, +{"ToggleTrill", NULL, N_("ToggleTrill"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_trill_cb)}, +{"ToggleTurn", NULL, N_("ToggleTurn"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_turn_cb)}, +{"ToggleMordent", NULL, N_("ToggleMordent"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_mordent_cb)}, +{"ToggleStaccatissimo", NULL, N_("ToggleStaccatissimo"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_staccatissimo_cb)}, +{"ToggleCoda", NULL, N_("ToggleCoda"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_coda_cb)}, +{"ToggleFlageolet", NULL, N_("ToggleFlageolet"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_flageolet_cb)}, +{"ToggleOpen", NULL, N_("ToggleOpen"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_open_cb)}, +{"TogglePrallMordent", NULL, N_("TogglePrallMordent"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_prallmordent_cb)}, +{"TogglePrallPrall", NULL, N_("TogglePrallPrall"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_prallprall_cb)}, +{"TogglePrall", NULL, N_("TogglePrall"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_prall_cb)}, +{"ToggleReverseTurn", NULL, N_("ToggleReverseTurn"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_reverseturn_cb)}, +{"ToggleSegno", NULL, N_("ToggleSegno"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_segno_cb)}, +{"ToggleSforzato", NULL, N_("ToggleSforzato"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_sforzato_cb)}, +{"ToggleStopped", NULL, N_("ToggleStopped"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_stopped_cb)}, +{"ToggleThumb", NULL, N_("ToggleThumb"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_thumb_cb)}, +{"ToggleUpprall", NULL, N_("ToggleUpprall"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_upprall_cb)}, +{"ToggleArpeggio", NULL, N_("ToggleArpeggio"), NULL,N_("No Tooltip yet"),G_CALLBACK (add_arpeggio_cb)}, +{"SetGrace", NULL, N_("SetGrace"), NULL,N_("No Tooltip yet"),G_CALLBACK (set_grace_cb)}, +{"ForceCaution", NULL, N_("ForceCaution"), NULL,N_("No Tooltip yet"),G_CALLBACK (force_cautionary_cb)}, +{"ChangePitch", NULL, N_("ChangePitch"), NULL,N_("No Tooltip yet"),G_CALLBACK (change_pitch_cb)}, +{"DoubleBar", NULL, N_("DoubleBar"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_doublebar_cb)}, +{"EndBar", NULL, N_("EndBar"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_endbar_cb)}, +{"OpenRepeat", NULL, N_("OpenRepeat"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_openrepeat_cb)}, +{"CloseRepeat", NULL, N_("CloseRepeat"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_closerepeat_cb)}, +{"OpenCloseRepeat", NULL, N_("OpenCloseRepeat"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_opencloserepeat_cb)}, +{"InsertRhythm", NULL, N_("InsertRhythm"), NULL,N_("No Tooltip yet"),G_CALLBACK (insert_rhythm_pattern_cb)}, +{"NextRhythm", NULL, N_("NextRhythm"), NULL,N_("No Tooltip yet"),G_CALLBACK (nextrhythm_cb)}, +{"AppendMesauresToScore", NULL, N_("AppendMesauresToScore"), NULL,N_("No Tooltip yet"),G_CALLBACK (append_measure_score_cb)}, +{"0", "NULL", N_(MUSIC_FONT("0")), NULL, N_("In insert mode, changes prevailing rhythm to "MUSIC_FONT("0")"\nIn edit mode changes the current note to "MUSIC_FONT("0")"\n or appends a "MUSIC_FONT("0")" if no current note\nIn classic mode inserts a "MUSIC_FONT("0")" at the cursor"), +G_CALLBACK (Dur0)}, +{"Change0", "NULL", N_(MUSIC_FONT("0")), NULL, N_("Change current note to a "MUSIC_FONT("0")), +G_CALLBACK (ChangeDur0)}, +{"ChangeRest0", NULL, N_("Change duration"), NULL, N_("Change durtion of current rest"), +G_CALLBACK (ChangeRest0)}, +{"Insert0", NULL, N_("Insert a "MUSIC_FONT("0")""), NULL, N_("Inserts a "MUSIC_FONT("0")" at cursor position\nSets prevailing rhythm to "MUSIC_FONT("0")), +G_CALLBACK (InsertDur0)}, +{"InsertRest0", NULL, N_("Insert a "MUSIC_FONT("0")"rest"), NULL, N_("Inserts a rest at cursor position\nSets prevailing rhythm to "MUSIC_FONT("0")), +G_CALLBACK (InsertRest0)}, +{"1", "NULL", N_(MUSIC_FONT("1")), NULL, N_("In insert mode, changes prevailing rhythm to "MUSIC_FONT("1")"\nIn edit mode changes the current note to "MUSIC_FONT("1")"\n or appends a "MUSIC_FONT("1")" if no current note\nIn classic mode inserts a "MUSIC_FONT("1")" at the cursor"), +G_CALLBACK (Dur1)}, +{"Change1", "NULL", N_(MUSIC_FONT("1")), NULL, N_("Change current note to a "MUSIC_FONT("1")), +G_CALLBACK (ChangeDur1)}, +{"ChangeRest1", NULL, N_("Change duration"), NULL, N_("Change durtion of current rest"), +G_CALLBACK (ChangeRest1)}, +{"Insert1", NULL, N_("Insert a "MUSIC_FONT("1")""), NULL, N_("Inserts a "MUSIC_FONT("1")" at cursor position\nSets prevailing rhythm to "MUSIC_FONT("1")), +G_CALLBACK (InsertDur1)}, +{"InsertRest1", NULL, N_("Insert a "MUSIC_FONT("1")"rest"), NULL, N_("Inserts a rest at cursor position\nSets prevailing rhythm to "MUSIC_FONT("1")), +G_CALLBACK (InsertRest1)}, +{"2", "NULL", N_(MUSIC_FONT("2")), NULL, N_("In insert mode, changes prevailing rhythm to "MUSIC_FONT("2")"\nIn edit mode changes the current note to "MUSIC_FONT("2")"\n or appends a "MUSIC_FONT("2")" if no current note\nIn classic mode inserts a "MUSIC_FONT("2")" at the cursor"), +G_CALLBACK (Dur2)}, +{"Change2", "NULL", N_(MUSIC_FONT("2")), NULL, N_("Change current note to a "MUSIC_FONT("2")), +G_CALLBACK (ChangeDur2)}, +{"ChangeRest2", NULL, N_("Change duration"), NULL, N_("Change durtion of current rest"), +G_CALLBACK (ChangeRest2)}, +{"Insert2", NULL, N_("Insert a "MUSIC_FONT("2")""), NULL, N_("Inserts a "MUSIC_FONT("2")" at cursor position\nSets prevailing rhythm to "MUSIC_FONT("2")), +G_CALLBACK (InsertDur2)}, +{"InsertRest2", NULL, N_("Insert a "MUSIC_FONT("2")"rest"), NULL, N_("Inserts a rest at cursor position\nSets prevailing rhythm to "MUSIC_FONT("2")), +G_CALLBACK (InsertRest2)}, +{"3", "NULL", N_(MUSIC_FONT("3")), NULL, N_("In insert mode, changes prevailing rhythm to "MUSIC_FONT("3")"\nIn edit mode changes the current note to "MUSIC_FONT("3")"\n or appends a "MUSIC_FONT("3")" if no current note\nIn classic mode inserts a "MUSIC_FONT("3")" at the cursor"), +G_CALLBACK (Dur3)}, +{"Change3", "NULL", N_(MUSIC_FONT("3")), NULL, N_("Change current note to a "MUSIC_FONT("3")), +G_CALLBACK (ChangeDur3)}, +{"ChangeRest3", NULL, N_("Change duration"), NULL, N_("Change durtion of current rest"), +G_CALLBACK (ChangeRest3)}, +{"Insert3", NULL, N_("Insert a "MUSIC_FONT("3")""), NULL, N_("Inserts a "MUSIC_FONT("3")" at cursor position\nSets prevailing rhythm to "MUSIC_FONT("3")), +G_CALLBACK (InsertDur3)}, +{"InsertRest3", NULL, N_("Insert a "MUSIC_FONT("3")"rest"), NULL, N_("Inserts a rest at cursor position\nSets prevailing rhythm to "MUSIC_FONT("3")), +G_CALLBACK (InsertRest3)}, +{"4", "NULL", N_(MUSIC_FONT("4")), NULL, N_("In insert mode, changes prevailing rhythm to "MUSIC_FONT("4")"\nIn edit mode changes the current note to "MUSIC_FONT("4")"\n or appends a "MUSIC_FONT("4")" if no current note\nIn classic mode inserts a "MUSIC_FONT("4")" at the cursor"), +G_CALLBACK (Dur4)}, +{"Change4", "NULL", N_(MUSIC_FONT("4")), NULL, N_("Change current note to a "MUSIC_FONT("4")), +G_CALLBACK (ChangeDur4)}, +{"ChangeRest4", NULL, N_("Change duration"), NULL, N_("Change durtion of current rest"), +G_CALLBACK (ChangeRest4)}, +{"Insert4", NULL, N_("Insert a "MUSIC_FONT("4")""), NULL, N_("Inserts a "MUSIC_FONT("4")" at cursor position\nSets prevailing rhythm to "MUSIC_FONT("4")), +G_CALLBACK (InsertDur4)}, +{"InsertRest4", NULL, N_("Insert a "MUSIC_FONT("4")"rest"), NULL, N_("Inserts a rest at cursor position\nSets prevailing rhythm to "MUSIC_FONT("4")), +G_CALLBACK (InsertRest4)}, +{"5", "NULL", N_(MUSIC_FONT("5")), NULL, N_("In insert mode, changes prevailing rhythm to "MUSIC_FONT("5")"\nIn edit mode changes the current note to "MUSIC_FONT("5")"\n or appends a "MUSIC_FONT("5")" if no current note\nIn classic mode inserts a "MUSIC_FONT("5")" at the cursor"), +G_CALLBACK (Dur5)}, +{"Change5", "NULL", N_(MUSIC_FONT("5")), NULL, N_("Change current note to a "MUSIC_FONT("5")), +G_CALLBACK (ChangeDur5)}, +{"ChangeRest5", NULL, N_("Change duration"), NULL, N_("Change durtion of current rest"), +G_CALLBACK (ChangeRest5)}, +{"Insert5", NULL, N_("Insert a "MUSIC_FONT("5")""), NULL, N_("Inserts a "MUSIC_FONT("5")" at cursor position\nSets prevailing rhythm to "MUSIC_FONT("5")), +G_CALLBACK (InsertDur5)}, +{"InsertRest5", NULL, N_("Insert a "MUSIC_FONT("5")"rest"), NULL, N_("Inserts a rest at cursor position\nSets prevailing rhythm to "MUSIC_FONT("5")), +G_CALLBACK (InsertRest5)}, +{"6", "NULL", N_(MUSIC_FONT("6")), NULL, N_("In insert mode, changes prevailing rhythm to "MUSIC_FONT("6")"\nIn edit mode changes the current note to "MUSIC_FONT("6")"\n or appends a "MUSIC_FONT("6")" if no current note\nIn classic mode inserts a "MUSIC_FONT("6")" at the cursor"), +G_CALLBACK (Dur6)}, +{"Change6", "NULL", N_(MUSIC_FONT("6")), NULL, N_("Change current note to a "MUSIC_FONT("6")), +G_CALLBACK (ChangeDur6)}, +{"ChangeRest6", NULL, N_("Change duration"), NULL, N_("Change durtion of current rest"), +G_CALLBACK (ChangeRest6)}, +{"Insert6", NULL, N_("Insert a "MUSIC_FONT("6")""), NULL, N_("Inserts a "MUSIC_FONT("6")" at cursor position\nSets prevailing rhythm to "MUSIC_FONT("6")), +G_CALLBACK (InsertDur6)}, +{"InsertRest6", NULL, N_("Insert a "MUSIC_FONT("6")"rest"), NULL, N_("Inserts a rest at cursor position\nSets prevailing rhythm to "MUSIC_FONT("6")), +G_CALLBACK (InsertRest6)}, + {"InsertA", NULL, N_("Insert A"), NULL, N_("Inserts note A before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (InsertA)}, + {"ChangeToA", NULL, N_("Change current note to A"), NULL, N_("Changes current note to the A nearest cursor or (if no current note) inserts the note A\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (ChangeToA)}, + {"InsertB", NULL, N_("Insert B"), NULL, N_("Inserts note B before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (InsertB)}, + {"ChangeToB", NULL, N_("Change current note to B"), NULL, N_("Changes current note to the B nearest cursor or (if no current note) inserts the note B\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (ChangeToB)}, + {"InsertC", NULL, N_("Insert C"), NULL, N_("Inserts note C before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (InsertC)}, + {"ChangeToC", NULL, N_("Change current note to C"), NULL, N_("Changes current note to the C nearest cursor or (if no current note) inserts the note C\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (ChangeToC)}, + {"InsertD", NULL, N_("Insert D"), NULL, N_("Inserts note D before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (InsertD)}, + {"ChangeToD", NULL, N_("Change current note to D"), NULL, N_("Changes current note to the D nearest cursor or (if no current note) inserts the note D\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (ChangeToD)}, + {"InsertE", NULL, N_("Insert E"), NULL, N_("Inserts note E before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (InsertE)}, + {"ChangeToE", NULL, N_("Change current note to E"), NULL, N_("Changes current note to the E nearest cursor or (if no current note) inserts the note E\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (ChangeToE)}, + {"InsertF", NULL, N_("Insert F"), NULL, N_("Inserts note F before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (InsertF)}, + {"ChangeToF", NULL, N_("Change current note to F"), NULL, N_("Changes current note to the F nearest cursor or (if no current note) inserts the note F\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (ChangeToF)}, + {"InsertG", NULL, N_("Insert G"), NULL, N_("Inserts note G before note at cursor\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (InsertG)}, + {"ChangeToG", NULL, N_("Change current note to G"), NULL, N_("Changes current note to the G nearest cursor or (if no current note) inserts the note G\nCursor determines which octave\nNote is inserted in the prevailing rhythm"), + G_CALLBACK (ChangeToG)}, diff -urN ../../denemo-cvs/denemo/src/generate_source.c ./src/generate_source.c --- ../../denemo-cvs/denemo/src/generate_source.c 1970-01-01 01:00:00.000000000 +0100 +++ ./src/generate_source.c 2007-11-11 16:24:29.000000000 +0000 @@ -0,0 +1,477 @@ +/* + * generate_source.c + * + * Program for generating source code from the old unmenued commands + * + * for Denemo, a gtk+ frontend to GNU Lilypond + * (C) 2007 Richard Shann + * + * License: this file may be used under the FSF GPL version 2 + */ + + +#include +#define N_ + +#define KBD_CATEGORY_NAVIGATION 0 +#define KBD_CATEGORY_NOTE_ENTRY 1 +#define KBD_CATEGORY_REST_ENTRY 2 +#define KBD_CATEGORY_ARTICULATION 3 +#define KBD_CATEGORY_EDIT 4 +#define KBD_CATEGORY_MEASURE 5 +#define KBD_CATEGORY_STAFF 6 +#define KBD_CATEGORY_PLAYBACK 7 +#define KBD_CATEGORY_OTHER 8 + +char *catname[9] = {N_("Navigation"), + N_("Note entry"), + N_("Rest entry"), + N_("Articulation"), + N_("Edit"), + N_("Measure"), + N_("Staff"), + N_("Playback"), + N_("Other") }; + + + + + + + +struct name_and_function +{ + unsigned menu; + /** Command name */ + + char *menu_label; + char *tooltip; + char *name; + char* function; +}; + + +struct name_and_function unmenued_commands[] = { + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("CursorLeft"), "cursorleft"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("CursorDown"), "cursordown"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("CursorUp"), "cursorup"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("CursorRight"), "cursorright"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("StaffUp"), "staffup"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("StaffDown"), "staffdown"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("MeasureLeft"), "measureleft"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("MeasureRight"), "measureright"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("A"), "go_to_A_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("B"), "go_to_B_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("C"), "go_to_C_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("D"), "go_to_D_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("E"), "go_to_E_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("F"), "go_to_F_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("G"), "go_to_G_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("OctaveUp"), "octave_up_key"}, + {KBD_CATEGORY_NAVIGATION, NULL, "No Tooltip yet", N_("OctaveDown"), "octave_down_key"}, + + {KBD_CATEGORY_NOTE_ENTRY, "\"MUSIC_FONT(\"0\")\"", "Insert whole-note", N_("WholeNote"), "insert_chord_0key"}, + {KBD_CATEGORY_NOTE_ENTRY, "\"MUSIC_FONT(\"1\")\"", "Insert half-note", N_("HalfNote"), "insert_chord_1key"}, + {KBD_CATEGORY_NOTE_ENTRY, "\"MUSIC_FONT(\"2\")\"", "Insert quarter-note", N_("QuarterNote"), "insert_chord_2key"}, + {KBD_CATEGORY_NOTE_ENTRY, "\"MUSIC_FONT(\"3\")\"", "Insert eighth-note", N_("EighthNote"), "insert_chord_3key"}, + {KBD_CATEGORY_NOTE_ENTRY, "\"MUSIC_FONT(\"4\")\"", "Insert sixteenth-note", N_("SixteenthNote"), "insert_chord_4key"}, + {KBD_CATEGORY_NOTE_ENTRY, "\"MUSIC_FONT(\"5\")\"", "Insert thirty-second-note", N_("ThirtysecondNote"), "insert_chord_5key"}, + {KBD_CATEGORY_NOTE_ENTRY, "\"MUSIC_FONT(\"6\")\"", "Insert sixty-fourth-note", N_("SixtyfourthNote"), "insert_chord_6key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertBlankWholeNote"), "insert_blankchord_0key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertBlankHalfNote"), "insert_blankchord_1key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertBlankQuarterNote"), "insert_blankchord_2key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertBlankEighthNote"), "insert_blankchord_3key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertBlankSixteenthNote"), "insert_blankchord_4key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertBlankThirtysecondNote"), "insert_blankchord_5key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertBlankSixtyfourthNote"), "insert_blankchord_6key"}, + {KBD_CATEGORY_EDIT, NULL, "No Tooltip yet", N_("ToggleRestMode"), "rest_toggle_key"}, + {KBD_CATEGORY_EDIT, NULL, "No Tooltip yet", N_("ToggleBlankMode"), "toggle_blank"}, + + {KBD_CATEGORY_REST_ENTRY, "\"MUSIC_FONT(\"r\")\"", "Insert whole-note rest", N_("InsertWholeRest"), "insert_rest_0key"}, + {KBD_CATEGORY_REST_ENTRY, "\"MUSIC_FONT(\"s\")\"", "Insert half-note rest", N_("InsertHalfRest"), "insert_rest_1key"}, + {KBD_CATEGORY_REST_ENTRY, "\"MUSIC_FONT(\"t\")\"", "Insert quarter-note rest", N_("InsertQuarterRest"), "insert_rest_2key"}, + {KBD_CATEGORY_REST_ENTRY, "\"MUSIC_FONT(\"u\")\"", "Insert eighth-note rest", N_("InsertEighthRest"), "insert_rest_3key"}, + {KBD_CATEGORY_REST_ENTRY, "\"MUSIC_FONT(\"v\")\"", "Insert sixteenth-note rest", N_("InsertSixteenthRest"), "insert_rest_4key"}, + {KBD_CATEGORY_REST_ENTRY, "\"MUSIC_FONT(\"w\")\"", "Insert thirty-second note rest", N_("InsertThirtysecondRest"), "insert_rest_5key"}, + {KBD_CATEGORY_REST_ENTRY, "\"MUSIC_FONT(\"x\")\"", "Insert sixty-fourth note rest", N_("InsertSixtyfourthRest"), "insert_rest_6key"}, + + + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertDuplet"), "insert_duplet"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertTriplet"), "insert_triplet"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("StartTriplet"), "start_triplet"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("EndTuplet"), "end_tuplet"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertQuadtuplet"), "insert_quadtuplet"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertQuintuplet"), "insert_quintuplet"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertSextuplet"), "insert_sextuplet"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("InsertSeptuplet"), "insert_septuplet"}, + {KBD_CATEGORY_NOTE_ENTRY, "Add note", "Add a note to the current chord\\nThe cursor position determines which note to add", N_("AddTone"), "add_tone_key"}, + {KBD_CATEGORY_NOTE_ENTRY, "Remove note", "Remove a note from the current chord", N_("RemoveTone"), "remove_tone_key"}, + + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("Sharpen/StemDown"), "sharpen_key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("Flatten/StemUp"), "flatten_key"}, + + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("AddDot"), "add_dot_key"}, + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("RemoveDot"), "remove_dot_key"}, + + {KBD_CATEGORY_ARTICULATION, "Tied note", "Inserts a duplicate of the current note, tied", N_("InsertTiedNote"), "tie_notes_key"}, + + {KBD_CATEGORY_EDIT, NULL, "No Tooltip yet", N_("DeleteObject"), "deleteobject"}, + {KBD_CATEGORY_EDIT, NULL, "No Tooltip yet", N_("DeletePreviousObject"), "deletepreviousobject"}, + + {KBD_CATEGORY_MEASURE, NULL, "No Tooltip yet", N_("InsertMeasure"), "insert_measure_key"}, + {KBD_CATEGORY_MEASURE, NULL, "No Tooltip yet", N_("AppendMeasure"), "append_measure_key"}, + {KBD_CATEGORY_MEASURE, NULL, "No Tooltip yet", N_("DeleteMeasure"), "deletemeasure"}, + {KBD_CATEGORY_MEASURE, NULL, "No Tooltip yet", N_("ShrinkMeasures"), "adjust_measure_less_width_key"}, + {KBD_CATEGORY_MEASURE, NULL, "No Tooltip yet", N_("WidenMeasures"), "adjust_measure_more_width_key"}, + + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("ShorterStaffs"), "adjust_staff_less_height_key"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("TallerStaffs"), "adjust_staff_more_height_key"}, + + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertTrebleClef"), "newcleftreble"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertBassClef"), "newclefbass"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insertg8clef"), "newclefg8"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertAltoClef"), "newclefalto"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertTenorClef"), "newcleftenor"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertSopranoClef"), "newclefsoprano"}, + + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialTrebleClef"), "setcleftreble"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialBassClef"), "setclefbass"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialg8clef"), "setclefg8"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialAltoClef"), "setclefalto"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialTenorClef"), "setcleftenor"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialSopranoClef"), "setclefsoprano"}, + + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert22Time"), "newtimesig22"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert32Time"), "newtimesig32"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert42Time"), "newtimesig42"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert44Time"), "newtimesig44"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert34Time"), "newtimesig34"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert24Time"), "newtimesig24"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert64Time"), "newtimesig64"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert38Time"), "newtimesig38"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert68Time"), "newtimesig68"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert128Time"), "newtimesig128"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Insert98Time"), "newtimesig98"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set22Time"), "settimesig22"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set32Time"), "settimesig32"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set42Time"), "settimesig42"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set44Time"), "settimesig44"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set34Time"), "settimesig34"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set24Time"), "settimesig24"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set64Time"), "settimesig64"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set38Time"), "settimesig38"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set68Time"), "settimesig68"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set128Time"), "settimesig128"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("Set98Time"), "settimesig98"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertCmaj"), "newkeysigcmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertGmaj"), "newkeysiggmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertDmaj"), "newkeysigdmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertAmaj"), "newkeysigamaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertEmaj"), "newkeysigemaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertBmaj"), "newkeysigbmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertFSharpmaj"), "newkeysigfsharpmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertCSharpmaj"), "newkeysigcsharpmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertFmaj"), "newkeysigfmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertBflatmaj"), "newkeysigbflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertEflatmaj"), "newkeysigeflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertAflatmaj"), "newkeysigaflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertDflatmaj"), "newkeysigdflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertGflatmaj"), "newkeysiggflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertCflatmaj"), "newkeysigcflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertAmin"), "newkeysigamin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertEmin"), "newkeysigemin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertBmin"), "newkeysigbmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertFSharpmin"), "newkeysigfsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertCSharpmin"), "newkeysigcsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertGSharpmin"), "newkeysiggsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertDSharpmin"), "newkeysigdsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertASharpmin"), "newkeysigasharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertDmin"), "newkeysigdmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertGmin"), "newkeysiggmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertCmin"), "newkeysigcmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertFmin"), "newkeysigfmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertBflatmin"), "newkeysigbflatmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertEflatmin"), "newkeysigeflatmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("InsertAflatmin"), "newkeysigaflatmin"}, + + //Functions to Set Initial Key Sig + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialCmaj"), "setkeysigcmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialGmaj"), "setkeysiggmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialDmaj"), "setkeysigdmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialAmaj"), "setkeysigamaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialEmaj"), "setkeysigemaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialBmaj"), "setkeysigbmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialFSharpmaj"), "setkeysigfsharpmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialCSharpmaj"), "setkeysigcsharpmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialFmaj"), "setkeysigfmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialBflatmaj"), "setkeysigbflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialEflatmaj"), "setkeysigeflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialAflatmaj"), "setkeysigaflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialDflatmaj"), "setkeysigdflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialGflatmaj"), "setkeysiggflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialCflatmaj"), "setkeysigcflatmaj"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialAmin"), "setkeysigamin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialEmin"), "setkeysigemin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialBmin"), "setkeysigbmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialFSharpmin"), "setkeysigfsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialCSharpmin"), "setkeysigcsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialGSharpmin"), "setkeysiggsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialDSharpmin"), "setkeysigdsharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialASharpmin"), "setkeysigasharpmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialDmin"), "setkeysigdmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialGmin"), "setkeysiggmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialCmin"), "setkeysigcmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialFmin"), "setkeysigfmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialBflatmin"), "setkeysigbflatmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialEflatmin"), "setkeysigeflatmin"}, + {KBD_CATEGORY_STAFF, NULL, "No Tooltip yet", N_("SetInitialAflatmin"), "setkeysigaflatmin"}, + + + {KBD_CATEGORY_EDIT, NULL, "No Tooltip yet", N_("SetMark"), "set_mark"}, + {KBD_CATEGORY_EDIT, NULL, "No Tooltip yet", N_("UnsetMark"), "unset_mark"}, + + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleBeginSlur"), "toggle_begin_slur"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleEndSlur"), "toggle_end_slur"}, + + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleStartCrescendo"), "toggle_start_crescendo"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleEndCrescendo"), "toggle_end_crescendo"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleStartDiminuendo"), "toggle_start_diminuendo"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleEndDiminuendo"), "toggle_end_diminuendo"}, + + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleAccent"), "add_accent"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleFermata"), "add_fermata"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleStaccato"), "add_staccato"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleTenuto"), "add_tenuto"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleTrill"), "add_trill"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleTurn"), "add_turn"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleMordent"), "add_mordent"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleStaccatissimo"), "add_staccatissimo"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleCoda"), "add_coda"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleFlageolet"), "add_flageolet"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleOpen"), "add_open"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("TogglePrallMordent"), "add_prallmordent"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("TogglePrallPrall"), "add_prallprall"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("TogglePrall"), "add_prall"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleReverseTurn"), "add_reverseturn"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleSegno"), "add_segno"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleSforzato"), "add_sforzato"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleStopped"), "add_stopped"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleThumb"), "add_thumb"}, + /*{KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleTrillElement"), "add_trillelement"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleTrill_Element"), "add_trill_element"}, */ + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleUpprall"), "add_upprall"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("ToggleArpeggio"), "add_arpeggio"}, + {KBD_CATEGORY_ARTICULATION, NULL, "No Tooltip yet", N_("SetGrace"), "set_grace"}, + + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("ForceCaution"), "force_cautionary"}, + + {KBD_CATEGORY_NOTE_ENTRY, NULL, "No Tooltip yet", N_("ChangePitch"), "change_pitch"}, + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("DoubleBar"), "insert_doublebar"}, + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("EndBar"), "insert_endbar"}, + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("OpenRepeat"), "insert_openrepeat"}, + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("CloseRepeat"), "insert_closerepeat"}, + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("OpenCloseRepeat"), "insert_opencloserepeat"}, + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("InsertRhythm"), "insert_rhythm_pattern"}, + {KBD_CATEGORY_OTHER, NULL, "No Tooltip yet", N_("NextRhythm"), "nextrhythm"}, + {KBD_CATEGORY_MEASURE, NULL, "No Tooltip yet", N_("AppendMesauresToScore"), "append_measure_score"} + + +}; + + + + + + +#define ni unmenued_commands[i].name +#define ii unmenued_commands[i].menu_label +#define ti unmenued_commands[i].tooltip +#define fi unmenued_commands[i].function +#define mi unmenued_commands[i].menu +int main() { + FILE *callbacks, *entries, *xml; + callbacks = fopen("callbacks.h", "w"); + entries = fopen("entries.h", "w"); + xml = fopen("xml.fragment", "w"); + if(!callbacks || !entries || !xml) + return -1; + fprintf(callbacks, "/******** generated automatically from generate_source. See generate_source.c */\n"); + fprintf(entries, "/******** generated automatically from generate_source. See generate_source.c */\n"); + + int i,j; + int n_unmenued_commands = (sizeof (unmenued_commands) + / sizeof (struct name_and_function)); + fprintf(entries, "{\"AllOther\", NULL, N_(\"All other actions\")},\n"); + for(j=0;j<9;j++){ + fprintf(entries, "{\"%s\", NULL, N_(\"%s\")},\n", catname[j], catname[j]); + + } + for(i=0;imode;\n" +" gui->mode = INPUTINSERT|INPUTREST;\n" +" insert_chord_%dkey(gui);\n" +" gui->mode = mode;\n" +" displayhelper(gui);\n" +"}\n" + +"static void ChangeRest%d(GtkWidget *menuitem, DenemoGUI *gui){\n" +" gint mode = gui->mode;\n" +" gboolean appending = gui->si->cursor_appending;\n" +" if(appending)\n" +" cursorleft(gui);\n" +" gui->mode = INPUTEDIT|INPUTREST;\n" +" insert_chord_%dkey(gui);\n" +" gui->mode = mode;\n" +" if(appending)\n" +" cursorright(gui);\n" +" displayhelper(gui);\n" +"}\n" + +"void InsertDur%d(GtkWidget *menuitem, DenemoGUI *gui){\n" +" make_singleton_rhythm(gui, (gpointer)insert_chord_%dkey);\n" +" gint mode = gui->mode;\n" +" gui->mode = INPUTINSERT|INPUTNORMAL;\n" +" insert_chord_%dkey(gui);\n" +" gui->mode = mode;\n" +" displayhelper(gui);\n" +"}\n" + +"static void ChangeDur%d(GtkWidget *menuitem, DenemoGUI *gui){\n" +" gint mode = gui->mode;\n" +" gboolean appending = gui->si->cursor_appending;\n" +" if(appending)\n" +" cursorleft(gui);\n" +" gui->mode = INPUTEDIT|INPUTNORMAL;\n" +" insert_chord_%dkey(gui);\n" +" gui->mode = mode;\n" +" if(appending)\n" +" cursorright(gui);\n" +" displayhelper(gui);\n" +"}\n",i,i,i,i,i,i,i,i,i,i); + + + /* callbacks for mode sensitive duration actions, Dur0,1,2 ... */ + fprintf(callbacks, + "static void Dur%d (GtkWidget *w, DenemoGUI *gui) {\n" + " if(gui->mode&INPUTINSERT)\n" + " make_singleton_rhythm(gui, (gpointer)insert_chord_%dkey);\n" + " else \n" + " if( (gui->mode&INPUTEDIT) && (!gui->si->cursor_appending))\n" + " ChangeDur%d (w, gui);\n" + "else {\n" + " insert_chord_%dkey(gui);\n" + " displayhelper(gui);\n" + " }\n" + "}\n", i , i, i, i); + + /* menu_entries for the mode sensitive duration actions, Dur0,1,2 ... */ + fprintf(entries, + "{\"%d\", \"NULL\", N_(MUSIC_FONT(\"%d\")), NULL, N_(\"In insert mode, changes prevailing rhythm to \"MUSIC_FONT(\"%d\")\"\\nIn edit mode changes the current note to \"MUSIC_FONT(\"%d\")\"\\n or appends a \"MUSIC_FONT(\"%d\")\" if no current note\\nIn classic mode inserts a \"MUSIC_FONT(\"%d\")\" at the cursor\"),\n" + "G_CALLBACK (Dur%d)},\n" + + "{\"Change%d\", \"NULL\", N_(MUSIC_FONT(\"%d\")), NULL, N_(\"Change current note to a \"MUSIC_FONT(\"%d\")),\n" + "G_CALLBACK (ChangeDur%d)},\n" + "{\"ChangeRest%d\", NULL, N_(\"Change duration\"), NULL, N_(\"Change durtion of current rest\"),\n" + "G_CALLBACK (ChangeRest%d)},\n" + "{\"Insert%d\", NULL, N_(\"Insert a \"MUSIC_FONT(\"%d\")\"\"), NULL, N_(\"Inserts a \"MUSIC_FONT(\"%d\")\" at cursor position\\nSets prevailing rhythm to \"MUSIC_FONT(\"%d\")),\n" + "G_CALLBACK (InsertDur%d)},\n" + "{\"InsertRest%d\", NULL, N_(\"Insert a \"MUSIC_FONT(\"%d\")\"rest\"), NULL, N_(\"Inserts a rest at cursor position\\nSets prevailing rhythm to \"MUSIC_FONT(\"%d\")),\n" + "G_CALLBACK (InsertRest%d)},\n", + i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i,i,i ); + } + + + for(i=0;i<7;i++) + fprintf(xml, "\n", i); + for(i=0;i<7;i++) + fprintf(xml, "\n", i); + for(i=0;i<7;i++) + fprintf(xml, "\n", i); + for(i=0;i<7;i++) + fprintf(xml, "\n", i); + for(i=0;i<7;i++) + fprintf(xml, "\n", i); + + for(i='A';i<='G';i++) + fprintf(xml, "\n", i); + for(i='A';i<='G';i++) + fprintf(xml, "\n", i); + + + + /* menu_entries for the mode note name */ + for(i='A';i<='G';i++) { + fprintf(entries, +" {\"Insert%c\", NULL, N_(\"Insert %c\"), NULL, N_(\"Inserts note %c before note at cursor\\nCursor determines which octave\\nNote is inserted in the prevailing rhythm\"),\n" +" G_CALLBACK (Insert%c)},\n" +" {\"ChangeTo%c\", NULL, N_(\"Change current note to %c\"), NULL, N_(\"Changes current note to the %c nearest cursor or (if no current note) inserts the note %c\\nCursor determines which octave\\nNote is inserted in the prevailing rhythm\"),\n" +" G_CALLBACK (ChangeTo%c)},\n" + + ,i ,i ,i ,i ,i ,i ,i ,i ,i); + + } + + for(i='A';i<='G';i++) { + fprintf(callbacks, +"static void ChangeTo%c(GtkWidget *menuitem, DenemoGUI *gui){\n" +" gboolean appending = gui->si->cursor_appending;\n" +" if(appending)\n" +" cursorleft(gui); \n" +" gint mode = gui->mode;\n" +" gui->mode = INPUTEDIT|INPUTNORMAL;\n" +" go_to_%c_key(gui);\n" +" gui->mode = mode;\n" +" if(appending)\n" +" cursorright(gui);\n" +" displayhelper(gui);\n" +"}\n", i, i); + } + for(i='A';i<='G';i++) { + + fprintf(callbacks, +"static void Insert%c(GtkWidget *menuitem, DenemoGUI *gui){\n" +" gint mode = gui->mode;\n" +" gui->mode = INPUTINSERT|INPUTNORMAL;\n" +" go_to_%c_key(gui);\n" +" gui->mode = mode;\n" +" displayhelper(gui);\n" + "}\n", i, i); + } + + + +#ifdef GENERATE_XML_FRAGMENT + fprintf(xml, "\n"); + for(j=0;j<9;j++){ + fprintf(xml, "\n", catname[j]); + for(i=0;i\n", ni); + } + + } + fprintf(xml, "\n"); + } + fprintf(xml, "\n"); +#endif + return 0; +} diff -urN ../../denemo-cvs/denemo/src/keyresponses.c ./src/keyresponses.c --- ../../denemo-cvs/denemo/src/keyresponses.c 2007-10-10 04:14:29.000000000 +0100 +++ ./src/keyresponses.c 2007-11-18 14:43:52.000000000 +0000 @@ -188,17 +188,30 @@ shiftcursor (gui, 4); } + /** * Move cursor an octave up */ void octave_up_key (DenemoGUI * gui) { - if(gui->mode&(INPUTEDIT)) - tonechange(gui->si, TRUE); - gui->si->cursor_y += 7; - if(gui->mode&(INPUTEDIT)) - tonechange(gui->si, FALSE); + if (((DenemoStaff*)gui->si->currentstaff->data)->tone_store) { + return;//FIXME create a function modify_tone, like delete_tone in pitchentry.c to do this sort of thing + } else { + if(gui->mode&(INPUTEDIT)) + { + objnode *thenote = nearestnote (gui->si->currentobject->data, gui->si->cursor_y); + if(thenote) { + note copy = *((note *) thenote->data); + tonechange(gui->si, TRUE); + gui->si->cursor_y = copy.mid_c_offset + 7; + tonechange(gui->si, FALSE); + changeenshift(gui->si->currentobject->data, gui->si->cursor_y, copy.enshift); + } + } + else + gui->si->cursor_y += 7; + } } /** @@ -207,11 +220,23 @@ void octave_down_key (DenemoGUI * gui) { - if(gui->mode&(INPUTEDIT)) - tonechange(gui->si, TRUE); - gui->si->cursor_y -= 7; - if(gui->mode&(INPUTEDIT)) - tonechange(gui->si, FALSE); + if (((DenemoStaff*)gui->si->currentstaff->data)->tone_store) { + return;//FIXME create a function modify_tone, like delete_tone in pitchentry.c to do this sort of thing + } else { + if(gui->mode&(INPUTEDIT)) + { + objnode *thenote = nearestnote (gui->si->currentobject->data, gui->si->cursor_y); + if(thenote) { + note copy = *((note *) thenote->data); + tonechange(gui->si, TRUE); + gui->si->cursor_y = copy.mid_c_offset - 7; + tonechange(gui->si, FALSE); + changeenshift(gui->si->currentobject->data, gui->si->cursor_y, copy.enshift); + } + } + else + gui->si->cursor_y -= 7; + } } /** @@ -557,7 +582,7 @@ else incrementenshift (gui->si, -1); } - +/* insert a duplicate note and tie to it */ void tie_notes_key (DenemoGUI * gui) { @@ -570,8 +595,7 @@ { nextmeasure (gui->si, FALSE); object_insert (gui->si, dnm_clone_object (curmudelaobj)); - ((chord *) curmudelaobj->object)->is_tied = - !((chord *) curmudelaobj->object)->is_tied; + ((chord *) curmudelaobj->object)->is_tied = TRUE; } } diff -urN ../../denemo-cvs/denemo/src/main.c ./src/main.c --- ../../denemo-cvs/denemo/src/main.c 2007-11-18 11:39:31.000000000 +0000 +++ ./src/main.c 2007-11-18 14:45:59.000000000 +0000 @@ -88,7 +88,6 @@ {"denemo-upprall", N_("Upprall"), (GdkModifierType) 0, 0, NULL}, {"denemo-arpeggio", N_("Arpeggio"), (GdkModifierType) 0, 0, NULL} }; - static void load_accels (gchar *name) { gchar *filename = g_build_filename(locatedotdenemo(),name,NULL); @@ -444,9 +443,10 @@ /* gtk initialization */ gtk_init (&argc, &argv); + load_accels("standard.accels"); register_stock_items (); + newview (); - load_accels("standard.accels"); /* audio initialization */ diff -urN ../../denemo-cvs/denemo/src/measureops.c ./src/measureops.c --- ../../denemo-cvs/denemo/src/measureops.c 2007-09-22 13:36:29.000000000 +0100 +++ ./src/measureops.c 2007-11-18 18:20:03.000000000 +0000 @@ -66,7 +66,7 @@ if (g_list_length (si->measurewidths) < ((DenemoStaff *) si->currentstaff->data)->nummeasures) { - +/* ???????????????? what if different staffs have different nummeasures??????? */ si->measurewidths = g_list_insert (si->measurewidths, GINT_TO_POINTER (si-> measurewidth), diff -urN ../../denemo-cvs/denemo/src/mousing.c ./src/mousing.c --- ../../denemo-cvs/denemo/src/mousing.c 2007-10-25 18:29:41.000000000 +0100 +++ ./src/mousing.c 2007-11-18 18:22:34.000000000 +0000 @@ -58,21 +58,25 @@ float click_height; gint staffs_from_top; - gtk_widget_queue_draw (gui->scorearea); + gtk_widget_queue_draw (gui->scorearea);//?????? staffs_from_top = gui->si->currentstaffnum - gui->si->top_staff; // this takes account of staff->space_above and below... GList *curstaff; + DenemoStaff *staff; gint extra_space = 0; - for( curstaff = gui->si->thescore; curstaff;curstaff=curstaff->next) { - extra_space += ((DenemoStaff *) curstaff->data)->space_above + - ((DenemoStaff *) curstaff->data)->space_below; + for( curstaff = g_list_nth(gui->si->thescore,gui->si->top_staff-1) ; curstaff;curstaff=curstaff->next) { + staff = (DenemoStaff *) curstaff->data; + extra_space += (staff->space_above ); if(curstaff == gui->si->currentstaff) break; + extra_space += (staff->space_below + staff->haslyrics?LYRICS_HEIGHT:0); + } - extra_space -= ((DenemoStaff *) curstaff->data)->space_below; + //???????????? + //extra_space -= (staff->space_below + staff->haslyrics?LYRICS_HEIGHT:0); // g_print("Check %p and %p\n", gui->si->currentstaff, g_list_nth(gui->si->thescore,gui->si->currentstaffnum - gui->si->top_staff)); - g_print("Extra space %d\n",extra_space); + //g_print("Extra space %d\n",extra_space); click_height = y - (gui->si->staffspace * staffs_from_top + gui->si->staffspace / 4 + extra_space); @@ -89,6 +93,24 @@ objnode *the_obj; }; +/* find which staff in si the height y lies in, return the staff number */ + +static gint staff_at (gint y, DenemoScore *si) { + GList *curstaff; + gint space = 0; + gint count; + for(curstaff = g_list_nth(si->thescore, si->top_staff-1), count=0; curstaff && y>space;curstaff=curstaff->next) { + DenemoStaff *staff = (DenemoStaff *) curstaff->data; + count++; + space += (staff)->space_above + + (staff)->space_below + si->staffspace; + //g_print("y %d and space %d count = %d\n",y,space, count); + } + if(y<=1) + return 1; + return count+si->top_staff-1; +} + /** * Gets the position from the clicked position * @@ -108,7 +130,9 @@ //FIXME broken when space_above, below as it assumes si->staffspace for each staff pi->staff_number = MIN ((si->top_staff + ((gint) y) / si->staffspace), si->bottom_staff); - + + pi->staff_number = staff_at((gint)y, si); +/* g_print("get staff number %d\n",pi->staff_number); */ pi->measure_number = si->leftmeasurenum; x_to_explain -= (KEY_MARGIN + si->maxkeywidth + SPACE_FOR_TIME); while (x_to_explain > GPOINTER_TO_INT (mwidthiterator->data) @@ -168,11 +192,11 @@ /** - * Mouse button release callback + * Mouse button press callback * */ gint -scorearea_button_release (GtkWidget * widget, GdkEventButton * event, +scorearea_button_press (GtkWidget * widget, GdkEventButton * event, gpointer data) { struct placement_info pi; @@ -197,8 +221,54 @@ /* Quickly redraw to reset si->cursorclef. */ gtk_widget_queue_draw (gui->scorearea); set_cursor_y_from_click (gui, event->y); - + if(!(gui->mode&INPUTCLASSIC)) { + if(gui->si->markstaffnum) + unset_mark(gui); + else + set_mark(gui); + } gtk_widget_queue_draw (gui->scorearea); } return TRUE; } + +/** + * Mouse button release callback + * + */ +gint +scorearea_button_release (GtkWidget * widget, GdkEventButton * event, + gpointer data) +{ + struct placement_info pi; + DenemoGUI *gui = (DenemoGUI *) data; + if(!(gui->mode&INPUTCLASSIC)) { + if (gui->si->markstaffnum){ + if (event->y < 0) + get_placement_from_coordinates (&pi, event->x, 0, gui->si); + else + get_placement_from_coordinates (&pi, event->x, event->y, gui->si); + if (pi.the_measure != NULL){ /*don't place cursor in a place that is not there*/ + + gui->si->currentstaffnum = pi.staff_number; + gui->si->currentstaff = pi.the_staff; + gui->si->currentmeasurenum = pi.measure_number; + gui->si->currentmeasure = pi.the_measure; + gui->si->currentobject = pi.the_obj; + gui->si->cursor_x = pi.cursor_x; + gui->si->cursor_appending + = + (gui->si->cursor_x == + (gint) (g_list_length ((objnode *) gui->si->currentmeasure->data))); + + /* Quickly redraw to reset si->cursorclef. */ + gtk_widget_queue_draw (gui->scorearea); + set_cursor_y_from_click (gui, event->y); + calcmarkboundaries (gui->si); + gtk_widget_queue_draw (gui->scorearea); + } + } + } + return TRUE; +} + diff -urN ../../denemo-cvs/denemo/src/mousing.h ./src/mousing.h --- ../../denemo-cvs/denemo/src/mousing.h 2007-01-24 19:44:26.000000000 +0000 +++ ./src/mousing.h 2007-11-18 18:22:52.000000000 +0000 @@ -7,3 +7,5 @@ gint scorearea_button_release (GtkWidget *widget, GdkEventButton *event, gpointer data); +gint +scorearea_button_press (GtkWidget *widget, GdkEventButton *event, gpointer data); diff -urN ../../denemo-cvs/denemo/src/pitchentry.c ./src/pitchentry.c --- ../../denemo-cvs/denemo/src/pitchentry.c 2007-10-25 18:29:41.000000000 +0100 +++ ./src/pitchentry.c 2007-11-19 07:20:56.000000000 +0000 @@ -145,7 +145,7 @@ static temperament *PR_temperament; /* the currently used temperament */ -static void clear_tones_currentmeasure(GtkButton *button, DenemoGUI *gui ); + static void switch_back_to_main_window(void) { gtk_window_present(GTK_WINDOW(PR_gui->window)); @@ -436,7 +436,7 @@ } // clear gui->si->currentstaff->data->tone_store and the references to it -static void clear_tone_store(GtkButton *button, DenemoGUI *gui ) { +static void clear_tone_store(GtkButton *button, DenemoGUI *gui) { #define store (((DenemoStaff*)gui->si->currentstaff->data)->tone_store) g_list_foreach (store, (GFunc)free_tones, NULL); clear_tone_nodes(gui); @@ -450,8 +450,8 @@ /* * clear the references to tones (ie any overlay) in the currentmeasure */ -static void clear_tone_nodes_currentmeasure(DenemoGUI *gui ) { - measurenode *curmeasure = gui->si->currentmeasure; +static void clear_tone_nodes_currentmeasure(DenemoScore *si ) { + measurenode *curmeasure = si->currentmeasure; objnode *curobj = curmeasure->data; for (; curobj; curobj = curobj->next) { @@ -462,18 +462,7 @@ } } - // clear gui->si->currentstaff->data->tone_store entry for currentmeasure and the references to it -static void clear_tones_currentmeasure(GtkButton *button, DenemoGUI *gui ) { - if(gui->si->currentmeasure){ -#define store (((DenemoStaff*)gui->si->currentstaff->data)->tone_store) - GList *g = g_list_nth(store,gui->si->currentmeasurenum - 1); - free_tones(g->data); - store = g_list_delete_link(store, g); - clear_tone_nodes_currentmeasure(gui); -#undef store - displayhelper(gui); - } -} + gboolean delete_tone(DenemoScore *si, chord *thechord) { GList *tone_node = thechord->tone_node; @@ -712,7 +701,7 @@ // toggle PR_insert to show where the notes detected should go, and start correct entry mode static void toggle_insert(GtkButton *button, DenemoGUI *gui) { GtkAction *action; - action = gtk_ui_manager_get_action (gui->ui_manager, PR_insert?"/MainMenu/EntryMenu/TogglePitchless": "/MainMenu/EntryMenu/Replace"); + action = gtk_ui_manager_get_action (gui->ui_manager, PR_insert?"/MainMenu/EntryMenu/EditMode": "/MainMenu/EntryMenu/InsertMode"); gtk_action_activate(action); PR_insert = !PR_insert; switch_back_to_main_window(); @@ -963,6 +952,12 @@ g_signal_connect (G_OBJECT (spinner), "value-changed", G_CALLBACK (change_timer_rate), gui); +#if 0 + /* start in overlay mode, with EditMode set FIXME too early - PR_gui may not be set yet*/ + PR_insert = TRUE; + toggle_insert(NULL, gui); +#endif + /* now show the window, but leave the main window with the focus */ gtk_window_set_focus_on_map((GtkWindow *)PR_window, FALSE); gtk_widget_show_all(PR_window); diff -urN ../../denemo-cvs/denemo/src/utils.c ./src/utils.c --- ../../denemo-cvs/denemo/src/utils.c 2007-09-22 13:36:29.000000000 +0100 +++ ./src/utils.c 2007-11-19 07:25:39.000000000 +0000 @@ -610,5 +610,5 @@ * caller must free the returned string */ gchar * music_font(gchar *str) { - return g_strdup_printf("%s", str); + return g_strdup_printf("%s", str); } diff -urN ../../denemo-cvs/denemo/src/utils.h ./src/utils.h --- ../../denemo-cvs/denemo/src/utils.h 2007-09-22 13:36:29.000000000 +0100 +++ ./src/utils.h 2007-11-19 07:26:02.000000000 +0000 @@ -15,7 +15,8 @@ #define LINE_SPACE 10 #define HALF_LINE_SPACE 5 #define NO_OF_LINES 5 -#define STAFF_HEIGHT LINE_SPACE * (NO_OF_LINES - 1) +#define STAFF_HEIGHT (LINE_SPACE * (NO_OF_LINES - 1)) +#define LYRICS_HEIGHT (STAFF_HEIGHT/2) #define MID_STAFF_HEIGHT 2*LINE_SPACE #define LEFT_MARGIN 20 #define KEY_MARGIN (LEFT_MARGIN+35) diff -urN ../../denemo-cvs/denemo/src/view.c ./src/view.c --- ../../denemo-cvs/denemo/src/view.c 2007-11-18 11:39:31.000000000 +0000 +++ ./src/view.c 2007-11-19 07:41:51.000000000 +0000 @@ -23,9 +23,16 @@ #define INITIAL_WIDTH 1000 #define INITIAL_HEIGHT 500 + +#define MUSIC_FONT(a) ""a"" + + + + extern GList *displays; /* list of DenemoGUI objects */ extern midi_seq *sq; /* global denemo sequencer FIXME: should not be global */ +#include "callbacks.h" /* callback functions for the originally unmenued commands */ /** * close the application and shut down the sequencer if open @@ -208,120 +215,6 @@ } -/* - * Note palette callbacks - */ - -/** - * Note palette callback inserts whole note into score - * - */ -static void -insert_chord_0key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_chord_0key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert half note into score - * - */ -static void -insert_chord_1key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_chord_1key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert quarter note into score - * - */ -static void -insert_chord_2key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_chord_2key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert eigth note into the score - * - */ -static void -insert_chord_3key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_chord_3key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert sixteenth note into the score - * - */ -static void -insert_chord_4key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_chord_4key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert whole note rest into the score - * - */ -static void -insert_rest_0key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_rest_0key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert half note rest into the score - * - */ -static void -insert_rest_1key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_rest_1key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert quarter note rest into the score - * - */ - -static void -insert_rest_2key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_rest_2key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert eigth note rest into the score - * - */ -static void -insert_rest_3key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_rest_3key (gui); - displayhelper (gui); -} - -/** - * Note palette callback insert sixteenth note rest into the score - * - */ -static void -insert_rest_4key_cb (GtkAction * action, DenemoGUI * gui) -{ - insert_rest_4key (gui); - displayhelper (gui); -} @@ -472,13 +365,12 @@ gtk_accel_map_change_entry (accel_path, event->keyval, event->state & modifiers, TRUE); - //g_print("key val %d, state %d\n", event->keyval, event->state & modifiers); - accel_path = gtk_action_get_accel_path (action); GtkAccelKey key; gboolean has_accel = gtk_accel_map_lookup_entry (accel_path, &key); - gchar *accel_label = has_accel?gtk_accelerator_get_label (key.accel_key, key.accel_mods):"No shortcut"; - gtk_button_set_label(GTK_BUTTON(widget), accel_label); - return FALSE; + gchar *accel_label = has_accel?gtk_accelerator_name (key.accel_key, key.accel_mods):"No shortcut"; + gtk_button_set_label(GTK_BUTTON(widget), g_strdup_printf("shortcut [%s] %d %d",accel_label, key.accel_key, key.accel_mods)); + + return TRUE;/* stop other handlers being processed */ } static void @@ -490,9 +382,9 @@ static void accept_keypress(GtkButton *button, GtkAction *action){ + gtk_button_set_label(button, "Press the key combination desired"); g_signal_connect (GTK_OBJECT (button), "key_press_event", G_CALLBACK (capture_accel_for_action), action); - gtk_button_set_label(button, "Press the key combination desired"); } static void @@ -682,9 +574,11 @@ g_free(fmt); } - /* make the list circular */ - r->rsteps->prev = g_list_last(r->rsteps); - g_list_last(r->rsteps)->next = r->rsteps; + if(r->rsteps) { + /* make the list circular */ + r->rsteps->prev = g_list_last(r->rsteps); + g_list_last(r->rsteps)->next = r->rsteps; + } } else { g_list_free(r->rsteps); @@ -816,10 +710,10 @@ * Menu entries with no shortcut keys, tooltips, and callback functions */ GtkActionEntry menu_entries[] = { - {"FileMenu", NULL, N_("_File")}, - {"New", GTK_STOCK_NEW, N_("_New"), NULL, "Start a new musical score", + {"FileMenu", NULL, N_("_File"),NULL, N_("Creating, saving, loading, displaying and printing musical scores")}, + {"New", GTK_STOCK_NEW/* the GTK_STOCK_NEW causes an accelerator to be assigned*/, N_("_New"), NULL, "Start a new musical score", G_CALLBACK (file_newwrapper)}, - {"OpenTemplate", GTK_STOCK_NEW, N_("New score from template"), NULL, + {"OpenTemplate", NULL, N_("New score from template"), NULL, "Start a new score from a template file\n(currently not working)", G_CALLBACK (file_open_template_wrapper)}, {"NewWindow", NULL, N_("New Window"), NULL, "Create a new window with an empty score in it", @@ -850,6 +744,10 @@ G_CALLBACK (undowrapper)}, {"Redo", GTK_STOCK_REDO, N_("_Redo"), NULL, "Redo", G_CALLBACK (redowrapper)}, + + {"Select", NULL, N_("Select"),NULL, N_("Selecting stretches of notes")}, + {"ExtendSelect", NULL, N_("Extend selection"),NULL, N_("Extend the selection")}, + {"Copy", GTK_STOCK_COPY, N_("_Copy"), NULL, "Copy", G_CALLBACK (copywrapper)}, {"Cut", GTK_STOCK_CUT, N_("Cu_t"), NULL, "Cut", @@ -864,7 +762,7 @@ G_CALLBACK (preferences_change)}, // {"Keyboard", NULL, N_("_Keyboard"), NULL, NULL, // G_CALLBACK (configure_keyboard_dialog)}, - {"Keyboard", NULL, N_("Set Keybindings"), NULL, "View, change and save keyboard bindings\nThese are being replaced with the shortcuts that appear next to menu items,\nwhich take precedence in case of conflicts", + {"Keyboard", NULL, N_("Extra Keybindings"), NULL, "View, change and save keyboard bindings\nThese are being replaced with the shortcuts that appear next to menu items,\nwhich take precedence in case of conflicts", G_CALLBACK (configure_keyboard_dialog_OLD)}, {"LoadPlugins", NULL, N_("Load Plugins"), NULL, "Load Plugins", G_CALLBACK (load_plugin)}, @@ -887,7 +785,7 @@ G_CALLBACK (newstafflast)}, {"DeleteBefore", NULL, N_("Delete Staff Before"), NULL, "Deletes the staff before the current staff", G_CALLBACK (delete_staff_before)}, - {"Delete", GTK_STOCK_DELETE, N_("_Delete Staff"), NULL, "Deletes the current staff", + {"DeleteStaff", NULL, N_("_Delete Staff"), NULL, "Deletes the current staff", G_CALLBACK (delete_staff_current)}, {"DeleteAfter", NULL, N_("Delete Staff After"), NULL, "Deletes the staff after the current staff", G_CALLBACK (delete_staff_after)}, @@ -899,37 +797,35 @@ G_CALLBACK (dnm_newstafffigured)}, {"AddChords", NULL, N_("Add Chords to Staff..."), NULL, N_("Add Chords to Staff\nNot sure what this does"), G_CALLBACK (dnm_newstaffchords)}, - {"StaffProperties", GTK_STOCK_PROPERTIES, N_("Staff _Properties"), NULL,"Change the properties of the current staff", + {"StaffProperties", GTK_STOCK_PROPERTIES, N_("Properties"), NULL,"Change the properties of the current staff", G_CALLBACK (staff_properties_change)}, {"InsertMenu", NULL, N_("_Insert")}, {"Clef", NULL, N_("_Clef")}, - {"InitialClef", NULL, N_("_Set Clef"), NULL, "Change the initial clef of the current staff", + {"InitialClef", NULL, N_("Initial Clef"), NULL, "Change the initial clef of the current staff", G_CALLBACK (clef_change_initial)}, {"InsertClef", NULL, N_("Insert Clef _Change"), NULL, N_("Insert a change of clef at the cursor"), G_CALLBACK (clef_change_insert)}, - {"Key", NULL, N_("_Key")}, + {"Key", NULL, N_("_Key"), NULL, N_("insert change key signature or set the initial key")}, {"InitialKey", NULL, N_("_Initial Key"), NULL, N_("Set the initial key signature of the current staff"), G_CALLBACK (key_change_initial)}, {"InsertKey", NULL, N_("Insert Key _Change"), NULL, N_("Insert a key change at the cursor position"), G_CALLBACK (key_change_insert)}, - {"TimeSig", NULL, N_("_Time Signature")}, + {"TimeSig", NULL, N_("_Time Signature"), NULL, N_("Manage the time signature changes and initial value")}, {"InitialTimeSig", NULL, N_("_Initial Time Signature"), NULL, N_("Set the initial time signature of the current staff"), G_CALLBACK (timesig_change_initial)}, - {"InsertTimeSig", NULL, N_("Insert Time Signature _Change"), NULL, N_("Insert a time signature change at the cursor position"), + {"InsertTimeSig", NULL, N_("Insert/Edit Time Signature _Change"), NULL, N_("Edit/Insert a time signature change for the current measure"), G_CALLBACK (timesig_change_insert)}, /* {"OtherMenu", NULL, N_("_Other")}, */ {"ChangeNotehead", NULL, N_("_Notehead"), NULL, N_("Change the type of notehead for the current note"), G_CALLBACK (set_notehead)}, - {"InsertStem", NULL, N_("Insert _Stem Directive"), NULL, N_("Not known to be working"), + {"InsertStem", NULL, N_("Insert _Stem Directive"), NULL, N_("Inserts a stem neutral tag.\\nClick on this tag and use Sharpen/StemDown etc commands to change stem direction"), G_CALLBACK (stem_directive_insert)}, {"Lyrics", NULL, N_("_Lyrics")}, - {"InsertLyric", NULL, N_("Insert Lyric"), NULL, N_("See edit lyric - appears to be the same"), - G_CALLBACK (lyric_insert)}, - {"EditLyric", NULL, N_("Edit _Lyric"), NULL, N_("Add a lyric to current note\nBeware that all previous notes must have lyrics before printing"), + {"EditLyric", NULL, N_("Insert/Edit _Lyric"), NULL, N_("Add a lyric to current note\nBeware that all previous notes must have lyrics before printing"), G_CALLBACK (lyric_insert)}, - {"EditFiguredBass", NULL, N_("Edit Figured Bass"), NULL, N_("Add a bass figure to the current note\nUse | sign to split the duration of a note so as to have multiple figures on one note.\nSee Lilypond docs for other notation"), + {"EditFiguredBass", NULL, N_("Insert/Edit Figured Bass"), NULL, N_("Add a bass figure to the current note\nUse | sign to split the duration of a note so as to have multiple figures on one note.\nSee Lilypond docs for other notation"), G_CALLBACK (figure_insert)}, - {"EditChords", NULL, N_("Edit Chords"), NULL, N_("Allows chord symbols to be added to the current note\nE.G.cis:dim7 for c-sharp diminished 7th.\nSee Lilypond docs for notation"), + {"EditChords", NULL, N_("Insert/Edit Chord Symbols"), NULL, N_("Allows chord symbols to be added to the current note\nE.G.cis:dim7 for c-sharp diminished 7th.\nSee Lilypond docs for notation"), G_CALLBACK (fakechord_insert)}, {"InsertDynamic", NULL, N_("Insert _Dynamic"), NULL, N_("Inserts a dynamic marking at the cursor position"), G_CALLBACK (insert_dynamic)}, @@ -973,45 +869,71 @@ G_CALLBACK (gotobookmark)}, {"Stub", NULL, N_(" "), NULL, N_("Does nothing"), G_CALLBACK (dummy)}, {"OpenRecent", NULL, N_("Open Recent")}, - /* Note entry */ - {"InsertWholeNote", "denemo-whole-note", N_("Full note"), NULL, - N_("Full note"), - G_CALLBACK (insert_chord_0key_cb)}, - {"InsertHalfNote", "denemo-half-note", N_("Half note"), NULL, - N_("Half note"), - G_CALLBACK (insert_chord_1key_cb)}, - {"InsertQuarterNote", "denemo-quarter-note", N_("Quarter note"), NULL, - N_("Quarter note"), - G_CALLBACK (insert_chord_2key_cb)}, - {"InsertEighthNote", "denemo-eight-note", N_("Eighth note"), NULL, - N_("Eighth note"), - G_CALLBACK (insert_chord_3key_cb)}, - {"InsertSixteenthNote", "denemo-sixteenth-note", N_("Sixteenth note"), NULL, - N_("Sixteenth note"), - G_CALLBACK (insert_chord_4key_cb)}, - {"InsertWholeRest", "denemo-whole-rest", N_("Full rest"), NULL, - N_("Full rest"), - G_CALLBACK (insert_rest_0key_cb)}, - {"InsertHalfRest", "denemo-half-rest", N_("Half rest"), NULL, - N_("Half rest"), - G_CALLBACK (insert_rest_1key_cb)}, - {"InsertQuarterRest", "denemo-quarter-rest", N_("Quarter rest"), NULL, - N_("Quarter rest"), - G_CALLBACK (insert_rest_2key_cb)}, - {"InsertEighthRest", "denemo-eight-rest", N_("Eight rest"), NULL, - N_("Eighth rest"), - G_CALLBACK (insert_rest_3key_cb)}, - {"InsertSixteenthRest", "denemo-sixteenth-rest", N_("Sixteenth rest"), NULL, - N_("Sixteenth rest"), - G_CALLBACK (insert_rest_4key_cb)}, + + + + + + /* Rhythm entry */ + {"NextRhythm", NULL, N_("Next rhythm"), NULL, + N_("Make next rhythm pattern\nthe prevailing rhythm.\nNotes entered will follow this pattern"), G_CALLBACK (nextrhythm_cb)}, {"CreateRhythm", NULL, N_("Create a rhythm"), NULL, - N_("Create a rhythm pattern"), + N_("Create a rhythm pattern\nfor notes to follow as they are entered"), G_CALLBACK (create_rhythm_cb)}, - {"DeleteRhythm", NULL, N_("Delete"), NULL, + {"DeleteRhythm", NULL, N_("Delete Rhythm"), NULL, N_("Delete the selected rhythm pattern"), G_CALLBACK (delete_rhythm_cb)} + , + {"ClassicModeNote", NULL, N_("Notes/Rests"),NULL, N_("Moving the cursor and inserting notes or rests there")}, + {"SelectNote", NULL, N_("Select note"),NULL, N_("Moving the cursor to the nearest ...")} + , + {"InsertModeNote", NULL, N_("Notes/Rests"),NULL, N_("Actions for notes:\ninserting, deleting etc")}, + {"InsertNote", NULL, N_("Insert note"),NULL, N_("Inserting the note ...")}, + {"Rest entry", NULL, N_("Insert rest"),NULL, N_("Inserting the rest ...")}, + + {"SelectDuration", NULL, N_("Prevailing duration"),NULL, N_("Changing the prevailing duration\nor rhythm pattern")}, + + {"EditModeNote", NULL, N_("Notes/Rests"),NULL, N_("Appending, Changing and deleting notes")}, + {"EditNote", NULL, N_("change the note to ..."),NULL, N_("Changing the note at the cursor to the nearest ...")/*, if you put a callback here, it gets called on moving onto the menu item G_CALLBACK (...) */}, + {"EditDuration", NULL, N_("Change duration to ..."),NULL, N_("Changing the duration of note at the cursor")}, + + {"Cursor", NULL, N_("Cursor"),NULL, N_("Moving the cursor")}, + + {"ClefMenu", NULL, N_("Clef"),NULL, N_("Insert/change clef\nSet initial clef")}, + {"ChordMenu", NULL, N_("Chord"),NULL, N_("Adding notes to make chords")}, + + + {"MeasureMenu", NULL, N_("Measure"),NULL, N_("Measures:\nadding, deleting, navigating etc")}, + {"GoToMeasure", NULL, N_("Go To _Measure..."), NULL, N_(""), + G_CALLBACK (tomeasurenum)}, + {"Insert", NULL, N_("Insert"),NULL, N_("Inserting notes, measures staffs keysigs etc")}, + + {"InsertStaff", NULL, N_("Insert"),NULL, N_("Insert a Staff relative to current staff")}, + + + {"InsertDuration", NULL, N_("Insert Duration"),NULL, N_("Inserting notes of a given duration")}, + + {"Change", NULL, N_("Change"),NULL, N_("Changing properties of notes, measures staffs keysigs etc")}, + {"NoteProperties", NULL, N_("Notes/Rests"), NULL, N_("Modeless actions on notes/rests")}, + {"RestEntry", NULL, N_("Rest"), NULL, N_("Modeless entry of rests")}, + {"ChangeNote", NULL, N_("Change note to"),NULL, N_("Changing the note at the cursor to the nearest ...")}, + {"ChangeDuration", NULL, N_("Change duration to"),NULL, N_("Changes the duration of the current note")}, + + + {"ChangeRest", NULL, N_("Change rest to"),NULL, N_("Changes the duration of the current rest")}, + + {"ExpressionMarks", NULL, N_("Expression Marks"), NULL, N_("Dynamics, staccato, slurs, ties and other expressive marks")}, + {"Ornaments", NULL, N_("Ornaments"), NULL, N_("grace notes etc")}, + {"Other", NULL, N_("Other"), NULL, N_("Lyrics, chord symbols, figured basses etc")}, + + {"Tuplets", NULL, N_("Tuplets"), NULL, N_("Enterning riplets and other tuplets")}, + + +#include "entries.h" + {"Delete", NULL, N_("Delete"),NULL, N_("Deleting notes, measures staffs keysigs etc")} + }; //Get number of menu entries @@ -1055,6 +977,18 @@ g_free(status); displayhelper (gui); } + + +GtkWidget *mode_menu_bar(DenemoGUI *gui) { + if(gui->mode&INPUTEDIT) + return gui->EditModeMenu; + if(gui->mode&INPUTINSERT) + return gui->InsertModeMenu; + if(gui->mode&INPUTCLASSIC) + return gui->ClassicModeMenu; + return gui->ModelessMenu; +} + /** * callback changing mode gui->mode * @@ -1062,11 +996,26 @@ static void change_mode (GtkRadioAction * action, GtkRadioAction * current, DenemoGUI * gui) { gint val = gtk_radio_action_get_current_value (action); + GtkWidget *menubar = mode_menu_bar(gui); + if(menubar) + gtk_widget_hide(menubar); gui->mode=((gui->mode&MODE_MASK)|val); + menubar = mode_menu_bar(gui); + if(menubar) + gtk_widget_show(menubar); set_status_bar(gui); -} +} +static void activate_action(gchar *path, DenemoGUI * gui) { + GtkAction *a; +/* g_warning("activating\n"); */ + a = gtk_ui_manager_get_action (gui->ui_manager, path); + if(a) + gtk_action_activate(a); + else + g_warning("Internal error, denemogui.xml out of step with literal %s in %s\n", path, __FILE__); + } /** * callback changing type of entry part of gui->mode, * depending on the entry type it switches mode part of gui->mode to Classic mode for entering rests and to Insert for entering notes. FIXME could switch to prefs value. @@ -1074,31 +1023,29 @@ */ static void change_entry_type (GtkRadioAction * action, GtkRadioAction * current, DenemoGUI * gui) { - GtkAction *a; + gint val = gtk_radio_action_get_current_value (action); switch(val) { #define SET_MODE(m) (gui->mode=((gui->mode&ENTRY_TYPE_MASK)|m)) case INPUTREST: SET_MODE(INPUTREST); - a = gtk_ui_manager_get_action (gui->ui_manager, "/MainMenu/EntryMenu/Classic"); - gtk_action_activate(a); + activate_action("/MainMenu/EntryMenu/ClassicMode", gui); + break; case INPUTNORMAL: SET_MODE(INPUTNORMAL); - a = gtk_ui_manager_get_action (gui->ui_manager, "/MainMenu/EntryMenu/Insert"); - gtk_action_activate(a); + activate_action( "/MainMenu/EntryMenu/InsertMode", gui); break; case INPUTBLANK: SET_MODE(INPUTBLANK); - a = gtk_ui_manager_get_action (gui->ui_manager, "/MainMenu/EntryMenu/Classic"); - gtk_action_activate(a); + activate_action( "/MainMenu/EntryMenu/ClassicMode", gui); break; } #undef SET_MODE set_status_bar(gui); //g_print("Mode is %x masks %x %x\n",ENTRY_TYPE_MASK, MODE_MASK, gui->mode); } - +static void use_markup(GtkWidget *widget); /** * Function to toggle entry of notes by pitch recognition off/on @@ -1106,6 +1053,8 @@ */ static void toggle_pitch_recognition (GtkAction * action, DenemoGUI * gui) { + GtkWidget *widget = gtk_ui_manager_get_widget (gui->ui_manager, "/RhythmToolBar/TogglePitchRecognition"); + if(pitch_recognition_system_active() && (!gui->pitch_recognition)){ /* can be out of step with checkbox because of @@ -1133,10 +1082,8 @@ /* always turn rhythm mode on with pitch recognition, since otherwise the cursor just bobs about uselessly, while the accidentals in the notes affect the previous note */ - GtkAction *mode = gtk_ui_manager_get_action (gui->ui_manager, gui->pitch_recognition?"/MainMenu/EntryMenu/Insert": "/MainMenu/EntryMenu/Edit"); - gtk_action_activate(mode); - mode = gtk_ui_manager_get_action (gui->ui_manager, "/MainMenu/EntryMenu/Note"); - gtk_action_activate(mode); + activate_action( gui->pitch_recognition?"/MainMenu/EntryMenu/InsertMode": "/MainMenu/EntryMenu/EditMode", gui); + activate_action( "/MainMenu/EntryMenu/Note", gui); // g_print("Note action is %p is sensitive %x\n", mode, gtk_action_get_sensitive(mode)); } @@ -1168,51 +1115,132 @@ gui->prefs->the_keymap = rhythm_keymap; gtk_widget_show (widget); /* make sure we are in Insert and Note for rhythm toolbar */ - GtkAction *mode = gtk_ui_manager_get_action (gui->ui_manager, "/MainMenu/EntryMenu/Note"); - gtk_action_activate(mode); - mode = gtk_ui_manager_get_action (gui->ui_manager, "/MainMenu/EntryMenu/Insert"); - gtk_action_activate(mode); + activate_action( "/MainMenu/EntryMenu/Note", gui); + activate_action( "/MainMenu/EntryMenu/InsertMode", gui); } } + +/** + * Function to toggle whether entry toolbar is visible + * + * + */ +static void +toggle_entry_toolbar (GtkAction * action, DenemoGUI * gui) +{ + GtkWidget *widget; + widget = gtk_ui_manager_get_widget (gui->ui_manager, "/EntryToolBar"); + if(!widget) return;// internal error - out of step with menu_entries... + if (GTK_WIDGET_VISIBLE (widget)) + { + + gtk_widget_hide (widget); + } + else + { + gtk_widget_show (widget); + use_markup(widget); + } +} + + +/** + * Function to toggle whether action menubar is visible + * + * + */ +static void +toggle_action_menu (GtkAction * action, DenemoGUI * gui) +{ + GtkWidget *widget; + widget = gtk_ui_manager_get_widget (gui->ui_manager, "/ActionMenu"); + if(!widget) return;// internal error - out of step with menu_entries... + if (GTK_WIDGET_VISIBLE (widget)) + { + + gtk_widget_hide (widget); + } + else + { + gtk_widget_show (widget); + } +} + + + +/** + * Function to toggle whether object menubar is visible + * + * + */ +static void +toggle_object_menu (GtkAction * action, DenemoGUI * gui) +{ + GtkWidget *widget; + widget = gtk_ui_manager_get_widget (gui->ui_manager, "/ObjectMenu"); + if(!widget) return;// internal error - out of step with menu_entries... + if (GTK_WIDGET_VISIBLE (widget)) + { + + gtk_widget_hide (widget); + } + else + { + gtk_widget_show (widget); + } +} + + + /** * Toggle entries for the menus */ GtkToggleActionEntry toggle_menu_entries[] = { - {"ToggleNotationToolbar", NULL, N_("_Durations Toolbar"), NULL, N_("Enter single notes/rests of a given duration"), + {"ToggleNotationToolbar", NULL, N_("_Durations Toolbar"), NULL, N_("Show/hide a toolbar which allows you to\ninsert single notes/rests of a given duration at the cursor position"), G_CALLBACK (toggle_notation_toolbar), FALSE} , - {"ToggleRhythmToolbar", NULL, N_("Rhythms & Overlays"), NULL, N_("Enter notes using a prevailing rhythm\nOverlay with pitches"), + {"ToggleRhythmToolbar", NULL, N_("Rhythms and Overlays"), NULL, N_("Show/hide a toolbar which allows\nyou to enter notes using rhythm patterns and\nto overlay these with pitches"), G_CALLBACK (toggle_rhythm_toolbar), FALSE} , - {"TogglePitchRecognition", NULL, N_("_Microphone"), NULL, N_("Enable pitch entry from microphone"), + {"ToggleEntryToolbar", NULL, N_("Note and rest entry"), NULL, N_("Show/hide a toolbar which allows\nyou to enter notes and rests using the mouse"), + G_CALLBACK (toggle_entry_toolbar), FALSE} + , + {"ToggleActionMenu", NULL, N_("Menu of actions"), NULL, N_("Show/hide a menu which is arranged by actions\nThe actions are independent of any mode set"), + G_CALLBACK (toggle_action_menu), FALSE} + , + {"ToggleObjectMenu", NULL, N_("Menu of objects"), NULL, N_("Show/hide a menu which is arranged by objects\nThe actions available for note objects change with the mode"), + G_CALLBACK (toggle_object_menu), FALSE} + , + {"TogglePitchRecognition", NULL, N_("Microphone"), NULL, N_("Enable pitch entry from microphone"), G_CALLBACK (toggle_pitch_recognition), FALSE} , {"ToggleArticulationPalette", NULL, N_("_Articulation Palette"), NULL, NULL, G_CALLBACK (toggle_articulation_palette), FALSE}, - {"ReadOnly", NULL, N_("Read Only"), NULL, "Make score read only", + {"ReadOnly", NULL, N_("Read Only"), NULL, "Make score read only\nNot working", G_CALLBACK (default_mode), FALSE} }; /** - * Radio entries for the menus + * Radio entries for the modes and entry types */ -static GtkRadioActionEntry radio_menu_entries[] = { - {"Classic", NULL, N_("Classic"), NULL, "Denemo Classic note entry mode", +static GtkRadioActionEntry mode_menu_entries[] = { + {"Modeless", NULL, N_("No mode"), NULL, "Access all editing functions without change of mode", + 0}, + {"ClassicMode", NULL, N_("Classic"), NULL, "The original Denemo note entry mode\nUseful for entering notes into chords\nUse the note names to move the cursor\nUse the durations to insert notes", INPUTCLASSIC}, - {"Insert", NULL, N_("Insert"), NULL, N_("Insert notes"), + {"InsertMode", NULL, N_("Insert"), NULL, N_("Mode for inserting notes into the scoreat the cursor position\nUses prevailing duration/rhythm\nUse the durations to set the prevailing duration\nUse the note names to insert the note"), INPUTINSERT}, - {"Edit", NULL, N_("Edit"), NULL, N_("Edit notes/Enter pure rhythms"), + {"EditMode", NULL, N_("Edit"), NULL, N_("Mode for changing the note at cursor (name, duration)\nand to enter notes by duration (rhythms)\nUse the durations to insert notes"), INPUTEDIT} - }; static GtkRadioActionEntry type_menu_entries[] = { - {"Note", NULL, N_("Note"), NULL, N_("Normal Mode"), INPUTNORMAL}, - {"Rest", NULL, N_("Rest"), NULL, N_("Rest Mode"), INPUTREST}, - {"Blank", NULL, N_("Non printing rests"), NULL, N_("Ghost rests"), INPUTBLANK} + {"Note", NULL, N_("Note"), NULL, N_("Normal (note) entry"), INPUTNORMAL}, + {"Rest", NULL, N_("Rest"), NULL, N_("Entering rests not notes"), INPUTREST}, + {"Blank", NULL, N_("Non printing rests"), NULL, N_("Enters rests which will not be printed (just take up space)\nUsed for positioning polyphonic voice entries"), INPUTBLANK} }; struct cbdata @@ -1277,6 +1305,43 @@ g_queue_foreach (gui->prefs->history, addhistorymenuitem, &data); } +static void show_type(GtkWidget *widget, gchar *message) { + g_print("%s%s\n",message, widget?g_type_name(G_TYPE_FROM_INSTANCE(widget)):"NULL widget"); + } +/* set all labels in the hierarchy below widget to use markup */ +static void use_markup(GtkWidget *widget) +{ + // show_type(widget, "Widget Type: "); + + + //g_print("container type %x\n", GTK_IS_CONTAINER(widget)); + //g_print("label type %x\n", GTK_IS_LABEL(widget)); + //g_print("menu item type %x\n",GTK_IS_MENU_ITEM(widget)); + //g_print("tool item type %x\n",GTK_IS_TOOL_ITEM(widget)); + //g_print("descended to use markup on %p\n", widget); + + if(GTK_IS_LABEL(widget)) { + // gtk_label_set_use_underline (GTK_LABEL (widget), FALSE); font_desc gets interpreted in GtkLabel but not GtkAccelLabel hmmm... + //g_print("Before we have %d\n", gtk_label_get_use_markup (widget)); + //gchar * label = gtk_label_get_label(widget); + //g_print("label before is %s\n", label); + + gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); + //g_print("after we have %d\n", gtk_label_get_use_markup (widget)); + //if(*label=='M') + //g_print("seting %p", widget),gtk_label_set_markup(widget, "hello"MUSIC_FONT("33")"ok"), show_type(widget, "should be label: "), label = gtk_label_get_label(widget),g_print("label now %s\n",label) ; + + } + else + if(GTK_IS_CONTAINER(widget)) { + GList *g = gtk_container_get_children (GTK_CONTAINER(widget)); + for(;g;g=g->next) + use_markup(g->data); + if (GTK_IS_MENU_ITEM(widget)) { + use_markup(gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget))); + } + } +} /** * Creates a new view to allow editing of multiple scores during a denemo session @@ -1325,8 +1390,7 @@ gtk_container_add (GTK_CONTAINER (gui->window), main_vbox); gtk_widget_show (main_vbox); - /* This part is taken more-or-less directly from the gtk+ tutorial */ - accel_group = gtk_accel_group_new (); + action_group = gtk_action_group_new ("MenuActions"); /* This also sets gui as the callback data for all the functions in the * menubar, which is precisely what we want. */ @@ -1338,8 +1402,8 @@ G_N_ELEMENTS (toggle_menu_entries), gui); gtk_action_group_add_radio_actions (action_group, - radio_menu_entries, - G_N_ELEMENTS (radio_menu_entries), + mode_menu_entries, + G_N_ELEMENTS (mode_menu_entries), INPUTINSERT/* initial value */, G_CALLBACK(change_mode), gui); @@ -1352,7 +1416,6 @@ - ui_manager = gtk_ui_manager_new (); gui->ui_manager = ui_manager; gtk_ui_manager_set_add_tearoffs (gui->ui_manager, TRUE); @@ -1378,33 +1441,41 @@ gui->menubar = gtk_ui_manager_get_widget (ui_manager, "/MainMenu"); gtk_box_pack_start (GTK_BOX (main_vbox), gui->menubar, FALSE, TRUE, 0); gtk_widget_show (gui->menubar); - menubar = gtk_ui_manager_get_widget (ui_manager, "/ObjectMenu"); - if(menubar) { - gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0); - gtk_widget_show (menubar); - } - populate_opened_recent (gui); + + + populate_opened_recent (gui); toolbar = gtk_ui_manager_get_widget (ui_manager, "/ToolBar"); // The user should be able to decide toolbar style. // But without gnome, there is no (ui) to set this option. gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ); gtk_box_pack_start (GTK_BOX (main_vbox), toolbar, FALSE, TRUE, 0); - GTK_WIDGET_UNSET_FLAGS(toolbar, GTK_CAN_FOCUS); + GTK_WIDGET_UNSET_FLAGS(toolbar, GTK_CAN_FOCUS); gtk_widget_show (toolbar); toolbar = gtk_ui_manager_get_widget (ui_manager, "/EntryToolBar"); //g_print("EntryToolbar is %p\n", toolbar); - gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS); + gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_TEXT); gtk_box_pack_start (GTK_BOX (main_vbox), toolbar, FALSE, TRUE, 0); GTK_WIDGET_UNSET_FLAGS(toolbar, GTK_CAN_FOCUS); - gtk_widget_show (toolbar); + // gtk_widget_show (toolbar); cannot show this until the GtkLabels have become GtkAccelLabels - a gtk bug toolbar = gtk_ui_manager_get_widget (ui_manager, "/RhythmToolBar"); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_TEXT); gtk_box_pack_start (GTK_BOX (main_vbox), toolbar, FALSE, TRUE, 0); + menubar = gtk_ui_manager_get_widget (ui_manager, "/ObjectMenu"); + if(menubar) { + gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0); + } + + + menubar = gtk_ui_manager_get_widget (ui_manager, "/ActionMenu"); + if(menubar) { + gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0); + } + score_and_scroll_hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (main_vbox), score_and_scroll_hbox, TRUE, TRUE, 0); @@ -1427,6 +1498,8 @@ GTK_SIGNAL_FUNC (scorearea_configure_event), gui); gtk_signal_connect (GTK_OBJECT (gui->scorearea), "button_release_event", GTK_SIGNAL_FUNC (scorearea_button_release), gui); + gtk_signal_connect (GTK_OBJECT (gui->scorearea), "button_press_event", + GTK_SIGNAL_FUNC (scorearea_button_press), gui); gtk_widget_set_events (gui->scorearea, (GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK @@ -1506,28 +1579,49 @@ //g_print ("Notation palette %d\n", gui->prefs->notation_palette); toggle_notation_toolbar (NULL, gui); } + + + /* +Accelerators are handled by the GTK+ accelerator map. All actions are assigned an accelerator path (which normally has the form /group-name/action-name) and a shortcut is associated with this accelerator path. All menuitems and toolitems take on this accelerator path. The GTK+ accelerator map code makes sure that the correct shortcut is displayed next to the menu item. +The next loop goes through the actions and connects a signal to help_and_set_accels. + */ GList *g = gtk_action_group_list_actions(action_group); for(;g;g=g->next) { GSList *h = gtk_action_get_proxies (g->data); - gchar * path = g_strdup(gtk_action_get_accel_path (g->data)); + //gchar * path = g_strdup(gtk_action_get_accel_path (g->data)); for(;h;h=h->next) { accel_cb *info = g_malloc0(sizeof(accel_cb)); info->gui = gui; info->action = g->data; - - gint type = gtk_image_menu_item_get_type (); - //g_print("%x %x path %s type is %s\n",G_TYPE_FROM_INSTANCE(h->data), type, path, g_type_name(G_TYPE_FROM_INSTANCE(h->data))); - //FIXME connect only to menuitems not toolitems??? + //gint type = gtk_image_menu_item_get_type (); + //FIXME These are all GtkImageMenuItems, but those that are for menus need a different callback here as they cannot have accelerators g_signal_connect(h->data, "button-press-event", G_CALLBACK (help_and_set_accels), info); } } - + use_markup(main_vbox);/* set all the labels to use markup so that we can use the music font. Be aware this means you cannot use labels involving "&" "<" and ">" and so on without escaping them +FIXME labels in toolitems are not correct until you do NewWindow. +Really we should change the default for the class.*/ // g_print("Turning on the modes\n"); gui->mode = INPUTINSERT | INPUTNORMAL; set_status_bar(gui); - + gui->InsertModeMenu = gtk_ui_manager_get_widget (gui->ui_manager, "/ObjectMenu/InsertModeNote"); + gui->EditModeMenu = gtk_ui_manager_get_widget (gui->ui_manager, "/ObjectMenu/EditModeNote"); + gui->ClassicModeMenu = gtk_ui_manager_get_widget (gui->ui_manager, "/ObjectMenu/ClassicModeNote"); + gui->ModelessMenu = gtk_ui_manager_get_widget (gui->ui_manager, "/ObjectMenu/NoteProperties"); + gtk_widget_show (gui->InsertModeMenu); + gtk_widget_hide (gui->EditModeMenu); + gtk_widget_hide (gui->ClassicModeMenu); + gtk_widget_hide (gui->ModelessMenu); + gtk_widget_hide (gtk_ui_manager_get_widget (ui_manager, "/ActionMenu"));// make a prefs thing + gtk_widget_hide (gtk_ui_manager_get_widget (ui_manager, "/EntryToolBar"));// otherwise markup is not set on the labels + + {GtkToggleAction *action; + action = gtk_ui_manager_get_action (gui->ui_manager, "/MainMenu/ViewMenu/ToggleObjectMenu"); + gtk_toggle_action_set_active (action, TRUE); + toggle_object_menu (NULL, gui); + } g_free (error); }