mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2024-12-23 05:45:29 +00:00
2001-09-27 Mike Kestner <mkestner@speakeasy.net>
*.cs : Added .dll extension to a load of DllImports. * makefile : now can make the project with one make windows and on both NT and Win98. * gdk/Event.cs : Fixed some invalid symbol names and commented out a load of stuff. * gdk/SimpleEvent.cs : Relocated file from unnecessary subdir and fixed several event keyword clashing bugs. Need to relocate the EventArgs class out of here into its own file. Fixed loads of typos. * glib/Object.cs : Killed the Constructor, this should be a purely abstract class. made Events property public until I can fix the Signal proxying system's broken reliance on it. * glib/SimpleSignal.cs : Relocated, namespaces, and named this Class. Loads of bugfixes. Still doesn't work worth a damn, but it builds. * glib/TypeFundamentals.cs : New enum for use in the Value code. * glib/Value.cs : Implemented a more opaque approach with heap allocated memory and g_value_init and friends. Still doesn't work. Will probably switch to a more C# like approach and avoid GValues altogether. * gtk/Button.cs : Commented out some brokeness until I can get around to fixing it later. * gtk/Widget.cs : Commented out a bunch of the new signal stuff until I get around to it. * gtk/Window.cs (Title): using g_object_set until I work out the details of the new Value/SetProperty system. It looks like g_object_set will end up being easier to use via PInvoke. svn path=/trunk/gtk-sharp/; revision=1008
This commit is contained in:
parent
699238daad
commit
25000abee7
34
ChangeLog
34
ChangeLog
|
@ -1,13 +1,41 @@
|
|||
2001-09-25
|
||||
2001-09-27 Mike Kestner <mkestner@speakeasy.net>
|
||||
|
||||
*.cs : Added .dll extension to a load of DllImports.
|
||||
* makefile : now can make the project with one make windows and on
|
||||
both NT and Win98.
|
||||
* gdk/Event.cs : Fixed some invalid symbol names and commented out a
|
||||
load of stuff.
|
||||
* gdk/SimpleEvent.cs : Relocated file from unnecessary subdir and fixed
|
||||
several event keyword clashing bugs. Need to relocate the EventArgs
|
||||
class out of here into its own file. Fixed loads of typos.
|
||||
* glib/Object.cs : Killed the Constructor, this should be a purely
|
||||
abstract class. made Events property public until I can fix the Signal
|
||||
proxying system's broken reliance on it.
|
||||
* glib/SimpleSignal.cs : Relocated, namespaces, and named this Class.
|
||||
Loads of bugfixes. Still doesn't work worth a damn, but it builds.
|
||||
* glib/TypeFundamentals.cs : New enum for use in the Value code.
|
||||
* glib/Value.cs : Implemented a more opaque approach with heap allocated
|
||||
memory and g_value_init and friends. Still doesn't work. Will probably
|
||||
switch to a more C# like approach and avoid GValues altogether.
|
||||
* gtk/Button.cs : Commented out some brokeness until I can get around
|
||||
to fixing it later.
|
||||
* gtk/Widget.cs : Commented out a bunch of the new signal stuff until
|
||||
I get around to it.
|
||||
* gtk/Window.cs (Title): using g_object_set until I work out the
|
||||
details of the new Value/SetProperty system. It looks like g_object_set
|
||||
will end up being easier to use via PInvoke.
|
||||
|
||||
2001-09-25 Bob Smith <bob@thestuff.net>
|
||||
|
||||
* Added refcounts to delegates to make sure they can be unpined when
|
||||
not needed.
|
||||
|
||||
2001-09-21
|
||||
2001-09-21 Bob Smith <bob@thestuff.net>
|
||||
|
||||
* Signal system totally reworked. It should be stable now.
|
||||
* glib/Object.cs: Rewrote the way the wrapper is kept track of.
|
||||
|
||||
2001-09-20
|
||||
2001-09-20 Bob Smith <bob@thestuff.net>
|
||||
|
||||
* glib/ObjectManager.cs: Nuked.
|
||||
* glib/Object.cs: Keep track of wrapper.
|
||||
|
|
3
gdk/.cvsignore
Normal file
3
gdk/.cvsignore
Normal file
|
@ -0,0 +1,3 @@
|
|||
*.dll
|
||||
*.exe
|
||||
|
|
@ -10,8 +10,8 @@ namespace Gdk {
|
|||
Expose = 2,
|
||||
MotionNotify = 3,
|
||||
ButtonPress = 4,
|
||||
2ButtonPress = 5,
|
||||
3ButtonPress = 6,
|
||||
TwoButtonPress = 5,
|
||||
ThreeButtonPress = 6,
|
||||
ButtonRelease = 7,
|
||||
KeyPress = 8,
|
||||
KeyRelease = 9,
|
||||
|
@ -60,6 +60,8 @@ namespace Gdk {
|
|||
Marshal.WriteIntPtr(_event, new IntPtr((int)value));
|
||||
}
|
||||
}
|
||||
|
||||
/* FIXME: Fix or kill later.
|
||||
public EventAny Any
|
||||
{
|
||||
get
|
||||
|
@ -67,10 +69,11 @@ namespace Gdk {
|
|||
return (EventAll)this;
|
||||
}
|
||||
}
|
||||
public static explicit EventAll (Event e)
|
||||
public static explicit operator EventAll (Event e)
|
||||
{
|
||||
return Marshal.PtrToStructure(e._event, EventAll);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
// Gdk.Signals.SimpleEvent.cs - Gdk Simple Event Signal implementation
|
||||
//
|
||||
// Author: Bob Smith <bob@thestuff.net>
|
||||
//
|
||||
// (c) 2001 Bob Smith
|
||||
|
||||
namespace Gdk.Signals {
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using Glib;
|
||||
using Gdk;
|
||||
|
||||
public class SimpleEventArgs : EventArgs {
|
||||
public SimpleEventArgs(Gdk.Event event)
|
||||
{
|
||||
_event = event;
|
||||
}
|
||||
private Gdk.Event _event;
|
||||
public Gdk.Event Event
|
||||
{
|
||||
get
|
||||
{
|
||||
return _event;
|
||||
}
|
||||
}
|
||||
public static explicit operator Gdk.Event(SimpleEventArgs value)
|
||||
{
|
||||
return value.Event;
|
||||
}
|
||||
}
|
||||
|
||||
public delegate bool SimpleEventDelegate(IntPtr obj, IntPtr data);
|
||||
public class SimpleEvent {
|
||||
public SimpleEvent(){}
|
||||
private static bool SimpleEventCallback(IntPtr obj, IntPtr e, IntPtr data)
|
||||
{
|
||||
Glib.Object o = Glib.Object.GetObject(obj);
|
||||
EventHandler eh = o.Events[(int)data];
|
||||
if (eh != null)
|
||||
{
|
||||
EventArgs args = new SimpleEventArgs (new Gdk.Event(e));
|
||||
eh(o, args);
|
||||
}
|
||||
return true; //FIXME: How do we manage the return value?
|
||||
}
|
||||
private static int _simpleRefCount;
|
||||
private static SimpleEventDelegate _simpleDelegate;
|
||||
private static GCHandle _simpleEventGCHandle;
|
||||
public static SimpleEventDelegate Delegate
|
||||
{
|
||||
get
|
||||
{
|
||||
if (SimpleEvent._simpleEventDelegate == null)
|
||||
{
|
||||
SimpleEvent._simpleDelegate = new SimpleEventDelegate(SimpleCallback);
|
||||
SimpleEvent._simpleGCHandle = GCHandle.Alloc (SimpleEvent._simpleEventDelegate, GCHandleType.Pinned);
|
||||
}
|
||||
SimpleEvent._simpleRefCount++;
|
||||
return SimpleEvent._simpleEventDelegate;
|
||||
}
|
||||
}
|
||||
public static void Unref()
|
||||
{
|
||||
SimpleEvent._simpleRefCount--;
|
||||
if (SimpleEvent._simpleRefCount < 1)
|
||||
{
|
||||
SimpleEvent._simpleRefCount = 0;
|
||||
SimpleEvent._simpleEventGCHandle.free();
|
||||
SimpleEvent._simpleDelegate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
73
gdk/SimpleEvent.cs
Normal file
73
gdk/SimpleEvent.cs
Normal file
|
@ -0,0 +1,73 @@
|
|||
// Gdk.Signals.SimpleEvent.cs - Gdk Simple Event Signal implementation
|
||||
//
|
||||
// Author: Bob Smith <bob@thestuff.net>
|
||||
//
|
||||
// (c) 2001 Bob Smith
|
||||
|
||||
namespace Gdk {
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using GLib;
|
||||
using Gdk;
|
||||
|
||||
public class SimpleEventArgs : EventArgs {
|
||||
public SimpleEventArgs(Gdk.Event evnt)
|
||||
{
|
||||
_evnt = evnt;
|
||||
}
|
||||
private Gdk.Event _evnt;
|
||||
public Gdk.Event Event
|
||||
{
|
||||
get
|
||||
{
|
||||
return _evnt;
|
||||
}
|
||||
}
|
||||
public static explicit operator Gdk.Event(SimpleEventArgs value)
|
||||
{
|
||||
return value.Event;
|
||||
}
|
||||
}
|
||||
|
||||
public delegate bool SimpleEventDelegate(IntPtr obj, IntPtr e, String name);
|
||||
public class SimpleEvent {
|
||||
|
||||
private static bool SimpleEventCallback (IntPtr obj, IntPtr e, String name)
|
||||
{
|
||||
GLib.Object o = GLib.Object.GetObject (obj);
|
||||
EventHandler eh = (EventHandler) o.Events [name];
|
||||
if (eh != null)
|
||||
{
|
||||
EventArgs args = new SimpleEventArgs (new Gdk.Event(e));
|
||||
eh(o, args);
|
||||
}
|
||||
return true; //FIXME: How do we manage the return value?
|
||||
}
|
||||
private static int _RefCount;
|
||||
private static SimpleEventDelegate _Delegate;
|
||||
private static GCHandle _GCHandle;
|
||||
public static SimpleEventDelegate Delegate
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_Delegate == null)
|
||||
{
|
||||
_Delegate = new SimpleEventDelegate(SimpleEventCallback);
|
||||
_GCHandle = GCHandle.Alloc (_Delegate, GCHandleType.Pinned);
|
||||
}
|
||||
_RefCount++;
|
||||
return _Delegate;
|
||||
}
|
||||
}
|
||||
public static void Unref()
|
||||
{
|
||||
_RefCount--;
|
||||
if (_RefCount < 1)
|
||||
{
|
||||
_RefCount = 0;
|
||||
_GCHandle.Free();
|
||||
_Delegate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,3 @@
|
|||
CSC=/cygdrive/c/windows/microsoft.net/framework/v1.0.2914/csc.exe
|
||||
|
||||
all:
|
||||
@echo "You must use 'make windows' or 'make unix'."
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
// Object.cs - GObject class wrapper implementation
|
||||
//
|
||||
// Author: Bob Smith <bob@thestuff.net>
|
||||
// Authors: Bob Smith <bob@thestuff.net>
|
||||
// Mike Kestner <mkestner@speakeasy.net>
|
||||
//
|
||||
// (c) 2001 Bob Smith
|
||||
// (c) 2001 Bob Smith and Mike Kestner
|
||||
|
||||
namespace GLib {
|
||||
|
||||
|
@ -17,12 +18,7 @@ namespace GLib {
|
|||
{
|
||||
Object obj = (Object)Objects[(int)o];
|
||||
if (obj != null) return obj;
|
||||
return new Object(o); //FIXME: Cast up when we know how.
|
||||
}
|
||||
|
||||
public Object(IntPtr o)
|
||||
{
|
||||
RawObject = o;
|
||||
return null; //FIXME: Call TypeParser here eventually.
|
||||
}
|
||||
|
||||
private IntPtr _obj;
|
||||
|
@ -40,7 +36,7 @@ namespace GLib {
|
|||
}
|
||||
|
||||
private EventHandlerList _events;
|
||||
protected EventHandlerList Events
|
||||
public EventHandlerList Events
|
||||
{
|
||||
get {
|
||||
if (_events == null)
|
||||
|
@ -49,8 +45,7 @@ namespace GLib {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
[DllImport("gobject-1.3")]
|
||||
[DllImport("gobject-1.3.dll")]
|
||||
static extern IntPtr g_object_get_data (
|
||||
IntPtr obj,
|
||||
String key );
|
||||
|
@ -71,7 +66,8 @@ namespace GLib {
|
|||
g_object_set_data (_obj, key, value);
|
||||
}
|
||||
|
||||
/* [DllImport("gtk-1.3")]
|
||||
/*
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern void g_object_set_data_full (
|
||||
IntPtr obj,
|
||||
String key,
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
// Glib.Signals.Simple.cs - Glib Simple Signal implementation
|
||||
//
|
||||
// Author: Bob Smith <bob@thestuff.net>
|
||||
//
|
||||
// (c) 2001 Bob Smith
|
||||
|
||||
namespace Glib.Signals {
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using Glib;
|
||||
|
||||
public delegate void SimpleDelegate(IntPtr obj, IntPtr data);
|
||||
public class Simple {
|
||||
public Simple(){}
|
||||
private static void SimpleCallback(IntPtr obj, IntPtr data)
|
||||
{
|
||||
Glib.Object o = Glib.Object.GetObject(obj);
|
||||
EventHandler eh = o.Events[(int)data];
|
||||
if (eh != null)
|
||||
{
|
||||
eh(o, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
private static int _simpleRefCount = 0;
|
||||
private static SimpleDelegate _simpleDelegate;
|
||||
private static GCHandle _simpleGCHandle;
|
||||
public static SimpleDelegate Delegate
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Simple._simpleDelegate == null)
|
||||
{
|
||||
Simple._simpleDelegate = new SimpleDelegate(SimpleCallback);
|
||||
Simple._simpleGCHandle = GCHandle.Alloc (Simple._simpleDelegate, GCHandleType.Pinned);
|
||||
}
|
||||
Simple._simpleRefCount++;
|
||||
return Simple._simpleDelegate;
|
||||
}
|
||||
}
|
||||
public static void Unref()
|
||||
{
|
||||
Simple._simpleRefCount--;
|
||||
if (Simple._simpleRefCount < 1)
|
||||
{
|
||||
Simple._simpleRefCount = 0;
|
||||
Simple._simpleGCHandle.free();
|
||||
Simple._simpleDelegate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
79
glib/SimpleSignal.cs
Normal file
79
glib/SimpleSignal.cs
Normal file
|
@ -0,0 +1,79 @@
|
|||
// GLib.Signals.Simple.cs - GLib Simple Signal implementation
|
||||
//
|
||||
// Authors: Bob Smith <bob@thestuff.net>
|
||||
// Mike Kestner <mkestner@speakeasy.net>
|
||||
//
|
||||
// (c) 2001 Bob Smith & Mike Kestner
|
||||
|
||||
namespace GLib {
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using GLib;
|
||||
|
||||
/// <summary>
|
||||
/// SimpleDelegate Delegate
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// Used to connect to simple signals which contain no signal-
|
||||
/// specific data.
|
||||
/// </remarks>
|
||||
|
||||
public delegate void SimpleDelegate (IntPtr obj, String name);
|
||||
|
||||
/// <summary>
|
||||
/// SimpleSignal Class
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// Wraps a simple signal which contains no single-specific data.
|
||||
/// </remarks>
|
||||
|
||||
public class SimpleSignal {
|
||||
|
||||
private static int _RefCount = 0;
|
||||
private static SimpleDelegate _Delegate;
|
||||
private static GCHandle _GCHandle;
|
||||
|
||||
private static void SimpleCallback(IntPtr obj, String name)
|
||||
{
|
||||
Object o = Object.GetObject(obj);
|
||||
EventHandler eh = (EventHandler) o.Events[name];
|
||||
if (eh != null)
|
||||
{
|
||||
eh(o, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
public static SimpleDelegate Delegate
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_Delegate == null)
|
||||
{
|
||||
_Delegate = new SimpleDelegate(SimpleCallback);
|
||||
|
||||
/* FIXME: Can't do this until a layout attribute is defined for SimpleCallback
|
||||
* apparently, since this throws an ArgumentException:Type does not have a
|
||||
* layout attribute.
|
||||
*
|
||||
* _GCHandle = GCHandle.Alloc (_Delegate, GCHandleType.Pinned);
|
||||
*/
|
||||
}
|
||||
_RefCount++;
|
||||
return _Delegate;
|
||||
}
|
||||
}
|
||||
|
||||
public static void Unref()
|
||||
{
|
||||
_RefCount--;
|
||||
if (_RefCount < 1)
|
||||
{
|
||||
_RefCount = 0;
|
||||
_GCHandle.Free();
|
||||
_Delegate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
38
glib/TypeFundamentals.cs
Normal file
38
glib/TypeFundamentals.cs
Normal file
|
@ -0,0 +1,38 @@
|
|||
// GLib.TypeFundamentals.cs : Standard Types enumeration
|
||||
//
|
||||
// Author: Mike Kestner <mkestner@speakeasy.net>
|
||||
//
|
||||
// (c) 2001 Mike Kestner
|
||||
|
||||
namespace GLib {
|
||||
|
||||
/// <summary>
|
||||
/// TypeFundamentals enumeration
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// The built-in types available in GLib.
|
||||
/// </remarks>
|
||||
|
||||
public enum TypeFundamentals {
|
||||
TypeInvalid,
|
||||
TypeNone,
|
||||
TypeInterface,
|
||||
TypeChar,
|
||||
TypeUChar,
|
||||
TypeBoolean,
|
||||
TypeInt,
|
||||
TypeUInt,
|
||||
TypeLong,
|
||||
TypeULong,
|
||||
TypeEnum,
|
||||
TypeFlags,
|
||||
TypeFloat,
|
||||
TypeDouble,
|
||||
TypeString,
|
||||
TypePointer,
|
||||
TypeBoxed,
|
||||
TypeParam,
|
||||
TypeObject,
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
// GLib.GValue.cs - GLib Value class implementation
|
||||
// GLib.Value.cs - GLib Value class implementation
|
||||
//
|
||||
// Author: Mike Kestner <mkestner@speakeasy.net>
|
||||
//
|
||||
|
@ -9,34 +9,56 @@ namespace GLib {
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct GValueStruct {
|
||||
uint type;
|
||||
IntPtr data1;
|
||||
IntPtr data2;
|
||||
IntPtr data3;
|
||||
IntPtr data4;
|
||||
}
|
||||
/// <summary>
|
||||
/// Value Class
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// An arbitrary data type similar to a CORBA Any which is used
|
||||
/// to get and set properties on Objects.
|
||||
/// </remarks>
|
||||
|
||||
public class GValue {
|
||||
public class Value {
|
||||
|
||||
GValueStruct _val;
|
||||
IntPtr _val;
|
||||
|
||||
// We use g_malloc0 and g_free to put the GValue on the
|
||||
// heap to avoid some marshalling pain.
|
||||
[DllImport("glib-1.3.dll")]
|
||||
static extern IntPtr g_malloc0 (long n_bytes);
|
||||
[DllImport("glib-1.3.dll")]
|
||||
static extern void g_free (IntPtr mem);
|
||||
|
||||
[DllImport("gobject-1.3.dll")]
|
||||
static extern void g_value_init (IntPtr val,
|
||||
TypeFundamentals type);
|
||||
/// <summary>
|
||||
/// GValue Constructor
|
||||
/// Value Constructor
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// Constructs a GValue from a string.
|
||||
/// Constructs a Value from a spectified string.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gobject-1.3")]
|
||||
static extern void g_value_set_string (ref GValueStruct val,
|
||||
[DllImport("gobject-1.3.dll")]
|
||||
static extern void g_value_set_string (IntPtr val,
|
||||
String data);
|
||||
[DllImport("gobject-1.3.dll")]
|
||||
static extern void g_value_set_boolean (IntPtr val,
|
||||
bool data);
|
||||
|
||||
public GValue (String data)
|
||||
public Value (bool val)
|
||||
{
|
||||
g_value_set_string (ref _val, data);
|
||||
_val = g_malloc0 (5 * IntPtr.Size);
|
||||
g_value_init (_val, TypeFundamentals.TypeBoolean);
|
||||
g_value_set_boolean (_val, val);
|
||||
}
|
||||
|
||||
public Value (String str)
|
||||
{
|
||||
_val = g_malloc0 (5 * IntPtr.Size);
|
||||
g_value_init (_val, TypeFundamentals.TypeString);
|
||||
g_value_set_string (_val, str);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -44,31 +66,30 @@ namespace GLib {
|
|||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// Extracts a string from a GValue. Note, this method
|
||||
/// will produce an exception if the GValue does not hold a
|
||||
/// Extracts a string from a Value. Note, this method
|
||||
/// will produce an exception if the Value does not hold a
|
||||
/// string value.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gobject-1.3")]
|
||||
static extern String g_value_get_string (ref GValueStruct val);
|
||||
[DllImport("gobject-1.3.dll")]
|
||||
static extern String g_value_get_string (IntPtr val);
|
||||
|
||||
public String GetString ()
|
||||
{
|
||||
// FIXME: Insert an appropriate exception here if
|
||||
// _val.type indicates an error.
|
||||
return g_value_get_string (ref _val);
|
||||
return g_value_get_string (_val);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ValueStruct Property
|
||||
/// RawValue Property
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// Accesses a structure which can be easily marshalled
|
||||
/// via PInvoke to set properties on GObjects.
|
||||
/// Read only. Accesses a pointer to the Raw GValue.
|
||||
/// </remarks>
|
||||
|
||||
public GValueStruct ValueStruct {
|
||||
public IntPtr RawValue {
|
||||
get {
|
||||
return _val;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
CSC=/cygdrive/c/windows/microsoft.net/framework/v1.0.2914/csc.exe
|
||||
|
||||
all:
|
||||
@echo "You must use 'make windows' or 'make unix'."
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace Gtk {
|
|||
|
||||
public class Application {
|
||||
|
||||
[DllImport("gtk-1.3")]
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern void gtk_init (ref int argc, ref String[] argv);
|
||||
|
||||
/// <summary>
|
||||
|
@ -48,7 +48,7 @@ namespace Gtk {
|
|||
/// Begins the event loop iteration.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gtk-1.3")]
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern void gtk_main ();
|
||||
|
||||
public static void Run ()
|
||||
|
@ -65,7 +65,7 @@ namespace Gtk {
|
|||
/// Terminates the event loop iteration.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gtk-1.3")]
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern void gtk_main_quit ();
|
||||
|
||||
public static void Quit ()
|
||||
|
|
|
@ -12,6 +12,7 @@ namespace Gtk {
|
|||
public class Button : Widget {
|
||||
|
||||
private static readonly string ClickedEvent = "clicked";
|
||||
/*
|
||||
public event EventHandler Clicked
|
||||
{
|
||||
add
|
||||
|
@ -23,7 +24,7 @@ namespace Gtk {
|
|||
RemoveSimpleEvent (ClickedEvent, value);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
/// <summary>
|
||||
/// Button Object Constructor
|
||||
/// </summary>
|
||||
|
@ -37,12 +38,14 @@ namespace Gtk {
|
|||
RawObject = o;
|
||||
}
|
||||
|
||||
public ~Button ()
|
||||
~Button ()
|
||||
{
|
||||
/* FIXME: Find legal way to do this eventually.
|
||||
foreach (EventHandler e in Events[ClickedEvent])
|
||||
{
|
||||
Clicked -= e;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -8,31 +8,38 @@ namespace Gtk {
|
|||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using Glib;
|
||||
using GLib;
|
||||
using Gdk;
|
||||
|
||||
|
||||
public class Widget : Object {
|
||||
public Widget() {}
|
||||
public ~Widget()
|
||||
~Widget()
|
||||
{
|
||||
foreach (EventHandler e in Events[DeleteEvent])
|
||||
/* FIXME: Find a valid way to Delete the handlers
|
||||
foreach (EventHandler e in Events[DelEvName])
|
||||
{
|
||||
DeleteEvent -= e;
|
||||
}
|
||||
}
|
||||
private static readonly string DeleteEvent = "delete-event";
|
||||
public event EventHandler DeleteEvent
|
||||
{
|
||||
add
|
||||
{
|
||||
AddGdkSimpleEvent(DeleteEvent, value);
|
||||
}
|
||||
remove
|
||||
{
|
||||
RemoveGdkSimpleEvent (DeleteEvent, value);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
private static readonly string DelEvName = "delete-event";
|
||||
|
||||
public event EventHandler DeleteEvent {
|
||||
add {
|
||||
if (Events [DelEvName] == null)
|
||||
ConnectSignal(DelEvName);
|
||||
|
||||
Events.AddHandler(DelEvName, value);
|
||||
}
|
||||
remove {
|
||||
Events.RemoveHandler(DelEvName, value);
|
||||
if (Events [DelEvName] == null)
|
||||
DisconnectSignal (DelEvName);
|
||||
}
|
||||
}
|
||||
/*
|
||||
public void AddSimpleEvent(Object type, string name, EventHandler value)
|
||||
{
|
||||
if (Events[type] == null)
|
||||
|
@ -42,10 +49,7 @@ namespace Gtk {
|
|||
Events.AddHandler(type, value);
|
||||
}
|
||||
|
||||
public void AddSimpleEvent(String type, EventHandle value)
|
||||
: this (type, type, value) {}
|
||||
|
||||
public void RemoveSimpleEvent(Object type, string name, EventHander value)
|
||||
public void RemoveSimpleEvent(Object type, string name, EventHandler value)
|
||||
{
|
||||
Events.RemoveHandler(type, value);
|
||||
if (Events[type] == null)
|
||||
|
@ -54,9 +58,6 @@ namespace Gtk {
|
|||
}
|
||||
}
|
||||
|
||||
public void RemoveSimpleEvent(String type, EventHandle value)
|
||||
: this (type, type, value) {}
|
||||
|
||||
public void AddGdkSimpleEvent(Object type, string name, EventHandler value)
|
||||
{
|
||||
if (Events[type] == null)
|
||||
|
@ -66,10 +67,7 @@ namespace Gtk {
|
|||
Events.AddHandler(type, value);
|
||||
}
|
||||
|
||||
public void AddGdkSimpleEvent(String type, EventHandle value)
|
||||
: this (type, type, value) {}
|
||||
|
||||
public void RemoveGdkSimpleEvent(Object type, string name, EventHander value)
|
||||
public void RemoveGdkSimpleEvent(Object type, string name, EventHandler value)
|
||||
{
|
||||
Events.RemoveHandler(type, value);
|
||||
if (Events[type] == null)
|
||||
|
@ -77,42 +75,39 @@ namespace Gtk {
|
|||
DisconnectGdkSimpleEventSignal(name, type);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveGdkSimpleEvent(String type, EventHandle value)
|
||||
: this (type, type, value) {}
|
||||
|
||||
|
||||
[DllImport("gtk-1.3")]
|
||||
*/
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern void gtk_signal_connect_full (
|
||||
IntPtr obj, string evname,
|
||||
SimpleDelegate cb, IntPtr unsupported,
|
||||
IntPtr data, IntPtr destroycb,
|
||||
String data, IntPtr destroycb,
|
||||
int objsig, int after );
|
||||
|
||||
public void ConnectSimpleSignal(string name, Object signal)
|
||||
public void ConnectSignal(string name)
|
||||
{
|
||||
gtk_signal_connect_full(RawObject, name, Glib.Signals.Simple.Delegate,
|
||||
new IntPtr (0), new IntPtr (signal.GetHashCode()),
|
||||
gtk_signal_connect_full(RawObject, name, SimpleSignal.Delegate,
|
||||
new IntPtr (0), name,
|
||||
new IntPtr (0), 0, 0);
|
||||
}
|
||||
|
||||
public void DisconnectSimpleSignal(string name, Object signal)
|
||||
public void DisconnectSignal(string name)
|
||||
{
|
||||
Glib.Signals.Simple.Unref();
|
||||
SimpleSignal.Unref();
|
||||
}
|
||||
|
||||
/*
|
||||
public void ConnectGdkSimpleSignal(string name, Object signal)
|
||||
{
|
||||
gtk_signal_connect_full(RawObject, name, Gdk.Signals.SimpleEvent.Delegate,
|
||||
new IntPtr (0), new IntPtr (signal.GetHashCode()),
|
||||
gtk_signal_connect_full(RawObject, name, SimpleEvent.Delegate,
|
||||
new IntPtr (0), name,
|
||||
new IntPtr (0), 0, 0);
|
||||
}
|
||||
|
||||
public void DisconnectGdkSimpleSignal(string name, Object signal)
|
||||
{
|
||||
Gdk.Signals.SimpleEvent.Unref();
|
||||
SimpleEvent.Unref();
|
||||
}
|
||||
|
||||
*/
|
||||
/// <summary>
|
||||
/// Show Method
|
||||
/// </summary>
|
||||
|
@ -121,7 +116,7 @@ namespace Gtk {
|
|||
/// Makes the Widget visible on the display.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gtk-1.3")]
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern void gtk_widget_show (IntPtr obj);
|
||||
|
||||
public void Show ()
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace Gtk {
|
|||
/// Constructs a new Window of type TopLevel.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gtk-1.3")]
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern IntPtr gtk_window_new (WindowType type);
|
||||
|
||||
public Window ()
|
||||
|
@ -73,7 +73,7 @@ namespace Gtk {
|
|||
|
||||
public bool AllowGrow {
|
||||
get {
|
||||
GValue val = GetProp ("allow-grow");
|
||||
Value val = GetProp ("allow-grow");
|
||||
return (val != 0);
|
||||
}
|
||||
set {
|
||||
|
@ -166,7 +166,7 @@ namespace Gtk {
|
|||
/// The Position of the Window in Screen Coordinates.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gtk-1.3")]
|
||||
[DllImport("gtk-1.3.dll")]
|
||||
static extern void gtk_window_set_position (IntPtr hnd,
|
||||
int x, int y);
|
||||
|
||||
|
@ -186,15 +186,14 @@ namespace Gtk {
|
|||
/// The Title displayed in the Window's Title Bar.
|
||||
/// </remarks>
|
||||
|
||||
[DllImport("gobject-1.3")]
|
||||
static extern void g_object_set_property (String title,
|
||||
ref GValueStruct vs);
|
||||
[DllImport("gobject-1.3.dll")]
|
||||
static extern void g_object_set (IntPtr obj, String name,
|
||||
IntPtr val, IntPtr term);
|
||||
|
||||
public String Title {
|
||||
set {
|
||||
GValue val = new GValue (value);
|
||||
GValueStruct vs = val.ValueStruct;
|
||||
g_object_set_property ("title", ref vs);
|
||||
g_object_set (RawObject, "title",
|
||||
Marshal.StringToHGlobalAnsi (value), new IntPtr (0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
CSC=/cygdrive/c/windows/microsoft.net/framework/v1.0.2914/csc.exe
|
||||
|
||||
all:
|
||||
@echo "You must use 'make windows' or 'make unix'."
|
||||
@echo "'make unix' is broken for now."
|
||||
|
|
15
makefile
Normal file
15
makefile
Normal file
|
@ -0,0 +1,15 @@
|
|||
DIRS=glib gdk gtk sample
|
||||
ROOT=//$(subst \,/,$(subst :\,/,$(SYSTEMROOT)))
|
||||
CSC=$(ROOT)/microsoft.net/framework/v1.0.2914/csc.exe
|
||||
|
||||
all:
|
||||
@echo "You must use 'make windows' or 'make unix'."
|
||||
@echo "'make unix' is broken for now."
|
||||
|
||||
windows:
|
||||
for i in $(DIRS); do \
|
||||
(cd $$i; CSC=$(CSC) make windows) || exit 1;\
|
||||
done;
|
||||
|
||||
unix:
|
||||
@echo "'make unix' is broken for now."
|
|
@ -1,4 +1,4 @@
|
|||
CSC=/cygdrive/c/windows/microsoft.net/framework/v1.0.2914/csc.exe
|
||||
CSC=/cygdrive/c/winnt/microsoft.net/framework/v1.0.2914/csc.exe
|
||||
|
||||
all:
|
||||
@echo "You must use 'make windows' or 'make unix'."
|
||||
|
|
Loading…
Reference in a new issue