/* insert a duplicate note and tie to it */ void tie_notes_key (GtkAction* action, DenemoScriptParam *param) { DenemoObject *curObj = (DenemoObject *) (Denemo.project->movement->currentobject ? Denemo.project->movement->currentobject->data : NULL); /* Equals - toggle whether this note is tied */ if (curObj && curObj->type == CHORD && ((chord *) curObj->object)->notes) { if (Denemo.project->movement->cursor_appending) { DenemoMovement *si = Denemo.project->movement; gint tickspermeasure = WHOLE_NUMTICKS * ((DenemoMeasure*)si->currentmeasure->data)->timesig->time1 / ((DenemoMeasure*)si->currentmeasure->data)->timesig->time2; si->cursoroffend = (curObj->starttickofnextnote >= tickspermeasure); insertion_point (Denemo.project->movement); object_insert (Denemo.project, dnm_clone_object (curObj)); movecursorleft (NULL, NULL); movecursorleft (NULL, NULL); toggle_tie (NULL, NULL); movecursorright (NULL, NULL); movecursorright (NULL, NULL); } else { object_insert (Denemo.project, dnm_clone_object (curObj)); movecursorleft (NULL, NULL); ((chord *) ((DenemoObject *)Denemo.project->movement->currentobject->data)->object)->is_tied = 1; movecursorright (NULL, NULL); movecursorright (NULL, NULL); } } }
static GtkWidget* sw_make_sg(char *name, GtkSizeGroup *sg) { SettingsWidget *sw = sw_lookup(name); switch (sw->type) { case SW_TOGGLE: sw->widget = gtk_check_button_new_with_mnemonic(_(sw->caption)); toggle_tie(sw); return sw->widget; case SW_RADIO: sw->widget = gtk_radio_button_new_with_mnemonic(NULL, _(sw->caption)); radio_tie(sw); return sw->widget; case SW_TEXT: sw->widget = gtk_entry_new(); text_tie(sw); return labelled_box_new_sg(_(sw->caption), sw->widget, sg); case SW_INTEGER: sw->widget = gtk_entry_new(); gtk_entry_set_width_chars(GTK_ENTRY(sw->widget), 4); integer_tie(sw); return labelled_box_new(_(sw->caption), sw->widget); case SW_SPIN_INTEGER: { gdouble default_value = *(gint*)sw->conf; GtkObject *adj = gtk_adjustment_new(default_value, /* client code should override these */ G_MINDOUBLE, G_MAXDOUBLE, 1.0, 1.0, 0); sw->widget = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1, 1); } spin_integer_tie(sw); return labelled_box_new_expand(_(sw->caption), sw->widget, FALSE); case SW_COMBO: sw->widget = gtk_combo_new(); combo_tie(sw); return labelled_box_new(_(sw->caption), sw->widget); case SW_COMMAND: return command_make(sw); case SW_CUSTOM: if (sw->caption && sw->widget) return labelled_box_new(_(sw->caption), sw->widget); break; default: break; } return NULL; }