diff window.c @ 3:94c885692eb5

Partial set of fixes and enhancements from Linux box
author Mike Pavone <pavone@retrodev.com>
date Wed, 29 Apr 2009 03:21:23 -0400
parents 76568becd6d6
children
line wrap: on
line diff
--- a/window.c	Wed Apr 29 02:58:03 2009 -0400
+++ b/window.c	Wed Apr 29 03:21:23 2009 -0400
@@ -10,9 +10,14 @@
 #include "syl_window.h"
 VIS_CRITICAL_SECTION(app_lock);
 #else
-	#ifdef WIN32
+	#ifdef GTK
+#include "gtk_window.h"
+VIS_CRITICAL_SECTION(gtk_init_lock);
+	#else
+		#ifdef WIN32
 #include "ms_window.h"
-VIS_CRITICAL_SECTION(hwnd_lock);
+VIS_CRITICAL_SECTION(hwnd_lock);	
+		#endif
 	#endif
 #endif
 
@@ -41,8 +46,12 @@
 		
 		VIS_InitializeCriticalSection(app_lock);
 	#else
-		#ifdef WIN32
-			VIS_InitializeCriticalSection(hwnd_lock);
+		#ifdef GTK
+			VIS_InitializeCriticalSection(gtk_init_lock);
+		#else
+			#ifdef WIN32
+				VIS_InitializeCriticalSection(hwnd_lock);
+			#endif
 		#endif
 	#endif
 }
@@ -62,6 +71,7 @@
 	window->widget_xpos = create_dict(worker_entry->instance->def->program);
 	window->widget_ypos = create_dict(worker_entry->instance->def->program);
 	window->id_list = create_list(worker_entry->instance->def->program);
+	window->menu = NULL;
 	release_ref(inputlist[1]);
 	release_ref(inputlist[2]);
 	inputlist[0] = window_datum;
@@ -254,6 +264,7 @@
 	return 0;
 }
 
+//Also used for Set Data@Datagrid
 int vis_dropdown_settext(datum ** params, queue_entry * entry)
 {
 	vis_widget * widget;
@@ -277,15 +288,47 @@
 	return 0;
 }
 
+int vis_datagrid_new(datum ** inputlist, queue_entry * worker_entry)
+{
+	widget_new(inputlist, BUILTIN_TYPE_DATAGRID, worker_entry->instance->def->program);
+	return 0;
+}
 
+int vis_menu_new(datum ** inputlist, queue_entry * worker_entry)
+{
+	vis_menu * menu;
+	inputlist[0] = new_datum(BUILTIN_TYPE_MENU, 1, sizeof(vis_menu), worker_entry->instance->def->program);
+	menu = inputlist[0]->c.generic.data;
+	menu->label_list = create_list(worker_entry->instance->def->program);
+	menu->action_list = create_list(worker_entry->instance->def->program);
+	return 0;
+}
 
+int vis_menu_add_item(datum ** inputlist, queue_entry * worker_entry)
+{
+	datum * wparams[2];
+	vis_menu * menu;
+	inputlist[0] = copy_datum(inputlist[0], 0);
+	menu = inputlist[0]->c.generic.data;
+	wparams[0] = menu->label_list;
+	wparams[1] = inputlist[1];
+	vis_list_append(wparams, worker_entry);
+	menu->label_list = wparams[0];
+	wparams[0] = menu->action_list;
+	wparams[1] = inputlist[2];
+	vis_list_append(wparams, worker_entry);
+	menu->action_list = wparams[0];
+	return 0;
+}
 
-
+int vis_window_set_menu(datum ** inputlist, queue_entry * worker_entry)
+{
+	vis_window * window;
+	inputlist[0] = copy_datum(inputlist[0], 0);
+	window = inputlist[0]->c.generic.data;
+	release_ref(window->menu);
+	window->menu = inputlist[1];
+	return 0;
+}
 
 
-
-
-
-
-
-