Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
44 user(s) are online (38 user(s) are browsing Forums)

Members: 0
Guests: 44

more...

Support us!

Headlines

 
  Register To Post  

« 1 2 3 4 (5) 6 »
Re: DrawerGenie for AOS4?
Just popping in
Just popping in


See User information
@kas1

it's the job of Thomas “imagodespira” Claus and Frank “Goos McGuile” Menzel.


https://blog.hyperion-entertainment.com/author/fmenzel/

I found the screenshot at the bottom of the page (it's the last image)

Go to top
Re: DrawerGenie for AOS4?
Not too shy to talk
Not too shy to talk


See User information
@sinisrus

The mockup I'm talking about was different but the author is the same. If I find time I will try to prepare sth similar or else Thomas will beat me to it

CD32/A500/A600/A600+Furia/A1200/A4000D+A2320+PiccoloSD64/Sam440 flex 800MHz RAM 1GB HD7750 128MB OS4.1 SBLive! ->
Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@kas1e

And it would be nice to have such sources (with permision of author) and fix those bugs and make maybe a minimal release without all those settings, just the addresbar and couple of buttons, instead of reinventing the whell for N time.

Go to top
Re: DrawerGenie for AOS4?
Home away from home
Home away from home


See User information
@Javier
Quote:

And it would be nice to have such sources (with permision of author) and fix those bugs and make maybe a minimal release without all those settings


Well, it's so buggy in all the ways (options, strings, etc) that it really hardcore to fix this all. Instead, all we need is just 4 buttons : left, right, root, dir up (maybe) + ulr_bar, like on DH1 window of screenshot above, and we will be happy with :)

Btw, there how to check if the window we need to patch are the one we need (so no other windowses , no "About" window of workbench, no other stuff, so we will add gadgets only to the necessary windowses):

struct Window APICALL Patched_OpenWindowTagList(struct IntuitionIFace *Self, const struct NewWindow nw, const struct TagItem tagList) {

    
struct Window *NULL;
    static 
struct Task *Caller;
    static 
BOOL wb;

    
IExec->DebugPrintF("#1 Inside of Patched_OpenWindwoTagList()\n");
    
    
Caller = (struct Task *)IExec->FindTask(NULL);

    
IExec->DebugPrintF("#2 Hijacked %08x='%s' newWindow=%08x tagList=%08x!\n"CallerCaller->tc_Node.ln_NamenwtagList);

    
Original_OpenWindowTagList(SelfnwtagList);    
    if(!
w) {
        return 
NULL;
    }

    
// To find out if it workbench window or not we want to patch, we check on:
    
    // 1. caller's Node name of current Task should be "Workbench"
    // 2. if WFLG_WBNECHWINDOW flag should be set
    // 3. if WFLG_BACKDROP flag is NOT set
    
    // TRUE if it Workbench, WFLG_WBENCHWINDOW and not WFLG_BACKDROP, and FALSE is requments not meet.    
    
wb nw && !stricmp(Caller->tc_Node.ln_Name"Workbench") && (nw->Flags WFLG_WBENCHWINDOW) && !(nw->Flags WFLG_BACKDROP);
        
    if (
wb == TRUE) {
        
IExec->DebugPrintF(" -- This is Workbench Window and need pathing!\n");
    } else {        
        
IExec->DebugPrintF(" -- This window need no patching!\n");
        
// exit from patch
        
return w;
    }
    
    if(
wb) {
        
IExec->DebugPrintF("#3 Let's Add gadgets to Workbench window!\n");
        
// all our code by adding gadgets are there
    
}

    return 
w;
}


At least with this one, i do have correct output on serial for only necessary Workbench windowses.

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: DrawerGenie for AOS4?
Home away from home
Home away from home


See User information
Just thinking, the openamiga site still active, including its repository for posting sources and projects...

http://openamiga.org/

Its purpose was exactly to collect new projects to integrate into AmigaOS
So how about opening a project there?... Maybe, once we have a working basic version this could push the team to officially integrate these changes into AmigaOS

Go to top
Re: DrawerGenie for AOS4?
Home away from home
Home away from home


See User information
@samo79
Quote:

So how about opening a project there?


How about learn coding and actually help ?:))

But to say for real, this makes no sense. The past show that all what important is the programmer working on. No special hosting, not special teams, no special sites are help there.

And , we talk about patch, which is hack. For amigaos4 itself, it should be just fully rewritten workbench from scratch, or , at least this functionality should be added to the original workbench code, with ability to enable/disable it.

The hacks are just for us, for the time (maybe forever) being, but asking for official include of the hacks to the OS, that hardcore :)

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: DrawerGenie for AOS4?
Just popping in
Just popping in


See User information
WBGenie/GenieWB
WBNavi/NaviWB

Memento audere semper!
Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@sinisrus

Quote:

I'm sorry, it has nothing to do with the actual theme, but I like the theme, does anyone know where I can download it?

MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
Go to top
Re: DrawerGenie for AOS4?
Home away from home
Home away from home


