Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/branches/updater/src/gui/orxonox_gui.cc @ 3312

Last change on this file since 3312 was 3312, checked in by bensch, 19 years ago

orxonox/branches/updater: now it is possible to change the options without the grafical Interface through the GUI, but it is very lousy. Try it\!

File size: 4.8 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software Foundation,
18   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
19
20
21   ### File Specific:
22   main-programmer: Benjamin Grauer
23
24*/
25
26#include <unistd.h>
27
28#include "orxonox_gui.h"
29#include "orxonox_gui_video.h"
30#include "orxonox_gui_audio.h"
31#include "orxonox_gui_exec.h"
32#include "orxonox_gui_flags.h"
33#include "orxonox_gui_banner.h"
34#include "orxonox_gui_keys.h"
35#include "orxonox_gui_update.h"
36
37  Window* orxonoxGUI;
38  OrxonoxGuiVideo* video;
39  OrxonoxGuiAudio* audio;
40  OrxonoxGuiExec* exec;
41  OrxonoxGuiFlags* flags;
42  OrxonoxGuiBanner* banner;
43  OrxonoxGuiKeys* keys;
44  OrxonoxGuiUpdate* update;
45int verbose = 4;
46
47int main( int argc, char *argv[] )
48{
49  OrxonoxGui* orxonoxgui = new OrxonoxGui(argc, argv);
50  return 0;
51}
52
53/* ORXONOXGUI */
54
55/**
56   \brief Initializes the Gui
57*/
58OrxonoxGui::OrxonoxGui (int argc, char *argv[])
59{
60  initGUI(argc, argv);
61
62  orxonoxGUI = new Window( "Grafical OrxOnoX loader, "PACKAGE_VERSION);
63 
64  Box* windowBox = new Box ('h');
65
66  banner = new OrxonoxGuiBanner();
67  windowBox->fill (banner->getWidget());
68 
69  Box* optionBox = new Box ('v');
70 
71  Box* avBox = new Box ('h');
72
73  video = new OrxonoxGuiVideo ();
74  avBox->fill (video->getWidget ());
75  audio = new OrxonoxGuiAudio ();
76  avBox->fill (audio->getWidget ());
77     
78  optionBox->fill (avBox);
79
80  keys = new OrxonoxGuiKeys ();
81  optionBox->fill (keys->getWidget ());
82
83  exec = new OrxonoxGuiExec (orxonoxGUI);
84  optionBox->fill (exec->getWidget ());
85
86  flags = new OrxonoxGuiFlags (orxonoxGUI);
87
88  optionBox->fill (flags->getWidget ());
89  windowBox->fill (optionBox);
90
91  update = new OrxonoxGuiUpdate ();
92  optionBox->fill(update->getWidget());
93 
94  orxonoxGUI->fill (windowBox);
95  flags->setTextFromFlags (orxonoxGUI);
96
97  // Reading Values from File
98  exec->setFilename ("~/.orxonox.conf");
99  exec->readFromFile (orxonoxGUI);
100  // Merging changes to the Options from appended flags.
101  for (int optCount = 1; optCount < argc; optCount++)
102    orxonoxGUI->walkThrough(Widget::flagCheck, argv[optCount], 0);
103
104
105  orxonoxGUI->showall ();
106
107  //// Handling special Cases. ///
108
109  // case update //
110#ifdef HAVE_CURL
111  if (static_cast<Option*>(orxonoxGUI->findWidgetByName("auto update", 0))->value == 1)
112    {
113      update->checkForUpdates();
114    }
115#endif /* HAVE_CURL */
116
117  // case start-with-gui.
118  if (!access(exec->getConfigFile(), F_OK) && static_cast<Option*>(orxonoxGUI->findWidgetByName("Always Show this Menu", 0))->value == 0)
119    OrxonoxGuiExec::startOrxonox(NULL, exec);
120  else
121    {
122#ifdef HAVE_GTK2
123      mainloopGUI();
124#else /* HAVE_GTK2 */
125      char boolAns = 'y';
126      char ans[10]; 
127      while(true)
128        {
129          PRINT(0)(" Listing all the Orxonox Options: \n");
130          PRINT(0)("  #############################\n");
131          Window::mainWindow->walkThrough(Widget::listOptionsAndGroups, 1);
132         
133          PRINT(0)("\nDo you want change any of the above values now? [Yn] ");
134          cin >>boolAns ;
135          if (boolAns =='n' || boolAns=='N')
136            break;
137
138          PRINT(0)("\n Listing all groups\n");
139          PRINT(0)("  #################\n");
140          int groupCount = 0;
141          Window::mainWindow->walkThrough(Widget::listGroups, &groupCount, 1);
142         
143          PRINT(0)("\nIn which Group? [1-%d] ", groupCount);
144          Packer* group;
145          while(true)
146            {
147              cin >> ans;
148              int ansIp = atoi(ans);
149              if (ansIp <= groupCount)
150                {
151                  group = static_cast<Packer*>(Window::mainWindow->findGroupByNumber(&ansIp, 1));
152                break;
153                }
154              else
155                PRINT(0)("\nChoose a smaler Number please: [1-%d] ", groupCount);
156            }
157          PRINT(0)("\n\nGroup: [%s]\n\n", group->groupName);
158          int optionCount = 0;
159          group->walkThrough(Widget::listOptions, &optionCount, 0);
160          PRINT(0)("\nWhich Option? [1-%d] ", optionCount);
161          Option* option;
162          while(true)
163            {
164              cin >> ans;
165              int ansIp = atoi(ans);
166              if (ansIp <= groupCount)
167                {
168                  option = static_cast<Option*>(group->findOptionByNumber(&ansIp, 0));
169                break;
170                }
171              else
172                PRINT(0)("\nChoose a smaler Number please: [1-%d] ", optionCount);
173            }
174          PRINT(0)("\n\n:: %s ::\n", option->title);
175          option->changeOption();
176
177          // here follows the rest.... this will be nasty.
178          //! \todo move this into the gui-gtk-file
179          //! \todo finish it.
180        }
181    }
182
183#endif /* HAVE_GTK2 */
184}
Note: See TracBrowser for help on using the repository browser.