Applied patch by troelsk which mostly makes the GIF decoder more readable by using named constants instead of magic numbers. Left out the edits that changed unsigned char to wxUint8. In addition removed unnecessary casts around wxInputStream.GetC() calls.
Vadim Zeitlin [Tue, 4 Jan 2011 11:33:19 +0000 (11:33 +0000)]
wxMSW compilation fix for wxCompositeWindow.
Not all ports override SetXXX() methods in their wxWindow class so use the
versions from wxWindowBase which are definitely known to exist. Notice that
the call itself is still virtual so it doesn't matter which base class do we
use.
Vadim Zeitlin [Mon, 3 Jan 2011 18:44:16 +0000 (18:44 +0000)]
Add "virtual" keywords to the overridden functions in the printing sample.
There are no real changes, just make it easier to understand that the sample
code overrides the base class virtual methods by reusing the virtual keyword
in the derived class.
Vadim Zeitlin [Mon, 3 Jan 2011 15:57:30 +0000 (15:57 +0000)]
Don't hardcode wxPreviewControlBar size in print preview code.
For some reason the control bar height was hard coded to 40 pixels which could
be not enough to use the buttons of the appropriate size. Don't hardcode its
size any more and let the sizer determine it instead.
Vadim Zeitlin [Mon, 3 Jan 2011 14:58:26 +0000 (14:58 +0000)]
Allow selecting any kind of file in the sound sample.
This is especially useful under Mac where wxSound can play files other than
.wav too (e.g. .aiff files which can be found under /System/Library/Sounds).
Vadim Zeitlin [Mon, 3 Jan 2011 11:24:13 +0000 (11:24 +0000)]
Add wxCompositeWindow<> and use it in wxDatePickerCtrlGeneric.
wxCompositeWindow<> is a convenient base class for composite windows, i.e.
windows consisting of several other wxWindows. Currently it just automatically
forwards various attributes setters calls to all of the composite window parts
but it could become more useful in the future.
Similarly, for now it is only used in wxDatePickerCtrlGeneric but it could
(and should) be used for other composite controls later and we probably should
even make this class public to allow its use in the client code.
Vadim Zeitlin [Mon, 3 Jan 2011 11:23:49 +0000 (11:23 +0000)]
No real changes, just remove an unneeded header dependency.
There was some commented out code in (core) valgen.cpp file using
wxDatePickerCtrl (from adv library). Also comment out the inclusion of
wx/datectrl.h header as it's not needed as long as this code remains commented
out and creates an unexpected dependency of a core library file on an adv
library header.
Only including wx/datectrl.h does not always include wx/generic/datectrl.h, for example it does not for MSW non-Universal. As a result when compiling datectlg.cpp wxDatePickerCtrlGeneric is unknown and compilation fails. Fixed by including wx/generic/datectrl.h again (regression since r66524).
Vadim Zeitlin [Sun, 2 Jan 2011 22:05:14 +0000 (22:05 +0000)]
Remove calls to wxApp::SetTopWindow() from the samples and documentation.
It is definitely not necessary to call SetTopWindow() when there is only a
single top level window and it is arguable whether it's useful to do it even
when there are many of them so don't encourage its use in the documentation
and also remove all its occurrences from the samples.
Vadim Zeitlin [Sun, 2 Jan 2011 22:03:56 +0000 (22:03 +0000)]
Forward declare classes instead of including their declarations.
No real changes, just reduce the compilation dependencies a bit by only
forward declaring wxComboCtrl and wxCalendarCtrl in wx/generic/datectrl.h
instead of including the headers with their full declarations.
Vadim Zeitlin [Fri, 31 Dec 2010 17:39:37 +0000 (17:39 +0000)]
Add wxUSE_ARTPROVIDER_STD build option.
Make it possible to exclude wxDefaultArtProvider from build. Now that a
Tango-based provider exists, it may make sense to disable the standard bitmaps
if the program doesn't need the few of them not provided by Tango anyhow.
Vadim Zeitlin [Fri, 31 Dec 2010 17:39:25 +0000 (17:39 +0000)]
Add wxArtProvider using Tango icons.
The icons are embedded as PNG images directly in the source code to avoid the
need for installing them. This does make the library larger though so provide
a wxUSE_ARTPROVIDER_TANGO option to turn the new code and associated bloat off.
Also turn it off by default under wxGTK as the native art provider is used
there anyhow.
Vadim Zeitlin [Fri, 31 Dec 2010 17:39:01 +0000 (17:39 +0000)]
Add go to first/last and plus/minus art provider icons.
These icons will be used in the upcoming new implementation of the print
preview frame and as they are also natively supported by GTK+ it makes sense
to have support for them in wx itself.
Notice that the existing bookmark add/remove icons are already mapped to the
icons which look like plus and minus signs respectively in wxGTK but we need
plus/minus in print preview in the other ports too so add these icons under
explicit names.
Vadim Zeitlin [Fri, 31 Dec 2010 17:38:40 +0000 (17:38 +0000)]
Add an option to embed image size in its name to PNG-to-C script.
When a PNG image exists in several sizes it makes sense to use its size as a
suffix to distinguish the different versions, so update the png2c script to
optionally allow to do this.
Current implementation simply checks the PNG header directly to avoid any
extra dependencies.
Vadim Zeitlin [Fri, 31 Dec 2010 17:38:35 +0000 (17:38 +0000)]
Show wxART_BUTTON icons in art provider sample resource browser.
The button icons have a different size from all the other clients in wxGTK so
it may be interesting to see them in the sample, add wxART_BUTTON to the list
of art clients that can be chosen in it.
Vadim Zeitlin [Fri, 31 Dec 2010 17:38:29 +0000 (17:38 +0000)]
Accept file names with dashes in PNG-to-C converter.
Tango icon files often have dashes in their names so accept them in png2c
conversion script and simply replace them with underscores to form a C
identifier for the array containing the image data.
Vadim Zeitlin [Fri, 31 Dec 2010 17:29:39 +0000 (17:29 +0000)]
Use open command to run the GUI unit test on Mac build slave.
Running the application binary directly still doesn't work quite the same as
when it's opened from Finder (or executed using open) and some tests involving
event loops fail because of this.
Run it using open even if it means that we lose the detailed log output.
Vadim Zeitlin [Fri, 31 Dec 2010 13:12:56 +0000 (13:12 +0000)]
Document how to get the previous selection in wxEVT_GRID_SELECT_CELL handler.
Make explicit the fact that the cell coordinates in the event are the
coordinates of the newly selected cell and that the previously selected one is
available from wxGrid itself.
Vadim Zeitlin [Thu, 30 Dec 2010 22:37:17 +0000 (22:37 +0000)]
Move wxMSW wxCommandLinkButton files to native-only part.
wxMSW wxCommandLinkButton implementation shouldn't be used in wxUniv so move
src/msw/commandlinkbutton.cpp and include/wx/msw/commandlinkbutton.h to
ADVANCED_MSW_NATIVE_{SRC,HDR} from ADVANCED_MSW_{SRC,HDR} in files.bkl and
rebake the makefiles.
Vadim Zeitlin [Thu, 30 Dec 2010 22:37:03 +0000 (22:37 +0000)]
Move wxGetLibraryVersionInfo() to core from base.
This function uses the GUI toolkit information and so can't be defined in
wxBase. The code only compiled before because the function was erroneously
defined in wxCore even though it was declared as WXDLLIMPEXP_BASE.
Fix this by declaring it with WXDLLIMPEXP_CORE too. This corrects problems in
MSW DLL build.
If we need to get a string containing user-readable wxBase version too, we
should add another function (as it's not possible to virtualize this one) but
such function doesn't seem incredibly useful to have anyhow.
Tightened icon and cursor file detection heuristics.
When loading a TGA file that has an image type of uncompressed true colour it would be falsely detected as a cursor file and as an icon file if type is of uncompressed colour mapped. Lower the chance of this happening by also checking the remaining member of an ICO and CUR header which represents the number of images in the file. This member has to be non-zero (checked against all found ICO and CUR files in an XP installation).
Supports saving 24-bit and 32-bit (RGB with alpha).
Updated image unit test to verify the alpha channel of saved TGA images. Also removed a condition skipping a test which only was in place for TGA (formerly its saving handler would do nothing yet say saving was succesful).
Expanded existing image saving test to also verify alpha content of saved images.
Compare the alpha data of saved images (where applicable, currently for PNG only) to a generated alpha channel. Refactored most of ImageTestCase.CompareSavedImage into (static) function CompareImage to easily compare with a 24-bit image and then a 32-bit one.
Added some simple unit tests for verifying pixel content of loaded and saved images.
Compare the data of loaded images in different formats against a reference image (one for 8-bit images, another for 24-bit). Do the same for images saved using SaveFile. Excluded some formats because they are either lossy or don't pass the test right now.
Updated manual regarding image alpha support for BMP, PNG, and TIFF handlers.
For PNG it was mentioned only loading supports alpha, but alpha saving support has been available since r32414. Similarly there was no mention of alpha loading support for TIFF (supported since r47204) as well as BMP (since r54942).
Vadim Zeitlin [Sun, 26 Dec 2010 16:29:22 +0000 (16:29 +0000)]
Increase wxStaticText height in wxMSW to align its text with wxTextCtrl.
The base lines of the text in wxTextCtrl and wxStaticText which were
themselves vertically aligned didn't align, the text in the latter was one
pixel too low. This seems to be happening because we don't give enough
vertical space to the native static control by default and so, while the text
wasn't truncated, it was positioned differently than usual.
Work around this problem by allocating two extra pixels to wxStaticText
height. While the exact explanation of the problem remains mysterious, this
hack does result in correct appearance which seems to be sufficiently
important to apply it.
Vadim Zeitlin [Sat, 25 Dec 2010 14:18:58 +0000 (14:18 +0000)]
Test for wcsftime() in configure as it's not available everywhere.
Contrary to the comment in wx/wxcrtbase.h, wcsftime() doesn't seem to be
available under quite all the systems, notably it doesn't seem to be present
in OpenBSD at all, even in the very latest version.
Add a configure test for this function and fall back to our own implementation
if the system doesn't have it.
Vadim Zeitlin [Sat, 25 Dec 2010 14:18:50 +0000 (14:18 +0000)]
Give an error from configure if wchar_t is not available.
wxWidgets 2.9 doesn't support building without wchar_t any more so always
define wxUSE_WCHAR_T and give an error from configure if wchar_t is really not
available.
Vadim Zeitlin [Sat, 25 Dec 2010 13:46:29 +0000 (13:46 +0000)]
Make the margin between wxSpinCtrlGeneric sub-windows compatible with MSW.
Native MSW wxSpinCtrl uses a single pixel margin between the text part and the
spin button while the generic version used 2 pixels which resulted in a
slightly different appearance (see #12767).
Use the same margin as MSW now in the generic version too, it should be fine
for the other platforms as well and if it isn't we can always tweak them
later.
Vadim Zeitlin [Sat, 25 Dec 2010 13:46:23 +0000 (13:46 +0000)]
Correct bug in the wxSpinCtrlGeneric sub-controls resizing.
The code in DoMoveWindow() didn't account for the margin and made the text
control part of the window too large resulting in the truncation of the spin
button.
Simply remember to take margin into account when computing the text width.
Vadim Zeitlin [Sat, 25 Dec 2010 13:18:52 +0000 (13:18 +0000)]
Minor improvements to wxComboBox documentation.
Mention that wxCB_DROPDOWN is MSW (and Motif...) specific and don't document
the much more often used wxCB_READONLY in its terms, just describe it directly
instead.
Vadim Zeitlin [Wed, 22 Dec 2010 13:57:21 +0000 (13:57 +0000)]
Really fix recently broken accelerators handling in menu items.
As wxAcceleratorEntry::Create() now expects the full menu item label, just
pass GetItemLabel() to it in wxMenuItemBase::GetAccel() instead of half-
parsing it ourselves there.
Vadim Zeitlin [Wed, 22 Dec 2010 13:57:15 +0000 (13:57 +0000)]
Implement proper wxCursor cloning in wxDFB.
wxDFB compilation was broken by recent wxObjectRefData copy ctor-related
changes. Fix it by not using wxCursorRefData copy ctor any more, call
wxCursorRefData::Clone() which does the right thing explicitly instead.
Vadim Zeitlin [Wed, 22 Dec 2010 13:57:08 +0000 (13:57 +0000)]
Use stock ids for menu items in the config sample.
This not only removes some unnecessary code from the sample but also fixes a
problem due to the use of a 0 id under wxOSX (which is unsupported there).
Vadim Zeitlin [Wed, 22 Dec 2010 13:57:03 +0000 (13:57 +0000)]
Compute print preview scale using real DPI values in wxGTK.
Replace hardcoded 72 DPI which was "compensated" for with a 0.8 fudge factor
with the values using the real screen DPI in wxGTK and PostScript print
preview classes.
Vadim Zeitlin [Wed, 22 Dec 2010 13:56:56 +0000 (13:56 +0000)]
Correct and extend wxConfig::Create() documentation.
Replace mentions of the non-existent wxCONFIG_WIN32_NATIVE with
wxUSE_CONFIG_NATIVE. Also explain what does the "best implementation" really
mean and link to wxAppTraitsBase::CreateConfig().
Vadim Zeitlin [Wed, 22 Dec 2010 13:56:49 +0000 (13:56 +0000)]
Use generic wxHyperlinkCtrl under Vista/7 without comtrl32.dll v6.
Replace the test for the OS version with the test for comtrl32.dll version in
HasNativeHyperlinkCtrl() wxMSW function as the native control could be not
available even under Vista/7 if we're not using comtrl32.dll v6 and this can
happen if the program was linked without the appropriate manifest or, possibly
more likely, if a DLL using wxWidgets was loaded by such a program.
Robert Roebling [Tue, 21 Dec 2010 19:27:35 +0000 (19:27 +0000)]
model column and index of column in the dataview can be different, correct this and also make wxGTK and wxMSW report the same thing in the event following wxDataViewModel::SetValue(), fixes #12755: wxDataViewCtrl bug when the column is mapped to different model column. Also commit some older change reseting the cursor under the mouse.