See User information
@Javier
I find some bits as well how to add string and gadgets to our window and interact with them , check the mail plz

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: DrawerGenie for AOS4?
Just popping in
Just popping in


See User information

Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@sinisrusQuote:

I think I'm already using it, it's the EvoTheme, but in the screenshot you showed it looks a little different, maybe the image was edited afterwards. Thanks anyway

MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@kas1e

well. I just check if openwin() has a NewWindow struct, if not it isn't a WB drawer.
thx for mail/message will look it later.

Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@kas1e

Quote:
@All
What about voting for the name ? Suggestions are:

WBGenie / GenieWB
WBBar / BarWB
WBTopBar / TopBarWB
WBExtern / ExternWB
WBExtend / ExtendWB
WBExpand / ExpandWB
WBNavi / NaviWB

Feel free to flood at so we all can vote :)
I'd suggest WBBar (or maybe WBToolBar) - that leaves it open for whatever later ideas you'll get for new tools/buttons, and it doesn't tie it too much to the Windows Genie program.

It may seem boring, but it's always nice when a name describes what it is, no more, no less .

Best regards,

Niels

Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
I'll have to give up. Either WB crashes, anything crashes or no gadgets show up.

Rock lobster bit me - so I'm here forever
X1000 + AmigaOS 4.1 FE
"Anyone can build a fast CPU. The trick is to build a fast system." - Seymour Cray
Go to top
Re: DrawerGenie for AOS4?
Home away from home
Home away from home


See User information
@TSK
Of course, it's not the work of one day. It's boring work with bug hunting and tests. If you don't ready for, better not worry about :) Giving up after few days mean you have no interest in, so why bother then :)

@All
There is my simple test case when nothing crashes, patching happens of only necessary WB windows, and added simple gadget at top (through, to the title bar for now only):

#include <stddef.h>
#include <string.h>

#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/wb.h>
#include <proto/utility.h>
#include <proto/intuition.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <proto/string.h>
#include <proto/button.h>
#include <gadgets/button.h>
#include <images/bitmap.h>
#include <reaction/reaction_macros.h>
#include <proto/bitmap.h>

#define GFLG_RELFLAGS (GFLG_RELRIGHT | GFLG_RELBOTTOM | GFLG_RELWIDTH | GFLG_RELHEIGHT)

#define GID_ADDRESS     2066
#define GID_BROWSE      (GID_ADDRESS + 1)
#define GTYP_ADDRESS    0x00E1 /* Window address gadget */

struct Screen *screen NULL;

struct Window APICALL (*Original_OpenWindowTagList)(struct IntuitionIFace *Self, const struct NewWindow newWindow, const struct TagItem tagList);

//browse gadget add
struct Gadget *browsegad_add(struct Window *winstruct Gadget *firstBOOL browse) {
    
struct Gadget *gad, *browsegad NULL;
    
long x 0w,h,t;
    
struct Image  *img;
    
    if(!
win) {
        return 
NULL;
    }
    
    
img =(struct Image *)IIntuition->NewObject(NULL"bitmap.image",
                                            
IA_ScalableFALSE,
                                            
IA_Width,24
                                            
IA_Height,24,
                                            
BITMAP_SourceFile"TBIMAGES:root",
                                            
BITMAP_Screen,     win->WScreen,
                                            
BITMAP_Precision,  PRECISION_IMAGE,
                                            
BITMAP_Masking,  TRUE,
                                            
TAG_DONE);
    
    if (!
img) {
        
IExec->DebugPrintF("can create an image !\n");
    }
    
    
browsegad = (struct Gadget *) IIntuition->NewObject(NULL"buttongclass",
                                
GA_ToggleSelectTRUE,
                                
GA_IDGID_BROWSE,
                                
GA_UserData, (APTR)GTYP_ADDRESS,
                                
GA_Imageimg,
                                
GA_Selectedbrowse,
                                
BUTTON_BevelStyleBVS_NONE,
                                
BUTTON_TransparentTRUE,
                                
BUTTON_EraseBackgroundFALSE,
                                
TAG_END);
    
    
    
IExec->DebugPrintF("x=%ld,y=%ld,w=%ld,h=%ld, top=%ld width=%ld\n"browsegad->LeftEdgebrowsegad->TopEdgebrowsegad->Widthbrowsegad->Heighttw);
    if(!
browsegad
    return 
NULL;
    
    
browsegad->NextGadget first;
    
    if(!
win)
    return 
browsegad;
    
    
IExec->Forbid();
    for(
gad win->FirstGadgetgadgad gad->NextGadget) {
    if((
gad->Flags GFLG_RELFLAGS) == GFLG_RELRIGHT)
        if(
gad->LeftEdge x)
            
gad->LeftEdge;
    }
    
    
IIntuition->AddGadget(winbrowsegad0);
    
IIntuition->SetAttrs(browsegadGA_RelRightbrowsegad->Width 1,TAG_END);    
    
IIntuition->RefreshGList(browsegadwinNULL,1);
    
IExec->Permit();
    
    
IExec->DebugPrintF("return (x=%ld, y=%ld, w=%ld, h=%ld)\n"browsegad->LeftEdgebrowsegad->TopEdgebrowsegad->Widthbrowsegad->Height);
    return 
browsegad;
}




// patched functions
struct Window APICALL Patched_OpenWindowTagList(struct IntuitionIFace *Self, const struct NewWindow nw, const struct TagItem tagList) {

    
struct Window *NULL;
    static 
struct Task *Caller;
    static 
BOOL wb;
    
    
IExec->DebugPrintF("#1 Inside of Patched_OpenWindowTagList()\n");
    
    
Caller = (struct Task *)IExec->FindTask(NULL);
    
    
IExec->DebugPrintF("#2 Hijacked %08x='%s' newWindow=%08x tagList=%08x!\n"CallerCaller->tc_Node.ln_NamenwtagList);
    
    
Original_OpenWindowTagList(SelfnwtagList);    
    if(!
w) {
        return 
NULL;
    }
    
    
// To find out if it workbench window or not we want to patch, we check on:
    
