Added SILC Thread Queue API
[crypto.git] / apps / silcer / src / silcerbasewin.cc
1 /*
2
3   silcerbasewin.cc 
4
5   Author: Pekka Riikonen <priikone@silcnet.org>
6
7   Copyright (C) 2001 Pekka Riikonen
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; version 2 of the License.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18 */
19
20 #include "silcerbasewin.hh"
21 #include "silcerapp.hh"
22
23 SilcerBaseWindow::SilcerBaseWindow(const char *widgetname)
24
25   _thisGH = Silcer_App->load_resource(widgetname); 
26   _thisWindow = SilcerGetWidget<Gtk::Window>(_thisGH, widgetname);
27   reference();
28 }
29
30 void SilcerBaseWindow::set_dynamic()
31 {
32   SigC::Object::set_dynamic();
33   set_sink();
34 }
35
36 void SilcerBaseWindow::close()
37 {
38   unreference();
39 }
40
41 SilcerBaseWindow::~SilcerBaseWindow()
42 {
43   evtDestroy();
44   _thisWindow->destroy();
45   gtk_object_unref(GTK_OBJECT(_thisGH));
46 }
47
48 SilcerBaseDialog::SilcerBaseDialog(const char *widgetname, 
49                                    gboolean close_hides)
50   : SilcerBaseWindow(widgetname)
51 {
52   _thisDialog = static_cast<Gnome::Dialog*>(_thisWindow);
53   _thisDialog->close_hides(close_hides);
54   if (!close_hides)
55     _thisDialog->close.connect(slot(this, &SilcerBaseDialog::on_Dialog_close));
56 }
57
58 gboolean SilcerBaseDialog::on_Dialog_close()
59 {
60   _thisWindow->destroy();
61   return true;
62 }
63
64 SilcerBaseWidget::SilcerBaseWidget(const char *widgetname, 
65                                    const char* filename)
66
67   _thisGH = Silcer_App->load_resource(widgetname, filename); 
68   _thisWidget = SilcerGetWidget<Gtk::Widget>(_thisGH, widgetname);
69   reference();
70 }
71
72 void SilcerBaseWidget::set_dynamic()
73 {
74   SigC::Object::set_dynamic();
75   set_sink();
76 }
77
78 void SilcerBaseWidget::close()
79 {
80   unreference();
81 }
82
83 SilcerBaseWidget::~SilcerBaseWidget()
84 {
85   evtDestroy();
86   _thisWidget->destroy();
87   gtk_object_unref(GTK_OBJECT(_thisGH));
88 }