Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/gui/gl_gui/glgui_widget.cc @ 7875

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

qtgui: cleanup as patrick sugested

File size: 2.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   ### File Specific:
12   main-programmer: Benjamin Grauer
13   co-programmer: ...
14*/
15
16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
17
18#include "glgui_widget.h"
19
20#include "material.h"
21
22#include "debug.h"
23
24namespace OrxGui
25{
26
27  /**
28   * standard constructor
29  */
30  GLGuiWidget::GLGuiWidget ( )
31  {
32    this->init();
33  }
34
35
36  /**
37   * standard deconstructor
38   */
39  GLGuiWidget::~GLGuiWidget()
40  {
41  }
42
43
44  /**
45   * initializes the GUI-element
46   */
47  void GLGuiWidget::init()
48  {
49    this->setClassID(CL_GLGUI_WIDGET, "GLGuiWidget");
50
51    this->focusable = true;
52    this->clickable = true;
53    this->setVisibility(GLGUI_WIDGET_DEFAULT_VISIBLE);
54    //  this->setParent2D((Element2D*)NULL);
55
56    this->backMat.setDiffuse(1.0, 1.0, 1.0);
57
58    this->frontModel = 0;
59
60    this->widgetSignals.resize(SignalCount, SignalConnector());
61  }
62
63
64  bool GLGuiWidget::focusOverWidget(float x, float y)
65  {
66    if (this->getAbsCoor2D().x < x && this->getAbsCoor2D().x + this->getSizeX2D() > x &&
67        this->getAbsCoor2D().y < y && this->getAbsCoor2D().y + this->getSizeY2D() > y)
68      return true;
69    else
70      return false;
71  }
72
73  /**
74   * @brief connects a Signal to the Gui-Elements' Event.
75   * @param sinalType the Type of Signal to set. @see GLGuiSignalType
76   * @param signal the name of the Signal
77   */
78  void GLGuiWidget::connectSignal(SignalType signalType, BaseObject* object, const Executor* signal)
79  {
80    if (signalType >= this->widgetSignals.size())
81      return;
82
83//    if (this->widgetSignals[signalType] != NULL)
84//      PRINTF(2)("Already connected a Signal to '%s::%s' type %s... overwriting\n", this->getClassName(), this->getName(), "TEST");
85
86    this->widgetSignals[signalType] = SignalConnector(object, signal);
87  }
88
89  /**
90   * @brief removes a Signal from a Gui-ELements' Event
91   * @param signalType the type of Signal to remove.
92   */
93  void GLGuiWidget::disconnectSignal(SignalType signalType)
94  {
95    if (signalType >= this->widgetSignals.size())
96      return;
97
98    this->widgetSignals[signalType] = SignalConnector();
99  }
100
101
102  void GLGuiWidget::show()
103  {
104    this->setVisibility(true);
105  }
106
107  void GLGuiWidget::hide()
108  {
109    this->setVisibility(false);
110  }
111
112
113  void GLGuiWidget::draw() const
114  {
115    this->backMat.select();
116
117    glBegin(GL_QUADS);
118    glTexCoord2i(0,1); glVertex2d(0, 0);
119    glTexCoord2i(0,0); glVertex2d(0, this->getSizeY2D());
120    glTexCoord2i(1,0); glVertex2d(this->getSizeX2D(), this->getSizeY2D());
121    glTexCoord2i(1,1); glVertex2d(this->getSizeX2D(), 0);
122    glEnd();
123  }
124
125}
Note: See TracBrowser for help on using the repository browser.