Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/branches/gui/guicc/orxonox_gui.cc @ 1965

Last change on this file since 1965 was 1965, checked in by bensch, 20 years ago

orxonox/branches/gui/guicc: now whole objects can be passed by using signals

File size: 3.4 KB
Line 
1#include "orxonox_gui.h"
2#include <iostream.h>
3
4
5int main( int argc, char *argv[] )
6  {
7    gtk_init (&argc, &argv);
8    Window* orxonoxGUI = new Window("Graphical Orxonox Launcher");
9    orxonoxGUI->connectSignal ("destroy", orxonoxGUI->orxonox_gui_quit);
10    orxonoxGUI->connectSignal ("delete_event", orxonoxGUI->orxonox_gui_quit);
11
12    Frame* Frametest = new Frame ("Test");
13    orxonoxGUI->fill((Frame*) Frametest);
14    Box* box = new Box ('v');
15    Frametest->fill(box);
16
17    CheckButton* button = new CheckButton("test");
18    button->connectSignal ("clicked", orxonoxGUI->orxonox_gui_quit);
19    box->fill(button);
20    Slider* slider = new Slider("testslider", 0, 100);
21    slider->connectSignal ("value_changed", slider->OptionChange);
22    box->fill(slider);
23
24    orxonoxGUI->showall ();
25
26    gtk_main();
27    return 0;
28  }
29
30
31/* WIDGET */
32void Widget::show()
33{
34  gtk_widget_show (widget);
35}
36
37void Widget::connectSignal (char* event, gint ( *signal)( GtkWidget*, GdkEvent*, void *))
38{
39  g_signal_connect (G_OBJECT (this->widget), event, G_CALLBACK (signal), NULL);
40}
41
42void Widget::connectSignal (char* event, gint ( *signal)( GtkWidget*, Widget *))
43{
44  g_signal_connect (G_OBJECT (this->widget), event, G_CALLBACK (signal), this);
45}
46
47/* CONTAINERS*/
48
49void Container::fill (Widget *lowerWidget)
50{
51  gtk_container_add (GTK_CONTAINER(this->widget), lowerWidget->widget);
52  this->down = lowerWidget;
53}
54
55// gtk_container_set_border_width (GTK_CONTAINER (widget), 5);
56
57/* WINDOW */
58
59Window::Window (void)
60{
61  widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
62  gtk_window_set_policy(GTK_WINDOW(widget), TRUE, TRUE, TRUE);
63}
64
65Window::Window (char* windowName)
66{
67  widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
68  gtk_window_set_policy(GTK_WINDOW(widget), TRUE, TRUE, TRUE);
69  this->setTitle(windowName);
70}
71
72Window::~Window ()
73{}
74
75void Window::showall ()
76{
77  gtk_widget_show_all  (widget);
78}
79
80void Window::setTitle (char* title)
81{
82  gtk_window_set_title (GTK_WINDOW (widget), title);
83}
84
85
86gint Window::orxonox_gui_quit ( GtkWidget *widget, GdkEvent *event, gpointer data)
87{
88  gtk_main_quit();
89  return FALSE;
90}
91
92
93/* FRAME */
94
95Frame::Frame (void)
96{
97  widget = gtk_frame_new ("");
98}
99Frame::Frame (char* title)
100{
101  widget = gtk_frame_new (title);
102}
103Frame::~Frame ()
104{}
105
106void Frame::setTitle (char* title)
107{
108  gtk_frame_set_label (GTK_FRAME (widget), title);
109}
110
111
112
113/* BOX */
114
115Box::Box (void)
116{
117  widget = gtk_hbox_new(FALSE, 0);
118}
119Box::Box (char boxtype)
120{
121  if (boxtype == 'v')
122    {
123      widget = gtk_vbox_new(FALSE, 0);
124    }
125  else
126    {
127      widget = gtk_hbox_new(FALSE, 0);
128    }
129}
130
131Box::~Box ()
132{}
133
134void Box::fill (Widget *lowerWidget)
135{
136  gtk_box_pack_start (GTK_BOX(this->widget), lowerWidget->widget, TRUE, TRUE, 0);
137}
138
139
140/* OPTION */
141
142/* BUTTON */
143Button::Button(char* buttonname)
144{
145  widget = gtk_button_new_with_label(buttonname);
146}
147
148/* CHECKBUTTON */
149CheckButton::CheckButton(char* buttonname)
150{
151  widget = gtk_check_button_new_with_label(buttonname);
152}
153
154/* SLIDER */
155Slider::Slider (char* slidername, int start, int end)
156{
157  widget = gtk_hscale_new_with_range (start, end, 5);
158  value = start;
159  option_name = slidername;
160}
161
162gint Slider::OptionChange (GtkWidget *widget, Widget* slider)
163{
164  //Slider * superslider = dynamic_cast<Slider*>(slider)
165    //  dynamic_cast<Slider*>(slider)->value = (int)gtk_range_get_value (GTK_RANGE((Slider*)slider->widget));
166  cout << (int)gtk_range_get_value (GTK_RANGE((Slider*)slider->widget)) << endl;
167}
Note: See TracBrowser for help on using the repository browser.