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