4 ** Copyright (C) 1994,95,96 Bernardo Innocenti
6 ** Clear panel handling functions.
9 #include <intuition/intuition.h>
10 #include <intuition/gadgetclass.h>
11 #include <libraries/gadtools.h>
13 #include <proto/exec.h>
14 #include <proto/intuition.h>
15 #include <proto/gadtools.h>
16 #include <proto/xmodule.h>
18 #include "XModulePriv.h"
37 /*****************************/
38 /* Local function prototypes */
39 /*****************************/
41 static void ClearPerformClicked (struct WinUserData *wud);
46 XDEF struct ClearSwitches ClearSwitches = { 1, 1, 1 };
50 static LONG ClearArgs[] =
52 VGROUP_KIND, BBFT_RIDGE,
53 CHECKBOX_KIND, NULL, MSG_CLR_SEQUENCE_GAD, (LONG)&ClearSwitches.ClearSeq, TAG_DONE,
54 CHECKBOX_KIND, NULL, MSG_CLR_INSTRUMENTS_GAD, (LONG)&ClearSwitches.ClearInstr, TAG_DONE,
55 CHECKBOX_KIND, NULL, MSG_CLR_PATTERNS_GAD, (LONG)&ClearSwitches.ClearPatt, TAG_DONE,
57 BUTTON_KIND, (LONG)ClearPerformClicked, MSG_CLEARMOD_GAD, TAG_DONE,
63 XDEF LONG ClearWinTags[] =
65 XMWIN_LayoutArgs, (LONG)ClearArgs,
66 XMWIN_GCount, Clear_CNT,
67 XMWIN_Title, MSG_CLEAR_TITLE,
68 XMWIN_WindowFlags, WFLG_CLOSEGADGET,
69 XMWIN_IDCMPFlags, CHECKBOXIDCMP | BUTTONIDCMP | IDCMP_CLOSEWINDOW | IDCMP_REFRESHWINDOW,
70 XMWIN_HelpNode, (LONG)"Clear",
76 GLOBALCALL void UpdateClearSwitches (void)
78 struct WinUserData *wud = WDescr[WID_CLEAR].Wud;
82 GD_ClearSequence, ClearSwitches.ClearSeq,
83 GD_ClearInstruments, ClearSwitches.ClearInstr,
84 GD_ClearPatterns, ClearSwitches.ClearPatt,
93 static void ClearPerformClicked (struct WinUserData *wud)
98 if (si = xmLockActiveSong (SM_EXCLUSIVE))
100 if (ClearSwitches.ClearPatt)
102 for (i = si->NumPatterns - 1 ; i >= 0 ; i--)
103 xmRemPattern (si, i, 0);
105 xmAddPatternA (si, NULL);
108 if (ClearSwitches.ClearInstr)
110 for (i = 1 ; i <= si->LastInstrument ; i++)
111 xmRemInstrument (si, i);
114 if (ClearSwitches.ClearSeq)
116 xmSetSongLen (si, 1);
120 ReleaseSemaphore (&si->Lock);