1 /***************************************************************************
3 BetterString.mcc - A better String gadget MUI Custom Class
4 Copyright (C) 1997-2000 Allan Odgaard
5 Copyright (C) 2005-2013 by BetterString.mcc Open Source Team
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
17 BetterString class Support Site: http://www.sf.net/projects/bstring-mcc/
21 ***************************************************************************/
23 #include <libraries/asl.h>
24 #include <libraries/mui.h>
25 #include <libraries/iffparse.h>
26 #include <clib/alib_protos.h>
27 #include <proto/intuition.h>
28 #include <proto/muimaster.h>
29 #include <proto/exec.h>
30 #include <proto/utility.h>
34 #if defined(__amigaos4__)
35 struct Library
*DiskfontBase
= NULL
;
36 struct Library
*GfxBase
= NULL
;
37 struct Library
*IntuitionBase
= NULL
;
38 struct Library
*MUIMasterBase
= NULL
;
39 struct Library
*LayersBase
= NULL
;
40 struct Library
*LocaleBase
= NULL
;
41 struct Library
*UtilityBase
= NULL
;
42 struct Library
*KeymapBase
= NULL
;
43 #elif defined(__MORPHOS__)
44 struct Library
*DiskfontBase
= NULL
;
45 struct Library
*GfxBase
= NULL
;
46 struct IntuitionBase
*IntuitionBase
= NULL
;
47 struct Library
*MUIMasterBase
= NULL
;
48 struct Library
*LayersBase
= NULL
;
49 struct Library
*LocaleBase
= NULL
;
50 struct Library
*UtilityBase
= NULL
;
51 struct Library
*KeymapBase
= NULL
;
53 struct Library
*DiskfontBase
= NULL
;
54 struct Library
*GfxBase
= NULL
;
55 struct IntuitionBase
*IntuitionBase
= NULL
;
56 struct Library
*MUIMasterBase
= NULL
;
57 struct Library
*LayersBase
= NULL
;
58 struct Library
*LocaleBase
= NULL
;
60 struct UtilityBase
*UtilityBase
= NULL
;
62 struct Library
*UtilityBase
= NULL
;
64 struct Library
*KeymapBase
= NULL
;
67 #if defined(__amigaos4__)
68 struct DiskfontIFace
*IDiskfont
= NULL
;
69 struct GraphicsIFace
*IGraphics
= NULL
;
70 struct MUIMasterIFace
*IMUIMaster
= NULL
;
71 struct IntuitionIFace
*IIntuition
= NULL
;
72 struct LayersIFace
*ILayers
= NULL
;
73 struct LocaleIFace
*ILocale
= NULL
;
74 struct UtilityIFace
*IUtility
= NULL
;
75 struct KeymapIFace
*IKeymap
= NULL
;
78 DISPATCHERPROTO(_Dispatcher
);
82 if((DiskfontBase
= OpenLibrary("diskfont.library", 38)) &&
83 GETINTERFACE(IDiskfont
, DiskfontBase
))
84 if((GfxBase
= OpenLibrary("graphics.library", 38)) &&
85 GETINTERFACE(IGraphics
, GfxBase
))
86 if((IntuitionBase
= (APTR
)OpenLibrary("intuition.library", 38)) &&
87 GETINTERFACE(IIntuition
, IntuitionBase
))
88 if((KeymapBase
= OpenLibrary("keymap.library", 37)) &&
89 GETINTERFACE(IKeymap
, KeymapBase
))
90 if((LocaleBase
= OpenLibrary("locale.library", 38)) &&
91 GETINTERFACE(ILocale
, LocaleBase
))
92 if((LayersBase
= OpenLibrary("layers.library", 38)) &&
93 GETINTERFACE(ILayers
, LayersBase
))
94 if((UtilityBase
= (APTR
)OpenLibrary("utility.library", 38)) &&
95 GETINTERFACE(IUtility
, UtilityBase
))
96 if((MUIMasterBase
= OpenLibrary("muimaster.library", MUIMASTER_VMIN
)) &&
97 GETINTERFACE(IMUIMaster
, MUIMasterBase
))
98 if(StartClipboardServer() == TRUE
)
99 if(CreateSharedPool() == TRUE
)
101 struct MUI_CustomClass
*mcc
;
102 Object
*a1
, *a2
, *app
, *window
, *bstring
, *bstring2
, *bpos
, *ssize
, *button
, *numbutton
;
103 const char *classes
[] = {"BetterString.mcp", NULL
};
109 mcc
= MUI_CreateCustomClass(NULL
, "Area.mui", NULL
, sizeof(struct InstData
), ENTRY(_Dispatcher
));
111 app
= ApplicationObject
,
112 MUIA_Application_Author
, "BetterString.mcc Open Source Team",
113 MUIA_Application_Base
, "BetterString-Test",
114 MUIA_Application_Copyright
, "(C) 2005-2013 by BetterString.mcc Open Source Team",
115 MUIA_Application_Description
, "BetterString.mcc demonstration program",
116 MUIA_Application_Title
, "BetterString-Test",
117 MUIA_Application_Version
, "$VER: BetterString-Demo V1.0 (18.05.2007)",
118 MUIA_Application_UsedClasses
, classes
,
120 MUIA_Application_Window
, window
= WindowObject
,
121 MUIA_Window_Title
, "BetterString-Test",
122 MUIA_Window_ID
, MAKE_ID('M','A','I','N'),
123 MUIA_Window_RootObject
, VGroup
,
126 MUIA_Popstring_String
, NewObject(mcc
->mcc_Class
, NULL
, StringFrame
, MUIA_BetterString_NoInput
, TRUE
, MUIA_CycleChain
, TRUE
, End
,
127 MUIA_Popstring_Button
, MUI_MakeObject(MUIO_PopButton
, MUII_PopUp
),
128 MUIA_Popasl_Type
, ASL_FontRequest
,
131 Child
, ColGroup(2), StringFrame
,
132 MUIA_Background
, MUII_GroupBack
,
135 MUIA_Text_Contents
, "\33rName:",
137 Child
, a1
= (Object
*)NewObject(mcc
->mcc_Class
, NULL
,
138 MUIA_CycleChain
, TRUE
,
139 MUIA_Background
, MUII_GroupBack
,
140 MUIA_Frame
, MUIV_Frame_None
,
141 MUIA_String_AdvanceOnCR
, TRUE
,
142 MUIA_String_MaxLen
, 10,
143 MUIA_ObjectID
, MAKE_ID('N','A','M','E'),
147 MUIA_Text_Contents
, "\33rStreet:",
149 Child
, a2
= (Object
*)NewObject(mcc
->mcc_Class
, NULL
,
150 MUIA_CycleChain
, TRUE
,
151 MUIA_Background
, MUII_GroupBack
,
152 MUIA_Frame
, MUIV_Frame_None
,
153 MUIA_String_AdvanceOnCR
, TRUE
,
154 MUIA_ObjectID
, MAKE_ID('S','T','R','T'),
158 MUIA_Text_Contents
, "\33rZip, City:",
160 Child
, NewObject(mcc
->mcc_Class
, NULL
,
161 MUIA_CycleChain
, TRUE
,
162 MUIA_Background
, MUII_GroupBack
,
163 MUIA_Frame
, MUIV_Frame_None
,
164 MUIA_String_AdvanceOnCR
, TRUE
,
165 MUIA_ObjectID
, MAKE_ID('C','I','T','Y'),
170 MUIA_Font
, MUIV_Font_Tiny
,
171 MUIA_Text_Contents
, "\33cBetterString.mcc",
173 Child
, NewObject(mcc
->mcc_Class
, NULL
,
175 MUIA_CycleChain
, TRUE
,
176 MUIA_String_Secret
, TRUE
,
177 // MUIA_String_MaxLen, 20,
178 MUIA_String_AdvanceOnCR
, TRUE
,
179 MUIA_BetterString_StayActive
, TRUE
,
180 // MUIA_String_Accept, "0123456789",
181 MUIA_String_Contents
, "This is a wonderful example string!",
183 Child
, NewObject(mcc
->mcc_Class
, NULL
,
185 MUIA_CycleChain
, TRUE
,
186 MUIA_BetterString_InactiveContents
, "This is a wonderful example string!",
188 Child
, NewObject(mcc
->mcc_Class
, NULL
,
190 MUIA_CycleChain
, TRUE
,
191 MUIA_String_Secret
, TRUE
,
192 MUIA_BetterString_InactiveContents
, "This is a wonderful example string!",
195 MUIA_Font
, MUIV_Font_Tiny
,
196 MUIA_Text_Contents
, "\33cCentered",
198 Child
, bstring
= (Object
*)NewObject(mcc
->mcc_Class
, NULL
,
200 MUIA_Font
, MUIV_Font_Big
,
202 MUIA_String_AdvanceOnCR
, TRUE
,
203 MUIA_String_Format
, MUIV_String_Format_Center
,
204 MUIA_String_Contents
, "This is a wonderful example string!",
205 MUIA_CycleChain
, TRUE
,
208 MUIA_Font
, MUIV_Font_Tiny
,
209 MUIA_Text_Contents
, "\33cRight-Aligned",
211 Child
, bstring2
= NewObject(mcc
->mcc_Class
, NULL
,
212 MUIA_CycleChain
, TRUE
,
214 MUIA_String_AdvanceOnCR
, TRUE
,
215 MUIA_String_Contents
, "This is a wonderful example string!",
216 MUIA_String_Format
, MUIV_String_Format_Right
,
219 MUIA_Font
, MUIV_Font_Tiny
,
220 MUIA_Text_Contents
, "\33cStringObject",
224 MUIA_String_AdvanceOnCR
, TRUE
,
225 MUIA_String_Contents
, "This is a standard StringObject",
226 MUIA_String_Format
, MUIV_String_Format_Right
,
227 MUIA_String_MaxLen
, 1024,
228 MUIA_CycleChain
, TRUE
,
230 Child
, (Object
*)NewObject(mcc
->mcc_Class
, NULL
,
232 MUIA_String_AdvanceOnCR
, TRUE
,
233 MUIA_String_Contents
, "Select on activate",
234 MUIA_String_MaxLen
, 1024,
235 MUIA_CycleChain
, TRUE
,
236 MUIA_BetterString_SelectOnActive
, TRUE
,
239 Child
, button
= SimpleButton("Insert"),
240 Child
, bpos
= SliderObject
,
241 MUIA_Slider_Horiz
, TRUE
,
242 MUIA_Numeric_Max
, 60,
244 Child
, ssize
= SliderObject
,
245 MUIA_Slider_Horiz
, TRUE
,
246 MUIA_Numeric_Min
, -30,
247 MUIA_Numeric_Max
, 30,
248 MUIA_Numeric_Value
, 0,
250 Child
, numbutton
= NumericbuttonObject
,
251 MUIA_Numeric_Min
, -30,
252 MUIA_Numeric_Max
, 30,
253 MUIA_Numeric_Value
, 0,
265 DoMethod(app
, MUIM_Application_Load
, MUIV_Application_Load_ENV
);
267 DoMethod(a1
, MUIM_Notify
, MUIA_String_Contents
, MUIV_EveryTime
, a2
, 3, MUIM_Set
, MUIA_String_Contents
, MUIV_TriggerValue
);
268 DoMethod(a2
, MUIM_Notify
, MUIA_String_Contents
, MUIV_EveryTime
, a1
, 3, MUIM_Set
, MUIA_String_Contents
, MUIV_TriggerValue
);
270 DoMethod(ssize
, MUIM_Notify
, MUIA_Numeric_Value
, MUIV_EveryTime
, numbutton
, 3, MUIM_Set
, MUIA_Numeric_Value
, MUIV_TriggerValue
);
271 DoMethod(bpos
, MUIM_Notify
, MUIA_Numeric_Value
, MUIV_EveryTime
, bstring
, 3, MUIM_Set
, MUIA_String_BufferPos
, MUIV_TriggerValue
);
272 DoMethod(ssize
, MUIM_Notify
, MUIA_Numeric_Value
, MUIV_EveryTime
, bstring
, 3, MUIM_Set
, MUIA_BetterString_SelectSize
, MUIV_TriggerValue
);
273 DoMethod(button
, MUIM_Notify
, MUIA_Pressed
, FALSE
, bstring
, 3, MUIM_BetterString_Insert
, "*Test*", MUIV_BetterString_Insert_BufferPos
);
274 DoMethod(window
, MUIM_Notify
, MUIA_Window_CloseRequest
, TRUE
, MUIV_Notify_Application
, 2, MUIM_Application_ReturnID
, MUIV_Application_ReturnID_Quit
);
276 set(bstring
, MUIA_BetterString_KeyDownFocus
, bstring2
);
277 set(bstring2
, MUIA_BetterString_KeyUpFocus
, bstring
);
279 set(window
, MUIA_Window_ActiveObject
, bstring
);
280 set(window
, MUIA_Window_DefaultObject
, bstring
);
281 set(window
, MUIA_Window_Open
, TRUE
);
283 while((LONG
)DoMethod(app
, MUIM_Application_NewInput
, &sigs
) != MUIV_Application_ReturnID_Quit
)
287 sigs
= Wait(sigs
| SIGBREAKF_CTRL_C
);
288 if(sigs
& SIGBREAKF_CTRL_C
)
292 DoMethod(app
, MUIM_Application_Save
, MUIV_Application_Save_ENV
);
294 MUI_DisposeObject(app
);
296 MUI_DeleteCustomClass(mcc
);
299 DROPINTERFACE(IMUIMaster
);
300 CloseLibrary(MUIMasterBase
);
301 MUIMasterBase
= NULL
;
305 ShutdownClipboardServer();
309 DROPINTERFACE(IUtility
);
310 CloseLibrary((struct Library
*)UtilityBase
);
315 DROPINTERFACE(ILayers
);
316 CloseLibrary(LayersBase
);
321 DROPINTERFACE(ILocale
);
322 CloseLibrary(LocaleBase
);
327 DROPINTERFACE(IKeymap
);
328 CloseLibrary(KeymapBase
);
333 DROPINTERFACE(IIntuition
);
334 CloseLibrary((struct Library
*)IntuitionBase
);
339 DROPINTERFACE(IGraphics
);
340 CloseLibrary(GfxBase
);
345 DROPINTERFACE(IDiskfont
);
346 CloseLibrary(DiskfontBase
);