UNPKG

smoosic

Version:

<sub>[Github site](https://github.com/Smoosic/smoosic) | [source documentation](https://smoosic.github.io/Smoosic/release/docs/modules.html) | [change notes](https://aarondavidnewman.github.io/Smoosic/changes.html) | [application](https://smoosic.github.i

155 lines 4.34 kB
import { SuiMenuBase, SuiMenuParams, MenuDefinition, SuiConfiguredMenuOption, customizeMenuOptionsFcn, SuiConfiguredMenu } from './menu'; import { createAndDisplayDialog } from '../dialogs/dialog'; import { SuiEndingsDialog } from '../dialogs/endings'; import { SuiInsertMeasures } from '../dialogs/addMeasure'; import { SuiMeasureDialog } from '../dialogs/measureFormat'; import { SmoMeasureFormat } from '../../smo/data/measureModifiers'; declare var $: any; /** * @category SuiMenu */ export class SuiMeasureMenu extends SuiConfiguredMenu { static defaults: MenuDefinition = { label: 'Measure Menu', menuItems: [], } constructor(params: SuiMenuParams) { super(params, 'Notes', SuiMeasureMenuConfig); } } /** * @category SuiMenu */ const formatMeasureMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { createAndDisplayDialog(SuiMeasureDialog, { view: menu.view, completeNotifier: menu.completeNotifier, startPromise: menu.closePromise, eventSource: menu.eventSource, tracker: menu.tracker, ctor: 'SuiMeasureDialog', id: 'measure-dialog', modifier: null }); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Format Measure', value: 'formatMeasure' } } /** * @category SuiMenu */ const addMeasureMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { createAndDisplayDialog(SuiInsertMeasures, { view: menu.view, completeNotifier: menu.completeNotifier, startPromise: menu.closePromise, eventSource: menu.eventSource, tracker: menu.tracker, ctor: 'SuiMeasureDialog', id: 'insert-dialog', modifier: null }); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Add Measures', value: 'addMeasures' } } /** * @category SuiMenu */ const endingsMeasureMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { createAndDisplayDialog(SuiEndingsDialog, { view: menu.view, completeNotifier: menu.completeNotifier, startPromise: menu.closePromise, eventSource: menu.eventSource, tracker: menu.tracker, ctor: 'SuiEndingsDialog', id: 'endings-dialog', modifier: null }); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Endings', value: 'endings' } } /** * @category SuiMenu */ const deleteSelectedMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { menu.view.deleteMeasure(); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Delete Selected Measures', value: 'deleteSelected' } } /** * @category SuiMenu */ const resetSystemBreaksMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { await menu.view.removeSystemBreaks(); }, display: (menu: SuiMenuBase) => { const selections = menu.tracker.getSelectedMeasures(); for (let i = 0; i < selections.length; ++i) { const sel = selections[i]; if (sel.measure.format.systemBreak) { return true; } } return false; }, menuChoice: { icon: '', text: 'Reset system breaks', value: 'resetFormatting' } } /** * @category SuiMenu */ const resetFormattingMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { await menu.view.setMeasureFormat(new SmoMeasureFormat(SmoMeasureFormat.defaults)); }, display: (menu: SuiMenuBase) => { const selections = menu.tracker.getSelectedMeasures(); for (let i = 0; i < selections.length; ++i) { const selection = selections[i]; if (!selection.measure.format.isDefault) { return true; } } return false; }, menuChoice: { icon: '', text: 'Reset formatting selection', value: 'resetFormatting' } } /** * @category SuiMenu */ const SuiMeasureMenuConfig: SuiConfiguredMenuOption[] = [ addMeasureMenuOption, formatMeasureMenuOption, endingsMeasureMenuOption, deleteSelectedMenuOption, resetSystemBreaksMenuOption, resetFormattingMenuOption];