Commit Graph

269 Commits

Author SHA1 Message Date
Vadim Zeitlin
a923d77fc5 Pass full cell rectangle to WXCallRender().
There is no need to ask the item for its size in gtk_wx_cell_renderer_render()
as WXCallRender() will already do it (correctly, accounting for badly
implemented GetSize() unlike this version) internally on its own.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:42 +00:00
Vadim Zeitlin
9d02e49483 Add helper wxRectFromGDKRect() function and use it.
No real changes, just another small refactoring.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:35 +00:00
Vadim Zeitlin
70884c6fc8 No real changes, just remove some unnecessary casts.
Use correct GdkRectangle* type for wxDataViewCustomRenderer::xxx_area members
instead of casting them to and from void*.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:28 +00:00
Vadim Zeitlin
c2a738e372 Avoid setting attributes in GTK wxDataViewRenderer if not supported.
If the native renderer doesn't support the properties which we map our
attributes to, trying to set them is useless and results in GTK+ warnings so
don't do it.

Add wxDataViewRenderer::GtkSupportsAttrs() which can be overridden to indicate
whether the renderer supports attributes or not. We probably could use
g_object_class_find_property() instead to detect it automatically but for now
these properties are all supported only by GtkCellRendererText and not
supported anywhere else so using a single virtual function seems tidier.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:22 +00:00
Vadim Zeitlin
62265c2c67 Allow custom wxDataViewCtrl renderers to easily use attributes.
Set up the DC passed to wxDataViewCustomRenderer::Render() to use the font and
colour defined by the item attribute by default so that any calls to
RenderText() from it will use them automatically.

Also added public wxDataViewCustomRenderer::GetAttr() to allow retrieving the
attribute explicitly in Render().

The column using custom renderer in the dataview sample now works as expected
in the generic version; the native ones will be corrected in the upcoming
commits.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:11 +00:00
Vadim Zeitlin
6eec70b984 Big wxDataViewCtrl renderer classes refactoring.
This commit adds no changes in functionality but paves way for the upcoming
improvements of wxDataViewCustomRenderer.

First, introduce wxDataViewCustomRendererBase class in order to allow
implementing behaviour common to custom renderers in all ports in this class
instead of triplicating it.

This required splitting monolithic dataview.h in more parts, now we have
wx/dvrenderer.h which defines wxDataViewRendererBase and the new
wxDataViewCustomRendererBase and includes wx/port/dvrenderer.h which define
wxDataViewRenderer and wx/port/dvrenderers.h which defines all the other
renderer classes.

Also bring renderers hierarchy in the generic version closer to other ports:
all standard renderer classes now inherit from wxDataViewRenderer and not
wxDataViewCustomRenderer in for consistency with the other ports.
wxDataViewRenderer itself still does derive from wxDataViewCustomRendererBase,
unlike elsewhere, but this is unavoidable considering that all generic
renderers are custom ones.

Finally do some cleanup in OS X part of the code: correct indentation,
spacing, comment style.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62589 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:40:58 +00:00
Vadim Zeitlin
c8b6d5a049 Fix fatal bug when changing wxDataViewCtrl model in wxGTK.
wxDataViewCtrl::AssociateModel() wrongly delete m_notifier itself if the
control already had a model even though the notifier was registered using
AddNotifier() which also scheduled it for deletion when the old model itself
was destroyed. This resulted in double deletion and reproducible crash
whenever the model was changed.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-09 01:57:47 +00:00
Vadim Zeitlin
bf68a18d3c No real changes, just make wxDataViewCtrl::Init() private in wxGTK.
The usual convention is for Init() method to be private and to call it from
constructor, follow it in GTK implementation of wxDataViewCtrl too instead of
making it public and calling it from Create().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-24 21:41:30 +00:00
Vadim Zeitlin
795dac4c86 Add wxDataViewModel::ChangeValue() and use it in wxDVC implementation.
ChangeValue() is a trivial wrapper calling both SetValue() and ValueChanged().
It allows to replace many calls to SetValue() immediately followed by
ValueChanged() with a single function call which is significantly shorter and
less error-prone (e.g. most of the existing code didn't test SetValue() return
code at all).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62489 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-23 23:49:16 +00:00
Vadim Zeitlin
c937bcac0f Add ellipsization support to wxDataViewCtrl.
Implemented ellipsization in the generic, GTK and both OS X Carbon and Cocoa
versions but it currently doesn't work well in GTK as it changes the item
alignment unconditionally, this will need to be fixed later.

