GtkSharp/gtk/Widget.cs
Mike Kestner 25000abee7 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
2001-09-27 17:17:33 +00:00

127 lines
3 KiB
C#
Executable file

// GTK.Widget.cs - GTK Widget class implementation
//
// Author: Mike Kestner <mkestner@speakeasy.net>
//
// (c) 2001 Mike Kestner
namespace Gtk {
using System;
using System.Runtime.InteropServices;
using GLib;
using Gdk;
public class Widget : Object {
public Widget() {}
~Widget()
{
/* FIXME: Find a valid way to Delete the handlers
foreach (EventHandler e in Events[DelEvName])
{
DeleteEvent -= e;
}
*/
}
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)
{
ConnectSimpleSignal(name, type);
}
Events.AddHandler(type, value);
}
public void RemoveSimpleEvent(Object type, string name, EventHandler value)
{
Events.RemoveHandler(type, value);
if (Events[type] == null)
{
DisconnectSimpleSignal(name, type);
}
}
public void AddGdkSimpleEvent(Object type, string name, EventHandler value)
{
if (Events[type] == null)
{
ConnectGdkSimpleEventSignal(name, type);
}
Events.AddHandler(type, value);
}
public void RemoveGdkSimpleEvent(Object type, string name, EventHandler value)
{
Events.RemoveHandler(type, value);
if (Events[type] == null)
{
DisconnectGdkSimpleEventSignal(name, type);
}
}
*/
[DllImport("gtk-1.3.dll")]
static extern void gtk_signal_connect_full (
IntPtr obj, string evname,
SimpleDelegate cb, IntPtr unsupported,
String data, IntPtr destroycb,
int objsig, int after );
public void ConnectSignal(string name)
{
gtk_signal_connect_full(RawObject, name, SimpleSignal.Delegate,
new IntPtr (0), name,
new IntPtr (0), 0, 0);
}
public void DisconnectSignal(string name)
{
SimpleSignal.Unref();
}
/*
public void ConnectGdkSimpleSignal(string name, Object signal)
{
gtk_signal_connect_full(RawObject, name, SimpleEvent.Delegate,
new IntPtr (0), name,
new IntPtr (0), 0, 0);
}
public void DisconnectGdkSimpleSignal(string name, Object signal)
{
SimpleEvent.Unref();
}
*/
/// <summary>
/// Show Method
/// </summary>
///
/// <remarks>
/// Makes the Widget visible on the display.
/// </remarks>
[DllImport("gtk-1.3.dll")]
static extern void gtk_widget_show (IntPtr obj);
public void Show ()
{
gtk_widget_show (RawObject);
}
}
}