9f54a63375
* gtk/Container.custom : add CallbackInvoke and use it in OnForall. 2004-05-19 Mike Kestner <mkestner@ximian.com> * generator/Makefile.am : add TimeTGen.cs * generator/SymbolTable.cs : use new TimeTGen. * generator/StringGen.cs : s/GLibSharp/GLib * generator/TimeTGen.cs : generatable to marshal time_t. * glib/time_t_CustomMarshaler.cs : kill * glib/Makefile.am : remove time_t_CustomMarshaler.cs * glib/Markup.cs : s/GLibSharp/GLib * glib/Marshaller.cs : move to GLib namespace. Add methods to marshal time_t to and from DateTime. * glib/glue/time_t.c : kill * glib/glue/Makefile.am : remove time_t.c * glib/glue/makefile.win32 : remove time_t.o * gnome/*.custom : use GLib.Marshaller instead of the time_t custom marshaler. * gtk/*.custom : s/GLibSharp/GLib svn path=/trunk/gtk-sharp/; revision=27704
127 lines
2.6 KiB
C#
Executable file
127 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 = GLib.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 = GLib.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 ());
|
|
}
|
|
}
|
|
}
|
|
}
|