The behaviour for the columns is currently inconsistent between ports too:
under MSW they (natively) use wxELLIPSIZE_END, under GTK -- wxELLIPSIZE_NONE
and under OS X the same ellipsization mode as the column contents, i.e.
wxELLIPSIZE_MIDDLE by default.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-16 21:35:26 +00:00
Vadim Zeitlin
205bdf2069 Implement icon text column using native GTK renderers in wxDVC.
This has a possible advantage of a more native look and feel (although it's
hard to tell the difference between drawing the icon ourselves and how the
default GTK+ renderer does it to be honest) and a very real advantage of
allowing to edit in place cells with icons. It also reduces code duplication
in GTK implementation.

Modify the sample to make the icon-text column in the list model editable to
show that it works. This required storing the values of the second column as
well, so do it in its own array and to avoid calling it "m_array2", rename the
existing m_array to m_textColValues (which accounts for most of the diff in
the sample) and call the new one m_iconColValues.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-16 01:29:06 +00:00
Vadim Zeitlin
b74399b982 Correct bug with items without attributes in wxGTK wxDVC.
After the change to the sample in r62390 it turned out that wxGTK version
didn't handle items without attributes in a column where other items did have
attributes neither -- they inherited the last used attribute.

Fix this by remembering whether we are using any non-default attributes or not
and resetting them if we do.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62392 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-12 22:43:57 +00:00
Vadim Zeitlin
47583ac103 No real changes, just minor cleanup in wxGTK wxDVC.
Don't duplicate wxGtkTreeCellDataFunc declaration.

Don't triplicate "visible" property setting inside the function itself.

Indent the inside of if statement properly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-12 22:43:51 +00:00
Vadim Zeitlin
2d0d781336 Remove wxDataViewTextRendererAttr by merging it with wxDataViewTextRenderer.
There is no reason to have a separate class for rendering the text honouring
the attributes defined for it, wxDataViewTextRenderer itself already does this
perfectly well.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-12 13:59:25 +00:00
Vadim Zeitlin
ddb44248a6 Fixed wxDataViewCtrl::Set{Foreground,Background}Colour() to work under GTK too.
Implement DoApplyWidgetStyle() in wxGTK version of wxDataViewCtrl to propagate
the main window style to the GtkTreeView which is what the user mostly sees.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62154 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-26 16:43:30 +00:00
Vadim Zeitlin
03647350fc No changes, just removed hard tabs and trailing white space.
This commit is huge but there are no non-white-space changes in it.

Some files containing third-party sources (src/msw/wince/time.cpp,
src/x11/pango*.cpp) were left unchanged.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-21 10:41:26 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Vadim Zeitlin
af58844636 Add information about the log message generation location to wxLog.
This means that wxLog::DoLogRecord() can now retrieve the file name, line
number and the function where the message was logged.

An unfortunate consequence of this change is that now

	if ( condition )
		wxLogError("Whatever");

results in a warning from g++ 4.x with -Wparentehses, so extra parentheses had
to be added in many places.

