src/common/selectdispatcher.cpp \
src/unix/epolldispatcher.cpp \
src/unix/appunix.cpp \
- src/unix/baseunix.cpp \
src/unix/evtloopunix.cpp \
src/unix/dlunix.cpp \
src/unix/snglinst.cpp \
monodll_selectdispatcher.o \
monodll_epolldispatcher.o \
monodll_appunix.o \
- monodll_baseunix.o \
monodll_evtloopunix.o \
monodll_dlunix.o \
monodll_snglinst.o \
monodll_selectdispatcher.o \
monodll_epolldispatcher.o \
monodll_appunix.o \
- monodll_baseunix.o \
monodll_evtloopunix.o \
monodll_dlunix.o \
monodll_snglinst.o \
monodll_selectdispatcher.o \
monodll_epolldispatcher.o \
monodll_appunix.o \
- monodll_baseunix.o \
monodll_evtloopunix.o \
monodll_dlunix.o \
monodll_snglinst.o \
monodll_selectdispatcher.o \
monodll_epolldispatcher.o \
monodll_appunix.o \
- monodll_baseunix.o \
monodll_evtloopunix.o \
monodll_dlunix.o \
monodll_snglinst.o \
monodll_selectdispatcher.o \
monodll_epolldispatcher.o \
monodll_appunix.o \
- monodll_baseunix.o \
monodll_evtloopunix.o \
monodll_dlunix.o \
monodll_snglinst.o \
monodll_selectdispatcher.o \
monodll_epolldispatcher.o \
monodll_appunix.o \
- monodll_baseunix.o \
monodll_evtloopunix.o \
monodll_dlunix.o \
monodll_snglinst.o \
monodll_selectdispatcher.o \
monodll_epolldispatcher.o \
monodll_appunix.o \
- monodll_baseunix.o \
monodll_evtloopunix.o \
monodll_dlunix.o \
monodll_snglinst.o \
monolib_selectdispatcher.o \
monolib_epolldispatcher.o \
monolib_appunix.o \
- monolib_baseunix.o \
monolib_evtloopunix.o \
monolib_dlunix.o \
monolib_snglinst.o \
monolib_selectdispatcher.o \
monolib_epolldispatcher.o \
monolib_appunix.o \
- monolib_baseunix.o \
monolib_evtloopunix.o \
monolib_dlunix.o \
monolib_snglinst.o \
monolib_selectdispatcher.o \
monolib_epolldispatcher.o \
monolib_appunix.o \
- monolib_baseunix.o \
monolib_evtloopunix.o \
monolib_dlunix.o \
monolib_snglinst.o \
monolib_selectdispatcher.o \
monolib_epolldispatcher.o \
monolib_appunix.o \
- monolib_baseunix.o \
monolib_evtloopunix.o \
monolib_dlunix.o \
monolib_snglinst.o \
monolib_selectdispatcher.o \
monolib_epolldispatcher.o \
monolib_appunix.o \
- monolib_baseunix.o \
monolib_evtloopunix.o \
monolib_dlunix.o \
monolib_snglinst.o \
monolib_selectdispatcher.o \
monolib_epolldispatcher.o \
monolib_appunix.o \
- monolib_baseunix.o \
monolib_evtloopunix.o \
monolib_dlunix.o \
monolib_snglinst.o \
monolib_selectdispatcher.o \
monolib_epolldispatcher.o \
monolib_appunix.o \
- monolib_baseunix.o \
monolib_evtloopunix.o \
monolib_dlunix.o \
monolib_snglinst.o \
basedll_selectdispatcher.o \
basedll_epolldispatcher.o \
basedll_appunix.o \
- basedll_baseunix.o \
basedll_evtloopunix.o \
basedll_dlunix.o \
basedll_snglinst.o \
basedll_selectdispatcher.o \
basedll_epolldispatcher.o \
basedll_appunix.o \
- basedll_baseunix.o \
basedll_evtloopunix.o \
basedll_dlunix.o \
basedll_snglinst.o \
basedll_selectdispatcher.o \
basedll_epolldispatcher.o \
basedll_appunix.o \
- basedll_baseunix.o \
basedll_evtloopunix.o \
basedll_dlunix.o \
basedll_snglinst.o \
basedll_selectdispatcher.o \
basedll_epolldispatcher.o \
basedll_appunix.o \
- basedll_baseunix.o \
basedll_evtloopunix.o \
basedll_dlunix.o \
basedll_snglinst.o \
basedll_selectdispatcher.o \
basedll_epolldispatcher.o \
basedll_appunix.o \
- basedll_baseunix.o \
basedll_evtloopunix.o \
basedll_dlunix.o \
basedll_snglinst.o \
basedll_selectdispatcher.o \
basedll_epolldispatcher.o \
basedll_appunix.o \
- basedll_baseunix.o \
basedll_evtloopunix.o \
basedll_dlunix.o \
basedll_snglinst.o \
basedll_selectdispatcher.o \
basedll_epolldispatcher.o \
basedll_appunix.o \
- basedll_baseunix.o \
basedll_evtloopunix.o \
basedll_dlunix.o \
basedll_snglinst.o \
baselib_selectdispatcher.o \
baselib_epolldispatcher.o \
baselib_appunix.o \
- baselib_baseunix.o \
baselib_evtloopunix.o \
baselib_dlunix.o \
baselib_snglinst.o \
baselib_selectdispatcher.o \
baselib_epolldispatcher.o \
baselib_appunix.o \
- baselib_baseunix.o \
baselib_evtloopunix.o \
baselib_dlunix.o \
baselib_snglinst.o \
baselib_selectdispatcher.o \
baselib_epolldispatcher.o \
baselib_appunix.o \
- baselib_baseunix.o \
baselib_evtloopunix.o \
baselib_dlunix.o \
baselib_snglinst.o \
baselib_selectdispatcher.o \
baselib_epolldispatcher.o \
baselib_appunix.o \
- baselib_baseunix.o \
baselib_evtloopunix.o \
baselib_dlunix.o \
baselib_snglinst.o \
baselib_selectdispatcher.o \
baselib_epolldispatcher.o \
baselib_appunix.o \
- baselib_baseunix.o \
baselib_evtloopunix.o \
baselib_dlunix.o \
baselib_snglinst.o \
baselib_selectdispatcher.o \
baselib_epolldispatcher.o \
baselib_appunix.o \
- baselib_baseunix.o \
baselib_evtloopunix.o \
baselib_dlunix.o \
baselib_snglinst.o \
baselib_selectdispatcher.o \
baselib_epolldispatcher.o \
baselib_appunix.o \
- baselib_baseunix.o \
baselib_evtloopunix.o \
baselib_dlunix.o \
baselib_snglinst.o \
@COND_PLATFORM_OS2_1@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
@COND_PLATFORM_OS2_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
-@COND_PLATFORM_UNIX_1@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
-@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
@COND_PLATFORM_UNIX_1@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
@COND_PLATFORM_OS2_1@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
@COND_PLATFORM_OS2_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
-@COND_PLATFORM_UNIX_1@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
-@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
@COND_PLATFORM_UNIX_1@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
@COND_PLATFORM_OS2_1@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
@COND_PLATFORM_OS2_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
-@COND_PLATFORM_UNIX_1@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
-@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
@COND_PLATFORM_UNIX_1@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
@COND_PLATFORM_OS2_1@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
@COND_PLATFORM_OS2_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
-@COND_PLATFORM_UNIX_1@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
-@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
-@COND_PLATFORM_MACOSX_1_TOOLKIT_@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
-
@COND_PLATFORM_UNIX_1@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
src/common/selectdispatcher.cpp
src/unix/epolldispatcher.cpp
src/unix/appunix.cpp
- src/unix/baseunix.cpp
src/unix/evtloopunix.cpp
src/unix/dlunix.cpp
src/unix/snglinst.cpp
Microsoft Visual Studio Solution File, Format Version 8.00\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxregex", "wx_vc7_wxregex.vcproj", "{7A1A5354-6DB4-53F1-B75C-FE909D796167}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxzlib", "wx_vc7_wxzlib.vcproj", "{DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxpng", "wx_vc7_wxpng.vcproj", "{EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxjpeg", "wx_vc7_wxjpeg.vcproj", "{3CA6563C-F480-52D4-AF05-D641E25A5DF2}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxtiff", "wx_vc7_wxtiff.vcproj", "{456F9EAD-4A96-59BD-A39A-75DAA25D517B}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxexpat", "wx_vc7_wxexpat.vcproj", "{AF27ABC5-1AB2-55D0-8E7D-239C0176530E}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxscintilla", "wx_vc7_wxscintilla.vcproj", "{A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "wx_vc7_base.vcproj", "{79F1691B-08C4-55BB-985E-FDDB0BC8753C}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "wx_vc7_net.vcproj", "{48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "wx_vc7_core.vcproj", "{552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv", "wx_vc7_adv.vcproj", "{35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "media", "wx_vc7_media.vcproj", "{CD68AE51-BA90-5367-BB7D-F013E8E42AAF}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "html", "wx_vc7_html.vcproj", "{C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qa", "wx_vc7_qa.vcproj", "{5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "wx_vc7_xml.vcproj", "{B036100A-CEA0-5466-BE27-7E5B3687CAB8}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrc", "wx_vc7_xrc.vcproj", "{40DB525F-1EFF-56A4-8301-3AAD661135F3}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "wx_vc7_aui.vcproj", "{0937D36F-9EAC-5D3D-B990-44B3F99BFC34}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "wx_vc7_richtext.vcproj", "{52F16F53-E13D-55CA-AD64-ACB0274B0704}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stc", "wx_vc7_stc.vcproj", "{4B498696-42F2-5547-B159-87E4CAF436C1}"\r
ProjectSection(ProjectDependencies) = postProject\r
EndProjectSection\r
EndProject\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gl", "wx_vc7_gl.vcproj", "{407F0D6F-2B2D-5774-B9D3-FA972A663072}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- EndProjectSection\r
EndProject\r
Global\r
- GlobalSection(SolutionConfiguration) = preSolution\r
- Debug = Debug\r
- DLL Debug = DLL Debug\r
- DLL Release = DLL Release\r
- DLL Universal Debug = DLL Universal Debug\r
- DLL Universal Release = DLL Universal Release\r
- Release = Release\r
- Universal Debug = Universal Debug\r
- Universal Release = Universal Release\r
- EndGlobalSection\r
- GlobalSection(ProjectConfiguration) = postSolution\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Debug.ActiveCfg = Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Debug.Build.0 = Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Release.Build.0 = DLL Release|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Release.ActiveCfg = Release|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Release.Build.0 = Release|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {7A1A5354-6DB4-53F1-B75C-FE909D796167}.Universal Release.Build.0 = Universal Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Debug.ActiveCfg = Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Debug.Build.0 = Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Release.Build.0 = DLL Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Release.ActiveCfg = Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Release.Build.0 = Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {DDD86D36-A4F6-5A54-AE2C-144B3594E1CE}.Universal Release.Build.0 = Universal Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Debug.ActiveCfg = Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Debug.Build.0 = Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Release.Build.0 = DLL Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Release.ActiveCfg = Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Release.Build.0 = Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {EE6AD15D-E891-5E03-AB6C-6F98ACE69A3C}.Universal Release.Build.0 = Universal Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Debug.ActiveCfg = Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Debug.Build.0 = Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Release.Build.0 = DLL Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Release.ActiveCfg = Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Release.Build.0 = Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {3CA6563C-F480-52D4-AF05-D641E25A5DF2}.Universal Release.Build.0 = Universal Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Debug.ActiveCfg = Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Debug.Build.0 = Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Release.Build.0 = DLL Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Release.ActiveCfg = Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Release.Build.0 = Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {456F9EAD-4A96-59BD-A39A-75DAA25D517B}.Universal Release.Build.0 = Universal Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Debug.ActiveCfg = Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Debug.Build.0 = Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Release.Build.0 = DLL Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Release.ActiveCfg = Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Release.Build.0 = Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {AF27ABC5-1AB2-55D0-8E7D-239C0176530E}.Universal Release.Build.0 = Universal Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Debug.ActiveCfg = Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Debug.Build.0 = Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Release.Build.0 = DLL Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Release.ActiveCfg = Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Release.Build.0 = Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {A00328D4-6B01-5DF5-828E-AC2CB8B83CF6}.Universal Release.Build.0 = Universal Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Debug.ActiveCfg = Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Debug.Build.0 = Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Release.Build.0 = DLL Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Release.ActiveCfg = Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Release.Build.0 = Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {79F1691B-08C4-55BB-985E-FDDB0BC8753C}.Universal Release.Build.0 = Universal Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Debug.ActiveCfg = Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Debug.Build.0 = Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Release.Build.0 = DLL Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Release.ActiveCfg = Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Release.Build.0 = Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {48EEE04D-6B25-5A11-8A4A-B84C3C1146EC}.Universal Release.Build.0 = Universal Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Debug.ActiveCfg = Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Debug.Build.0 = Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Release.Build.0 = DLL Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Release.ActiveCfg = Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Release.Build.0 = Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {552E2EB7-F6EA-548D-A6CC-FCB0B246EE7F}.Universal Release.Build.0 = Universal Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Debug.ActiveCfg = Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Debug.Build.0 = Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Release.Build.0 = DLL Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Release.ActiveCfg = Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Release.Build.0 = Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {35F2F245-4EF0-5FFB-AD23-E1D7DAC39F0E}.Universal Release.Build.0 = Universal Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Debug.ActiveCfg = Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Debug.Build.0 = Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Release.Build.0 = DLL Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Release.ActiveCfg = Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Release.Build.0 = Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {CD68AE51-BA90-5367-BB7D-F013E8E42AAF}.Universal Release.Build.0 = Universal Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Debug.ActiveCfg = Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Debug.Build.0 = Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Release.Build.0 = DLL Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Release.ActiveCfg = Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Release.Build.0 = Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {C4CBFDA4-B78E-5C7D-A5EC-B20CF69DB256}.Universal Release.Build.0 = Universal Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Debug.ActiveCfg = Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Debug.Build.0 = Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Release.Build.0 = DLL Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Release.ActiveCfg = Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Release.Build.0 = Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {5ADF90A8-DA5C-55B3-88F1-94C0A0E9C76D}.Universal Release.Build.0 = Universal Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Debug.ActiveCfg = Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Debug.Build.0 = Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Release.Build.0 = DLL Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Release.ActiveCfg = Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Release.Build.0 = Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {B036100A-CEA0-5466-BE27-7E5B3687CAB8}.Universal Release.Build.0 = Universal Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Debug.ActiveCfg = Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Debug.Build.0 = Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Release.Build.0 = DLL Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Release.ActiveCfg = Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Release.Build.0 = Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {40DB525F-1EFF-56A4-8301-3AAD661135F3}.Universal Release.Build.0 = Universal Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Debug.ActiveCfg = Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Debug.Build.0 = Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Release.Build.0 = DLL Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Release.ActiveCfg = Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Release.Build.0 = Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {0937D36F-9EAC-5D3D-B990-44B3F99BFC34}.Universal Release.Build.0 = Universal Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Debug.ActiveCfg = Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Debug.Build.0 = Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Release.Build.0 = DLL Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Release.ActiveCfg = Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Release.Build.0 = Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {52F16F53-E13D-55CA-AD64-ACB0274B0704}.Universal Release.Build.0 = Universal Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Debug.ActiveCfg = Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Debug.Build.0 = Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Release.Build.0 = DLL Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Release.ActiveCfg = Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Release.Build.0 = Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {4B498696-42F2-5547-B159-87E4CAF436C1}.Universal Release.Build.0 = Universal Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Debug.ActiveCfg = Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Debug.Build.0 = Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Debug.Build.0 = DLL Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Release.ActiveCfg = DLL Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Release.Build.0 = DLL Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Universal Debug.ActiveCfg = DLL Universal Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Universal Debug.Build.0 = DLL Universal Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Universal Release.ActiveCfg = DLL Universal Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.DLL Universal Release.Build.0 = DLL Universal Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Release.ActiveCfg = Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Release.Build.0 = Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Universal Debug.ActiveCfg = Universal Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Universal Debug.Build.0 = Universal Debug|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Universal Release.ActiveCfg = Universal Release|Win32\r
- {407F0D6F-2B2D-5774-B9D3-FA972A663072}.Universal Release.Build.0 = Universal Release|Win32\r
- EndGlobalSection\r
- GlobalSection(ExtensibilityGlobals) = postSolution\r
- EndGlobalSection\r
- GlobalSection(ExtensibilityAddIns) = postSolution\r
- EndGlobalSection\r
GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
DLL Universal Release|Win32 = DLL Universal Release|Win32\r
DLL Universal Debug|Win32 = DLL Universal Debug|Win32\r
HideSolutionNode = FALSE\r
EndGlobalSection\r
EndGlobal\r
+\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\gauge95.cpp"\r
+ RelativePath="..\..\src\msw\gauge.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
ExcludedFromBuild="true"\r
/>\r
</File>\r
+ <File\r
+ RelativePath="..\..\src\msw\nativewin.cpp"\r
+ >\r
+ <FileConfiguration\r
+ Name="DLL Universal Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ <FileConfiguration\r
+ Name="DLL Universal Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ <FileConfiguration\r
+ Name="Universal Release|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ <FileConfiguration\r
+ Name="Universal Debug|Win32"\r
+ ExcludedFromBuild="true"\r
+ />\r
+ </File>\r
<File\r
RelativePath="..\..\src\msw\notebook.cpp"\r
>\r
RelativePath="..\..\src\msw\settings.cpp"\r
/>\r
<File\r
- RelativePath="..\..\src\msw\slider95.cpp"\r
+ RelativePath="..\..\src\msw\slider.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\statbr95.cpp"\r
+ RelativePath="..\..\src\msw\statline.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\statline.cpp"\r
+ RelativePath="..\..\src\msw\stattext.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\stattext.cpp"\r
+ RelativePath="..\..\src\msw\statusbar.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\tbar95.cpp"\r
+ RelativePath="..\..\src\msw\textctrl.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\textctrl.cpp"\r
+ RelativePath="..\..\src\msw\textentry.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\textentry.cpp"\r
+ RelativePath="..\..\src\msw\tglbtn.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
/>\r
</File>\r
<File\r
- RelativePath="..\..\src\msw\tglbtn.cpp"\r
+ RelativePath="..\..\src\msw\toolbar.cpp"\r
>\r
<FileConfiguration\r
Name="DLL Universal Release|Win32"\r
RelativePath="..\..\include\wx\msw\frame.h"\r
/>\r
<File\r
- RelativePath="..\..\include\wx\msw\gauge95.h"\r
+ RelativePath="..\..\include\wx\msw\gauge.h"\r
/>\r
<File\r
RelativePath="..\..\include\wx\msw\gdiimage.h"\r
RelativePath="..\..\include\wx\msw\setup0.h"\r
/>\r
<File\r
- RelativePath="..\..\include\wx\msw\slider95.h"\r
+ RelativePath="..\..\include\wx\msw\slider.h"\r
/>\r
<File\r
RelativePath="..\..\include\wx\msw\sound.h"\r
<File\r
RelativePath="..\..\include\wx\msw\statbox.h"\r
/>\r
- <File\r
- RelativePath="..\..\include\wx\msw\statbr95.h"\r
- />\r
<File\r
RelativePath="..\..\include\wx\msw\statline.h"\r
/>\r
RelativePath="..\..\include\wx\msw\stattext.h"\r
/>\r
<File\r
- RelativePath="..\..\include\wx\msw\tabctrl.h"\r
+ RelativePath="..\..\include\wx\msw\statusbar.h"\r
/>\r
<File\r
- RelativePath="..\..\include\wx\msw\taskbar.h"\r
+ RelativePath="..\..\include\wx\msw\tabctrl.h"\r
/>\r
<File\r
- RelativePath="..\..\include\wx\msw\tbar95.h"\r
+ RelativePath="..\..\include\wx\msw\taskbar.h"\r
/>\r
<File\r
RelativePath="..\..\include\wx\msw\textctrl.h"\r
<File\r
RelativePath="..\..\include\wx\msw\tglbtn.h"\r
/>\r
+ <File\r
+ RelativePath="..\..\include\wx\msw\toolbar.h"\r
+ />\r
<File\r
RelativePath="..\..\include\wx\msw\tooltip.h"\r
/>\r
<File\r
RelativePath="..\..\include\wx\msgdlg.h"\r
/>\r
+ <File\r
+ RelativePath="..\..\include\wx\nativewin.h"\r
+ />\r
<File\r
RelativePath="..\..\include\wx\nonownedwnd.h"\r
/>\r
#ifndef _WX_UNIX_APPTBASE_H_
#define _WX_UNIX_APPTBASE_H_
+struct wxEndProcessData;
struct wxExecuteData;
class wxPipe;
// wait for the process termination, return whatever wxExecute() must
// return
- virtual int WaitForChild(wxExecuteData& execData) = 0;
+ //
+ // base class implementation handles all cases except wxEXEC_SYNC without
+ // wxEXEC_NOEVENTS one which is implemented at the GUI level
+ virtual int WaitForChild(wxExecuteData& execData);
+
+ // integrate the monitoring of the given fd with the port-specific event
+ // loop: when this fd, which corresponds to a dummy pipe opened between the
+ // parent and child processes, is closed by the child, the parent is
+ // notified about this via a call to wxHandleProcessTermination() function
+ //
+ // the default implementation uses wxFDIODispatcher and so is suitable for
+ // the console applications or ports which don't have any specific event
+ // loop
+ virtual int AddProcessCallback(wxEndProcessData *data, int fd);
// wxThread helpers
#if wxUSE_CONSOLE_EVENTLOOP
virtual wxEventLoopBase *CreateEventLoop();
#endif // wxUSE_CONSOLE_EVENTLOOP
- virtual int WaitForChild(wxExecuteData& execData);
#if wxUSE_TIMER
virtual wxTimerImpl *CreateTimerImpl(wxTimer *timer);
#endif
public:
virtual wxEventLoopBase *CreateEventLoop();
virtual int WaitForChild(wxExecuteData& execData);
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+ virtual int AddProcessCallback(wxEndProcessData *data, int fd);
+#endif
#if wxUSE_TIMER
virtual wxTimerImpl *CreateTimerImpl(wxTimer *timer);
#endif
class WXDLLIMPEXP_FWD_BASE wxProcess;
class wxStreamTempInputBuffer;
-// some ports have toolkit-specific implementations of wxAddProcessCallback()
-// but by default we use a generic wxFDIOHandler-based mechanism under Unix
-#if defined(__UNIX__) && \
- !(defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMGL__))
- #define wxHAS_GENERIC_PROCESS_CALLBACK 1
-#endif
-
-#ifdef wxHAS_GENERIC_PROCESS_CALLBACK
-struct wxEndProcessFDIOHandler;
-#endif
-
// if pid > 0, the execution is async and the data is freed in the callback
// executed when the process terminates, if pid < 0, the execution is
// synchronous and the caller (wxExecute) frees the data
int tag; // port dependent value
wxProcess *process; // if !NULL: notified on process termination
int exitcode; // the exit code
-
-#ifdef wxHAS_GENERIC_PROCESS_CALLBACK
- wxEndProcessFDIOHandler *fdioHandler;
-#endif
};
// struct in which information is passed from wxExecute() to wxAppTraits
// callback function and is common to all ports (src/unix/utilsunx.cpp)
extern WXDLLIMPEXP_BASE void wxHandleProcessTermination(wxEndProcessData *proc_data);
-// This function is called to associate the port-specific callback with the
-// child process. The return valus is port-specific.
-//
-// The file descriptor 'fd' is descriptor of a dummy pipe opened between the
-// parent and the child. No data are written to or read from this pipe, its
-// sole purpose is that the child process will close it when it terminates and
-// the parent will be notified about it if it looks at 'fd' (e.g. using
-// select()).
-//
-// wxAddProcessCallback() does whatever is necessary to ensure that 'fd' is
-// periodically (typically every event loop iteration) checked for its status
-// and that wxHandleProcessTermination() is called once 'fd' indicates the
-// child terminated.
-extern WXDLLIMPEXP_CORE int wxAddProcessCallback(wxEndProcessData *proc_data, int fd);
-
-#if defined(__WXMAC__) || defined(__WXCOCOA__)
-// For ports (e.g. DARWIN) which can add callbacks based on the pid
-extern int wxAddProcessCallbackForPid(wxEndProcessData *proc_data, int pid);
-#endif
-
#endif // _WX_UNIX_EXECUTE_H
}
}
-int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
+int wxGUIAppTraits::AddProcessCallback(wxEndProcessData *proc_data, int fd)
{
int tag = gdk_input_add(fd,
GDK_INPUT_READ,
}
}
-int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
+int wxGUIAppTraits::AddProcessCallback(wxEndProcessData *proc_data, int fd)
{
int tag = gdk_input_add(fd,
GDK_INPUT_READ,
return tag;
}
+#if wxUSE_TIMER
+
wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
{
return new wxGTKTimerImpl(timer);
}
+#endif // wxUSE_TIMER
+
// ----------------------------------------------------------------------------
// wxPlatformInfo-related
// ----------------------------------------------------------------------------
#include <sys/wait.h>
-// Use polling instead of Mach ports, which doesn't work on Intel
-// due to task_for_pid security issues.
-
-// http://developer.apple.com/technotes/tn/tn2050.html
-
-// What's a better test for Intel vs PPC?
-#ifdef WORDS_BIGENDIAN
-#define USE_POLLING 0
-#else
-#define USE_POLLING 1
-#endif
-
-#if USE_POLLING
-
-#if wxUSE_THREADS
-class wxProcessTerminationEventHandler: public wxEvtHandler
-{
- public:
- wxProcessTerminationEventHandler(wxEndProcessData* data)
- {
- m_data = data;
- Connect(-1, wxEVT_END_PROCESS, wxProcessEventHandler(wxProcessTerminationEventHandler::OnTerminate));
- }
-
- void OnTerminate(wxProcessEvent& event)
- {
- Disconnect(-1, wxEVT_END_PROCESS, wxProcessEventHandler(wxProcessTerminationEventHandler::OnTerminate));
- wxHandleProcessTermination(m_data);
-
- // NOTE: We don't use this to delay destruction until the next idle run but rather to
- // avoid killing ourselves while our caller (which is our wxEvtHandler superclass
- // ProcessPendingEvents) still needs our m_eventsLocker to be valid.
- // Since we're in the GUI library we can guarantee that ScheduleForDestroy is using
- // the GUI implementation which delays destruction and not the base implementation
- // which does it immediately.
- wxTheApp->GetTraits()->ScheduleForDestroy(this);
- }
-
- wxEndProcessData* m_data;
-};
-
-class wxProcessTerminationThread: public wxThread
-{
- public:
- wxProcessTerminationThread(wxEndProcessData* data, wxProcessTerminationEventHandler* handler): wxThread(wxTHREAD_DETACHED)
- {
- m_data = data;
- m_handler = handler;
- }
-
- virtual void* Entry();
-
- wxProcessTerminationEventHandler* m_handler;
- wxEndProcessData* m_data;
-};
-
-// The problem with this is that we may be examining the
-// process e.g. in OnIdle at the point this cleans up the process,
-// so we need to delay until it's safe.
-
-void* wxProcessTerminationThread::Entry()
-{
- while (true)
- {
- usleep(100);
- int status = 0;
- int rc = waitpid(abs(m_data->pid), & status, 0);
- if (rc != 0)
- {
- if ((rc != -1) && WIFEXITED(status))
- m_data->exitcode = WEXITSTATUS(status);
- else
- m_data->exitcode = -1;
-
- wxProcessEvent event;
- wxPostEvent(m_handler, event);
-
- break;
- }
- }
-
- return NULL;
-}
-
-int wxAddProcessCallbackForPid(wxEndProcessData *proc_data, int pid)
-{
- if (pid < 1)
- return -1;
-
- wxProcessTerminationEventHandler* handler = new wxProcessTerminationEventHandler(proc_data);
- wxProcessTerminationThread* thread = new wxProcessTerminationThread(proc_data, handler);
-
- if (thread->Create() != wxTHREAD_NO_ERROR)
- {
- wxLogDebug(wxT("Could not create termination detection thread."));
- delete thread;
- delete handler;
- return -1;
- }
-
- thread->Run();
-
- return 0;
-}
-#else // !wxUSE_THREADS
-int wxAddProcessCallbackForPid(wxEndProcessData*, int)
-{
- wxLogDebug(wxT("Could not create termination detection thread."));
- return -1;
-}
-#endif // wxUSE_THREADS/!wxUSE_THREADS
-
-#else // !USE_POLLING
-
-#include <CoreFoundation/CFMachPort.h>
-extern "C" {
-#include <mach/mach.h>
-}
-
-void wxMAC_MachPortEndProcessDetect(CFMachPortRef WXUNUSED(port), void *data)
-{
- wxEndProcessData *proc_data = (wxEndProcessData*)data;
- wxLogDebug(wxT("Process ended"));
- int status = 0;
- int rc = waitpid(abs(proc_data->pid), &status, WNOHANG);
- if(!rc)
- {
- wxLogDebug(wxT("Mach port was invalidated, but process hasn't terminated!"));
- return;
- }
- if((rc != -1) && WIFEXITED(status))
- proc_data->exitcode = WEXITSTATUS(status);
- else
- proc_data->exitcode = -1;
- wxHandleProcessTermination(proc_data);
-}
-
-int wxAddProcessCallbackForPid(wxEndProcessData *proc_data, int pid)
-{
- if(pid < 1)
- return -1;
- kern_return_t kernResult;
- mach_port_t taskOfOurProcess;
- mach_port_t machPortForProcess;
- taskOfOurProcess = mach_task_self();
- if(taskOfOurProcess == MACH_PORT_NULL)
- {
- wxLogDebug(wxT("No mach_task_self()"));
- return -1;
- }
- wxLogDebug(wxT("pid=%d"),pid);
- kernResult = task_for_pid(taskOfOurProcess,pid, &machPortForProcess);
- if(kernResult != KERN_SUCCESS)
- {
- wxLogDebug(wxT("no task_for_pid()"));
- // try seeing if it is already dead or something
- // FIXME: a better method would be to call the callback function
- // from idle time until the process terminates. Of course, how
- // likely is it that it will take more than 0.1 seconds for the
- // mach terminate event to make its way to the BSD subsystem?
- usleep(100); // sleep for 0.1 seconds
- wxMAC_MachPortEndProcessDetect(NULL, (void*)proc_data);
- return -1;
- }
- CFMachPortContext termcb_contextinfo;
- termcb_contextinfo.version = 0;
- termcb_contextinfo.info = (void*)proc_data;
- termcb_contextinfo.retain = NULL;
- termcb_contextinfo.release = NULL;
- termcb_contextinfo.copyDescription = NULL;
- CFMachPortRef CFMachPortForProcess;
- Boolean ShouldFreePort;
- CFMachPortForProcess = CFMachPortCreateWithPort(NULL, machPortForProcess, NULL, &termcb_contextinfo, &ShouldFreePort);
- if(!CFMachPortForProcess)
- {
- wxLogDebug(wxT("No CFMachPortForProcess"));
- mach_port_deallocate(taskOfOurProcess, machPortForProcess);
- return -1;
- }
- if(ShouldFreePort)
- {
- kernResult = mach_port_deallocate(taskOfOurProcess, machPortForProcess);
- if(kernResult!=KERN_SUCCESS)
- {
- wxLogDebug(wxT("Couldn't deallocate mach port"));
- return -1;
- }
- }
- CFMachPortSetInvalidationCallBack(CFMachPortForProcess, &wxMAC_MachPortEndProcessDetect);
- CFRunLoopSourceRef runloopsource;
- runloopsource = CFMachPortCreateRunLoopSource(NULL,CFMachPortForProcess, (CFIndex)0);
- if(!runloopsource)
- {
- wxLogDebug(wxT("Couldn't create runloopsource"));
- return -1;
- }
-
- CFRelease(CFMachPortForProcess);
-
- CFRunLoopAddSource(CFRunLoopGetCurrent(),runloopsource,kCFRunLoopDefaultMode);
- CFRelease(runloopsource);
- wxLogDebug(wxT("Successfully added notification to the runloop"));
- return 0;
-}
-
-#endif // USE_POLLING/!USE_POLLING
-
-/////////////////////////////////////////////////////////////////////////////
-// New implementation avoiding mach ports entirely.
-
#include <CoreFoundation/CFSocket.h>
/*!
}
/*!
- Implements the GUI-specific wxAddProcessCallback for both wxMac and
+ Implements the GUI-specific AddProcessCallback() for both wxMac and
wxCocoa using the CFSocket/CFRunLoop API which is available to both.
Takes advantage of the fact that sockets on UNIX are just regular
file descriptors and thus even a non-socket file descriptor can
apparently be used with CFSocket so long as you only tell CFSocket
to do things with it that would be valid for a non-socket fd.
*/
-int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
+int wxGUIAppTraits::AddProcessCallback(wxEndProcessData *proc_data, int fd)
{
static int s_last_tag = 0;
CFSocketContext context =
// NOTE: This doesn't really belong here but this was a handy file to
// put it in because it's already compiled for wxCocoa and wxMac GUI lib.
-#if wxUSE_GUI
-
#if wxUSE_STDPATHS
static wxStandardPathsCF gs_stdPaths;
wxStandardPathsBase& wxGUIAppTraits::GetStandardPaths()
}
#endif
-#endif // wxUSE_GUI
-
return ms;
}
-
-#ifdef __UNIX__
-
-int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
-{
- wxFAIL_MSG(wxT("wxAddProcessCallback not implemented in wxMGL!"));
- return 0;
-#if 0 // FIXME_MGL -do we need it at all?
- int tag = gdk_input_add(fd,
- GDK_INPUT_READ,
- GTK_EndProcessDetector,
- (gpointer)proc_data);
-
- return tag;
-#endif
-}
-
-#endif
XtRemoveInput(*id);
}
-int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
+int wxGUIAppTraits::AddProcessCallback(wxEndProcessData *proc_data, int fd)
{
XtInputId id = XtAppAddInput((XtAppContext) wxTheApp->GetAppContext(),
fd,
#include "wx/utils.h"
#endif //WX_PRECOMP
-#include "wx/apptrait.h"
#include "wx/unix/execute.h"
#include "wx/evtloop.h"
#include "wx/gsocket.h"
// wxConsoleAppTraits implementation
// ============================================================================
-int
-wxConsoleAppTraits::WaitForChild(wxExecuteData& execData)
-{
- int exitcode = 0;
- if ( execData.flags & wxEXEC_SYNC )
- {
- if ( waitpid(execData.pid, &exitcode, 0) == -1 || !WIFEXITED(exitcode) )
- {
- wxLogSysError(_("Waiting for subprocess termination failed"));
- }
- }
- else // asynchronous execution
- {
- wxEndProcessData *endProcData = new wxEndProcessData;
- endProcData->process = execData.process;
- endProcData->pid = execData.pid;
- endProcData->tag = wxAddProcessCallback
- (
- endProcData,
- execData.pipeEndProcDetect.Detach(wxPipe::Read)
- );
-
- execData.pipeEndProcDetect.Close();
- exitcode = execData.pid;
-
- }
-
- return exitcode;
-}
-
#if wxUSE_TIMER
-wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
-{
- // this doesn't work yet as there is no main loop in console applications
- // (but it will be added later)
- return new wxUnixTimerImpl(timer);
-}
-
#endif // wxUSE_TIMER
// Note: wxConsoleAppTraits::CreateEventLoop() is defined in evtloopunix.cpp!
#include "wx/event.h"
#endif
+#include "wx/apptrait.h"
#include "wx/longlong.h"
#include <sys/time.h>
return wxGetLocalTimeMillis() * 1000L;
}
+wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
+{
+ return new wxUnixTimerImpl(timer);
+}
+
#endif // wxUSE_TIMER
#include "wx/wfstream.h"
+#include "wx/private/fdiodispatcher.h"
#include "wx/unix/execute.h"
#include "wx/unix/private.h"
#endif // wxUSE_ON_FATAL_EXCEPTION
-#endif // wxUSE_BASE
-
-#ifdef __DARWIN__
- #include <sys/errno.h>
-#endif
// ----------------------------------------------------------------------------
// wxExecute support
// ----------------------------------------------------------------------------
-/*
- NOTE: If this proves not to work well for wxMac then move back to the old
- behavior. If, however, it proves to work just fine, nuke all of the code
- for the old behavior. I strongly suggest backporting this to 2.8 as well.
- However, beware that while you can nuke the old code here, you cannot
- nuke the wxAddProcessCallbackForPid from the 2.8 branch (found in
- utilsexc_cf since it's an exported symbol).
- */
-// #define USE_OLD_DARWIN_END_PROCESS_DETECT (defined(__DARWIN__) && defined(__WXMAC__))
-#define USE_OLD_DARWIN_END_PROCESS_DETECT 0
-
-// wxMac/wxCocoa don't use the same process end detection mechanisms so we don't
-// need wxExecute-related helpers for them
-#if !USE_OLD_DARWIN_END_PROCESS_DETECT
-
bool wxAppTraits::CreateEndProcessPipe(wxExecuteData& execData)
{
return execData.pipeEndProcDetect.Create();
execData.pipeEndProcDetect.Close();
}
-#else // !Darwin
-
-bool wxAppTraits::CreateEndProcessPipe(wxExecuteData& WXUNUSED(execData))
-{
- return true;
-}
-
-bool
-wxAppTraits::IsWriteFDOfEndProcessPipe(wxExecuteData& WXUNUSED(execData),
- int WXUNUSED(fd))
-{
- return false;
-}
-
-void
-wxAppTraits::DetachWriteFDOfEndProcessPipe(wxExecuteData& WXUNUSED(execData))
-{
- // nothing to do here, we don't use the pipe
-}
-
-#endif // !Darwin/Darwin
-
-#if wxUSE_GUI
-
-int wxGUIAppTraits::WaitForChild(wxExecuteData& execData)
+int wxAppTraits::AddProcessCallback(wxEndProcessData *data, int fd)
{
- wxEndProcessData *endProcData = new wxEndProcessData;
-
- const int flags = execData.flags;
-
- // wxAddProcessCallback is now (with DARWIN) allowed to call the
- // callback function directly if the process terminates before
- // the callback can be added to the run loop. Set up the endProcData.
- if ( flags & wxEXEC_SYNC )
+ // define a custom handler processing only the closure of the descriptor
+ struct wxEndProcessFDIOHandler : public wxFDIOHandler
{
- // we may have process for capturing the program output, but it's
- // not used in wxEndProcessData in the case of sync execution
- endProcData->process = NULL;
-
- // sync execution: indicate it by negating the pid
- endProcData->pid = -execData.pid;
- }
- else
- {
- // async execution, nothing special to do -- caller will be
- // notified about the process termination if process != NULL, endProcData
- // will be deleted in GTK_EndProcessDetector
- endProcData->process = execData.process;
- endProcData->pid = execData.pid;
- }
+ wxEndProcessFDIOHandler(wxEndProcessData *data, int fd)
+ : m_data(data), m_fd(fd)
+ {}
+ virtual void OnReadWaiting()
+ { wxFAIL_MSG("this isn't supposed to happen"); }
+ virtual void OnWriteWaiting()
+ { wxFAIL_MSG("this isn't supposed to happen"); }
- if ( !(flags & wxEXEC_NOEVENTS) )
- {
-#if USE_OLD_DARWIN_END_PROCESS_DETECT
- endProcData->tag = wxAddProcessCallbackForPid(endProcData, execData.pid);
-#else
- endProcData->tag = wxAddProcessCallback
- (
- endProcData,
- execData.pipeEndProcDetect.Detach(wxPipe::Read)
- );
-
- execData.pipeEndProcDetect.Close();
-#endif // USE_OLD_DARWIN_END_PROCESS_DETECT
- }
-
- if ( flags & wxEXEC_SYNC )
- {
- wxBusyCursor bc;
- int exitcode = 0;
-
- wxWindowDisabler *wd = flags & (wxEXEC_NODISABLE | wxEXEC_NOEVENTS)
- ? NULL
- : new wxWindowDisabler;
-
- if ( flags & wxEXEC_NOEVENTS )
+ virtual void OnExceptionWaiting()
{
- // just block waiting for the child to exit
+ const int pid = m_data->pid > 0 ? m_data->pid : -(m_data->pid);
int status = 0;
- int result = waitpid(execData.pid, &status, 0);
-#ifdef __DARWIN__
- /* DE: waitpid manpage states that waitpid can fail with EINTR
- if the call is interrupted by a caught signal. I suppose
- that means that this ought to be a while loop.
-
- The odd thing is that it seems to fail EVERY time. It fails
- with a quickly exiting process (e.g. echo), and fails with a
- slowly exiting process (e.g. sleep 2) but clearly after
- having waited for the child to exit. Maybe it's a bug in
- my particular version.
-
- It works, however, from the CFSocket callback without this
- trick but in that case it's used only after CFSocket calls
- the callback and with the WNOHANG flag which would seem to
- preclude it from being interrupted or at least make it much
- less likely since it would not then be waiting.
-
- If Darwin's man page is to be believed then this is definitely
- necessary. It's just weird that I've never seen it before
- and apparently no one else has either or you'd think they'd
- have reported it by now. Perhaps blocking the GUI while
- waiting for a child process to exit is simply not that common.
- */
- if(result == -1 && errno == EINTR)
+ // has the process really terminated?
+ int rc = waitpid(pid, &status, WNOHANG);
+ if ( rc == 0 )
{
- result = waitpid(execData.pid, &status, 0);
+ // This can only happen if the child application closes our
+ // dummy pipe that is used to monitor its lifetime; in that
+ // case, our best bet is to pretend the process did terminate,
+ // because otherwise wxExecute() would hang indefinitely
+ // (OnExceptionWaiting() won't be called again, the descriptor
+ // is closed now).
+ wxLogDebug("Child process (PID %d) still alive, "
+ "even though pipe was closed.", pid);
}
-
-#endif
-
- if ( result == -1 )
+ else if ( rc == -1 )
{
- wxLogLastError(_T("waitpid"));
- exitcode = -1;
+ // As above, if waitpid() fails, the best we can do is to log the
+ // error and pretend the child terminated:
+ wxLogSysError(_("Failed to check child process' status"));
}
- else
- {
- wxASSERT_MSG( result == execData.pid,
- _T("unexpected waitpid() return value") );
- if ( WIFEXITED(status) )
- {
- exitcode = WEXITSTATUS(status);
- }
- else // abnormal termination?
- {
- wxASSERT_MSG( WIFSIGNALED(status),
- _T("unexpected child wait status") );
- exitcode = -1;
- }
- }
- }
- else // !wxEXEC_NOEVENTS
- {
- // endProcData->pid will be set to 0 from
- // wxHandleProcessTermination when the process terminates
- while ( endProcData->pid != 0 )
- {
- bool idle = true;
+ // set exit code to -1 if something bad happened
+ m_data->exitcode = rc > 0 && WIFEXITED(status) ? WEXITSTATUS(status)
+ : -1;
-#if HAS_PIPE_INPUT_STREAM
- if ( execData.bufOut )
- {
- execData.bufOut->Update();
- idle = false;
- }
-
- if ( execData.bufErr )
- {
- execData.bufErr->Update();
- idle = false;
- }
-#endif // HAS_PIPE_INPUT_STREAM
+ wxLogTrace("exec",
+ "Child process (PID %d) terminated with exit code %d",
+ pid, m_data->exitcode);
- // don't consume 100% of the CPU while we're sitting in this
- // loop
- if ( idle )
- wxMilliSleep(1);
+ // child exited, end waiting
+ wxFDIODispatcher::Get()->UnregisterFD(m_fd);
+ close(m_fd);
- // give GTK+ a chance to call GTK_EndProcessDetector here and
- // also repaint the GUI
- wxYield();
- }
+ wxHandleProcessTermination(m_data);
- exitcode = endProcData->exitcode;
+ delete this;
}
- delete wd;
- delete endProcData;
+ wxEndProcessData * const m_data;
+ const int m_fd;
+ };
- return exitcode;
- }
- else // async execution
- {
- return execData.pid;
- }
+ wxFDIODispatcher::Get()->RegisterFD
+ (
+ fd,
+ new wxEndProcessFDIOHandler(data, fd),
+ wxFDIO_EXCEPTION
+ );
+ return fd; // unused, but return something unique for the tag
}
-#endif //wxUSE_GUI
-
-#if wxUSE_BASE
-
-#ifdef wxHAS_GENERIC_PROCESS_CALLBACK
-struct wxEndProcessFDIOHandler : public wxFDIOHandler
+int wxAppTraits::WaitForChild(wxExecuteData& execData)
{
- wxEndProcessFDIOHandler(wxEndProcessData *data, int fd)
- : m_data(data), m_fd(fd)
- {}
-
- virtual void OnReadWaiting()
- { wxFAIL_MSG("this isn't supposed to happen"); }
- virtual void OnWriteWaiting()
- { wxFAIL_MSG("this isn't supposed to happen"); }
-
- virtual void OnExceptionWaiting()
+ if ( execData.flags & wxEXEC_SYNC )
{
- int pid = (m_data->pid > 0) ? m_data->pid : -(m_data->pid);
+ // just block waiting for the child to exit
int status = 0;
- // has the process really terminated?
- int rc = waitpid(pid, &status, WNOHANG);
- if ( rc == 0 )
+ int result = waitpid(execData.pid, &status, 0);
+#ifdef __DARWIN__
+ /* DE: waitpid manpage states that waitpid can fail with EINTR
+ if the call is interrupted by a caught signal. I suppose
+ that means that this ought to be a while loop.
+
+ The odd thing is that it seems to fail EVERY time. It fails
+ with a quickly exiting process (e.g. echo), and fails with a
+ slowly exiting process (e.g. sleep 2) but clearly after
+ having waited for the child to exit. Maybe it's a bug in
+ my particular version.
+
+ It works, however, from the CFSocket callback without this
+ trick but in that case it's used only after CFSocket calls
+ the callback and with the WNOHANG flag which would seem to
+ preclude it from being interrupted or at least make it much
+ less likely since it would not then be waiting.
+
+ If Darwin's man page is to be believed then this is definitely
+ necessary. It's just weird that I've never seen it before
+ and apparently no one else has either or you'd think they'd
+ have reported it by now. Perhaps blocking the GUI while
+ waiting for a child process to exit is simply not that common.
+ */
+ if ( result == -1 && errno == EINTR )
{
- // This can only happen if the child application closes our dummy
- // pipe that is used to monitor its lifetime; in that case, our
- // best bet is to pretend the process did terminate, because
- // otherwise wxExecute() would hang indefinitely
- // (OnExceptionWaiting() won't be called again, the descriptor
- // is closed now).
- wxLogDebug("Child process (PID %i) still alive, even though notification was received that it terminated.", pid);
+ result = waitpid(execData.pid, &status, 0);
}
- else if ( rc == -1 )
+#endif // __DARWIN__
+
+ if ( result == -1 )
{
- // As above, if waitpid() fails, the best we can do is to log the
- // error and pretend the child terminated:
- wxLogSysError(_("Failed to check child process' status"));
+ wxLogLastError("waitpid");
}
+ else // child terminated
+ {
+ wxASSERT_MSG( result == execData.pid,
+ "unexpected waitpid() return value" );
- // set exit code to -1 if something bad happened
- m_data->exitcode = (rc > 0 && WIFEXITED(status))
- ? WEXITSTATUS(status)
- : -1;
-
- wxLogTrace("exec",
- "Child process (PID %i) terminated with exit code %i",
- pid, m_data->exitcode);
-
- // child exited, end waiting
- wxFDIODispatcher::Get()->UnregisterFD(m_fd);
- close(m_fd);
+ if ( WIFEXITED(status) )
+ {
+ return WEXITSTATUS(status);
+ }
+ else // abnormal termination?
+ {
+ wxASSERT_MSG( WIFSIGNALED(status),
+ "unexpected child wait status" );
+ }
+ }
- m_data->fdioHandler = NULL;
- wxHandleProcessTermination(m_data);
+ wxLogSysError(_("Waiting for subprocess termination failed"));
- delete this;
+ return -1;
}
+ else // asynchronous execution
+ {
+ wxEndProcessData *endProcData = new wxEndProcessData;
+ endProcData->process = execData.process;
+ endProcData->pid = execData.pid;
+ endProcData->tag = AddProcessCallback
+ (
+ endProcData,
+ execData.pipeEndProcDetect.Detach(wxPipe::Read)
+ );
- wxEndProcessData *m_data;
- int m_fd;
-};
+ execData.pipeEndProcDetect.Close();
+ return execData.pid;
-int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
-{
- proc_data->fdioHandler = new wxEndProcessFDIOHandler(proc_data, fd);
- wxFDIODispatcher::Get()->RegisterFD
- (
- fd,
- proc_data->fdioHandler,
- wxFDIO_EXCEPTION
- );
- return fd; // unused, but return something unique for the tag
+ }
}
-#endif // wxHAS_GENERIC_PROCESS_CALLBACK
void wxHandleProcessTermination(wxEndProcessData *proc_data)
{
// clean up
if ( proc_data->pid > 0 )
{
- delete proc_data;
+ // async execution
+ delete proc_data;
}
- else
+ else // sync execution
{
- // let wxExecute() know that the process has terminated
- proc_data->pid = 0;
+ // let wxExecute() know that the process has terminated
+ proc_data->pid = 0;
}
}
#endif // wxUSE_BASE
+
+#if wxUSE_GUI
+
+int wxGUIAppTraits::WaitForChild(wxExecuteData& execData)
+{
+ const int flags = execData.flags;
+ if ( !(flags & wxEXEC_SYNC) || (flags & wxEXEC_NOEVENTS) )
+ {
+ // async or blocking sync cases are already handled by the base class
+ // just fine, no need to duplicate its code here
+ return wxAppTraits::WaitForChild(execData);
+ }
+
+ // here we're dealing with the case of synchronous execution when we want
+ // to process the GUI events while waiting for the child termination
+
+ wxEndProcessData endProcData;
+
+ // we may have process for capturing the program output, but it's
+ // not used in wxEndProcessData in the case of sync execution
+ endProcData.process = NULL;
+
+ // sync execution: indicate it by negating the pid
+ endProcData.pid = -execData.pid;
+
+ endProcData.tag = AddProcessCallback
+ (
+ &endProcData,
+ execData.pipeEndProcDetect.Detach(wxPipe::Read)
+ );
+
+ execData.pipeEndProcDetect.Close();
+
+
+ // prepare to wait for the child termination: show to the user that we're
+ // busy and refuse all input unless explicitly told otherwise
+ wxBusyCursor bc;
+ wxWindowDisabler *wd = flags & wxEXEC_NODISABLE ? NULL
+ : new wxWindowDisabler;
+
+ // endProcData.pid will be set to 0 from wxHandleProcessTermination() when
+ // the process terminates
+ while ( endProcData.pid != 0 )
+ {
+#if HAS_PIPE_INPUT_STREAM
+ bool idle = true;
+
+ if ( execData.bufOut )
+ {
+ execData.bufOut->Update();
+ idle = false;
+ }
+
+ if ( execData.bufErr )
+ {
+ execData.bufErr->Update();
+ idle = false;
+ }
+
+ // don't consume 100% of the CPU while we're sitting in this
+ // loop
+ if ( idle )
+#endif // HAS_PIPE_INPUT_STREAM
+ wxMilliSleep(1);
+
+ // give the toolkit a chance to call wxHandleProcessTermination() here
+ // and also repaint the GUI and handle other accumulated events
+ wxYield();
+ }
+
+ delete wd;
+
+ return endProcData.exitcode;
+}
+
+#endif //wxUSE_GUI
+