Hi,
I am writing a reaction prefs program and want to have a file gadget that shows a button and a string box next to it which contains the current path/file that has been selected.
I create this using the following:
LAYOUT_AddChild, OBJ(OBJ_DISKRSTRING)=GetFileObject,
GA_RelVerify, TRUE,
STRINGA_MinVisible, 36,
GA_ID,OBJ_DISKRSTRING,
End,
And this gives me exactly what I want. BUT....I cannot find any way to populate the "string" portion of the gadget. With a typical string gadget I would use something like this:
SetGadgetAttrs(GAD(OBJ_DISKRSTRING),
window, NULL, // window, requester
STRINGA_TextVal, filename,
TAG_DONE);
but this does not work with the GetFileObject type.
So,
1) How do I have this gadget how me a string with text for the path/file when it is created?
2) How do I have the text in the string part of this gadget update when I change the text for path/file?
3) How do I change the size of the string text box for this gadget.
I have spent a couple hours looking at the autodocs and have not discovered the answer yet.
Thank you!
STRINGA_ attributes are for string gadgets. The GetFile gadget only listens to GETFILE_ attributes.
1) set GETFILE_FullFile or GETFILE_Drawer and GETFILE_File.
2) use SetAttrs and RefreshGList. SetGadgetAttrs does not seem to work.
3) the size should automatically be adjusted to the size of the surrounding layout group.
Aha...I thought that the GETFILE_FullFile and GETFILE_File were used only for the requester window that opens when you go to select a file. That works.
Thank you!
As for the size, if I increase the width of the window, ALL of the gadgets increase in size, so the filelister string box only increases a little bit. Is there a way to stop my slider gadgets and button gadgets from stretching when I increase the size of my window?
The checkbox already works that way. That sems to be it's default nature. What attribute do I need to set to keep my slider and buttons from being scalable. They are not image mapped, just simple gadgets.
Thanks!
@AmigaOneFan
Set CHILD_WeightedWidth and/or CHILD_WeightedHeight to 0. F.e. if you want an object to be always only be displayed at it's minimum size in the layout then just add it like this:
@salass00
The weighted height/width are passed as child tags so they must be put AFTER the object's TAG_DONE (or "End", if you're using the ReAction macros). As some less experienced programmers tend to put the CHILD_ tags inside the object definition (which is wrong), the following is a more illustrative example:
AmigaOne X5000-020 / 2GB RAM / Sapphire Pulse Radeon RX 560 / AmigaOS 4.1 Final Edition Update 2
@salass00
@trixie
Awesome. That's exactly what I needed!
Thanks!
...Now...can anyone tell me how to trigger an event when a particular program name is started in intuition? For example, if someone starts a program named "DPaint", no matter what path is is started from, I want to trigger an event WHEN IT IS FIRST STARTED only.
Thanks!
Another question about the GetFileObject gadgets.
I notice that when I have GA_RelVerify TRUE then if I select the disk icon I get an event for that object.
BUT....I do not get an event when I click in the filename string gadget for the GetFileObject and edit the string manually without opening a filerequester.
Is there a way to have an event triggered when the string edit part of the GetFile object is changed?
Thanks!
Yes, as the autodocs say the gadget issues the OM_UPDATE method of its ICA_TARGET. You can set ICA_TARGET to ICTARGET_IDCMPUPDATE so that the method call is turned into an IDCMP_IDCMPUPDATE message which is sent to your window. In order to catch this message you need to set up a WINDOW_IDCMPHook and set WINDOW_IDCMPHookBits to IDCMP_IDCMPUPDATE.
Esample: http://thomas-rapp.homepage.t-online.de/examples/getfile.c
@Thomas,
Thank you for the getfile example. This makes a lot more sense now.
Okay...another question about the GETFILE parameters.
When I set the flag GETFILE_AllowEmptyFileSelection, TRUE, I do not see any change in behavior of my file requester. When I select an empty file by using cancel, shouldn't it return a success instead of a fail if this is set?
For example....
getfile = NewObject(GETFILE_GetClass(), NULL,
GETFILE_TitleText, sound_requester_strings[num],
GETFILE_ReadOnly, TRUE,
GETFILE_RejectIcons, TRUE,
GETFILE_DoPatterns, TRUE,
GETFILE_AllowEmptyFileSelection, TRUE, // SAC- test!!!
GETFILE_AcceptPattern,filetype,
GETFILE_Pattern, filetype,
TAG_DONE);
if (getfile) // success
{
// got the file here....or an empty name if empty file selected?
}
Shouldn;t this go into the success code with AllowEmptyFileSelection set?
NewObject creates the gadget, it does not open the requester. You have to call the GFILE_REQUEST method to open the requester.
GFILE_REQUEST returns FALSE if the user clicked Cancel and TRUE if the user clicked OK.
GETFILE_AllowEmptyFileSelection,FALSE will not allow the user to click OK if the file field is not filled.
@AmigaOneFan
I'm not sure Intuition can do that. But you can register your app with the Application Library, set "REGAPP_AppNotifications, TRUE" at registration time, and your app will then receive an APPLIBMT_AppRegister notification whenever some other application starts and registers.
See the Application Library page in the AmigaOS4 Wiki to learn how to use the library and its notification system.
AmigaOne X5000-020 / 2GB RAM / Sapphire Pulse Radeon RX 560 / AmigaOS 4.1 Final Edition Update 2
Please don't discuss off-topic. This has been answered in this thread: http://www.os4coding.net/forum/making-desktop-magic-program-os4
@thomas,
Yes, of course! The call to create the object will return an error if the object cannot be created, it is the call to open the requester that returns the status determined by AllowEmptyFileSelection. What was I thinking!?!
Sorry for the dumb question. Thank you for your patience.
@thomas wrote "Please don't discuss off-topic."
Sorry...that was my fault. I asked the same question here and in another thread as well.