You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/qtsharp/src/bindings/static/QtSupport.cs

751 lines
27 KiB

// QtSupport.cs - QtSupport c-sharp support file
//
// Copyright (C) 2002 Adam Treat (manyoso@yahoo.com)
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
namespace Qt {
using Qt;
using System;
using System.Collections;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
public class QtSupport: IDisposable {
private static Hashtable QtObjects;
private static int cleanCount;
private static int cleanLimit;
private static QtEventHandler qtEventHandler;
// Runtime flags, set by QApplication.ParseArguments
internal static bool enableDebug;
internal static bool disableTracking;
internal static bool traceObjects;
internal static bool traceChildren;
static QtSupport() {
//QtObjects = Hashtable.Synchronized (new Hashtable ());
QtObjects = new Hashtable();
cleanCount = 0;
cleanLimit = 750;
enableDebug = false;
disableTracking = false;
traceObjects = false;
traceChildren = false;
}
internal protected IntPtr rawObject;
internal protected bool disposed;
internal bool deleted;
protected QtSupport qparent;
protected ArrayList qchildren;
internal IntPtr RawObject {
get { return rawObject; }
}
public bool Disposed {
get { return disposed; }
}
public QtSupport QParent {
get { return qparent; }
}
public ArrayList QChildren {
get { return qchildren; }
}
// A dummy constructor for inherited classes
internal QtSupport (QNull dummy) {
disposed = false;
deleted = false;
qchildren = new ArrayList ();
}
public void Dispose ()
{
GC.SuppressFinalize (this);
Dispose (true);
}
protected virtual void Dispose (bool disposeManaged)
{
if (disposed)
return;
if (rawObject == IntPtr.Zero)
deleted = true;
if (disposeManaged) {
disposed = true;
UnregisterObject (this);
if (qparent != null && ! qparent.Disposed)
qparent.RemoveChild (this);
foreach (QtSupport qts in qchildren)
qts.Dispose ();
}
/*
DbgMsg ("({0}) {1}: {2} managed. {3} native instance.",
deleted ? IntPtr.Zero : rawObject,
this,
disposeManaged ? "Disposing" : "Not disposing",
deleted ? "Not deleting" : "Deleting");
*/
qparent = null;
qchildren = null;
Delete ();
}
internal virtual void Delete ()
{
WarnMsg ("({0}) {1}: QtSupport.Dispose() running", rawObject, this);
deleted = true;
}
/************************** General Utility Methods *********************************/
public static void QAssert (bool value)
{
if (!value) throw new ApplicationException ("Assertion failed");
}
public static void QAssert (bool value, string message)
{
if (!value) throw new ApplicationException ("Assertion failed: " + message);
}
internal bool IsQObject ()
{
return GetType ().IsSubclassOf (typeof (QObject));
}
internal static void WarnMsg (string format, params object[] arg)
{
if (enableDebug)
Console.Error.WriteLine ("Qt# Warning: " + format, arg);
}
internal static void DbgMsg (string format, params object[] arg)
{
if (enableDebug) Console.WriteLine (format, arg);
}
internal static void ErrMsg (string format, params object[] arg)
{
Console.Error.WriteLine (format, arg);
}
internal static void Msg (string format, params object[] arg)
{
Console.WriteLine (format, arg);
}
public static string SIGNAL (string signal)
{
return "2"+
Regex.Replace (signal, @"\s*\(\s*\)", "()");
}
public static string SLOT (string slot)
{
return "1" +
Regex.Replace (slot, @"\s*\(\s*\)", "()");
}
/************************** Object Tracking/Boxing and Disposal *********************************/
internal static void RegisterObject (QtSupport o)
{
if (disableTracking) return;
if (o.RawObject == IntPtr.Zero) {
WarnMsg ("Asked to register object with null pointer: {0}", o);
return;
}
string replacing = String.Empty;
WeakReference wref;
if (QtObjects.ContainsKey (o.RawObject))
{
wref = QtObjects[o.RawObject] as WeakReference;
QAssert (! wref.IsAlive,
"New object "+o+" has same RawObject as "+(QtSupport)wref.Target+"! Please report this error!");
replacing = "(replacing)";
QtObjects.Remove (o.RawObject);
}
if (traceObjects)
ErrMsg ("Object Registered: {0} ({1}) {2}", o, o.RawObject, replacing);
QtObjects[o.RawObject] = new WeakReference (o);
if (cleanCount > cleanLimit) {
cleanCount = 0;
IDictionaryEnumerator de = QtObjects.GetEnumerator ();
ArrayList obituaries = new ArrayList ();
while (de.MoveNext ()) {
wref = de.Value as WeakReference;
if (!wref.IsAlive) obituaries.Add (de.Key);
}
if (traceObjects)
ErrMsg ("RegisterObject: Removing {0} of {1} references from QtObjects", obituaries.Count, QtObjects.Count);
foreach (IntPtr p in obituaries)
QtObjects.Remove (p);
}
else
cleanCount++;
}
internal static void UnregisterObject (QtSupport o)
{
if (disableTracking) return;
if (traceObjects) ErrMsg ("Object Unregistered: {0} ({1})", o, o.RawObject);
if (o.RawObject == IntPtr.Zero) {
WarnMsg ("Asked to unregister object with null pointer: {0}", o);
return;
}
QtObjects.Remove (o.RawObject);
}
internal static QtSupport LookupObject (IntPtr ptr)
{
if (disableTracking) return null;
if (ptr == IntPtr.Zero) {
WarnMsg ("Asked to lookup null pointer");
return null;
}
QtSupport ret = null;
if (QtObjects.ContainsKey (ptr)) {
WeakReference wref = QtObjects[ptr] as WeakReference;
if (wref.IsAlive)
ret = wref.Target as QtSupport;
else
QtObjects.Remove (ptr);
}
return ret;
}
internal static QtSupport LookupObject (IntPtr ptr, Type type)
{
if (ptr == IntPtr.Zero) {
WarnMsg ("Asked to lookup null pointer of type {0}", type);
return null;
}
if (! (type.IsSubclassOf (typeof(QtSupport)) || type == typeof (QtSupport)) )
throw new ArgumentException ("Type '" +type+ "' is not related to QtSupport.");
QtSupport qtsObj = LookupObject (ptr);
if (qtsObj == null) {
//DbgMsg (type+" ("+ptr+"): Boxing foreign object");
qtsObj = (QtSupport)Activator.CreateInstance (
type,
BindingFlags.NonPublic | BindingFlags.Instance,
null,
new object[] {ptr},
null);
// FIXME Must handle cases where qtsObj is a QObject root
// or child. Should we box the entire object tree in
// C#? Also, RegisterObject will only track this object
// if it is a root node. Child nodes are assumed to be
// referenced by their parents. Must ponder and seek
// opinions.
}
return qtsObj;
}
internal virtual void AddChild (QtSupport o) {
// FIXME: Faster way to do this? O(n), where n == Count
if (!qchildren.Contains(o)) {
qchildren.Add(o);
if (traceChildren)
ErrMsg ("({0}) {1}::AddChild: ({2}) {3}", rawObject, this, o.RawObject, o);
}
}
internal virtual void RemoveChild (QtSupport o) {
// FIXME: Faster way to do this? O(n), where n == Count
if (qchildren.Contains(o)) {
qchildren.Remove(o);
if (traceChildren)
ErrMsg ("({0}) {1}::RemoveChild: ({2}) {3}", rawObject, this, o.RawObject, o);
}
}
/************************** The Event Handler ******************************************/
private delegate void QtEventHandler (IntPtr instance, string eventname, IntPtr eventinstance, string eventclass);
private static QEventList eventList = new QEventList ();
[DllImport("libqtsharp", CharSet=CharSet.Ansi)]
private static extern void qtsharp_QObject_registerEventDelegate
([MarshalAs (UnmanagedType.FunctionPtr)] Delegate qtdelegate);
internal static void RegisterEventDelegate ()
{
qtEventHandler = new QtEventHandler (DispatchEvent);
qtsharp_QObject_registerEventDelegate (qtEventHandler);
}
internal static QEventList EventList {
get { return eventList; }
}
private static void DispatchEvent (IntPtr instance, string eventname, IntPtr eventinstance, string eventclass)
{
ArrayList array;
QObject obj;
QEvent ev;
Type evtype = Type.GetType ("Qt."+eventclass+",Qt");
if ((obj = (QObject)LookupObject (instance)) == null) return;
try
{
if ((ev = (QEvent)LookupObject (eventinstance)) == null) {
object[] args = new object[] { eventinstance };
BindingFlags bflags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public;
ev = Activator.CreateInstance (evtype, bflags, null, args, null) as QEvent;
}
// Notify global event handlers first.
if ((array = EventList.QEventHandlers (eventclass)) != null) {
foreach (Delegate del in array) {
QEventArgs evargs = new QEventArgs (eventname, ev);
del.DynamicInvoke (new object[] { obj, evargs });
}
}
// Notify local event handlers second.
if ((array = EventList.QEventHandlers (eventname)) != null) {
foreach (Delegate del in array) {
if (ReferenceEquals (del.Target, obj))
del.DynamicInvoke (new object[] { ev });
}
}
}
catch (TargetInvocationException e) {
throw e.InnerException;
}
ev.deleted = true; // Qt deletes events for us
ev.Dispose ();
}
// Global events.
public static event QChildHandler childHandler {
add { EventList.Add ("QChildEvent", value); }
remove { EventList.Remove ("QChildEvent", value); }
}
public static event QDragEnterHandler dragEnterHandler {
add { EventList.Add ("QDragEnterEvent", value); }
remove { EventList.Remove ("QDragEnterEvent", value); }
}
public static event QDropHandler dropHandler {
add { EventList.Add ("QDropEvent", value); }
remove { EventList.Remove ("QDropEvent", value); }
}
public static event QIMHandler imHandler {
add { EventList.Add ("QIMEvent", value); }
remove { EventList.Remove ("QIMEvent", value); }
}
public static event QPaintHandler paintHandler {
add { EventList.Add ("QPaintEvent", value); }
remove { EventList.Remove ("QPaintEvent", value); }
}
public static event QTimerHandler timerHandler {
add { EventList.Add ("QTimerEvent", value); }
remove { EventList.Remove ("QTimerEvent", value); }
}
public static event QCloseHandler closeHandler {
add { EventList.Add ("QCloseEvent", value); }
remove { EventList.Remove ("QCloseEvent", value); }
}
public static event QDragLeaveHandler dragLeaveHandler {
add { EventList.Add ("QDragLeaveEvent", value); }
remove { EventList.Remove ("QDragLeaveEvent", value); }
}
public static event QEventHandler eventHandler {
add { EventList.Add ("QEventEvent", value); }
remove { EventList.Remove ("QEventEvent", value); }
}
public static event QKeyHandler keyHandler {
add { EventList.Add ("QKeyEvent", value); }
remove { EventList.Remove ("QKeyEvent", value); }
}
public static event QResizeHandler resizeHandler {
add { EventList.Add ("QResizeEvent", value); }
remove { EventList.Remove ("QResizeEvent", value); }
}
public static event QWheelHandler wheelHandler {
add { EventList.Add ("QWheelEvent", value); }
remove { EventList.Remove ("QWheelEvent", value); }
}
public static event QContextMenuHandler contextMenuHandler {
add { EventList.Add ("QContextMenuEvent", value); }
remove { EventList.Remove ("QContextMenuEvent", value); }
}
public static event QDragMoveHandler dragMoveHandler {
add { EventList.Add ("QDragMoveEvent", value); }
remove { EventList.Remove ("QDragMoveEvent", value); }
}
public static event QFocusHandler focusHandler {
add { EventList.Add ("QFocusEvent", value); }
remove { EventList.Remove ("QFocusEvent", value); }
}
public static event QMouseHandler mouseHandler {
add { EventList.Add ("QMouseEvent", value); }
remove { EventList.Remove ("QMouseEvent", value); }
}
public static event QShowHandler showHandler {
add { EventList.Add ("QShowEvent", value); }
remove { EventList.Remove ("QShowEvent", value); }
}
public static event QCustomHandler customHandler {
add { EventList.Add ("QCustomEvent", value); }
remove { EventList.Remove ("QCustomEvent", value); }
}
public static event QDragResponseHandler dragResponseHandler {
add { EventList.Add ("QDragResponseEvent", value); }
remove { EventList.Remove ("QDragResponseEvent", value); }
}
public static event QHideHandler hideHandler {
add { EventList.Add ("QHideEvent", value); }
remove { EventList.Remove ("QHideEvent", value); }
}
public static event QMoveHandler moveHandler {
add { EventList.Add ("QMoveEvent", value); }
remove { EventList.Remove ("QMoveEvent", value); }
}
public static event QTabletHandler tabletHandler {
add { EventList.Add ("QTabletEvent", value); }
remove { EventList.Remove ("QTabletEvent", value); }
}
// Local events.
protected static event ChildEvent childEvent {
add { EventList.Add ("childEvent", value); }
remove { EventList.Remove ("childEvent", value); }
}
protected static event CloseEvent closeEvent {
add { EventList.Add ("closeEvent", value); }
remove { EventList.Remove ("closeEvent", value); }
}
protected static event ContentsContextMenuEvent contentsContextMenuEvent {
add { EventList.Add ("contentsContextMenuEvent", value); }
remove { EventList.Remove ("contentsContextMenuEvent", value); }
}
protected static event ContentsDragEnterEvent contentsDragEnterEvent {
add { EventList.Add ("contentsDragEnterEvent", value); }
remove { EventList.Remove ("contentsDragEnterEvent", value); }
}
protected static event ContentsDragLeaveEvent contentsDragLeaveEvent {
add { EventList.Add ("contentsDragLeaveEvent", value); }
remove { EventList.Remove ("contentsDragLeaveEvent", value); }
}
protected static event ContentsDragMoveEvent contentsDragMoveEvent {
add { EventList.Add ("contentsDragMoveEvent", value); }
remove { EventList.Remove ("contentsDragMoveEvent", value); }
}
protected static event ContentsDropEvent contentsDropEvent {
add { EventList.Add ("contentsDropEvent", value); }
remove { EventList.Remove ("contentsDropEvent", value); }
}
protected static event ContentsMouseDoubleClickEvent contentsMouseDoubleClickEvent {
add { EventList.Add ("contentsMouseDoubleClickEvent", value); }
remove { EventList.Remove ("contentsMouseDoubleClickEvent", value); }
}
protected static event ContentsMouseMoveEvent contentsMouseMoveEvent {
add { EventList.Add ("contentsMouseMoveEvent", value); }
remove { EventList.Remove ("contentsMouseMoveEvent", value); }
}
protected static event ContentsMousePressEvent contentsMousePressEvent {
add { EventList.Add ("contentsMousePressEvent", value); }
remove { EventList.Remove ("contentsMousePressEvent", value); }
}
protected static event ContentsMouseReleaseEvent contentsMouseReleaseEvent {
add { EventList.Add ("contentsMouseReleaseEvent", value); }
remove { EventList.Remove ("contentsMouseReleaseEvent", value); }
}
protected static event ContentsWheelEvent contentsWheelEvent {
add { EventList.Add ("contentsWheelEvent", value); }
remove { EventList.Remove ("contentsWheelEvent", value); }
}
protected static event ContextMenuEvent contextMenuEvent {
add { EventList.Add ("contextMenuEvent", value); }
remove { EventList.Remove ("contextMenuEvent", value); }
}
protected static event CustomEvent customEvent {
add { EventList.Add ("customEvent", value); }
remove { EventList.Remove ("customEvent", value); }
}
protected static event DragEnterEvent dragEnterEvent {
add { EventList.Add ("dragEnterEvent", value); }
remove { EventList.Remove ("dragEnterEvent", value); }
}
protected static event DragLeaveEvent dragLeaveEvent {
add { EventList.Add ("dragLeaveEvent", value); }
remove { EventList.Remove ("dragLeaveEvent", value); }
}
protected static event DragMoveEvent dragMoveEvent {
add { EventList.Add ("dragMoveEvent", value); }
remove { EventList.Remove ("dragMoveEvent", value); }
}
protected static event DropEvent dropEvent {
add { EventList.Add ("dropEvent", value); }
remove { EventList.Remove ("dropEvent", value); }
}
protected static event EnterEvent enterEvent {
add { EventList.Add ("enterEvent", value); }
remove { EventList.Remove ("enterEvent", value); }
}
protected static event FocusInEvent focusInEvent {
add { EventList.Add ("focusInEvent", value); }
remove { EventList.Remove ("focusInEvent", value); }
}
protected static event FocusOutEvent focusOutEvent {
add { EventList.Add ("focusOutEvent", value); }
remove { EventList.Remove ("focusOutEvent", value); }
}
protected static event HideEvent hideEvent {
add { EventList.Add ("hideEvent", value); }
remove { EventList.Remove ("hideEvent", value); }
}
protected static event IMComposeEvent imComposeEvent {
add { EventList.Add ("imComposeEvent", value); }
remove { EventList.Remove ("imComposeEvent", value); }
}
protected static event IMEndEvent imEndEvent {
add { EventList.Add ("imEndEvent", value); }
remove { EventList.Remove ("imEndEvent", value); }
}
protected static event IMStartEvent imStartEvent {
add { EventList.Add ("imStartEvent", value); }
remove { EventList.Remove ("imStartEvent", value); }
}
protected static event KeyPressEvent keyPressEvent {
add { EventList.Add ("keyPressEvent", value); }
remove { EventList.Remove ("keyPressEvent", value); }
}
protected static event KeyReleaseEvent keyReleaseEvent {
add { EventList.Add ("keyReleaseEvent", value); }
remove { EventList.Remove ("keyReleaseEvent", value); }
}
protected static event LeaveEvent leaveEvent {
add { EventList.Add ("leaveEvent", value); }
remove { EventList.Remove ("leaveEvent", value); }
}
protected static event MouseDoubleClickEvent mouseDoubleClickEvent {
add { EventList.Add ("mouseDoubleClickEvent", value); }
remove { EventList.Remove ("mouseDoubleClickEvent", value); }
}
protected static event MouseMoveEvent mouseMoveEvent {
add { EventList.Add ("mouseMoveEvent", value); }
remove { EventList.Remove ("mouseMoveEvent", value); }
}
protected static event MousePressEvent mousePressEvent {
add { EventList.Add ("mousePressEvent", value); }
remove { EventList.Remove ("mousePressEvent", value); }
}
protected static event MouseReleaseEvent mouseReleaseEvent {
add { EventList.Add ("mouseReleaseEvent", value); }
remove { EventList.Remove ("mouseReleaseEvent", value); }
}
protected static event MoveEvent moveEvent {
add { EventList.Add ("moveEvent", value); }
remove { EventList.Remove ("moveEvent", value); }
}
protected static event PaintEvent paintEvent {
add { EventList.Add ("paintEvent", value); }
remove { EventList.Remove ("paintEvent", value); }
}
protected static event ResizeEvent resizeEvent {
add { EventList.Add ("resizeEvent", value); }
remove { EventList.Remove ("resizeEvent", value); }
}
protected static event ShowEvent showEvent {
add { EventList.Add ("showEvent", value); }
remove { EventList.Remove ("showEvent", value); }
}
protected static event TabletEvent tabletEvent {
add { EventList.Add ("tabletEvent", value); }
remove { EventList.Remove ("tabletEvent", value); }
}
protected static event TimerEvent timerEvent {
add { EventList.Add ("timerEvent", value); }
remove { EventList.Remove ("timerEvent", value); }
}
protected static event ViewportContextMenuEvent viewportContextMenuEvent {
add { EventList.Add ("viewportContextMenuEvent", value); }
remove { EventList.Remove ("viewportContextMenuEvent", value); }
}
protected static event ViewportDragEnterEvent viewportDragEnterEvent {
add { EventList.Add ("viewportDragEnterEvent", value); }
remove { EventList.Remove ("viewportDragEnterEvent", value); }
}
protected static event ViewportDragLeaveEvent viewportDragLeaveEvent {
add { EventList.Add ("viewportDragLeaveEvent", value); }
remove { EventList.Remove ("viewportDragLeaveEvent", value); }
}
protected static event ViewportDragMoveEvent viewportDragMoveEvent {
add { EventList.Add ("viewportDragMoveEvent", value); }
remove { EventList.Remove ("viewportDragMoveEvent", value); }
}
protected static event ViewportDropEvent viewportDropEvent {
add { EventList.Add ("viewportDropEvent", value); }
remove { EventList.Remove ("viewportDropEvent", value); }
}
protected static event ViewportMouseDoubleClickEvent viewportMouseDoubleClickEvent {
add { EventList.Add ("viewportMouseDoubleClickEvent", value); }
remove { EventList.Remove ("viewportMouseDoubleClickEvent", value); }
}
protected static event ViewportMouseMoveEvent viewportMouseMoveEvent {
add { EventList.Add ("viewportMouseMoveEvent", value); }
remove { EventList.Remove ("viewportMouseMoveEvent", value); }
}
protected static event ViewportMousePressEvent viewportMousePressEvent {
add { EventList.Add ("viewportMousePressEvent", value); }
remove { EventList.Remove ("viewportMousePressEvent", value); }
}
protected static event ViewportMouseReleaseEvent viewportMouseReleaseEvent {
add { EventList.Add ("viewportMouseReleaseEvent", value); }
remove { EventList.Remove ("viewportMouseReleaseEvent", value); }
}
protected static event ViewportPaintEvent viewportPaintEvent {
add { EventList.Add ("viewportPaintEvent", value); }
remove { EventList.Remove ("viewportPaintEvent", value); }
}
protected static event ViewportResizeEvent viewportResizeEvent {
add { EventList.Add ("viewportResizeEvent", value); }
remove { EventList.Remove ("viewportResizeEvent", value); }
}
protected static event ViewportWheelEvent viewportWheelEvent {
add { EventList.Add ("viewportWheelEvent", value); }
remove { EventList.Remove ("viewportWheelEvent", value); }
}
protected static event WheelEvent wheelEvent {
add { EventList.Add ("wheelEvent", value); }
remove { EventList.Remove ("wheelEvent", value); }
}
// The local event delegates.
protected delegate void ChildEvent (QChildEvent e);
protected delegate void CloseEvent (QCloseEvent e);
protected delegate void ContentsContextMenuEvent (QContextMenuEvent e);
protected delegate void ContentsDragEnterEvent (QDragEnterEvent e);
protected delegate void ContentsDragLeaveEvent (QDragLeaveEvent e);
protected delegate void ContentsDragMoveEvent (QDragMoveEvent e);
protected delegate void ContentsDropEvent (QDropEvent e);
protected delegate void ContentsMouseDoubleClickEvent (QMouseEvent e);
protected delegate void ContentsMouseMoveEvent (QMouseEvent e);
protected delegate void ContentsMousePressEvent (QMouseEvent e);
protected delegate void ContentsMouseReleaseEvent (QMouseEvent e);
protected delegate void ContentsWheelEvent (QWheelEvent e);
protected delegate void ContextMenuEvent (QContextMenuEvent e);
protected delegate void CustomEvent (QCustomEvent e);
protected delegate void DragEnterEvent (QDragEnterEvent e);
protected delegate void DragLeaveEvent (QDragLeaveEvent e);
protected delegate void DragMoveEvent (QDragMoveEvent e);
protected delegate void DropEvent (QDropEvent e);
protected delegate void EnterEvent (QEvent e);
protected delegate void FocusInEvent (QFocusEvent e);
protected delegate void FocusOutEvent (QFocusEvent e);
protected delegate void HideEvent (QHideEvent e);
protected delegate void IMComposeEvent (QIMEvent e);
protected delegate void IMEndEvent (QIMEvent e);
protected delegate void IMStartEvent (QIMEvent e);
protected delegate void KeyPressEvent (QKeyEvent e);
protected delegate void KeyReleaseEvent (QKeyEvent e);
protected delegate void LeaveEvent (QEvent e);
protected delegate void MouseDoubleClickEvent (QMouseEvent e);
protected delegate void MouseMoveEvent (QMouseEvent e);
protected delegate void MousePressEvent (QMouseEvent e);
protected delegate void MouseReleaseEvent (QMouseEvent e);
protected delegate void MoveEvent (QMoveEvent e);
protected delegate void PaintEvent (QPaintEvent e);
protected delegate void ResizeEvent (QResizeEvent e);
protected delegate void ShowEvent (QShowEvent e);
protected delegate void TabletEvent (QTabletEvent e);
protected delegate void TimerEvent (QTimerEvent e);
protected delegate void ViewportContextMenuEvent (QContextMenuEvent e);
protected delegate void ViewportDragEnterEvent (QDragEnterEvent e);
protected delegate void ViewportDragLeaveEvent (QDragLeaveEvent e);
protected delegate void ViewportDragMoveEvent (QDragMoveEvent e);
protected delegate void ViewportDropEvent (QDropEvent e);
protected delegate void ViewportMouseDoubleClickEvent (QMouseEvent e);
protected delegate void ViewportMouseMoveEvent (QMouseEvent e);
protected delegate void ViewportMousePressEvent (QMouseEvent e);
protected delegate void ViewportMouseReleaseEvent (QMouseEvent e);
protected delegate void ViewportPaintEvent (QPaintEvent e);
protected delegate void ViewportResizeEvent (QResizeEvent e);
protected delegate void ViewportWheelEvent (QWheelEvent e);
protected delegate void WheelEvent (QWheelEvent e);
}
// The global event delegates.
public delegate void QChildHandler (QObject sender, QEventArgs e);
public delegate void QDragEnterHandler (QObject sender, QEventArgs e);
public delegate void QDropHandler (QObject sender, QEventArgs e);
public delegate void QIMHandler (QObject sender, QEventArgs e);
public delegate void QPaintHandler (QObject sender, QEventArgs e);
public delegate void QTimerHandler (QObject sender, QEventArgs e);
public delegate void QCloseHandler (QObject sender, QEventArgs e);
public delegate void QDragLeaveHandler (QObject sender, QEventArgs e);
public delegate void QEventHandler (QObject sender, QEventArgs e);
public delegate void QKeyHandler (QObject sender, QEventArgs e);
public delegate void QResizeHandler (QObject sender, QEventArgs e);
public delegate void QWheelHandler (QObject sender, QEventArgs e);
public delegate void QContextMenuHandler (QObject sender, QEventArgs e);
public delegate void QDragMoveHandler (QObject sender, QEventArgs e);
public delegate void QFocusHandler (QObject sender, QEventArgs e);
public delegate void QMouseHandler (QObject sender, QEventArgs e);
public delegate void QShowHandler (QObject sender, QEventArgs e);
public delegate void QCustomHandler (QObject sender, QEventArgs e);
public delegate void QDragResponseHandler (QObject sender, QEventArgs e);
public delegate void QHideHandler (QObject sender, QEventArgs e);
public delegate void QMoveHandler (QObject sender, QEventArgs e);
public delegate void QTabletHandler (QObject sender, QEventArgs e);
}