mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-11-23 23:09:39 +03:00
Minimal ARexx port.
Port name: NETSURF Commands supported: OPEN OPEN URL/A Opens URL specified by URL argument in new browser window. svn path=/trunk/netsurf/; revision=5462
This commit is contained in:
parent
eca332c8d5
commit
a0b8680a6d
@ -88,7 +88,7 @@ S_DEBUG := $(addprefix debug/,$(S_DEBUG))
|
||||
# S_AMIGA are sources purely for the Amiga build
|
||||
S_AMIGA := compat.c gui.c tree.c history.c hotlist.c schedule.c \
|
||||
thumbnail.c misc.c bitmap.c font.c filetype.c utf8.c login.c \
|
||||
plotters.c object.c menu.c save_pdf.c
|
||||
plotters.c object.c menu.c save_pdf.c arexx.c
|
||||
S_AMIGA := $(addprefix amiga/,$(S_AMIGA))
|
||||
|
||||
# S_FRAMEBUFFER are sources purely for the framebuffer build
|
||||
|
65
amiga/arexx.c
Executable file
65
amiga/arexx.c
Executable file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright 2008 Chris Young <chris@unsatisfactorysoftware.co.uk>
|
||||
*
|
||||
* This file is part of NetSurf, http://www.netsurf-browser.org/
|
||||
*
|
||||
* NetSurf is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* NetSurf is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "arexx.h"
|
||||
#include <reaction/reaction_macros.h>
|
||||
#include <string.h>
|
||||
#include <proto/intuition.h>
|
||||
#include "desktop/browser.h"
|
||||
|
||||
enum
|
||||
{
|
||||
RX_OPEN=0,
|
||||
};
|
||||
|
||||
STATIC VOID rx_open(struct ARexxCmd *, struct RexxMsg *);
|
||||
|
||||
STATIC struct ARexxCmd Commands[] =
|
||||
{
|
||||
{"OPEN",RX_OPEN,rx_open,"URL/A", 0, NULL, 0, 0, NULL },
|
||||
{ NULL, 0, NULL, NULL, 0, NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
void ami_arexx_init()
|
||||
{
|
||||
if(arexx_obj = ARexxObject,
|
||||
AREXX_HostName,"NETSURF",
|
||||
AREXX_Commands,Commands,
|
||||
AREXX_NoSlot,TRUE,
|
||||
AREXX_ReplyHook,NULL,
|
||||
AREXX_DefExtension,"nsrx",
|
||||
End)
|
||||
{
|
||||
GetAttr(AREXX_SigMask, arexx_obj, &rxsig);
|
||||
}
|
||||
}
|
||||
|
||||
void ami_arexx_handle()
|
||||
{
|
||||
RA_HandleRexx(arexx_obj);
|
||||
}
|
||||
|
||||
void ami_arexx_cleanup()
|
||||
{
|
||||
if(arexx_obj) DisposeObject(arexx_obj);
|
||||
}
|
||||
|
||||
STATIC VOID rx_open(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unused)))
|
||||
{
|
||||
browser_window_create((char *)cmd->ac_ArgList[0],NULL,NULL,true,false);
|
||||
}
|
32
amiga/arexx.h
Executable file
32
amiga/arexx.h
Executable file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2008 Chris Young <chris@unsatisfactorysoftware.co.uk>
|
||||
*
|
||||
* This file is part of NetSurf, http://www.netsurf-browser.org/
|
||||
*
|
||||
* NetSurf is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* NetSurf is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef AMIGA_AREXX_H
|
||||
#define AMIGA_AREXX_H
|
||||
|
||||
#include <proto/arexx.h>
|
||||
#include <classes/arexx.h>
|
||||
|
||||
void ami_arexx_init(void);
|
||||
void ami_arexx_handle(void);
|
||||
void ami_arexx_execute(char *);
|
||||
void ami_arexx_cleanup(void);
|
||||
|
||||
Object *arexx_obj;
|
||||
ULONG rxsig;
|
||||
#endif
|
10
amiga/gui.c
10
amiga/gui.c
@ -65,6 +65,7 @@
|
||||
#include "amiga/login.h"
|
||||
#include "utils/url.h"
|
||||
#include <string.h>
|
||||
#include "amiga/arexx.h"
|
||||
|
||||
#ifdef WITH_HUBBUB
|
||||
#include <hubbub/hubbub.h>
|
||||
@ -186,6 +187,8 @@ void gui_init(int argc, char** argv)
|
||||
|
||||
filereq = (struct FileRequester *)AllocAslRequest(ASL_FileRequest,NULL);
|
||||
|
||||
ami_arexx_init();
|
||||
|
||||
if(iffh = AllocIFF())
|
||||
{
|
||||
if(iffh->iff_Stream = OpenClipboard(0))
|
||||
@ -841,7 +844,7 @@ void ami_get_msg(void)
|
||||
ULONG winsignal = 1L << sport->mp_SigBit;
|
||||
ULONG appsig = 1L << appport->mp_SigBit;
|
||||
ULONG schedulesig = 1L << msgport->mp_SigBit;
|
||||
ULONG signalmask = winsignal | appsig | schedulesig;
|
||||
ULONG signalmask = winsignal | appsig | schedulesig | rxsig;
|
||||
ULONG signal;
|
||||
struct Message *timermsg = NULL;
|
||||
|
||||
@ -855,6 +858,10 @@ void ami_get_msg(void)
|
||||
{
|
||||
ami_handle_appmsg();
|
||||
}
|
||||
else if(signal & rxsig)
|
||||
{
|
||||
ami_arexx_handle();
|
||||
}
|
||||
else if(signal & schedulesig)
|
||||
{
|
||||
while(GetMsg(msgport))
|
||||
@ -928,6 +935,7 @@ void gui_quit(void)
|
||||
if(iffh->iff_Stream) CloseClipboard((struct ClipboardHandle *)iffh->iff_Stream);
|
||||
if(iffh) FreeIFF(iffh);
|
||||
|
||||
ami_arexx_cleanup();
|
||||
FreeSysObject(ASOT_PORT,appport);
|
||||
FreeSysObject(ASOT_PORT,sport);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user