Pārlūkot izejas kodu

provide non-active label functionality

Cary Sandvig 25 gadi atpakaļ
vecāks
revīzija
d2e0d89785

+ 6 - 3
panda/src/gui/Sources.pp

@@ -14,7 +14,8 @@
     guiItem.h guiItem.I guiItem.cxx \
     guiRollover.h guiRollover.I guiRollover.cxx \
     guiButton.h guiButton.I guiButton.cxx \
-    guiFrame.h guiFrame.I guiFrame.cxx
+    guiFrame.h guiFrame.I guiFrame.cxx \
+    guiSign.h guiSign.I guiSign.cxx
 
   #define INSTALL_HEADERS \
     guiManager.h guiManager.I \
@@ -23,7 +24,8 @@
     guiItem.h guiItem.I \
     guiRollover.h guiRollover.I \
     guiButton.h guiButton.I \
-    guiFrame.h guiFrame.I
+    guiFrame.h guiFrame.I \
+    guiSign.h guiSign.I
 
   #define IGATESCAN \
     guiManager.h guiManager.I \
@@ -32,6 +34,7 @@
     guiItem.h guiItem.I \
     guiRollover.h guiRollover.I \
     guiButton.h guiButton.I \
-    guiFrame.h guiFrame.I
+    guiFrame.h guiFrame.I \
+    guiSign.h guiSign.I
 
 #end lib_target

+ 3 - 0
panda/src/gui/guiSign.I

@@ -2,3 +2,6 @@
 // Created by:  cary (06Nov00)
 // 
 ////////////////////////////////////////////////////////////////////
+
+INLINE GuiSign::GuiSign(void) {
+}

+ 50 - 0
panda/src/gui/guiSign.cxx

@@ -2,3 +2,53 @@
 // Created by:  cary (06Nov00)
 // 
 ////////////////////////////////////////////////////////////////////
+
+#include "guiSign.h"
+#include "config_gui.h"
+
+void GuiSign::recompute_frame(void) {
+  GuiItem::recompute_frame();
+  _sign->get_extents(_left, _right, _bottom, _top);
+}
+
+GuiSign::GuiSign(const string& name, GuiLabel* sign) : GuiItem(name),
+						       _sign(sign) {
+  _sign->get_extents(_left, _right, _bottom, _top);
+}
+
+GuiSign::~GuiSign(void) {
+}
+
+void GuiSign::manage(GuiManager* mgr, EventHandler& eh) {
+  if (!_added_hooks)
+    _added_hooks = true;
+  if (_mgr == (GuiManager*)0L) {
+    mgr->add_label(_sign);
+    GuiItem::manage(mgr, eh);
+  } else
+    gui_cat->warning() << "tried to manager sign (0x" << (void*)this
+		       << ") that is already managed" << endl;
+}
+
+void GuiSign::unmanage(void) {
+  _mgr->remove_label(_sign);
+  GuiSign::unmanage();
+}
+
+void GuiSign::set_scale(float f) {
+  _sign->set_scale(f);
+  GuiItem::set_scale(f);
+  recompute_frame();
+}
+
+void GuiSign::set_pos(const LVector3f& p) {
+  _sign->set_pos(p);
+  GuiItem::set_pos(p);
+  recompute_frame();
+}
+
+void GuiSign::output(ostream& os) const {
+  GuiItem::output(os);
+  os << "  Sign data:" << endl;
+  os << "    sign - 0x" << (void*)_sign << endl;
+}

+ 30 - 0
panda/src/gui/guiSign.h

@@ -2,3 +2,33 @@
 // Created by:  cary (06Nov00)
 // 
 ////////////////////////////////////////////////////////////////////
+
+#ifndef __GUISIGN_H__
+#define __GUISIGN_H__
+
+#include "guiItem.h"
+#include "guiLabel.h"
+#include "guiManager.h"
+
+class EXPCL_PANDA GuiSign : public GuiItem {
+private:
+  GuiLabel* _sign;
+
+  INLINE GuiSign(void);
+  virtual void recompute_frame(void);
+public:
+  GuiSign(const string&, GuiLabel*);
+  ~GuiSign(void);
+
+  virtual void manage(GuiManager*, EventHandler&);
+  virtual void unmanage(void);
+
+  virtual void set_scale(float);
+  virtual void set_pos(const LVector3f&);
+
+  virtual void output(ostream&) const;
+};
+
+#include "guiSign.I"
+
+#endif /* __GUISIGN_H__ */