wxWidgets/include/wx/gtk/notebook.h
Julian Smart b318dc4237 Applied patch [ 579219 ] wxNotebook:SetPadding added
This allows changing the padding of the icons and text
in the tab of a wxNotebook for wxGTK.

Since the container in the tab is only a horizontal
container only the width component is used. Negative
values are acceptable so no checks were made.

It now defaults to a padding of 0 on the sides and 1 in
between the icon and label, looks good for a few
"themes" I tried.

Note: Unfortunately there is no function to set the
padding on the left or right side of a widget.
gtk_box_set_child_packing sets padding on BOTH sides of
a widget so you'd get double the spacing between an
icon and the label. To get around this, the icon (if
there was one) is removed and added back. That way the
icon will provide the padding on the left and the label
will provide the padding between and to the right. It
looks nice for all sizes. The
gtk_container_set_border_width unforuntately only adds
borders to ALL sides equally.

A simple check is to add m_notebook->SetPadding in one
in the spinctrl callback in the controls sample. (set
appropriate range too -10,20). Note that the tab sizes
change to fit the width of the panel, if appropriate,
and so the spacing between the icon and label changes
accordingly. This isn't a bug, but it does look weird
as you scan up and down the spacing (which nobody would
normally do).

I also changed all wxGtkNotebookPage variables to
nb_page so that "int page" would be used to mean the
page number. Just cosmetic for consistency with the
rest of the functions that were already like that.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-08-08 10:11:32 +00:00

139 lines
4.1 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: notebook.h
// Purpose: wxNotebook class
// Author: Robert Roebling
// Modified by:
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Robert Roebling
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef __GTKNOTEBOOKH__
#define __GTKNOTEBOOKH__
#ifdef __GNUG__
#pragma interface
#endif
//-----------------------------------------------------------------------------
// internal class
//-----------------------------------------------------------------------------
class wxGtkNotebookPage;
#include "wx/list.h"
WX_DECLARE_LIST(wxGtkNotebookPage, wxGtkNotebookPagesList);
//-----------------------------------------------------------------------------
// wxNotebook
//-----------------------------------------------------------------------------
class wxNotebook : public wxNotebookBase
{
public:
// default for dynamic class
wxNotebook();
// the same arguments as for wxControl
wxNotebook(wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxT("notebook"));
// Create() function
bool Create(wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxT("notebook"));
// dtor
virtual ~wxNotebook();
// accessors
// ---------
// set the currently selected page, return the index of the previously
// selected one (or -1 on error)
// NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events
int SetSelection(int nPage);
// get the currently selected page
int GetSelection() const;
// set/get the title of a page
bool SetPageText(int nPage, const wxString& strText);
wxString GetPageText(int nPage) const;
// sets/returns item's image index in the current image list
int GetPageImage(int nPage) const;
bool SetPageImage(int nPage, int nImage);
// control the appearance of the notebook pages
// set the size (the same for all pages)
void SetPageSize(const wxSize& size);
// set the padding between tabs (in pixels)
void SetPadding(const wxSize& padding);
// sets the size of the tabs (assumes all tabs are the same size)
void SetTabSize(const wxSize& sz);
// operations
// ----------
// remove one page from the notebook
bool DeletePage(int nPage);
// remove all pages
bool DeleteAllPages();
// adds a new page to the notebook (it will be deleted ny the notebook,
// don't delete it yourself). If bSelect, this page becomes active.
// the same as AddPage(), but adds it at the specified position
bool InsertPage( int position,
wxNotebookPage *win,
const wxString& strText,
bool bSelect = FALSE,
int imageId = -1 );
// handler for tab navigation
// --------------------------
void OnNavigationKey(wxNavigationKeyEvent& event);
// implementation
// --------------
#if wxUSE_CONSTRAINTS
void SetConstraintSizes(bool recurse);
bool DoPhase(int phase);
#endif
void ApplyWidgetStyle();
// report if window belongs to notebook
bool IsOwnGtkWindow( GdkWindow *window );
// common part of all ctors
void Init();
// helper function
wxGtkNotebookPage* GetNotebookPage(int page) const;
// the additional page data (the pages themselves are in m_pages array)
wxGtkNotebookPagesList m_pagesData;
// for reasons explained in gtk/notebook.cpp we store the current
// selection internally instead of querying the notebook for it
int m_selection;
protected:
// remove one page from the notebook but do not destroy it
virtual wxNotebookPage *DoRemovePage(int nPage);
private:
int m_padding;
DECLARE_DYNAMIC_CLASS(wxNotebook)
DECLARE_EVENT_TABLE()
};
#endif
// __GTKNOTEBOOKH__