Closed wxtrac closed 2 years ago
I took the time to make some changes to the patch previously submitted. The patch is zipped again, and it contains an ifm.patch file, which contains a diff of all existing files modified to integrate wxIFM into wxWidgets. The new files added by the intergration are contained within the zip file itself. Extract the contents of the zip over the root directory (there is no root folder in the zip file). The patch can be applied with patch -p0 < ifm.patch.
Changes in this patch compared to the previous: XMPs are now located in src/ifm instead of include/wx/ifm Doxygen files are now contained in docs/ifm/doxygen and the Doxyfile will output html files to docs/html/ifm.
Tested on Windows - very nice demo. The tabs look great and the UI feedback is excellent.
A few comments:
Many thanks, this is very promising!
Julian
VC++ 6 warnings below.
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
cl /c /nologo /TP /Fovc_mswd\ifmlib_dummy.obj /MDd /DWIN32
/Zi /Fd....\lib\vc_lib\wxmsw27d_ifm.pdb /D_DEBUG /Od
/DWXMSW /DWXDEBUG /I....\include
/I....\lib\vc_lib\mswd /W4 /I....\src\tiff
/I....\src\jpeg /I....\src\png /I....\src\zlib
/I....\src\regex /I....\src\expat\lib /GR /EHsc
/Yu"wx/wxprec.h" /Fp"vc_mswd\wxprec_ifmlib.pch"
/Ycwx/wxprec.h ....\src\msw\dummy.cpp
dummy.cpp
cl /c /nologo /TP /Fovc_mswd\ifmlib_definterface.obj /MDd
/DWIN32 /Zi /Fd....\lib\vc_lib\wxmsw27d_ifm.pdb /D_DEBUG
/Od /DWXMSW /DWXDEBUG /I....\include
/I....\lib\vc_lib\mswd /W4 /I....\src\tiff
/I....\src\jpeg /I....\src\png /I....\src\zlib
/I....\src\regex /I....\src\expat\lib /GR /EHsc
/Yu"wx/wxprec.h" /Fp"vc_mswd\wxprec_ifmlib.pch"
....\src\ifm\definterface.cpp
definterface.cpp
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::reverse_iterator::operator ->'
is 'class wxIFMInterfacePluginBase ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::const_reverse_iterator::operator
->' is 'class wxIFMInterfacePluginBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for 'wxIFMComponentArray::reverse_iterator::operator
->' is 'class wxIFMComponent ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for
'wxIFMComponentArray::const_reverse_iterator::operator ->'
is 'class wxIFMComponent const ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::reverse_iterator::operator ->' is
'class wxIFMFloatingWindowBase ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::const_reverse_iterator::operator
->' is 'class wxIFMFloatingWindowBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(39) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(41) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\vector(249) : warning
C4663: C++ language change: to explicitly specialize class
template 'vector' use the following syntax:
template<> class vector<bool,class
std::allocator
....\src\ifm\defplugin.cpp
defplugin.cpp
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::reverse_iterator::operator ->'
is 'class wxIFMInterfacePluginBase ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::const_reverse_iterator::operator
->' is 'class wxIFMInterfacePluginBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for 'wxIFMComponentArray::reverse_iterator::operator
->' is 'class wxIFMComponent ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for
'wxIFMComponentArray::const_reverse_iterator::operator ->'
is 'class wxIFMComponent const ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::reverse_iterator::operator ->' is
'class wxIFMFloatingWindowBase ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::const_reverse_iterator::operator
->' is 'class wxIFMFloatingWindowBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(39) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(41) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\vector(249) : warning
C4663: C++ language change: to explicitly specialize class
template 'vector' use the following syntax:
template<> class vector<bool,class
std::allocator
....\src\ifm\dragndrop.cpp
dragndrop.cpp
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::reverse_iterator::operator ->'
is 'class wxIFMInterfacePluginBase
....\src\ifm\events.cpp
events.cpp
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::reverse_iterator::operator ->'
is 'class wxIFMInterfacePluginBase
....\src\ifm\manager.cpp
manager.cpp
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::reverse_iterator::operator ->'
is 'class wxIFMInterfacePluginBase ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::const_reverse_iterator::operator
->' is 'class wxIFMInterfacePluginBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for 'wxIFMComponentArray::reverse_iterator::operator
->' is 'class wxIFMComponent ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for
'wxIFMComponentArray::const_reverse_iterator::operator ->'
is 'class wxIFMComponent const ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::reverse_iterator::operator ->' is
'class wxIFMFloatingWindowBase ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::const_reverse_iterator::operator
->' is 'class wxIFMFloatingWindowBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(39) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(41) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\vector(249) : warning
C4663: C++ language change: to explicitly specialize class
template 'vector' use the following syntax:
template<> class vector<bool,class
std::allocator
....\src\ifm\plugin.cpp
plugin.cpp
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::reverse_iterator::operator ->'
is 'class wxIFMInterfacePluginBase ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::const_reverse_iterator::operator
->' is 'class wxIFMInterfacePluginBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for 'wxIFMComponentArray::reverse_iterator::operator
->' is 'class wxIFMComponent ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(44) : warning C4284: return
type for
'wxIFMComponentArray::const_reverse_iterator::operator ->'
is 'class wxIFMComponent const ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::reverse_iterator::operator ->' is
'class wxIFMFloatingWindowBase * ' (ie; not a UDT or
reference to a UDT. Will produce errors if applied using
infix notation)
....\include\wx/ifm/ifmdefs.h(45) : warning C4284: return
type for
'wxIFMFloatingWindowArray::const_reverse_iterator::operator
->' is 'class wxIFMFloatingWindowBase const ' (ie; not a
UDT or reference to a UDT. Will produce errors if applied
using infix notation)
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(39) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\xmemory(41) : warning
C4100: '_P' : unreferenced formal parameter
c:\Progra~1\MICROS~2\vc98\INCLUDE\vector(249) : warning
C4663: C++ language change: to explicitly specialize class
template 'vector' use the following syntax:
template<> class vector<bool,class
std::allocator
....\src\ifm\resize.cpp
resize.cpp
....\include\wx/ifm/ifmdefs.h(43) : warning C4284: return
type for
'wxIFMInterfacePluginArray::reverse_iterator::operator ->'
is 'class wxIFMInterfacePluginBase
All of the "return type is not a UDT or reference to a UDT errors" are generated by the wxArray class, not std::vector. The rest are caused by STL headers, the signed unsigned mismatch stuff. There are 3 warnings that I know of which you can say are "my fault" which are the "Unreferenced formal parameter" errors.
I'll leave the documentation where it is until there is consensus as to where they should be. You want it in one place and VZ seems to want it in another. I originally had it where you wanted, then resubmitted where VZ wants it, and not changing it again until you both want the same thing. :)
"xpm files need to be removed from files.bkl or Bakefile complains." I don't remember it complaining? What is it complaining about? They don't need to be listed among the source files for IFM if there was another way that I could specify the src/ifm directory as an include directory. Doing that would allow the #include "foo.xpm" statements to work. Not really sure why it works now, but I remember adding the xpm files to the IFM_SRC to make the includes start working.
Hi,
Bakefile didn't know what to do the with the XPM files and aborted - I can't remember the exact error message. Something about there not being a rule for xpm.
Hopefully there's a way to suppress the UDT warning, since this doesn't happen for other wxArray usage.
I'll ask Vadim why he wanted a non-standard doc structure for wxIFM.
Julian
Updating patch. Changes include: -Removed std::vector using wxObjectArray instead* -Moved xpms to "src/ifm/xpm" directory. It seemed more organized this way** -Some bug fixes I have done since the previous patch.
-* I left the xpms within the bakefiles as I don't know what else I should be doing with them and vc6 project files don't compile unless they are included. The vc6 project files can't find the xpms because src/ifm/xpm isn't added an an include directory.
wxifm_patch.zip
(108.1 KiB)Patch zip updated 10/31
Hi Robin,
Thanks for the latest, here are my comments:
1) Again Bakefile (latest) aborted while trying to process your .bkl files with XPMs in. Maybe you're using a different version of bakefile. Anyway my solution was to move the XPM directory to include/wx/ifm/xpm and change the #includes accordingly, which should work fine for project files.
2) configure.in needs to mention the ifm sample directory, i.e. add it to this part:
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS artprov controls
dialogs drawing \ dynamic erase event exec font ifm image minimal mobile \
3) demo.cpp doesn't compile on Linux with memory tracing enabled because of a conflict between STL and the built-in memory tracing functionality. Please use a wxWidgets data structure for the map if you can, since this will solve the problem.
I'll try wxIFM on Mac when CVS is compiling again. We need to demonstrate reasonable portability to remove doubts amongst wx-devs.
It runs great on wxGTK2 (see my wx-dev message for binary and screenshot)!
Many thanks,
Julian
I have attached a patch which replaces the usage of std::map with WX_HASH_MAP in the demo application. My bakefile version was 0.1.9.1, although I only asked it to build msvc6proj files, never makefiles.
wxifm_demo_patch.patch
(0.6 KiB)Replace std::map with WX_HASH_MAP in the demo
I think we should wait a little before integrating wxIFM or wxAUI (or something else, or neither) in wx. It doesn't look right to make wxIFM standard right now before there is real consensus among wxWidgets users as to which one they prefer.
I'm leaving this pending so if there are any really strong opinions to the contrary it could be rediscussed but I think the best is to wait and see.
This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 14 days (the time period specified by the administrator of this Tracker).
Issue migrated from trac ticket # 7534
priority: high
2005-09-29 02:52:50: snakechomp created the issue
This patch integrates wxIFM into the wxWidgets cvs. It took me almost all day of fighting cvs diff, diff, and patch to get this to finally start working for me. Making the necessary changes to the bakefile system was actually easy when following the technote for it.
I apply this patch as follows:
c:\c++\wxWidgets> patch -p1 < c:/ifm.patch
I hope that the patch works for you guys, I have had so much trouble making it that I just want it to work already. I regenned the bakefiles locally, which appeared to go okay. The project files for the IFM sample seem to have a problem however, they try to link against 26 libraries when the build system made 27 library files. All samples seem to have done this, but I did regen all sample project files, so its possible that I incorrectly modified some bakefiles.
I did have everything working at one point earlier today with the same modifications made to the bakefiles as I have now, so I can confirm that all build configurations of wxIFM and the wxIFM sample application function as I expected.
I had to zip the file as it was aparently too big for the tracker otherwise.