r3002 - in trunk/data/qcsrc/menu-div0test: . item nexuiz
black at icculus.org
black at icculus.org
Thu Dec 6 09:22:25 EST 2007
Author: black
Date: 2007-12-06 09:22:25 -0500 (Thu, 06 Dec 2007)
New Revision: 3002
Added:
trunk/data/qcsrc/menu-div0test/item/gecko.c
Modified:
trunk/data/qcsrc/menu-div0test/classes.c
trunk/data/qcsrc/menu-div0test/mbuiltin.qh
trunk/data/qcsrc/menu-div0test/msys.qh
trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_audio.c
Log:
Add gecko.c and support for DP's gecko system to msys.h and mbuiltin.qh
Modified: trunk/data/qcsrc/menu-div0test/classes.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/classes.c 2007-12-06 09:36:16 UTC (rev 3001)
+++ trunk/data/qcsrc/menu-div0test/classes.c 2007-12-06 14:22:25 UTC (rev 3002)
@@ -15,6 +15,7 @@
#include "item/textslider.c"
#include "item/listbox.c"
#include "item/inputbox.c"
+#include "item/gecko.c"
#include "nexuiz/dialog.c"
#include "nexuiz/tab.c"
#include "nexuiz/mainwindow.c"
Added: trunk/data/qcsrc/menu-div0test/item/gecko.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/item/gecko.c (rev 0)
+++ trunk/data/qcsrc/menu-div0test/item/gecko.c 2007-12-06 14:22:25 UTC (rev 3002)
@@ -0,0 +1,85 @@
+// Andreas Kirsch Gecko item (to test it)
+#ifdef INTERFACE
+CLASS(Gecko) EXTENDS(Item)
+ METHOD( Gecko, configureBrowser, void( entity, string ) )
+ METHOD( Gecko, draw, void(entity))
+ METHOD( Gecko, keyDown, float(entity, float, float, float))
+ METHOD( Gecko, keyUp, float(entity, float, float, float))
+ METHOD( Gecko, mouseMove, float(entity, vector))
+ METHOD( Gecko, mousePress, float(entity, vector))
+ METHOD( Gecko, mouseDrag, float(entity, vector))
+ METHOD( Gecko, mouseRelease, float(entity, vector))
+ ATTRIB( Gecko, texturePath, string, string_null )
+ENDCLASS(Item)
+#endif
+
+#ifdef IMPLEMENTATION
+// define static members
+float _gecko_instanceNumber;
+
+void configureBrowserGecko( entity me, string URI ) {
+ me.focusable = 1;
+
+ //create a new gecko object if needed
+ if( !me.texturePath ) {
+ me.texturePath = strzone( strcat( "/_dynamic/gecko/menu/", ftos( _gecko_instanceNumber ) ) );
+ _gecko_instanceNumber+=1;
+ // TODO: add error checks
+ gecko_create( me.texturePath );
+ }
+ gecko_navigate( me.texturePath, URI );
+}
+
+void drawGecko(entity me)
+{
+ if( me.texturePath ) {
+ draw_Picture( '0 0 0', me.texturePath, '1 1 0', '1 1 1', 1.0 );
+ } else {
+ local vector fontsize;
+ fontsize_x = fontsize_y = 1.0 / 30.0;
+ fontsize_z = 0.0;
+ draw_Text( '0 0 0', "Browser not initialized!", fontsize, '1 1 1', 1.0, 0 );
+ }
+}
+
+float keyDownGecko(entity me, float scan, float ascii, float shift)
+{
+ if( scan == K_ESCAPE ) {
+ return 0;
+ }
+ return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_DOWN );
+}
+
+float keyUpGecko(entity me, float scan, float ascii, float shift)
+{
+ return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_UP );
+}
+
+float mouseMoveGecko(entity me, vector pos)
+{
+ gecko_mousemove( me.texturePath, pos_x, pos_y );
+ return 1;
+}
+
+float mousePressGecko(entity me, vector pos)
+{
+ return gecko_keyevent( me.texturePath, K_MOUSE1, GECKO_BUTTON_DOWN );
+}
+
+float mouseDragGecko(entity me, vector pos)
+{
+ //gecko_mousemove( me.instanceName, pos_x, pos_y );
+ return 0;
+}
+
+float mouseReleaseGecko(entity me, vector pos)
+{
+ return gecko_keyevent( me.texturePath, K_MOUSE1, GECKO_BUTTON_UP );
+}
+
+string toStringGecko(entity me)
+{
+ return me.texturePath;
+}
+
+#endif
Modified: trunk/data/qcsrc/menu-div0test/mbuiltin.qh
===================================================================
--- trunk/data/qcsrc/menu-div0test/mbuiltin.qh 2007-12-06 09:36:16 UTC (rev 3001)
+++ trunk/data/qcsrc/menu-div0test/mbuiltin.qh 2007-12-06 14:22:25 UTC (rev 3002)
@@ -240,6 +240,13 @@
void addwantedhostcachekey(string key) = #623;
string getextresponse(void) = #624;
+// AK the builtin numbers may change - the code might be removed again
+float gecko_create( string name ) = #487;
+void gecko_destroy( string name ) = #488;
+void gecko_navigate( string name, string URI ) = #489;
+float gecko_keyevent( string name, float key, float eventtype ) = #490;
+void gecko_mousemove( string name, float x, float y ) = #491;
+
#ifdef FIXEDFOPEN
float fopen( string filename, float mode ) =
{
Modified: trunk/data/qcsrc/menu-div0test/msys.qh
===================================================================
--- trunk/data/qcsrc/menu-div0test/msys.qh 2007-12-06 09:36:16 UTC (rev 3001)
+++ trunk/data/qcsrc/menu-div0test/msys.qh 2007-12-06 14:22:25 UTC (rev 3002)
@@ -275,6 +275,15 @@
//float ERR_BADSIZE = ERR_BADSCALE;
float ERR_NOTCACHED = -4;
+#ifdef SUPPORT_GECKO
+float GECKO_BUTTON_DOWN = 0;
+float GECKO_BUTTON_UP = 1;
+// either use down and up or just press but not all of them!
+float GECKO_BUTTON_PRESS = 2;
+// use this for mouse events if needed?
+float GECKO_BUTTON_DOUBLECLICK = 3;
+#endif
+
/* not supported at the moment
///////////////////////////
// os constants
Modified: trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_audio.c
===================================================================
--- trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_audio.c 2007-12-06 09:36:16 UTC (rev 3001)
+++ trunk/data/qcsrc/menu-div0test/nexuiz/dialog_settings_audio.c 2007-12-06 14:22:25 UTC (rev 3002)
@@ -59,6 +59,9 @@
me.TDempty(me, 0.2);
me.TD(me, 1, 2.8, e = makeNexuizCheckBox(1, "snd_swapstereo", "Swap Stereo"));
me.TR(me);
+ me.TD(me, 10, 15, e = spawnGecko() );
+ e.configureBrowser( e, "www.google.de" );
+ me.TR(me);
me.gotoXY(me, me.rows - 1, 0);
me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "snd_restart", COMMANDBUTTON_APPLY));
More information about the nexuiz-commits
mailing list