1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
// QtSignalMap.cs - Hashtable wrapper for prettier code.
//
// Copyright (C) 2002 Nick Zigarovich (nick@chemlab.org)
//
// 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.
//
// NOTES
// o By inheriting from TTQObject, we can use the child tracking features to
// ensure that instances of signal maps are deleted by their parents when
// the parent Dispose()es.
//
// FIXME
// o Override Dispose() and make sure everything gets cleaned up on deletion.
namespace Qt {
using System;
using System.Collections;
using Qt;
internal class QtSignalMap: QtSupport {
private Hashtable signalMap;
private string name;
public string Name {
get { return name; }
}
public QtSignalMap (TTQObject parent): this (parent, "QtSignalMap") {}
public QtSignalMap (TTQObject parent, string name): base (TQNull.Instance)
{
this.name = name;
signalMap = new Hashtable ();
}
internal override void Delete () {}
public void Add (QtSignal signal)
{
signalMap[signal.Identifier] = signal;
}
public QtSignal Remove (string name)
{
QtSignal ret = signalMap[name] as QtSignal;
signalMap.Remove (name);
return ret;
}
public bool Contains (string name)
{
return signalMap.ContainsKey (name);
}
public QtSignal this[string idx] {
get {
if (signalMap.ContainsKey (idx))
return signalMap[idx] as QtSignal;
else
return null;
}
set { signalMap[idx] = value; }
}
public IDictionaryEnumerator GetEnumerator ()
{
return signalMap.GetEnumerator ();
}
public void DumpMap()
{
if (signalMap.Count == 0) {
ErrMsg ("** {0}: No signals to dump.", name);
ErrMsg ("");
}
else {
IDictionaryEnumerator ide = signalMap.GetEnumerator();
while (ide.MoveNext ()) {
(ide.Value as QtSignal).DumpConnections ();
ErrMsg ("");
}
}
}
}
}
|