]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/notebook.cpp
Added friend wxNotebook
[wxWidgets.git] / src / gtk1 / notebook.cpp
index bbfd78056a9f355a60507b6857d902dc79c7c2dc..e102ce840995f7aae0d2c1bd165af93516f2304d 100644 (file)
@@ -31,9 +31,10 @@ public:
     m_id = -1;
     m_text = "";
     m_image = -1;
-    m_page = NULL;
-    m_client = NULL;
-    m_parent = NULL;
+    m_page = (GtkNotebookPage *) NULL;
+    m_client = (wxWindow *) NULL;
+    m_parent = (GtkNotebook *) NULL;
+    m_box = (GtkWidget *) NULL;
   }
 
 //private:
@@ -44,6 +45,7 @@ public:
   GtkLabel          *m_label;
   wxWindow          *m_client;
   GtkNotebook       *m_parent;
+  GtkWidget         *m_box;     // in which the label and image are packed
 };
 
 //-----------------------------------------------------------------------------
@@ -114,7 +116,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxNotebook,wxControl)
 
 void wxNotebook::Init()
 {
-  m_imageList = NULL;
+  m_imageList = (wxImageList *) NULL;
   m_pages.DeleteContents( TRUE );
   m_idHandler = 0;
 }
@@ -174,7 +176,7 @@ int wxNotebook::GetSelection() const
 
   GtkNotebookPage *g_page = GTK_NOTEBOOK(m_widget)->cur_page;
 
-  wxNotebookPage *page = NULL;
+  wxNotebookPage *page = (wxNotebookPage *) NULL;
 
   wxNode *node = m_pages.First();
   while (node)
@@ -220,7 +222,7 @@ int wxNotebook::GetPageImage( int page ) const
 
 wxNotebookPage* wxNotebook::GetNotebookPage(int page) const
 {
-  wxNotebookPage *nb_page = NULL;
+  wxNotebookPage *nb_page = (wxNotebookPage *) NULL;
 
   wxNode *node = m_pages.First();
   while (node)
@@ -233,7 +235,7 @@ wxNotebookPage* wxNotebook::GetNotebookPage(int page) const
 
   wxLogDebug( "Notebook page %d not found!", page );
 
-  return NULL;
+  return (wxNotebookPage *) NULL;
 }
 
 int wxNotebook::SetSelection( int page )
@@ -358,7 +360,7 @@ bool wxNotebook::AddPage(wxWindow* win, const wxString& text,
   // the caption for the page and set the others parameters.
 
   // first, find the page
-  wxNotebookPage *page = NULL;
+  wxNotebookPage *page = (wxNotebookPage *) NULL;
 
   wxNode *node = m_pages.First();
   while (node)
@@ -370,7 +372,7 @@ bool wxNotebook::AddPage(wxWindow* win, const wxString& text,
   }
 
   wxCHECK_MSG(page != NULL, FALSE,
-              _("Can't add a page whose parent is not the notebook!"));
+              "Can't add a page whose parent is not the notebook!");
 
   // then set the attributes
   page->m_text = text;
@@ -379,6 +381,19 @@ bool wxNotebook::AddPage(wxWindow* win, const wxString& text,
   page->m_image = imageId;
   gtk_label_set(page->m_label, page->m_text);
 
+  // create the image if any
+  if ( imageId != -1 ) {
+    wxASSERT( m_imageList != NULL );
+
+    wxBitmap *bmp = m_imageList->GetBitmap(imageId);
+    GdkPixmap *pixmap = bmp->GetPixmap();
+    GtkWidget *pixmapwid = gtk_pixmap_new (pixmap, NULL /* @@@@ */);
+
+    gtk_box_pack_start(GTK_BOX(page->m_box), pixmapwid, FALSE, FALSE, 3);
+
+    gtk_widget_show(pixmapwid);
+  }
+
   if ( bSelect ) {
     SetSelection(GetPageCount());
   }
@@ -390,7 +405,7 @@ wxWindow *wxNotebook::GetPage( int page ) const
 {
   wxNotebookPage* nb_page = GetNotebookPage(page);
   if (!nb_page)
-    return NULL;
+    return (wxWindow *) NULL;
   else
     return nb_page->m_client;
 }
@@ -402,10 +417,18 @@ void wxNotebook::AddChild( wxWindow *win )
   wxNotebookPage *page = new wxNotebookPage();
 
   page->m_id = GetPageCount();
-  page->m_label = (GtkLabel *)gtk_label_new(_("Handle"));
+
+  page->m_box = gtk_hbox_new (FALSE, 0);
+  gtk_container_border_width(GTK_CONTAINER(page->m_box), 2);
+
+  page->m_label = (GtkLabel *)gtk_label_new("");
+  gtk_box_pack_start(GTK_BOX(page->m_box), (GtkWidget *)page->m_label,
+                     FALSE, FALSE, 3);
+  gtk_widget_show((GtkWidget *)page->m_label);
+
   page->m_client = win;
   gtk_notebook_append_page( GTK_NOTEBOOK(m_widget), win->m_widget,
-                            (GtkWidget *)page->m_label);
+                            page->m_box );
   gtk_misc_set_alignment(GTK_MISC(page->m_label), 0.0, 0.5);
 
   page->m_page =