Who's Online |
63 user(s) are online ( 41 user(s) are browsing Forums)
Members: 0
Guests: 63
more...
|
|
|
|
|
SketchBlock XMas Card Video 2025
|
Posted on: 12/21 20:46
#1
|
Home away from home 
|
This years video all done on the X1000 with SketchBlock, HD-Rec, Audio Evolution and Blender. Merry Christmas. https://youtu.be/NeYakS5eN4I
|
|
|
|
|
|
Re: Deleting complete pixel lines in ImageFx4?
|
Posted on: 2025/9/30 15:07
#2
|
Home away from home 
|
@Gregor,
There is no simple way to do it as it's not a simple thing to do, or a common image manipulation operation.
YOu might script it with arexx,
You would need to duplicate the buffer, crop the top half, crop again below the pixels you want to lose and then adjust the sizes and offsets before flattening the result.
|
|
|
|
|
|
Re: AmiBrowser: new modern web browser
|
Posted on: 2025/8/9 17:22
#3
|
Home away from home 
|
@kas1e Quote: @Andy If this is not secret, what was the reason to go Chromium way, and not Webkit one for example ?
Didn't notice this in your original post, or rather when I originally read it. The reason we went with this, ie CEF, is that is is specifically designed for this purpose, ie to embed chrom(e|ium) in third party applications, it has an extensive API, allowing you to intercept and trigger browser actions and so implement your own browser around it. It's also pretty bang up to date, being based on chromium 138 !
|
|
|
|
|
|
Re: AmiBrowser: new modern web browser
|
Posted on: 2025/8/8 15:07
#4
|
Home away from home 
|
@joerg
Not really, this no WRP type setup. Not that there would be anything wrong with that, as a project.
Edited by broadblues on 2025/8/8 15:46:23
|
|
|
|
|
|
Re: AmiBrowser: new modern web browser
|
Posted on: 2025/8/8 15:04
#5
|
Home away from home 
|
@interrogative Quote: If this is merely Linux Chromium, isn't it misleading to say it's a 68k application? Or can they claim it solely based on the MUI wrapper?
The news release clearly mentions arm libraries, it's obviously a hybrid program, with no attempt to claim other wise, the 68k side would run on any amiga 68k installation up to the point where it couldn't find the need arm library and then quietly quit. Maybe a later version will give proper error report  It's always been our stated intention to make use of the arm processor via "arm libraries" up till now this has included specialist gfx acceleration (main alpha blending related, but also some format conversion code) and picture file format decoding in the datatypes. This takes things up a notch! For information: This project contains three / four layers layers. 1. The back end is CEF and is an unmodified production build so all source code for that can be found in the relevant repositories 2a: A mainly C++ Arm64 layer that provides the needed classes to control the browser and quite lot of other stuff. This is written mostly from scratch based largely on the simples example client code, informed by the more complex (insanely complex!) full example cefclient, but very little like for like code because obvious the GUI is not Gtk , so everything needs reinterpreting for... 2b: An amiga like API using messages and BOOPSI ish methods that enables the Arm side and 68k side to communicate, which straddles the arm and 68k sides. Lots of fun with endianess, pointer sizes, pixel formats etc to overcome. Some inline arm64 assembler helps with that. 3: An MUI application and private custom class that interacts with the above and provides the 68k side of the interaction API, sends input events etc to the backend whilst fetching and displaying the rendered pages. The end result will be tightly integrated with the 68k environment, allowing file downloads, loading of local files, rtc. The 68k side will handle bookmarking, long term browser history (rather than per session back and forth) and as much more as we have time for.
|
|
|
|
|
|
Re: NULL, 0xFFFFFFFF and Exec: Real vs QEMU
|
Posted on: 2025/6/24 10:03
#6
|
Home away from home 
|
@kas1e Quote: You can specify a value of -1 (i.e. (STRPTR) ~0) for either of the title pointers. This designates that you want Intuition to leave the current setting of that particular title alone, and modify only the other one. Of course, you could set both to -1.
I see jabirulo got there first.... Quote: Yeah, read it all yesterday already. Is it only SetWindowTitles allowing -1 or there are more ? I see NULL is acceptable offten, but -1 ?
It's not uncommon for a few special values for strings, we mainly get away with this due to the signed 32 bit memory space, so 0xFFFFFFFF will "never" be a valid pointer to a string. But check with the autodocs of each function / tag, some places bad things will happen
|
|
|
|
|
|
Re: boopsi: how to make button with 2 lines with centered text in ?
|
Posted on: 2025/6/16 11:48
#7
|
Home away from home 
|
Put the justification before the text.
Use a similar label with alternate colours for the select image.
|
|
|
|
|
|
Re: Correct way to work with RGB/ARGB bitmaps?
|
Posted on: 2025/6/12 16:29
#8
|
Home away from home 
|
You called the first render() before you created the bitmapobjet if that code is right.
But other wise next render you delete the bitmap whilst attached to the bitmapobject, that wont go down well.
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/6/2 11:17
#9
|
Home away from home 
|
@kas1e Quote: Any ideas on properly loading large binary files (more than 100mb) into texteditor.gadget? Issue is that null bytes (0x00) get treated as string terminators, so content gets truncated. Notepad and MultiEdit seem to handle this: they not only skip 0x00 but also appear to skip something else too, and that no isprint() from ctype.h.
1. You probably shouldn't as it's a text editor but 2. JUst use
SetAttrs((Object *)EditorGadget,
GA_TEXTEDITOR_Length,Size,
GA_TEXTEDITOR_Contents,Data,
TAG_DONE);
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/28 15:30
#10
|
Home away from home 
|
With window class windows you need to add a idcmphook, WINDOW_IDCMPHook or similar (away from any amiga to check) search window class auto doc.
You might need to set the gadgets ICA_TARGET to the window, check includes for correct values, should be obvious
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/27 6:57
#11
|
Home away from home 
|
@kas1e
No the issue is that your code always sets the scroller to the gader position, but never does the reverse. So when the gadget changes due to text input or cursor keys, the scroller updates, but the scroller is dragged, the code immediate outs back to the current gadget state.
You need to listen to both gadget changes and apply to scroller and scroller changes and apply to gadget. Both via OM_NOTIFY
WMHI_INTUITICK will triggering at least 10 times a second, you only want updates when things change.
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/26 21:45
#12
|
Home away from home 
|
@kas1e
No listen to OM_Notify and check for the GA_Texteditor_Prop attributes. Im away so cant give any example code.
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/25 10:07
#13
|
Home away from home 
|
@kas1e,
Visibility in what sense?
I'm guessing you dont mean GA_Hidden as hidden a text editor would make no sense at all.
Visible in scroller? The containing window is visible?
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/21 14:46
#14
|
Home away from home 
|
@kas1eQuote: kas1e wrote:@Andy Thanks a bunch ! It helps and clear code a lot. I do use WMHI_INTUITICK already for control ghosting/unghosting states, but with window active is still not that clear. We don't have LayoutActivateGadget, and LM_ACTIVATEGADGET (WM one instead) but you probably mean something like :
Er we do except that its ActivateLayoutGadget() but I the got OS dependency the wrong way round and you should indeed use the WM_ACTIVATEGADGET. Quote:
// Check if another gadget is active in the top-level layout
struct Gadget *layoutGadget = (struct Gadget *)resizableLayout;
if (!(layoutGadget->Activation & GACT_ACTIVEGADGET))
{
// Activate the text editor gadget using the layout
IIntuition->IDoMethod(resizableLayout, WM_ACTIVATEGADGET,
(struct Gadget *)textEditor, window, NULL);
}
?
This one didn't work, but this one works:
Well it wouldn't you just applied the WM_ACTIVATEGADGET to a layooutgadget, should be the window class object! Also the method structure takes just ME=ethodID and gadget so that should be: IDoMethod(WindowObject,(struct Gadget *)textEditor); Quote:
[quote]
// Check if mouse is over the text editor gadget
if (mouseX >= editorLeft && mouseX = editorTop && mouseY Activation & GACT_ACTIVEGADGET))
{
// Activate the text editor gadget directly
IIntuition->ActivateGadget((struct Gadget *)textEditor, window, NULL);
}
}
You *should* use the WM_METHOD and not Activate gadget directly, as the active gadget in a window.class window is the layout not the any of it's children( the layout passes on events to the texteditor or whichever gadget it thinks is active) If you do that then the texteditor should remain active after resizing the window. Quote: Anyway, that help only when the mouse over the texteditor , but texteditor not start to be active not after resize of window (because mouse not over it), not after i simple drag window (while it still active), not when i click on the toolbar gadget (but not toolbar buttons), and not when i simple iconify/deiconify, etc. I need it to react like this : if window is active , then texteditor gadget is active and cursor stays.
Same goes to cut/copy/paste : after it texteditor not active if i use toolbar buttons or menu when mouse outside of text editor.
So, thank you for idea with WHMI_INTUITICK, i make it as i want by this:
case WMHI_ACTIVE:
// Set flag when window becomes active
windowActive = TRUE;
break;
case WMHI_INTUITICK:
// Activate text editor if the window is active and no other gadget is active
if (window && windowActive)
{
// Check if another gadget is active in the top-level layout
struct Gadget *layoutGadget = (struct Gadget *)resizableLayout;
if (!(layoutGadget->Activation & GACT_ACTIVEGADGET))
{
// Activate the text editor gadget directly
IIntuition->ActivateGadget((struct Gadget *)textEditor, window, NULL);
}
}
break;
Then it works as expected ! Yahoo !
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/20 15:09
#15
|
Home away from home 
|
@kas1e Quote: Is there a straightforward way to ensure the editor window remains active
Use a method like WMHI_INTUITICK to poll the Window->MouseX amd MouseY values then when the mouse id over the editgadget activate it with LayoutActivateGadget() (on OS4) Check that another gadget is not active at the time by testing the toplevel layout ie
if(!
((struct Gadget *)layout) -> Activation & GACT_ACTIVATEGADGET))
{
LayoutActivateGaget(layout,Window,editorgadget);
}
This stops you continuosly activateing the gadget and also stop it from steel foxus from another activated gadget just because the mouse moved over the editor,
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/20 15:01
#16
|
Home away from home 
|
@kas1e
For scroller use GA_TextEdit_Prop_#? to get the top visible and total entries and use these to apply the equivalent SCROLLER attributes.
|
|
|
|
|
|
Re: texteditor.gadget and copy/paste
|
Posted on: 2025/5/20 14:52
#17
|
Home away from home 
|
@kas1e Use The ARexx interface. 1 & 3
BOOL Copy(struct Gadget *editorgad)
{
struct GP_TEXTEDITOR_ARexxCmd gptac = {0};
if(editorgad_ptr )
{
gptac.MethodID = GM_TEXTEDITOR_ARexxCmd;
gptac.command = (STRPTR)"COPY";
if(DoGadgetMethodA(editorgad,Window,NULL,(Msg)&gptac))
{
return TRUE; // Copy succeded
}
}
return FALSE;
}
2
/* Paste from clipboard */
BOOL Paste(struct Gadget *editorgad_ptr)
{
struct GP_TEXTEDITOR_ARexxCmd gptac = {0};
if(editorgad_ptr)
{
gptac.MethodID = GM_TEXTEDITOR_ARexxCmd;
gptac.command = (STRPTR)"PASTE";
if(DoGadgetMethodA(editorgad_ptr,Window,NULL,(Msg)&gptac))
{
SetFileModified();
return TRUE; // Paste succeded
}
}
return FALSE;
}
Both these methods cleanly handle the GUI updates and need no extra libs like TextClip
|
|
|
|
|
|
Re: Ghosting a Reaction String Gadget
|
Posted on: 2025/5/8 10:03
#18
|
Home away from home 
|
Some gadget's need to be refreshed before they update imagery after GA_Disabled. In C code you might use RefreshSetGadgetAttrs() in proaction add the REFRESH arg to the SETATTRS call.
'SETATTRS GUIID ' || GuiKey || ' OBJECTID '|| TextStrField ||' TAGSTRING "GA_Disabled,0,TAG_DONE" REFRESH'
|
|
|
|
|
|
Re: Get MAC Address od AmigaOS4 Machine
|
Posted on: 2025/4/4 8:43
#19
|
Home away from home 
|
@nbache Quote: Missed that option, oodles of info there!
|
|
|
|
|
|
Re: Get MAC Address od AmigaOS4 Machine
|
Posted on: 2025/4/3 7:33
#20
|
Home away from home 
|
@pjs
Couldn't see a way to get the MAC address of the machine i'm on with that but ironically the ARP option gives me the MAC address of the X1000 on the SAM and the SAM on the X1000 via their IPs.
|
|
|
|
|
|