Finally, also allow storing arbitrary attributes in wxLogRecordInfo. This had
to be added to implement our own overloaded wxLogStatus() and wxLogSysError()
and will probably be useful for the others as well.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-09 20:26:34 +00:00
Robert Roebling
8a56837211 Further attempts to implement Clear() for the GTK control
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61118 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-18 17:42:06 +00:00
Robert Roebling
9330d5afb6 Many more corrections and clarifications to virtual index list model use
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61078 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-16 17:59:09 +00:00
Robert Roebling
0ae51f62de GTK: In virtual list mode, map first row to 1, not to 0 as this is reserved for an invalid item
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60997 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-11 15:21:18 +00:00
Vadim Zeitlin
1bfabf3675 work around g++ 4.3 warning about possibly ambiguous else
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-03 22:19:13 +00:00
Robert Roebling
5b276ac1db Commit third algorithm for sorting and preserving old positions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-11 14:33:00 +00:00
Robert Roebling
e4a8d29c50 Make a single for loop out of two
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-10 18:31:00 +00:00
Robert Roebling
1f226ad8a7 Use sorting algo using wxQsort that includes the old position for reporting that to GtkTreeView
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59470 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-10 13:38:41 +00:00
Robert Roebling
ecc322264b Implement vetoing editing in wxDataViewTextRenderer under GTK+ and test it in the sample (see also #10495)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-09 20:49:22 +00:00
Francesco Montorsi
c2489d8e6d comment out wxPrintf/wxLogDebug calls; fix some indentations; comment out the (debug) code explicitly crashing the application; protect with wxASSERTs the FindNode() return values, before they are dereferenced
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-06 20:39:23 +00:00
Robert Roebling
874edbb70e Initialise DC only when needed and deinitilise it properly before, fixes #10543: wxGTK wxDataViewCtrl Assert and Crash
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-06 18:52:30 +00:00
Vadim Zeitlin
5baee1f4bf compilation fixes for ANSI mode build (closes #10518)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-28 15:54:04 +00:00
Robert Roebling
496e7ec647 More GTK prefixing for internal methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-13 10:25:38 +00:00
Robert Roebling
16eab2e1cf Don't always show the vertical scrollbar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58327 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-23 12:50:04 +00:00
Robert Roebling
e90d2e8339 Reinitialise wxDataViewCustomRenderer's DC every time
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-21 15:04:04 +00:00
Robert Roebling
11f20f99ee iter = NULL in iter_n_children() means root
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-21 14:53:50 +00:00
Robert Roebling
b4c409189d Copy and paste error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-21 14:39:39 +00:00
Paul Cornett
8c2654ce3d build fixes and cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-20 17:50:51 +00:00
Robert Roebling
e4de825ee6 Add event based Drop API
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-20 13:46:21 +00:00
Robert Roebling
591cc82deb Simplified event based Drag API for wxDataViewCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-20 11:58:52 +00:00
Robert Roebling
15cac64f75 New eventb based Drag interface for wxDataViewCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-19 22:27:06 +00:00
Vadim Zeitlin
d3b9f782ef don't use annoying and unneeded in C++ casts of NULL to "T *" in all other files neither
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-19 13:55:27 +00:00
Robert Roebling
4219d8b027 Add wxDataViewCtrl::ExpandAncestors() and call it from both EnsureVisible() and Select()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-23 14:56:07 +00:00
Robert Roebling
a881f34e49 Call Expand on an item's parent chain in EnsureVisible
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-20 15:11:38 +00:00
Robert Roebling
10ab6d4f65 Correct wxDataViewCtrl::IsExpanded and add test for it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-17 22:26:40 +00:00
Robert Roebling
739a839903 Added wxDataViewCtrl::IsExpanded(item)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-16 21:23:55 +00:00
Vadim Zeitlin
dcb6cbecc8 extract setters from wxHeaderColumnBase into a separate wxSettableHeaderColumn class as we don't always need to implement them in order to use this class; also renamed wxHeaderColumnBase to just wxHeaderColumn as we didn't have any wxHeaderColumn at all
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-11 13:05:48 +00:00
Vadim Zeitlin
140a119ad2 restore sorting functionality broken by r57161
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57168 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-07 16:16:21 +00:00
Vadim Zeitlin
835d0d55c1 compilation fix after r57161
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-07 16:06:34 +00:00
Vadim Zeitlin
e2bfe6731e - Rewrite wxHeaderCtrl to be virtual-like: even if we don't need an infinite
number of columns in it, it turns out that getting column information from
  the associated control is much easier than copying it into the control.
- Provide wxHeaderCtrlSimple derived class which can be used easily if
  callback approach of wxHeaderCtrl is not needed.
- Because of wxHeaderCtrl virtualization, port-specific implementations of
  wxHeaderColumn are not needed any more and were removed.
- Use wxHeaderCtrl in the generic wxDataViewCtrl: this means that column
  events are broken right now in it as they haven't been implemented by
  wxHeaderCtrl yet, this will be fixed a.s.a.p.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57161 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-07 14:47:55 +00:00
Vadim Zeitlin
bc0289bf5e no changes, just remove trailing whitespace
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57160 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-07 14:19:18 +00:00
Robert Roebling
7448d67c49 Added wxChoice renderer to wxDataViewCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-10 14:08:38 +00:00
Vadim Zeitlin
5c33522fca replace wx_{const,static,reinterpret}_cast with their standard C++ equivalents
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-02 02:39:52 +00:00