void toggle_acciaccatura (DenemoAction * action, DenemoScriptParam * param) { DenemoProject *gui = Denemo.project; DenemoMovement *si = gui->movement; GET_1PARAM (action, param, grace); DenemoObject *curmudelaobj = (DenemoObject *) (gui->movement->currentobject ? gui->movement->currentobject->data : NULL); if (curmudelaobj && (curmudelaobj->type == CHORD)) { if (query) param->status = ((chord *) curmudelaobj->object)->is_grace, g_string_assign (param->string, "acciaccatura"); else { store_for_undo_change (si, curmudelaobj); ((chord *) curmudelaobj->object)->is_grace ^= ACCIACCATURA; displayhelper (Denemo.project); } //g_debug("now %x\n", ((chord *)curmudelaobj->object)->is_grace); } }
/** * Move cursor by amount or in EDIT mode change the note by the amount */ static void octave_shift_key (DenemoScriptParam *param, gint amount) { if (((DenemoStaff *) Denemo.project->movement->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 (Denemo.project->mode & (INPUTEDIT)) { if (Denemo.project->movement->currentobject) { objnode *thenote = nearestnote (Denemo.project->movement->currentobject->data, Denemo.project->movement->cursor_y); if (thenote) { note copy = *((note *) thenote->data); GList *direcs = ((note *) thenote->data)->directives; store_for_undo_change (Denemo.project->movement, Denemo.project->movement->currentobject->data); Denemo.project->movement->undo_guard++; delete_chordnote (Denemo.project); //does not delete the directives. Denemo.project->movement->cursor_y = copy.mid_c_offset + amount; insert_chordnote (Denemo.project); changeenshift (Denemo.project->movement->currentobject->data, Denemo.project->movement->cursor_y, copy.enshift); thenote = nearestnote (Denemo.project->movement->currentobject->data, Denemo.project->movement->cursor_y); if (thenote) ((note *) thenote->data)->directives = direcs; Denemo.project->movement->undo_guard--; score_status (Denemo.project, TRUE); } } } else Denemo.project->movement->cursor_y += amount; } if(!Denemo.non_interactive) gtk_widget_queue_draw(Denemo.scorearea); }