    // 1. caller's Node name of current Task should be "Workbench"
    // 2. if WFLG_WBNECHWINDOW flag should be set
    // 3. if WFLG_BACKDROP flag is NOT set
    
    // TRUE if it Workbench, WFLG_WBENCHWINDOW and not WFLG_BACKDROP, and FALSE is requments not meet.    
    
wb nw && !stricmp(Caller->tc_Node.ln_Name"Workbench") && (nw->Flags WFLG_WBENCHWINDOW) && !(nw->Flags WFLG_BACKDROP);
        
    if (
wb == TRUE) {
        
IExec->DebugPrintF(" -- This is Workbench Window and need pathing!\n");
    } else {        
        
IExec->DebugPrintF(" -- This window need no patching!\n");
        
// exit from patch
        
return w;
    }
    
    if(
wb) {
        
IExec->DebugPrintF("#3 Let's Add gadgets to Workbench window!\n");
        
// all our code by adding gadgets are there
        
        
browsegad_add(wNULL1);
                
    }
    
    return 
w;
}

// main


void init()
{
    
screen IIntuition->LockPubScreen(NULL);

    
Original_OpenWindowTagList IExec->SetMethod((struct Interface *)IIntuitionoffsetof(struct IntuitionIFaceOpenWindowTagList),  (APTR)Patched_OpenWindowTagList);
}

void deinit()
{
    if(
Original_OpenWindowTagList) {
        
IExec->SetMethod((struct Interface *)IIntuitionoffsetof(struct IntuitionIFaceOpenWindowTagList),  (APTR)Original_OpenWindowTagList);
    }

    if(
screenIIntuition->UnlockPubScreen(NULLscreen);

}


int main()
{    
    
    
BOOL notdone TRUE;
    
uint32 isigmask 0signals;
    
    
    
init();
    
    
// Check on CTRL_C
    
while(notdone) {
        
signals IExec->Wait(sigmask|SIGBREAKF_CTRL_C);
    
        if(
signals SIGBREAKF_CTRL_C) {
            
IDOS->Printf("CTRL+C pressed!\n");
            
notdone FALSE;
            break;
        }
    }    
    
    
deinit();
}


That how it looks like in action:





Now just need to understand how to add this gadget correctly on the window content with resizing and refreshing of the window content on the necessary size and then send/recv actions from window port and that mostly all.

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@TSK


take a look at my sources (ugly code, link at post #67) and maybe it can help you somehow.

Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@kas1e

Don't use GA_RelRight but set gadgets position using GA_Left and GA_Top.

Rock lobster bit me - so I'm here forever
X1000 + AmigaOS 4.1 FE
"Anyone can build a fast CPU. The trick is to build a fast system." - Seymour Cray
Go to top
Re: DrawerGenie for AOS4?
Home away from home
Home away from home


See User information
@kas1e

just call it WinBar

Go to top
Re: DrawerGenie for AOS4?
Home away from home
Home away from home


See User information
@All
I suck on Intution/Reaction coding, learning now, but so far i were able also to create string gadget, with attached string hook to it, which can handle all stuff in (so that kind of "path/url" string). Need to understand now how to calcualte all those negative GA_* things, and what is more necessary : how to expand the window size with adding new gadget in it (i.e. not to overwrite content of window, but read all the gadgets from current window, and change them)

@TSK
Quote:

Don't use GA_RelRight but set gadgets position using GA_Left and GA_Top.


Why not ?

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top
Re: DrawerGenie for AOS4?
Just can't stay away
Just can't stay away


See User information
@kas1e

Maybe 'cos it's easy to set:
GA_Left, _myWin->BorderLeft + 2 + (idx * 24), // as we add IDX gadgets
GA_Top, _myWin->BorderTop + 1,

rather that doing "complex" calculations.

Go to top

  Register To Post
« 1 2 3 4 (5) 6 »

 




Currently Active Users Viewing This Thread: 1 ( 0 members and 1 Anonymous Users )




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project