GtkSharp/gtk/Application.cs
Mike Kestner db137117c4 2004-02-20 Mike Kestner <mkestner@ximian.com>
* gdk/Gdk.metadata : hide NoExpose, Client, Setting, WindowState,
	and Proximity events.
	* gdk/EventClient.cs : glue-based manual implementation.
	* gdk/EventClient.custom : kill
	* gdk/EventNoExpose.custom : kill
	* gdk/EventProximity.cs : glue-based manual implementation.
	* gdk/EventProximity.custom : kill
	* gdk/EventSetting.cs : glue-based manual implementation.
	* gdk/EventSetting.custom : kill
	* gdk/EventWindowState.cs : glue-based manual implementation.
	* gdk/EventWindowState.custom : kill
	* gdk/gdk-api.xml : regen
	* gdk/gdk-symbols.xml : manual mappings.
	* glue/event.cs : expose event struct fields.
	* gtk/Application.cs : simplify CurrentEvent prop.

svn path=/trunk/gtk-sharp/; revision=23300
2004-02-20 22:33:32 +00:00

128 lines
2.6 KiB
C#
Executable file

// GTK.Application.cs - GTK Main Event Loop class implementation
//
// Author: Mike Kestner <mkestner@speakeasy.net>
//
// (c) 2001 Mike Kestner
namespace Gtk {
using System;
using System.Runtime.InteropServices;
using Gdk;
public class Application {
//
// Disables creation of instances.
//
private Application ()
{
}
[DllImport("libgtk-win32-2.0-0.dll")]
static extern void gtk_init (ref int argc, ref IntPtr argv);
[DllImport("libgtk-win32-2.0-0.dll")]
static extern bool gtk_init_check (ref int argc, ref IntPtr argv);
public static void Init ()
{
IntPtr argv = new IntPtr(0);
int argc = 0;
gtk_init (ref argc, ref argv);
}
static bool do_init (string progname, ref string[] args, bool check)
{
bool res = false;
string[] progargs = new string[args.Length + 1];
progargs[0] = progname;
args.CopyTo (progargs, 1);
IntPtr buf = GLibSharp.Marshaller.ArgvToArrayPtr (progargs);
int argc = progargs.Length;
if (check)
res = gtk_init_check (ref argc, ref buf);
else
gtk_init (ref argc, ref buf);
// copy back the resulting argv, minus argv[0], which we're
// not interested in.
if (argc == 0)
args = new string[0];
else {
progargs = GLibSharp.Marshaller.ArrayPtrToArgv (buf, argc);
args = new string[argc - 1];
Array.Copy (progargs, 1, args, 0, argc - 1);
}
return res;
}
public static void Init (string progname, ref string[] args)
{
do_init (progname, ref args, false);
}
public static bool InitCheck (string progname, ref string[] args)
{
return do_init (progname, ref args, true);
}
[DllImport("libgtk-win32-2.0-0.dll")]
static extern void gtk_main ();
public static void Run ()
{
gtk_main ();
}
[DllImport("libgtk-win32-2.0-0.dll")]
static extern bool gtk_events_pending ();
public static bool EventsPending ()
{
return gtk_events_pending ();
}
[DllImport("libgtk-win32-2.0-0.dll")]
static extern void gtk_main_iteration ();
[DllImport("libgtk-win32-2.0-0.dll")]
static extern bool gtk_main_iteration_do (bool blocking);
public static void RunIteration ()
{
gtk_main_iteration ();
}
public static bool RunIteration (bool blocking)
{
return gtk_main_iteration_do (blocking);
}
[DllImport("libgtk-win32-2.0-0.dll")]
static extern void gtk_main_quit ();
public static void Quit ()
{
gtk_main_quit ();
}
[DllImport("libgtk-win32-2.0-0.dll")]
static extern IntPtr gtk_get_current_event ();
public static Gdk.Event CurrentEvent {
get {
return new Gdk.Event (gtk_get_current_event ());
}
}
}
}