]> git.saurik.com Git - wxWidgets.git/blobdiff - src/qt/control.cpp
attempts at making modal dialogs without parent work - failed
[wxWidgets.git] / src / qt / control.cpp
index 62a07ce01c094a9435b5957b9df487a13a170d52..4786140bef7c2bda6ecff8f7c1b69efcfc9cc8e4 100644 (file)
@@ -1,11 +1,12 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        control.cpp
-// Purpose:
-// Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:     wxWindows licence
+// Purpose:     wxControl class
+// Author:      AUTHOR
+// Modified by:
+// Created:     ??/??/98
+// RCS-ID:      $Id$
+// Copyright:   (c) AUTHOR
+// Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 
 #include "wx/control.h"
 
-//-----------------------------------------------------------------------------
-// wxControl
-//-----------------------------------------------------------------------------
+IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow)
 
-IMPLEMENT_DYNAMIC_CLASS(wxControl,wxWindow)
+BEGIN_EVENT_TABLE(wxControl, wxWindow)
+END_EVENT_TABLE()
 
-wxControl::wxControl(void)
+// Item members
+wxControl::wxControl()
 {
-};
+    m_backgroundColour = *wxWHITE;
+    m_foregroundColour = *wxBLACK;
+    m_callback = 0;
+}
 
-wxControl::wxControl( wxWindow *parent, wxWindowID id,
-      const wxPoint &pos, const wxSize &size,
-      long style, const wxString &name ) :
-  wxWindow( parent, id, pos, size, style, name )
+wxControl::~wxControl()
 {
-};
+    // If we delete an item, we should initialize the parent panel,
+    // because it could now be invalid.
+    wxWindow *parent = (wxWindow *)GetParent();
+    if (parent)
+    {
+        if (parent->GetDefaultItem() == this)
+            parent->SetDefaultItem(NULL);
+    }
+}
 
-void wxControl::Command( wxCommandEvent &WXUNUSED(event) )
+void wxControl::SetLabel(const wxString& label)
 {
-};
+    // TODO
+}
 
-void wxControl::SetLabel( const wxString &label )
+wxString wxControl::GetLabel() const
 {
-  for ( const char *pc = label; *pc != '\0'; pc++ ) {
-    if ( *pc == '&' ) {
-      pc++; // skip it
-#if 0 // it would be unused anyhow for now - kbd interface not done yet
-      if ( *pc != '&' )
-        m_chAccel = *pc;
-#endif
+    // TODO
+    return wxString("");
+}
+
+/*
+ * Allocates control IDs within the appropriate range
+ */
+
+int NewControlId()
+{
+    static int s_controlId = 0;
+    s_controlId ++;
+    return s_controlId;
+}
+
+void wxControl::ProcessCommand (wxCommandEvent & event)
+{
+  // Tries:
+  // 1) A callback function (to become obsolete)
+  // 2) OnCommand, starting at this window and working up parent hierarchy
+  // 3) OnCommand then calls ProcessEvent to search the event tables.
+  if (m_callback)
+    {
+      (void) (*(m_callback)) (*this, event);
     }
+    else
+    {
+      GetEventHandler()->OnCommand(*this, event);
+    }
+}
 
-    m_label << *pc;
-  }
-};
+void wxControl::SetClientSize (int width, int height)
+{
+  SetSize (-1, -1, width, height);
+}
 
-wxString wxControl::GetLabel(void) const
+void wxControl::Centre (int direction)
 {
-  return m_label;
-};
+  int x, y, width, height, panel_width, panel_height, new_x, new_y;
+
+  wxWindow *parent = (wxWindow *) GetParent ();
+  if (!parent)
+    return;
+
+  parent->GetClientSize (&panel_width, &panel_height);
+  GetSize (&width, &height);
+  GetPosition (&x, &y);
+
+  new_x = x;
+  new_y = y;
+
+  if (direction & wxHORIZONTAL)
+    new_x = (int) ((panel_width - width) / 2);
 
+  if (direction & wxVERTICAL)
+    new_y = (int) ((panel_height - height) / 2);
 
+  SetSize (new_x, new_y, width, height);
+}