Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3625 in orxonox.OLD for orxonox/trunk/src/lib/gui


Ignore:
Timestamp:
Mar 22, 2005, 1:37:59 AM (20 years ago)
Author:
bensch
Message:

orxonox/trunk: merged the branches/updater back to the trunk.
merged with command
svn merge -r 3423:HEAD branches/updater/src/gui trunk/src/lib/graphics/gui/gui.

I do not wish to make such jokes again, because it is even worse than copy-pasting. All Files had to be eddited manually, and many diffs where a little bit strange (artifacts).

Location:
orxonox/trunk/src/lib/gui/gui
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • orxonox/trunk/src/lib/gui/gui/orxonox_gui.cc

    r3423 r3625  
    9595
    9696  // Reading Values from File
    97   exec->setFilename("~/.orxonox.conf");
     97  exec->setConfFile("~/.orxonox/orxonox.conf");
    9898  exec->readFromFile(orxonoxGUI);
    9999  // Merging changes to the Options from appended flags.
  • orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.cc

    r3423 r3625  
    2525
    2626#include "orxonox_gui_exec.h"
     27
    2728#include <iostream>
    2829#include <string>
     30
     31#include <sys/stat.h>
     32#include <sys/types.h>
     33
    2934
    3035HashTable* orxonoxFlagHash;
     
    5055  this->saveSettings->saveability();
    5156  this->execBox->fill(this->saveSettings);
    52   this->verboseMode = new Menu("verbose mode", "no output", "error", "warning", "info", "lastItem");
     57  this->verboseMode = new Menu("verbose mode", "nothing", "error", "warning", "info", "lastItem");
    5358  this->verboseMode->setFlagName("verbose", "v", 0);
    5459  this->verboseMode->saveability();
     
    9095
    9196/**
     97   \brief sets the confDir and File-name out of an input-string
     98*/
     99void OrxonoxGuiExec::setConfFile(char* confFile)
     100{
     101  char splitter =
     102#ifdef __WIN32__
     103    '\\';
     104#else
     105  '/';
     106#endif
     107  char* tmpConfFile = new char[strlen(confFile)+1];
     108  strcpy(tmpConfFile, confFile);
     109  char* tmp = strrchr(tmpConfFile, splitter);
     110  if (tmp)
     111    {
     112      tmp[0] = '\0';
     113      this->setConfDir(tmpConfFile);
     114      this->setFileName(tmp+1);
     115    }
     116  else
     117    {
     118      this->setConfDir("~/");
     119      this->setFileName(tmpConfFile);
     120    }
     121  delete []tmp;
     122  delete []tmpConfFile;
     123}
     124
     125/**
     126   \brief sets the Directory of the configuration files
     127   \param confDir the Directory for the configuration files
     128*/
     129void OrxonoxGuiExec::setConfDir(char* confDir)
     130{
     131  if (!strncmp(confDir, "~/", 2))
     132    {
     133      char tmp[500];
     134#ifdef __WIN32__
     135      strcpy(tmp, getenv("USERPROFILE"));
     136#else
     137      strcpy(tmp, getenv("HOME"));
     138#endif
     139      this->confDir = new char[strlen(tmp)+strlen(confDir)];
     140      sprintf(this->confDir, "%s%s", tmp, confDir+1);
     141    }
     142  else
     143    {
     144      this->confDir = new char[strlen(confDir)+1];
     145      strcpy(this->confDir, confDir);
     146    }
     147  PRINTF(3)("Config Directory is: %s.\n", this->confDir);
     148  mkdir(this->confDir, 0755);
     149}
     150
     151/**
    92152   \brief Sets the location of the configuration File.
    93    \param filename the location of the configFile
     153   \param fileName the location of the configFile
    94154
    95155   \todo: memory allocation could be better.
     
    97157   The name will be parsed from ~/ to /home/[username] on unix and c:/Documents and Settings/username/Settings/ on Windows
    98158*/
    99 void OrxonoxGuiExec::setFilename(char* filename)
    100 {
    101   char* buffer = (char*)malloc(2048*sizeof(char));
    102   sprintf(buffer, "%s", filename);
    103   if(!strncmp(buffer, "~/", 2))
    104   {
    105 #ifdef __WIN32__
    106     sprintf(configFile, "%s/%s", getenv("USERPROFILE"), buffer+2);
    107 #else
    108     sprintf(configFile, "%s/%s", getenv("HOME"), buffer+2);
    109 #endif
    110   }
    111   else if(buffer)
    112     strcpy(this->configFile, buffer);
    113   free (buffer);
     159void OrxonoxGuiExec::setFileName(char* fileName)
     160{
     161  if (!this->confDir)
     162    this->setConfDir("~/");
     163  this->configFile = new char[strlen(this->confDir)+strlen(fileName)+2];
     164  sprintf(this->configFile, "%s/%s", this->confDir, fileName);
     165  PRINTF(3)("ConfigurationFile is %s.\n", this->configFile);
    114166}
    115167
     
    117169   \returns The name of the Configuration-File
    118170*/
    119 char* OrxonoxGuiExec::getConfigFile(void)
     171char* OrxonoxGuiExec::getConfigFile(void) const
    120172{
    121173  return this->configFile;
     
    190242            space2under[0] = '_';
    191243          }
    192         if(widget->isOption <=3)
    193           fprintf(CONFIG_FILE, "%s = %d\n", Buffer, static_cast<Option*>(widget)->value);
    194         else if(widget->isOption == 5)
    195           fprintf(CONFIG_FILE, "%s = %s\n", Buffer, static_cast<OptionLabel*>(widget)->cValue);
     244          fprintf(CONFIG_FILE, "%s = %s\n", Buffer, static_cast<Option*>(widget)->save());
    196245      }
    197246
     
    259308    {
    260309      PRINT(3)("Located Option %s.\n", widget->title);
    261       if(widget->isOption >= 1 && widget->isOption <= 3)
    262         {
    263           static_cast<Option*>(widget)->value = atoi(info->variableValue);
    264           static_cast<Option*>(widget)->redraw(); //!< \todo change this to setValue.
    265         }
    266       else if(widget->isOption == 5)
    267         static_cast<OptionLabel*>(widget)->setValue(info->variableValue);
     310      if(widget->isOption >= 1)
     311          static_cast<Option*>(widget)->load(info->variableValue);
    268312    }
    269313}
  • orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.h

    r3452 r3625  
    2222  CheckButton* alwaysShow;     //!< A CheckButton, for if orxonox should start with or without gui.
    2323  Button* quit;                //!< A Button to quit the Gui without starting orxonox.
     24  char* confDir;               //!< The directory of the orxonox-configuration-files.
    2425  char* configFile;            //!< The name of the .orxonox.conf(ig)-file.
    2526  FILE* CONFIG_FILE;           //!< Filehandler for reading and writing.
     
    3738 
    3839  Widget* getWidget(void);
    39  
    40   void setFilename(char* filename);
    41   char* getConfigFile(void);
     40
     41  void setConfFile(char* confFile);
     42  void setConfDir(char* confDir);
     43  void setFileName(char* fileName);
     44  char* getConfigFile(void) const;
    4245  int shouldsave(void);
    4346  void writeToFile(Widget* widget);
  • orxonox/trunk/src/lib/gui/gui/orxonox_gui_gtk.cc

    r3624 r3625  
    10321032
    10331033/**
     1034   \brief saves an Option
     1035   \returns the String that should be saved.
     1036
     1037   this is a default Option save
     1038*/
     1039char* Option::save(void)
     1040{
     1041  char* value = new char [10];
     1042  sprintf (value, "%d", this->value);
     1043  return value;
     1044}
     1045
     1046/**
     1047   \brief loads an Option from of its loadString
     1048   \param loadString the string from which to load the data from
     1049*/
     1050void Option::load(char* loadString)
     1051{
     1052  this->value = atoi(loadString);
     1053  PRINT(3)("Loading %s: %s %d\n", this->title, loadString, value);
     1054  this->redraw();
     1055}
     1056
     1057/**
    10341058   \returns The saveable-state.
    10351059*/
     
    13191343  this->init();
    13201344  this->setTitle(menuname);
    1321    
     1345  va_list itemlist;                     //!< The list to readin multiple Options.
     1346
    13221347  char *itemName;
    13231348
     
    13711396
    13721397/**
     1398   \brief saves the Label of the Menu
     1399   \returns the name of the selected Menu-Item
     1400*/
     1401char* Menu::save(void)
     1402{
     1403  MenuItem* tmpItem = this->firstItem;
     1404  for (int i = 0; i<this->value; i++)
     1405    tmpItem = tmpItem->next;
     1406     
     1407  return tmpItem->name;
     1408}
     1409
     1410/**
     1411   \brief loads a Menu from of its loadString
     1412   \param loadString the string from which to load the data from
     1413*/
     1414void Menu::load(char* loadString)
     1415{
     1416  MenuItem* tmpItem = firstItem;
     1417  bool foundItem = false;
     1418  while (tmpItem)
     1419    {
     1420      if (!strcmp(loadString, tmpItem->name))
     1421        {foundItem = true; break;}
     1422      tmpItem = tmpItem->next;
     1423    }
     1424  if (foundItem)
     1425    this->value = tmpItem->itemNumber;
     1426  else
     1427    {
     1428      this->value = 0;
     1429      PRINTF(2)("Sorry, but %s has not been found in the Itemlist of %s\n", loadString, this->title);
     1430    }
     1431  PRINTF(3)( "Loading %s: setting to %d\n", this->title, this->value);
     1432  this->redraw();
     1433}
     1434
     1435/**
    13731436   \brief appends a new Item to the Menu-List.
    13741437   \param itemName the itemName to be appendet.
     
    13771440{
    13781441  if (!this->firstItem)
    1379     this->firstItem = this->currItem = new MenuItem;
     1442    {
     1443      this->firstItem = this->currItem = new MenuItem;
     1444      this->currItem->itemNumber = 0;
     1445    }
    13801446  else
    1381     this->currItem = this->currItem->next = new MenuItem;
     1447    {
     1448      int tmpI = this->currItem->itemNumber;
     1449      this->currItem = this->currItem->next = new MenuItem;
     1450      this->currItem->itemNumber = tmpI+1;
     1451    }
    13821452
    13831453  this->currItem->name = new char[strlen(itemName)+1];
    13841454  strcpy(this->currItem->name, itemName);
     1455
    13851456#ifdef HAVE_GTK2
    13861457  this->currItem->item = gtk_menu_item_new_with_label(itemName);
     
    14991570
    15001571/**
     1572   \brief creates the Optionlabel save-string
     1573   \returns the String to save.
     1574*/
     1575char* OptionLabel::save(void)
     1576{
     1577  return cValue;
     1578}
     1579
     1580/**
     1581   \brief loads an Option from of its loadString
     1582   \param loadString the string from which to load the data from
     1583*/
     1584void OptionLabel::load(char* loadString)
     1585{
     1586  PRINTF(3)( "Loading %s: setting to %s\n", this->title, loadString);
     1587  this->setValue(loadString);
     1588}
     1589
     1590/**
    15011591   \brief Creates a new default Label with no Text.
    15021592   You migth consider adding Label::setTitle with this.
  • orxonox/trunk/src/lib/gui/gui/orxonox_gui_gtk.h

    r3624 r3625  
    217217  void saveability(void);
    218218  void saveability(bool isSaveable);
     219  virtual char* save(void);
     220  virtual void load(char* loadString);
     221
    219222  bool isSaveable(void);
    220223  void setFlagName(char* flagname, int defaultvalue);
     
    286289  GtkWidget* menu;                      //!< The menu That will hold the Options.
    287290#endif /* HAVE_GTK2 */
    288   va_list itemlist;                     //!< The list to readin multiple Options.
    289  
     291
    290292  //! A struct to handle the MenuItems
    291293  struct MenuItem
    292294  {
    293     char* name;                         //!< The name of this entry.
     295    char* name;                         //!< The name of this entry.
     296    int itemNumber;                     //!< The n'th entry of this menu;
    294297#ifdef HAVE_GTK2
    295298    GtkWidget* item;                    //!< One Item From a Menu.
     
    305308  virtual ~Menu(void);
    306309  void init(void);
     310
     311  virtual char* save(void);
     312  virtual void load(char* loadString);
    307313 
    308314  void addItem(char* itemName);
     
    322328 
    323329  void setValue(char* newValue);
     330
     331  virtual char* save(void);
     332  virtual void load(char* loadString);
     333
    324334  void redraw(void);
    325335  void changeOption(void);
Note: See TracChangeset for help on using the changeset viewer.