b318dc4237
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
139 lines
4.1 KiB
C++
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__
|