diff --git a/Ide/LgiIdeProj.xml b/Ide/LgiIdeProj.xml --- a/Ide/LgiIdeProj.xml +++ b/Ide/LgiIdeProj.xml @@ -1,283 +1,284 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - .\win\Makefile.windows + .\haiku\buildHaiku.py ./linux/Makefile.linux ./mac/LgiIde.xcodeproj ./haiku/Makefile.haiku ./lgiide ./lgiide ./lgiide ./lgiide LgiIde.exe LgiIde.exe WINDOWS WINNATIVE WINDOWS WINNATIVE POSIX POSIX LIBPNG_VERSION=\"1.2\" LIBPNG_VERSION=\"1.2\" MingW /home/matthew/Code/Lgi/trunk/Ide/Code/IdeProjectSettings.cpp ./src ./resources ../include ./src ./resources ../include ..\include\lgi\win ..\include\lgi\win ../include/lgi/linux ../include/lgi/linux/Gtk ../../../../codelib/openssl/include ../include/lgi/linux ../include/lgi/linux/Gtk ../../../../codelib/openssl/include ../include/lgi/haiku ../include/lgi/haiku ../include/lgi/mac/cocoa ../include/lgi/mac/cocoa imm32 imm32 magic pthread `pkg-config --libs gtk+-3.0` -static-libgcc magic pthread `pkg-config --libs gtk+-3.0` -static-libgcc -static-libgcc gnu network be -static-libgcc gnu network be - + Executable lgiide lgiide LgiIde.exe LgiIde.exe lgiide lgiide `pkg-config --cflags gtk+-3.0` `pkg-config --cflags gtk+-3.0` + POSIX _GNU_SOURCE POSIX _GNU_SOURCE - + 4 4 0 1 SOME_TEST=testing /home/matthew/code/lgi/trunk/Lvc/LvcProject.xml - + diff --git a/Ide/haiku/Makefile.haiku b/Ide/haiku/Makefile.haiku --- a/Ide/haiku/Makefile.haiku +++ b/Ide/haiku/Makefile.haiku @@ -1,414 +1,416 @@ #!/usr/bin/make # # This makefile generated by LgiIde # http://www.memecode.com/lgi.php # .SILENT : CC = gcc CPP = g++ -Target = lgiide +Target = ./lgiide ifndef Build Build = Debug endif +MakeDir := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) BuildDir = $(Build) -Flags = -fPIC -w -fno-inline -fpermissive +CFlags = -MMD -MP -g -fPIC -fno-inline +CppFlags = $(CFlags) -fpermissive -std=c++14 ifeq ($(Build),Debug) - Flags += -g -std=c++14 -O0 + CFlags += -g + CppFlags += -g Tag = d Defs = -D_DEBUG -DHAIKU -D_REENTRANT -DPOSIX -D_GNU_SOURCE Libs = \ - -L../$(BuildDir) \ -static-libgcc \ -lgnu \ -lnetwork \ -lbe \ -llgi$(Tag) \ - -L../../$(BuildDir) + -L../$(BuildDir) Inc = \ - -I../resources \ - -I../src \ - -I../../include/lgi/haiku \ - -I../../include + -I./src \ + -I./resources \ + -I../include/lgi/haiku \ + -I../include else - Flags += -s -Os -std=c++14 + CFlags += -s -Os + CppFlags += -s -Os Defs = -DHAIKU -D_REENTRANT -DPOSIX -D_GNU_SOURCE Libs = \ - -L../$(BuildDir) \ -static-libgcc \ -lgnu \ -lnetwork \ -lbe \ -llgi$(Tag) \ - -L../../$(BuildDir) + -L../$(BuildDir) Inc = \ - -I../resources \ - -I../src \ - -I../../include/lgi/haiku \ - -I../../include + -I./src \ + -I./resources \ + -I../include/lgi/haiku \ + -I../include endif # Dependencies -Source = ../src/WebFldDlg.cpp \ - ../src/SysCharSupport.cpp \ - ../src/SpaceTabConv.cpp \ - ../src/SimpleCppParser.cpp \ - ../src/PythonParser.cpp \ - ../src/ProjectNode.cpp \ - ../src/NewProjectFromTemplate.cpp \ - ../src/MissingFiles.cpp \ - ../src/MemDumpViewer.cpp \ - ../src/LgiUtils.cpp \ - ../src/LgiIde.cpp \ - ../src/JavascriptParser.cpp \ - ../src/IdeProjectSettings.cpp \ - ../src/IdeProject.cpp \ - ../src/IdeDoc.cpp \ - ../src/IdeCommon.cpp \ - ../src/History.cpp \ - ../src/FtpThread.cpp \ - ../src/FindSymbol.cpp \ - ../src/IdeFindInFiles.cpp \ - ../src/DocEditStyling.cpp \ - ../src/DocEdit.cpp \ - ../src/DebugContext.cpp \ - ../src/AddFtpFile.cpp \ - ../../src/common/Text/TextConvert.cpp \ - ../../src/common/Text/HtmlParser.cpp \ - ../../src/common/Text/HtmlCommon.cpp \ - ../../src/common/Text/Html.cpp \ - ../../src/common/Text/Homoglyphs/HomoglyphsTable.cpp \ - ../../src/common/Text/Homoglyphs/Homoglyphs.cpp \ - ../../src/common/Text/DocView.cpp \ - ../../src/common/Net/OpenSSLSocket.cpp \ - ../../src/common/Net/Http.cpp \ - ../../src/common/Net/Ftp.cpp \ - ../../src/common/Lgi/Mdi.cpp \ - ../../src/common/Lgi/LgiMain.cpp \ - ../../src/common/Lgi/About.cpp \ - ../../src/common/Gdc2/Filters/Png.cpp \ - ../../src/common/Coding/ParseCpp.cpp \ - ../../src/common/Coding/LexCpp.cpp +Source = ./src/WebFldDlg.cpp \ + ./src/SysCharSupport.cpp \ + ./src/SpaceTabConv.cpp \ + ./src/SimpleCppParser.cpp \ + ./src/PythonParser.cpp \ + ./src/ProjectNode.cpp \ + ./src/NewProjectFromTemplate.cpp \ + ./src/MissingFiles.cpp \ + ./src/MemDumpViewer.cpp \ + ./src/LgiUtils.cpp \ + ./src/LgiIde.cpp \ + ./src/JavascriptParser.cpp \ + ./src/IdeProjectSettings.cpp \ + ./src/IdeProject.cpp \ + ./src/IdeFindInFiles.cpp \ + ./src/IdeDoc.cpp \ + ./src/IdeCommon.cpp \ + ./src/History.cpp \ + ./src/FtpThread.cpp \ + ./src/FindSymbol.cpp \ + ./src/DocEditStyling.cpp \ + ./src/DocEdit.cpp \ + ./src/DebugContext.cpp \ + ./src/AddFtpFile.cpp \ + ../src/common/Text/TextConvert.cpp \ + ../src/common/Text/HtmlParser.cpp \ + ../src/common/Text/HtmlCommon.cpp \ + ../src/common/Text/Html.cpp \ + ../src/common/Text/Homoglyphs/HomoglyphsTable.cpp \ + ../src/common/Text/Homoglyphs/Homoglyphs.cpp \ + ../src/common/Text/DocView.cpp \ + ../src/common/Net/OpenSSLSocket.cpp \ + ../src/common/Net/Http.cpp \ + ../src/common/Net/Ftp.cpp \ + ../src/common/Lgi/Mdi.cpp \ + ../src/common/Lgi/LgiMain.cpp \ + ../src/common/Lgi/About.cpp \ + ../src/common/Gdc2/Filters/Png.cpp \ + ../src/common/Coding/ParseCpp.cpp \ + ../src/common/Coding/LexCpp.cpp SourceC := $(filter %.c,$(Source)) ObjectsC := $(SourceC:.c=.o) SourceCpp := $(filter %.cpp,$(Source)) ObjectsCpp := $(SourceCpp:.cpp=.o) Objects := $(notdir $(ObjectsC) $(ObjectsCpp)) Objects := $(addprefix $(BuildDir)/,$(Objects)) Deps := $(patsubst %.o,%.d,$(Objects)) $(BuildDir)/%.o: %.c mkdir -p $(@D) echo $(notdir $<) [$(Build)] - $(CC) $(Inc) $(Flags) $(Defs) -c $< -o $@ + $(CC) $(Inc) $(CFlags) $(Defs) -c $< -o $@ $(BuildDir)/%.o: %.cpp mkdir -p $(@D) echo $(notdir $<) [$(Build)] - $(CPP) $(Inc) $(Flags) $(Defs) -c $< -o $@ + $(CPP) $(Inc) $(CppFlags) $(Defs) -c $< -o $@ # Target # Executable target -$(Target) : ../../$(BuildDir)/liblgi$(Tag).so $(Objects) +$(Target) : ../$(BuildDir)/liblgi$(Tag).so $(Objects) mkdir -p $(BuildDir) @echo Linking $(Target) [$(Build)]... $(CPP) -Wl,-export-dynamic,-R. -o \ $(Target) $(Objects) $(Libs) @echo Done. -../../$(BuildDir)/liblgi$(Tag).so : \ - ../../include/lgi/common/App.h \ - ../../include/lgi/common/Array.h \ - ../../include/lgi/common/AutoPtr.h \ - ../../include/lgi/common/Base64.h \ - ../../include/lgi/common/Bitmap.h \ - ../../include/lgi/common/Box.h \ - ../../include/lgi/common/Button.h \ - ../../include/lgi/common/CairoSurface.h \ - ../../include/lgi/common/Cancel.h \ - ../../include/lgi/common/Capabilities.h \ - ../../include/lgi/common/Charset.h \ - ../../include/lgi/common/CheckBox.h \ - ../../include/lgi/common/ClipBoard.h \ - ../../include/lgi/common/Colour.h \ - ../../include/lgi/common/ColourSpace.h \ - ../../include/lgi/common/Com.h \ - ../../include/lgi/common/Combo.h \ - ../../include/lgi/common/Containers.h \ - ../../include/lgi/common/Core.h \ - ../../include/lgi/common/Css.h \ - ../../include/lgi/common/CssTools.h \ - ../../include/lgi/common/CurrentTime.h \ - ../../include/lgi/common/DataDlg.h \ - ../../include/lgi/common/DateTime.h \ - ../../include/lgi/common/Dialog.h \ - ../../include/lgi/common/DisplayString.h \ - ../../include/lgi/common/DocView.h \ - ../../include/lgi/common/Dom.h \ - ../../include/lgi/common/DomFields.h \ - ../../include/lgi/common/DragAndDrop.h \ - ../../include/lgi/common/DropFiles.h \ - ../../include/lgi/common/Edit.h \ - ../../include/lgi/common/Error.h \ - ../../include/lgi/common/EventTargetThread.h \ - ../../include/lgi/common/File.h \ - ../../include/lgi/common/FileSelect.h \ - ../../include/lgi/common/Filter.h \ - ../../include/lgi/common/FindReplaceDlg.h \ - ../../include/lgi/common/Font.h \ - ../../include/lgi/common/FontCache.h \ - ../../include/lgi/common/FontSelect.h \ - ../../include/lgi/common/Gdc2.h \ - ../../include/lgi/common/GdcTools.h \ - ../../include/lgi/common/GdiLeak.h \ - ../../include/lgi/common/HashTable.h \ - ../../include/lgi/common/ImageList.h \ - ../../include/lgi/common/Input.h \ - ../../include/lgi/common/ItemContainer.h \ - ../../include/lgi/common/Json.h \ - ../../include/lgi/common/Layout.h \ - ../../include/lgi/common/Lgi.h \ - ../../include/lgi/common/LgiClasses.h \ - ../../include/lgi/common/LgiCommon.h \ - ../../include/lgi/common/LgiDefs.h \ - ../../include/lgi/common/LgiInc.h \ - ../../include/lgi/common/LgiInterfaces.h \ - ../../include/lgi/common/LgiMsgs.h \ - ../../include/lgi/common/LgiRes.h \ - ../../include/lgi/common/LgiString.h \ - ../../include/lgi/common/LgiUiBase.h \ - ../../include/lgi/common/Library.h \ - ../../include/lgi/common/LibraryUtils.h \ - ../../include/lgi/common/List.h \ - ../../include/lgi/common/ListItemCheckBox.h \ - ../../include/lgi/common/ListItemRadioBtn.h \ - ../../include/lgi/common/LMallocArray.h \ - ../../include/lgi/common/Mail.h \ - ../../include/lgi/common/Matrix.h \ - ../../include/lgi/common/Mem.h \ - ../../include/lgi/common/Menu.h \ - ../../include/lgi/common/Message.h \ - ../../include/lgi/common/Mime.h \ - ../../include/lgi/common/Mru.h \ - ../../include/lgi/common/Mutex.h \ - ../../include/lgi/common/Net.h \ - ../../include/lgi/common/Notifications.h \ - ../../include/lgi/common/OAuth2.h \ - ../../include/lgi/common/OptionsFile.h \ - ../../include/lgi/common/Palette.h \ - ../../include/lgi/common/Panel.h \ - ../../include/lgi/common/Password.h \ - ../../include/lgi/common/Path.h \ - ../../include/lgi/common/PixelRops.h \ - ../../include/lgi/common/Point.h \ - ../../include/lgi/common/Popup.h \ - ../../include/lgi/common/PopupList.h \ - ../../include/lgi/common/Printer.h \ - ../../include/lgi/common/Profile.h \ - ../../include/lgi/common/Progress.h \ - ../../include/lgi/common/ProgressDlg.h \ - ../../include/lgi/common/ProgressView.h \ - ../../include/lgi/common/Properties.h \ - ../../include/lgi/common/RadioGroup.h \ - ../../include/lgi/common/Range.h \ - ../../include/lgi/common/Rect.h \ - ../../include/lgi/common/RectF.h \ - ../../include/lgi/common/RefCount.h \ - ../../include/lgi/common/RegKey.h \ - ../../include/lgi/common/Res.h \ - ../../include/lgi/common/Rops.h \ - ../../include/lgi/common/ScrollBar.h \ - ../../include/lgi/common/SkinEngine.h \ - ../../include/lgi/common/Slider.h \ - ../../include/lgi/common/Splitter.h \ - ../../include/lgi/common/StatusBar.h \ - ../../include/lgi/common/Store3Defs.h \ - ../../include/lgi/common/Stream.h \ - ../../include/lgi/common/StringClass.h \ - ../../include/lgi/common/StringLayout.h \ - ../../include/lgi/common/StructuredIo.h \ - ../../include/lgi/common/StructuredLog.h \ - ../../include/lgi/common/SubProcess.h \ - ../../include/lgi/common/TableLayout.h \ - ../../include/lgi/common/TabView.h \ - ../../include/lgi/common/TextFile.h \ - ../../include/lgi/common/TextLabel.h \ - ../../include/lgi/common/TextLog.h \ - ../../include/lgi/common/TextView3.h \ - ../../include/lgi/common/Thread.h \ - ../../include/lgi/common/ThreadEvent.h \ - ../../include/lgi/common/Token.h \ - ../../include/lgi/common/ToolBar.h \ - ../../include/lgi/common/ToolTip.h \ - ../../include/lgi/common/TrayIcon.h \ - ../../include/lgi/common/Tree.h \ - ../../include/lgi/common/Undo.h \ - ../../include/lgi/common/Unicode.h \ - ../../include/lgi/common/UnicodeString.h \ - ../../include/lgi/common/UnrolledList.h \ - ../../include/lgi/common/Variant.h \ - ../../include/lgi/common/View.h \ - ../../include/lgi/common/Widgets.h \ - ../../include/lgi/common/Window.h \ - ../../include/lgi/common/XmlTree.h \ - ../../include/lgi/haiku/LgiOsClasses.h \ - ../../include/lgi/haiku/LgiOsDefs.h \ - ../../include/lgi/linux/Gtk/LgiWidget.h \ - ../../include/lgi/linux/Gtk/LgiWinManGlue.h \ - ../../include/lgi/mac/cocoa/LCocoaView.h \ - ../../include/lgi/mac/cocoa/LgiMac.h \ - ../../include/lgi/mac/cocoa/LgiOs.h \ - ../../include/lgi/mac/cocoa/LgiOsClasses.h \ - ../../include/lgi/mac/cocoa/LgiOsDefs.h \ - ../../include/lgi/mac/cocoa/ObjCWrapper.h \ - ../../include/lgi/mac/cocoa/SymLookup.h \ - ../../private/common/FontPriv.h \ - ../../private/common/ViewPriv.h \ - ../../private/haiku/AppPriv.h \ - ../../private/linux/AppPriv.h \ - ../../src/common/Gdc2/15Bit.cpp \ - ../../src/common/Gdc2/16Bit.cpp \ - ../../src/common/Gdc2/24Bit.cpp \ - ../../src/common/Gdc2/32Bit.cpp \ - ../../src/common/Gdc2/8Bit.cpp \ - ../../src/common/Gdc2/Alpha.cpp \ - ../../src/common/Gdc2/Colour.cpp \ - ../../src/common/Gdc2/Filters/Filter.cpp \ - ../../src/common/Gdc2/Font/Charset.cpp \ - ../../src/common/Gdc2/Font/DisplayString.cpp \ - ../../src/common/Gdc2/Font/Font.cpp \ - ../../src/common/Gdc2/Font/FontSystem.cpp \ - ../../src/common/Gdc2/Font/FontType.cpp \ - ../../src/common/Gdc2/Font/StringLayout.cpp \ - ../../src/common/Gdc2/Font/TypeFace.cpp \ - ../../src/common/Gdc2/GdcCommon.cpp \ - ../../src/common/Gdc2/Path/Path.cpp \ - ../../src/common/Gdc2/Rect.cpp \ - ../../src/common/Gdc2/RopsCases.cpp \ - ../../src/common/Gdc2/Surface.cpp \ - ../../src/common/Gdc2/Tools/ColourReduce.cpp \ - ../../src/common/Gdc2/Tools/GdcTools.cpp \ - ../../src/common/General/Containers.cpp \ - ../../src/common/General/DateTime.cpp \ - ../../src/common/General/ExeCheck.cpp \ - ../../src/common/General/FileCommon.cpp \ - ../../src/common/General/Password.cpp \ - ../../src/common/General/Properties.cpp \ - ../../src/common/Hash/md5/md5.c \ - ../../src/common/Hash/md5/md5.h \ - ../../src/common/Hash/sha1/sha1.c \ - ../../src/common/Hash/sha1/sha1.h \ - ../../src/common/Lgi/Alert.cpp \ - ../../src/common/Lgi/AppCommon.cpp \ - ../../src/common/Lgi/Css.cpp \ - ../../src/common/Lgi/CssTools.cpp \ - ../../src/common/Lgi/DataDlg.cpp \ - ../../src/common/Lgi/DragAndDropCommon.cpp \ - ../../src/common/Lgi/FileSelect.cpp \ - ../../src/common/Lgi/FindReplace.cpp \ - ../../src/common/Lgi/FontSelect.cpp \ - ../../src/common/Lgi/GuiUtils.cpp \ - ../../src/common/Lgi/Input.cpp \ - ../../src/common/Lgi/LgiCommon.cpp \ - ../../src/common/Lgi/Library.cpp \ - ../../src/common/Lgi/LMsg.cpp \ - ../../src/common/Lgi/MemStream.cpp \ - ../../src/common/Lgi/MenuCommon.cpp \ - ../../src/common/Lgi/Mru.cpp \ - ../../src/common/Lgi/Mutex.cpp \ - ../../src/common/Lgi/Object.cpp \ - ../../src/common/Lgi/OptionsFile.cpp \ - ../../src/common/Lgi/Rand.cpp \ - ../../src/common/Lgi/Stream.cpp \ - ../../src/common/Lgi/SubProcess.cpp \ - ../../src/common/Lgi/ThreadCommon.cpp \ - ../../src/common/Lgi/ThreadEvent.cpp \ - ../../src/common/Lgi/ToolTip.cpp \ - ../../src/common/Lgi/TrayIcon.cpp \ - ../../src/common/Lgi/Variant.cpp \ - ../../src/common/Lgi/ViewCommon.cpp \ - ../../src/common/Lgi/WindowCommon.cpp \ - ../../src/common/Net/Base64.cpp \ - ../../src/common/Net/MDStringToDigest.cpp \ - ../../src/common/Net/Net.cpp \ - ../../src/common/Net/Uri.cpp \ - ../../src/common/Resource/LgiRes.cpp \ - ../../src/common/Resource/Res.cpp \ - ../../src/common/Skins/Gel/Gel.cpp \ - ../../src/common/Text/DocView.cpp \ - ../../src/common/Text/String.cpp \ - ../../src/common/Text/TextView3.cpp \ - ../../src/common/Text/Token.cpp \ - ../../src/common/Text/Unicode.cpp \ - ../../src/common/Text/Utf8.cpp \ - ../../src/common/Text/XmlTree.cpp \ - ../../src/common/Widgets/Bitmap.cpp \ - ../../src/common/Widgets/Box.cpp \ - ../../src/common/Widgets/Button.cpp \ - ../../src/common/Widgets/CheckBox.cpp \ - ../../src/common/Widgets/Combo.cpp \ - ../../src/common/Widgets/Edit.cpp \ - ../../src/common/Widgets/ItemContainer.cpp \ - ../../src/common/Widgets/List.cpp \ - ../../src/common/Widgets/Panel.cpp \ - ../../src/common/Widgets/Popup.cpp \ - ../../src/common/Widgets/Progress.cpp \ - ../../src/common/Widgets/ProgressDlg.cpp \ - ../../src/common/Widgets/RadioGroup.cpp \ - ../../src/common/Widgets/ScrollBar.cpp \ - ../../src/common/Widgets/Slider.cpp \ - ../../src/common/Widgets/Splitter.cpp \ - ../../src/common/Widgets/StatusBar.cpp \ - ../../src/common/Widgets/TableLayout.cpp \ - ../../src/common/Widgets/TabView.cpp \ - ../../src/common/Widgets/TextLabel.cpp \ - ../../src/common/Widgets/ToolBar.cpp \ - ../../src/common/Widgets/Tree.cpp \ - ../../src/haiku/App.cpp \ - ../../src/haiku/ClipBoard.cpp \ - ../../src/haiku/DragAndDrop.cpp \ - ../../src/haiku/File.cpp \ - ../../src/haiku/Gdc2.cpp \ - ../../src/haiku/General.cpp \ - ../../src/haiku/Layout.cpp \ - ../../src/haiku/Mem.cpp \ - ../../src/haiku/MemDC.cpp \ - ../../src/haiku/Menu.cpp \ - ../../src/haiku/PrintDC.cpp \ - ../../src/haiku/Printer.cpp \ - ../../src/haiku/ScreenDC.cpp \ - ../../src/haiku/ShowFileProp_Haiku.cpp \ - ../../src/haiku/Thread.cpp \ - ../../src/haiku/View.cpp \ - ../../src/haiku/Widgets.cpp \ - ../../src/haiku/Window.cpp +../$(BuildDir)/liblgi$(Tag).so : ../include/lgi/common/App.h \ + ../include/lgi/common/Array.h \ + ../include/lgi/common/AutoPtr.h \ + ../include/lgi/common/Base64.h \ + ../include/lgi/common/Bitmap.h \ + ../include/lgi/common/Box.h \ + ../include/lgi/common/Button.h \ + ../include/lgi/common/CairoSurface.h \ + ../include/lgi/common/Cancel.h \ + ../include/lgi/common/Capabilities.h \ + ../include/lgi/common/Charset.h \ + ../include/lgi/common/CheckBox.h \ + ../include/lgi/common/ClipBoard.h \ + ../include/lgi/common/Colour.h \ + ../include/lgi/common/ColourSpace.h \ + ../include/lgi/common/Com.h \ + ../include/lgi/common/Combo.h \ + ../include/lgi/common/Containers.h \ + ../include/lgi/common/Core.h \ + ../include/lgi/common/Css.h \ + ../include/lgi/common/CssTools.h \ + ../include/lgi/common/CurrentTime.h \ + ../include/lgi/common/DataDlg.h \ + ../include/lgi/common/DateTime.h \ + ../include/lgi/common/Dialog.h \ + ../include/lgi/common/DisplayString.h \ + ../include/lgi/common/DocView.h \ + ../include/lgi/common/Dom.h \ + ../include/lgi/common/DomFields.h \ + ../include/lgi/common/DragAndDrop.h \ + ../include/lgi/common/DropFiles.h \ + ../include/lgi/common/Edit.h \ + ../include/lgi/common/Emoji.h \ + ../include/lgi/common/Error.h \ + ../include/lgi/common/EventTargetThread.h \ + ../include/lgi/common/File.h \ + ../include/lgi/common/FileSelect.h \ + ../include/lgi/common/Filter.h \ + ../include/lgi/common/FindReplaceDlg.h \ + ../include/lgi/common/Font.h \ + ../include/lgi/common/FontCache.h \ + ../include/lgi/common/FontSelect.h \ + ../include/lgi/common/Gdc2.h \ + ../include/lgi/common/GdcTools.h \ + ../include/lgi/common/GdiLeak.h \ + ../include/lgi/common/HashTable.h \ + ../include/lgi/common/ImageList.h \ + ../include/lgi/common/Input.h \ + ../include/lgi/common/ItemContainer.h \ + ../include/lgi/common/Json.h \ + ../include/lgi/common/Layout.h \ + ../include/lgi/common/Lgi.h \ + ../include/lgi/common/LgiClasses.h \ + ../include/lgi/common/LgiCommon.h \ + ../include/lgi/common/LgiDefs.h \ + ../include/lgi/common/LgiInc.h \ + ../include/lgi/common/LgiInterfaces.h \ + ../include/lgi/common/LgiMsgs.h \ + ../include/lgi/common/LgiRes.h \ + ../include/lgi/common/LgiString.h \ + ../include/lgi/common/LgiUiBase.h \ + ../include/lgi/common/Library.h \ + ../include/lgi/common/LibraryUtils.h \ + ../include/lgi/common/List.h \ + ../include/lgi/common/ListItemCheckBox.h \ + ../include/lgi/common/ListItemRadioBtn.h \ + ../include/lgi/common/LMallocArray.h \ + ../include/lgi/common/Mail.h \ + ../include/lgi/common/Matrix.h \ + ../include/lgi/common/Mem.h \ + ../include/lgi/common/Menu.h \ + ../include/lgi/common/Message.h \ + ../include/lgi/common/Mime.h \ + ../include/lgi/common/Mru.h \ + ../include/lgi/common/Mutex.h \ + ../include/lgi/common/Net.h \ + ../include/lgi/common/Notifications.h \ + ../include/lgi/common/OAuth2.h \ + ../include/lgi/common/OptionsFile.h \ + ../include/lgi/common/Palette.h \ + ../include/lgi/common/Panel.h \ + ../include/lgi/common/Password.h \ + ../include/lgi/common/Path.h \ + ../include/lgi/common/PixelRops.h \ + ../include/lgi/common/Point.h \ + ../include/lgi/common/Popup.h \ + ../include/lgi/common/PopupList.h \ + ../include/lgi/common/PopupNotification.h \ + ../include/lgi/common/Printer.h \ + ../include/lgi/common/Profile.h \ + ../include/lgi/common/Progress.h \ + ../include/lgi/common/ProgressDlg.h \ + ../include/lgi/common/ProgressView.h \ + ../include/lgi/common/Properties.h \ + ../include/lgi/common/RadioGroup.h \ + ../include/lgi/common/Range.h \ + ../include/lgi/common/Rect.h \ + ../include/lgi/common/RectF.h \ + ../include/lgi/common/RefCount.h \ + ../include/lgi/common/RegKey.h \ + ../include/lgi/common/Res.h \ + ../include/lgi/common/Rops.h \ + ../include/lgi/common/ScrollBar.h \ + ../include/lgi/common/SkinEngine.h \ + ../include/lgi/common/Slider.h \ + ../include/lgi/common/Splitter.h \ + ../include/lgi/common/StatusBar.h \ + ../include/lgi/common/Store3Defs.h \ + ../include/lgi/common/Stream.h \ + ../include/lgi/common/StringClass.h \ + ../include/lgi/common/StringLayout.h \ + ../include/lgi/common/StructuredIo.h \ + ../include/lgi/common/StructuredLog.h \ + ../include/lgi/common/SubProcess.h \ + ../include/lgi/common/TableLayout.h \ + ../include/lgi/common/TabView.h \ + ../include/lgi/common/TextFile.h \ + ../include/lgi/common/TextLabel.h \ + ../include/lgi/common/TextLog.h \ + ../include/lgi/common/TextView3.h \ + ../include/lgi/common/Thread.h \ + ../include/lgi/common/ThreadEvent.h \ + ../include/lgi/common/Token.h \ + ../include/lgi/common/ToolBar.h \ + ../include/lgi/common/ToolTip.h \ + ../include/lgi/common/TrayIcon.h \ + ../include/lgi/common/Tree.h \ + ../include/lgi/common/Undo.h \ + ../include/lgi/common/Unicode.h \ + ../include/lgi/common/UnicodeString.h \ + ../include/lgi/common/UnrolledList.h \ + ../include/lgi/common/Uri.h \ + ../include/lgi/common/Variant.h \ + ../include/lgi/common/View.h \ + ../include/lgi/common/Widgets.h \ + ../include/lgi/common/Window.h \ + ../include/lgi/common/XmlTree.h \ + ../include/lgi/haiku/LgiOsClasses.h \ + ../include/lgi/haiku/LgiOsDefs.h \ + ../include/lgi/linux/Gtk/LgiWidget.h \ + ../include/lgi/linux/Gtk/LgiWinManGlue.h \ + ../include/lgi/mac/cocoa/LCocoaView.h \ + ../include/lgi/mac/cocoa/LgiMac.h \ + ../include/lgi/mac/cocoa/LgiOs.h \ + ../include/lgi/mac/cocoa/LgiOsClasses.h \ + ../include/lgi/mac/cocoa/LgiOsDefs.h \ + ../include/lgi/mac/cocoa/ObjCWrapper.h \ + ../include/lgi/mac/cocoa/SymLookup.h \ + ../private/common/FontPriv.h \ + ../private/common/ViewPriv.h \ + ../private/haiku/AppPriv.h \ + ../private/linux/AppPriv.h \ + ../src/common/Gdc2/15Bit.cpp \ + ../src/common/Gdc2/16Bit.cpp \ + ../src/common/Gdc2/24Bit.cpp \ + ../src/common/Gdc2/32Bit.cpp \ + ../src/common/Gdc2/8Bit.cpp \ + ../src/common/Gdc2/Alpha.cpp \ + ../src/common/Gdc2/Colour.cpp \ + ../src/common/Gdc2/Filters/Filter.cpp \ + ../src/common/Gdc2/Font/Charset.cpp \ + ../src/common/Gdc2/Font/DisplayString.cpp \ + ../src/common/Gdc2/Font/Font.cpp \ + ../src/common/Gdc2/Font/FontSystem.cpp \ + ../src/common/Gdc2/Font/FontType.cpp \ + ../src/common/Gdc2/Font/StringLayout.cpp \ + ../src/common/Gdc2/Font/TypeFace.cpp \ + ../src/common/Gdc2/GdcCommon.cpp \ + ../src/common/Gdc2/Path/Path.cpp \ + ../src/common/Gdc2/Rect.cpp \ + ../src/common/Gdc2/RopsCases.cpp \ + ../src/common/Gdc2/Surface.cpp \ + ../src/common/Gdc2/Tools/ColourReduce.cpp \ + ../src/common/Gdc2/Tools/GdcTools.cpp \ + ../src/common/General/Containers.cpp \ + ../src/common/General/DateTime.cpp \ + ../src/common/General/ExeCheck.cpp \ + ../src/common/General/FileCommon.cpp \ + ../src/common/General/Password.cpp \ + ../src/common/General/Properties.cpp \ + ../src/common/Hash/md5/md5.c \ + ../src/common/Hash/md5/md5.h \ + ../src/common/Hash/sha1/sha1.c \ + ../src/common/Hash/sha1/sha1.h \ + ../src/common/Lgi/Alert.cpp \ + ../src/common/Lgi/AppCommon.cpp \ + ../src/common/Lgi/Css.cpp \ + ../src/common/Lgi/CssTools.cpp \ + ../src/common/Lgi/DataDlg.cpp \ + ../src/common/Lgi/DragAndDropCommon.cpp \ + ../src/common/Lgi/FileSelect.cpp \ + ../src/common/Lgi/FindReplace.cpp \ + ../src/common/Lgi/FontSelect.cpp \ + ../src/common/Lgi/GuiUtils.cpp \ + ../src/common/Lgi/Input.cpp \ + ../src/common/Lgi/LgiCommon.cpp \ + ../src/common/Lgi/Library.cpp \ + ../src/common/Lgi/LMsg.cpp \ + ../src/common/Lgi/MemStream.cpp \ + ../src/common/Lgi/MenuCommon.cpp \ + ../src/common/Lgi/Mru.cpp \ + ../src/common/Lgi/Mutex.cpp \ + ../src/common/Lgi/Object.cpp \ + ../src/common/Lgi/OptionsFile.cpp \ + ../src/common/Lgi/Rand.cpp \ + ../src/common/Lgi/Stream.cpp \ + ../src/common/Lgi/SubProcess.cpp \ + ../src/common/Lgi/ThreadCommon.cpp \ + ../src/common/Lgi/ThreadEvent.cpp \ + ../src/common/Lgi/ToolTip.cpp \ + ../src/common/Lgi/TrayIcon.cpp \ + ../src/common/Lgi/Variant.cpp \ + ../src/common/Lgi/ViewCommon.cpp \ + ../src/common/Lgi/WindowCommon.cpp \ + ../src/common/Net/Base64.cpp \ + ../src/common/Net/MDStringToDigest.cpp \ + ../src/common/Net/Net.cpp \ + ../src/common/Net/Uri.cpp \ + ../src/common/Resource/LgiRes.cpp \ + ../src/common/Resource/Res.cpp \ + ../src/common/Skins/Gel/Gel.cpp \ + ../src/common/Text/DocView.cpp \ + ../src/common/Text/String.cpp \ + ../src/common/Text/TextView3.cpp \ + ../src/common/Text/Token.cpp \ + ../src/common/Text/Unicode.cpp \ + ../src/common/Text/Utf8.cpp \ + ../src/common/Text/XmlTree.cpp \ + ../src/common/Widgets/Bitmap.cpp \ + ../src/common/Widgets/Box.cpp \ + ../src/common/Widgets/Button.cpp \ + ../src/common/Widgets/CheckBox.cpp \ + ../src/common/Widgets/Combo.cpp \ + ../src/common/Widgets/Edit.cpp \ + ../src/common/Widgets/ItemContainer.cpp \ + ../src/common/Widgets/List.cpp \ + ../src/common/Widgets/Panel.cpp \ + ../src/common/Widgets/Popup.cpp \ + ../src/common/Widgets/Progress.cpp \ + ../src/common/Widgets/ProgressDlg.cpp \ + ../src/common/Widgets/RadioGroup.cpp \ + ../src/common/Widgets/ScrollBar.cpp \ + ../src/common/Widgets/Slider.cpp \ + ../src/common/Widgets/Splitter.cpp \ + ../src/common/Widgets/StatusBar.cpp \ + ../src/common/Widgets/TableLayout.cpp \ + ../src/common/Widgets/TabView.cpp \ + ../src/common/Widgets/TextLabel.cpp \ + ../src/common/Widgets/ToolBar.cpp \ + ../src/common/Widgets/Tree.cpp \ + ../src/haiku/App.cpp \ + ../src/haiku/ClipBoard.cpp \ + ../src/haiku/DragAndDrop.cpp \ + ../src/haiku/File.cpp \ + ../src/haiku/Gdc2.cpp \ + ../src/haiku/General.cpp \ + ../src/haiku/Layout.cpp \ + ../src/haiku/Mem.cpp \ + ../src/haiku/MemDC.cpp \ + ../src/haiku/Menu.cpp \ + ../src/haiku/PrintDC.cpp \ + ../src/haiku/Printer.cpp \ + ../src/haiku/ScreenDC.cpp \ + ../src/haiku/ShowFileProp_Haiku.cpp \ + ../src/haiku/Thread.cpp \ + ../src/haiku/View.cpp \ + ../src/haiku/Widgets.cpp \ + ../src/haiku/Window.cpp export Build=$(Build); \ - $(MAKE) -C ../.. -f Makefile.haiku + $(MAKE) -C ../ -f ./haiku/Makefile.haiku -include $(Objects:.o=.d) # Clean just this target clean : rm -rf $(BuildDir) $(Target) - @echo Cleaned $(BuildDir) + @echo Cleaned $(BuildDir) $(Target) # Clean all targets cleanall : rm -rf $(BuildDir) $(Target) @echo Cleaned $(BuildDir) $(Target) - +make -C ../.. -f Makefile.haiku clean + +make -C "../" -f ./haiku/Makefile.haiku clean -VPATH= ../resources \ - ../src \ - ../../src/common/Text \ - ../../src/common/Net \ - ../../src/common/Lgi \ - ../../src/common/Text/Homoglyphs \ - ../../src/common/Gdc2/Filters \ - ../../src/common/Coding \ - $(BuildDir) - +VPATH=$(BuildDir) \ + ../src/common/Text/Homoglyphs \ + ../src/common/Text \ + ../src/common/Net \ + ../src/common/Lgi \ + ../src/common/Gdc2/Filters \ + ../src/common/Coding \ + ./src diff --git a/Ide/haiku/buildHaiku.py b/Ide/haiku/buildHaiku.py --- a/Ide/haiku/buildHaiku.py +++ b/Ide/haiku/buildHaiku.py @@ -1,24 +1,24 @@ #!/usr/bin/env python3 import os import sys import paramiko import re ansi_escape = re.compile(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])') password = open("haikuPassword.txt", "r").read().strip() ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) -ssh.connect("haiku4", 22, "user", password) +ssh.connect("haiku", 22, "user", password) def cmd(c): global ssh stdin, stdout, stderr = ssh.exec_command(c, get_pty=True) while True: ln = stdout.readline() if len(ln) > 0: s = ansi_escape.sub('', ln[0:-1]) print(s, flush=True) else: break -cmd("cd code/lgi/trunk/Ide && make -j4 2>&1") +cmd("cd code/lgi/trunk/Ide && make -j7 -f haiku/Makefile.haiku 2>&1") diff --git a/Lgi.xml b/Lgi.xml --- a/Lgi.xml +++ b/Lgi.xml @@ -1,604 +1,576 @@ - - + - + - - - - - + + + + + - - - - - - - - - + + + + + + + + + - + + linux/Makefile.linux win\Makefile.windows mac/Makefile.mac haiku/Makefile.haiku gcc 0 - - - - - + ./include ./private/common ./include ./private/common ./include/lgi/linux ./include/lgi/linux/Gtk ./private/linux ./include/lgi/linux ./include/lgi/linux/Gtk ./private/linux ./include/lgi/win ./private/win ./include/lgi/win ./private/win ./include/lgi/haiku ./private/haiku ./include/lgi/haiku ./private/haiku /usr/include/libappindicator3-0.1 `pkg-config --cflags gtk+-3.0` `pkg-config --cflags gstreamer-1.0` /usr/include/libappindicator3-0.1 `pkg-config --cflags gtk+-3.0` `pkg-config --cflags gstreamer-1.0` magic appindicator3 crypt -static-libgcc `pkg-config --libs gtk+-3.0` magic appindicator3 crypt -static-libgcc `pkg-config --libs gtk+-3.0` -static-libgcc gnu network be -static-libgcc gnu network be - lgi-gtk3 lgi-gtk3 DynamicLibrary LGI_LIBRARY LGI_LIBRARY POSIX _GNU_SOURCE POSIX _GNU_SOURCE - - - - - - + - - - - + - - - - - - + - - - - - - - - - - - - + + diff --git a/haiku/Makefile.haiku b/haiku/Makefile.haiku --- a/haiku/Makefile.haiku +++ b/haiku/Makefile.haiku @@ -1,215 +1,219 @@ #!/usr/bin/make # # This makefile generated by LgiIde # http://www.memecode.com/lgi.php # .SILENT : CC = gcc CPP = g++ Target = lgi ifndef Build Build = Debug endif +MakeDir := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) BuildDir = $(Build) -Flags = -fPIC -w -fno-inline -fpermissive +CFlags = -MMD -MP -g -fPIC -fno-inline +CppFlags = $(CFlags) -fpermissive -std=c++14 ifeq ($(Build),Debug) - Flags += -g -std=c++14 -O0 + CFlags += -g + CppFlags += -g Tag = d Defs = -D_DEBUG -DHAIKU -D_REENTRANT -DLGI_LIBRARY -DPOSIX -D_GNU_SOURCE Libs = \ -static-libgcc \ -lgnu \ -lnetwork \ -lbe Inc = \ -I./private/haiku \ -I./private/common \ -I./include/lgi/haiku \ -I./include else - Flags += -s -Os -std=c++14 + CFlags += -s -Os + CppFlags += -s -Os Defs = -DHAIKU -D_REENTRANT -DLGI_LIBRARY -DPOSIX -D_GNU_SOURCE Libs = \ -static-libgcc \ -lgnu \ -lnetwork \ -lbe Inc = \ -I./private/haiku \ -I./private/common \ -I./include/lgi/haiku \ -I./include endif # Dependencies -Source = src/haiku/Window.cpp \ - src/haiku/Widgets.cpp \ - src/haiku/View.cpp \ - src/haiku/Thread.cpp \ - src/haiku/ShowFileProp_Haiku.cpp \ - src/haiku/ScreenDC.cpp \ - src/haiku/Printer.cpp \ - src/haiku/PrintDC.cpp \ - src/haiku/Menu.cpp \ - src/haiku/MemDC.cpp \ - src/haiku/Mem.cpp \ - src/haiku/Layout.cpp \ - src/haiku/General.cpp \ - src/haiku/Gdc2.cpp \ - src/haiku/File.cpp \ - src/haiku/DragAndDrop.cpp \ - src/haiku/ClipBoard.cpp \ - src/haiku/App.cpp \ - src/common/Widgets/Tree.cpp \ - src/common/Widgets/ToolBar.cpp \ - src/common/Widgets/TextLabel.cpp \ - src/common/Widgets/TabView.cpp \ - src/common/Widgets/TableLayout.cpp \ - src/common/Widgets/StatusBar.cpp \ - src/common/Widgets/Splitter.cpp \ - src/common/Widgets/Slider.cpp \ - src/common/Widgets/ScrollBar.cpp \ - src/common/Widgets/RadioGroup.cpp \ - src/common/Widgets/ProgressDlg.cpp \ - src/common/Widgets/Progress.cpp \ - src/common/Widgets/Popup.cpp \ - src/common/Widgets/Panel.cpp \ - src/common/Widgets/List.cpp \ - src/common/Widgets/ItemContainer.cpp \ - src/common/Widgets/Edit.cpp \ - src/common/Widgets/Combo.cpp \ - src/common/Widgets/CheckBox.cpp \ - src/common/Widgets/Button.cpp \ - src/common/Widgets/Box.cpp \ - src/common/Widgets/Bitmap.cpp \ - src/common/Text/XmlTree.cpp \ - src/common/Text/Utf8.cpp \ - src/common/Text/Unicode.cpp \ - src/common/Text/Token.cpp \ - src/common/Text/TextView3.cpp \ - src/common/Text/String.cpp \ - src/common/Text/DocView.cpp \ - src/common/Skins/Gel/Gel.cpp \ - src/common/Resource/Res.cpp \ - src/common/Resource/LgiRes.cpp \ - src/common/Net/Uri.cpp \ - src/common/Net/Net.cpp \ - src/common/Net/MDStringToDigest.cpp \ - src/common/Net/Base64.cpp \ - src/common/Lgi/WindowCommon.cpp \ - src/common/Lgi/ViewCommon.cpp \ - src/common/Lgi/Variant.cpp \ - src/common/Lgi/TrayIcon.cpp \ - src/common/Lgi/ToolTip.cpp \ - src/common/Lgi/ThreadEvent.cpp \ - src/common/Lgi/ThreadCommon.cpp \ - src/common/Lgi/SubProcess.cpp \ - src/common/Lgi/Stream.cpp \ - src/common/Lgi/Rand.cpp \ - src/common/Lgi/OptionsFile.cpp \ - src/common/Lgi/Object.cpp \ - src/common/Lgi/Mutex.cpp \ - src/common/Lgi/Mru.cpp \ - src/common/Lgi/MenuCommon.cpp \ - src/common/Lgi/MemStream.cpp \ - src/common/Lgi/LMsg.cpp \ - src/common/Lgi/Library.cpp \ - src/common/Lgi/LgiCommon.cpp \ - src/common/Lgi/Input.cpp \ - src/common/Lgi/GuiUtils.cpp \ - src/common/Lgi/FontSelect.cpp \ - src/common/Lgi/FindReplace.cpp \ - src/common/Lgi/FileSelect.cpp \ - src/common/Lgi/DragAndDropCommon.cpp \ - src/common/Lgi/DataDlg.cpp \ - src/common/Lgi/CssTools.cpp \ - src/common/Lgi/Css.cpp \ - src/common/Lgi/AppCommon.cpp \ - src/common/Lgi/Alert.cpp \ - src/common/Hash/sha1/sha1.c \ - src/common/Hash/md5/md5.c \ - src/common/General/Properties.cpp \ - src/common/General/Password.cpp \ - src/common/General/FileCommon.cpp \ - src/common/General/ExeCheck.cpp \ - src/common/General/DateTime.cpp \ - src/common/General/Containers.cpp \ - src/common/Gdc2/Tools/GdcTools.cpp \ - src/common/Gdc2/Tools/ColourReduce.cpp \ - src/common/Gdc2/Surface.cpp \ - src/common/Gdc2/Rect.cpp \ - src/common/Gdc2/Path/Path.cpp \ - src/common/Gdc2/GdcCommon.cpp \ - src/common/Gdc2/Font/TypeFace.cpp \ - src/common/Gdc2/Font/StringLayout.cpp \ - src/common/Gdc2/Font/FontType.cpp \ - src/common/Gdc2/Font/FontSystem.cpp \ - src/common/Gdc2/Font/Font.cpp \ - src/common/Gdc2/Font/DisplayString.cpp \ - src/common/Gdc2/Font/Charset.cpp \ - src/common/Gdc2/Filters/Filter.cpp \ - src/common/Gdc2/Colour.cpp \ - src/common/Gdc2/Alpha.cpp \ - src/common/Gdc2/8Bit.cpp \ - src/common/Gdc2/32Bit.cpp \ - src/common/Gdc2/24Bit.cpp \ - src/common/Gdc2/16Bit.cpp \ - src/common/Gdc2/15Bit.cpp +Source = ./src/haiku/Window.cpp \ + ./src/haiku/Widgets.cpp \ + ./src/haiku/View.cpp \ + ./src/haiku/Thread.cpp \ + ./src/haiku/ShowFileProp_Haiku.cpp \ + ./src/haiku/ScreenDC.cpp \ + ./src/haiku/Printer.cpp \ + ./src/haiku/PrintDC.cpp \ + ./src/haiku/Menu.cpp \ + ./src/haiku/MemDC.cpp \ + ./src/haiku/Mem.cpp \ + ./src/haiku/Layout.cpp \ + ./src/haiku/General.cpp \ + ./src/haiku/Gdc2.cpp \ + ./src/haiku/File.cpp \ + ./src/haiku/DragAndDrop.cpp \ + ./src/haiku/ClipBoard.cpp \ + ./src/haiku/App.cpp \ + ./src/common/Widgets/Tree.cpp \ + ./src/common/Widgets/ToolBar.cpp \ + ./src/common/Widgets/TextLabel.cpp \ + ./src/common/Widgets/TabView.cpp \ + ./src/common/Widgets/TableLayout.cpp \ + ./src/common/Widgets/StatusBar.cpp \ + ./src/common/Widgets/Splitter.cpp \ + ./src/common/Widgets/Slider.cpp \ + ./src/common/Widgets/ScrollBar.cpp \ + ./src/common/Widgets/RadioGroup.cpp \ + ./src/common/Widgets/ProgressDlg.cpp \ + ./src/common/Widgets/Progress.cpp \ + ./src/common/Widgets/Popup.cpp \ + ./src/common/Widgets/Panel.cpp \ + ./src/common/Widgets/List.cpp \ + ./src/common/Widgets/ItemContainer.cpp \ + ./src/common/Widgets/Edit.cpp \ + ./src/common/Widgets/Combo.cpp \ + ./src/common/Widgets/CheckBox.cpp \ + ./src/common/Widgets/Button.cpp \ + ./src/common/Widgets/Box.cpp \ + ./src/common/Widgets/Bitmap.cpp \ + ./src/common/Text/XmlTree.cpp \ + ./src/common/Text/Utf8.cpp \ + ./src/common/Text/Unicode.cpp \ + ./src/common/Text/Token.cpp \ + ./src/common/Text/TextView3.cpp \ + ./src/common/Text/String.cpp \ + ./src/common/Text/DocView.cpp \ + ./src/common/Skins/Gel/Gel.cpp \ + ./src/common/Resource/Res.cpp \ + ./src/common/Resource/LgiRes.cpp \ + ./src/common/Net/Uri.cpp \ + ./src/common/Net/Net.cpp \ + ./src/common/Net/MDStringToDigest.cpp \ + ./src/common/Net/Base64.cpp \ + ./src/common/Lgi/WindowCommon.cpp \ + ./src/common/Lgi/ViewCommon.cpp \ + ./src/common/Lgi/Variant.cpp \ + ./src/common/Lgi/TrayIcon.cpp \ + ./src/common/Lgi/ToolTip.cpp \ + ./src/common/Lgi/ThreadEvent.cpp \ + ./src/common/Lgi/ThreadCommon.cpp \ + ./src/common/Lgi/SubProcess.cpp \ + ./src/common/Lgi/Stream.cpp \ + ./src/common/Lgi/Rand.cpp \ + ./src/common/Lgi/OptionsFile.cpp \ + ./src/common/Lgi/Object.cpp \ + ./src/common/Lgi/Mutex.cpp \ + ./src/common/Lgi/Mru.cpp \ + ./src/common/Lgi/MenuCommon.cpp \ + ./src/common/Lgi/MemStream.cpp \ + ./src/common/Lgi/LMsg.cpp \ + ./src/common/Lgi/Library.cpp \ + ./src/common/Lgi/LgiCommon.cpp \ + ./src/common/Lgi/Input.cpp \ + ./src/common/Lgi/GuiUtils.cpp \ + ./src/common/Lgi/FontSelect.cpp \ + ./src/common/Lgi/FindReplace.cpp \ + ./src/common/Lgi/FileSelect.cpp \ + ./src/common/Lgi/DragAndDropCommon.cpp \ + ./src/common/Lgi/DataDlg.cpp \ + ./src/common/Lgi/CssTools.cpp \ + ./src/common/Lgi/Css.cpp \ + ./src/common/Lgi/AppCommon.cpp \ + ./src/common/Lgi/Alert.cpp \ + ./src/common/Hash/sha1/sha1.c \ + ./src/common/Hash/md5/md5.c \ + ./src/common/General/Properties.cpp \ + ./src/common/General/Password.cpp \ + ./src/common/General/FileCommon.cpp \ + ./src/common/General/ExeCheck.cpp \ + ./src/common/General/DateTime.cpp \ + ./src/common/General/Containers.cpp \ + ./src/common/Gdc2/Tools/GdcTools.cpp \ + ./src/common/Gdc2/Tools/ColourReduce.cpp \ + ./src/common/Gdc2/Surface.cpp \ + ./src/common/Gdc2/Rect.cpp \ + ./src/common/Gdc2/Path/Path.cpp \ + ./src/common/Gdc2/GdcCommon.cpp \ + ./src/common/Gdc2/Font/TypeFace.cpp \ + ./src/common/Gdc2/Font/StringLayout.cpp \ + ./src/common/Gdc2/Font/FontType.cpp \ + ./src/common/Gdc2/Font/FontSystem.cpp \ + ./src/common/Gdc2/Font/Font.cpp \ + ./src/common/Gdc2/Font/DisplayString.cpp \ + ./src/common/Gdc2/Font/Charset.cpp \ + ./src/common/Gdc2/Filters/Filter.cpp \ + ./src/common/Gdc2/Colour.cpp \ + ./src/common/Gdc2/Alpha.cpp \ + ./src/common/Gdc2/8Bit.cpp \ + ./src/common/Gdc2/32Bit.cpp \ + ./src/common/Gdc2/24Bit.cpp \ + ./src/common/Gdc2/16Bit.cpp \ + ./src/common/Gdc2/15Bit.cpp SourceC := $(filter %.c,$(Source)) ObjectsC := $(SourceC:.c=.o) SourceCpp := $(filter %.cpp,$(Source)) ObjectsCpp := $(SourceCpp:.cpp=.o) Objects := $(notdir $(ObjectsC) $(ObjectsCpp)) Objects := $(addprefix $(BuildDir)/,$(Objects)) Deps := $(patsubst %.o,%.d,$(Objects)) $(BuildDir)/%.o: %.c mkdir -p $(@D) echo $(notdir $<) [$(Build)] - $(CC) $(Inc) $(Flags) $(Defs) -c $< -o $@ + $(CC) $(Inc) $(CFlags) $(Defs) -c $< -o $@ $(BuildDir)/%.o: %.cpp mkdir -p $(@D) echo $(notdir $<) [$(Build)] - $(CPP) $(Inc) $(Flags) $(Defs) -c $< -o $@ - + $(CPP) $(Inc) $(CppFlags) $(Defs) -c $< -o $@ + # Target TargetFile = lib$(Target)$(Tag).so $(TargetFile) : $(Objects) mkdir -p $(BuildDir) @echo Linking $(TargetFile) [$(Build)]... $(CPP)$s -shared \ \ -o $(BuildDir)/$(TargetFile) \ $(Objects) \ $(Libs) @echo Done. -include $(Objects:.o=.d) # Clean out targets clean : rm -rf $(BuildDir) @echo Cleaned $(BuildDir) VPATH=$(BuildDir) \ - src/haiku \ - src/common/Widgets \ - src/common/Text \ - src/common/Skins/Gel \ - src/common/Resource \ - src/common/Net \ - src/common/Lgi \ - src/common/General \ - src/common/Gdc2/Tools \ - src/common/Gdc2 \ - src/common/Gdc2/Path \ - src/common/Gdc2/Font \ - src/common/Gdc2/Filters \ - src/common/Hash/sha1 \ - src/common/Hash/md5 + ./src/haiku \ + ./src/common/Widgets \ + ./src/common/Text \ + ./src/common/Skins/Gel \ + ./src/common/Resource \ + ./src/common/Net \ + ./src/common/Lgi \ + ./src/common/Hash/sha1 \ + ./src/common/Hash/md5 \ + ./src/common/General \ + ./src/common/Gdc2/Tools \ + ./src/common/Gdc2/Path \ + ./src/common/Gdc2/Font \ + ./src/common/Gdc2/Filters \ + ./src/common/Gdc2 diff --git a/include/lgi/common/Message.h b/include/lgi/common/Message.h --- a/include/lgi/common/Message.h +++ b/include/lgi/common/Message.h @@ -1,314 +1,314 @@ #ifndef _GMESSAGE_H_ #define _GMESSAGE_H_ #ifdef HAIKU #include #endif enum LgiMessages { #if defined(__GTK_H__) /// Base point for system messages. M_SYSTEM = 900, /// Message that indicates the user is trying to close a top level window. M_CLOSE, /// Implemented to handle paint requests in the GUI thread. M_X11_REPARENT, /// \brief Mouse enter event /// /// a = bool Inside; // is the mouse inside the client area?\n /// b = MAKELONG(x, y); // mouse location M_MOUSEENTER, /// \brief Mouse exit event /// /// a = bool Inside; // is the mouse inside the client area?\n /// b = MAKELONG(x, y); // mouse location M_MOUSEEXIT, // return (bool) M_WANT_DIALOG_PROC, M_MENU, M_COMMAND, M_DRAG_DROP, M_TRAY_NOTIFY, M_CUT, M_COPY, M_PASTE, M_GTHREADWORK_COMPELTE, /// Implemented to handle timer events in the GUI thread. M_PULSE, M_SET_VISIBLE, M_CAPTURE_PULSE, /// Sent from a worker thread when calling LTextLabel::Name M_TEXT_UPDATE_NAME, #elif defined(WINNATIVE) // [WM_APP:WM_APP+200] is reserved for LGI itself. // [WM_APP+200:0xBFFF] is reserved for LGI applications. M_CUT = WM_CUT, M_COPY = WM_COPY, M_PASTE = WM_PASTE, M_COMMAND = WM_COMMAND, M_CLOSE = WM_CLOSE, // wParam = bool Inside; // is the mouse inside the client area? // lParam = MAKELONG(x, y); // mouse location M_MOUSEENTER = WM_APP, M_MOUSEEXIT, // return (bool) M_WANT_DIALOG_PROC, // wParam = void // lParam = (MSG*) Msg; M_TRANSLATE_ACCELERATOR, // None M_TRAY_NOTIFY, // lParam = Style M_SET_WND_STYLE, // lParam = LScrollBar *Obj M_SCROLL_BAR_CHANGED, // lParam = HWND of window under mouse // This is only sent for non-LGI window in our process // because we'd get WM_MOUSEMOVE's for our own windows M_HANDLEMOUSEMOVE, // Calls SetWindowPlacement... M_SET_WINDOW_PLACEMENT, // Set the visibility of the window M_SET_VISIBLE, /// Sent from a worker thread when calling LTextLabel::Name M_TEXT_UPDATE_NAME, /// Send when a window is losing it's mouse capture. Usually // because something else has requested it. M_LOSING_CAPTURE, // A: code M_DIALOG_END_MODAL, #elif defined(LGI_SDL) || defined(HAIKU) /// Minimum value for application defined message ID's M_MOUSEENTER = 900, M_MOUSEEXIT, M_COMMAND, M_CUT, M_COPY, M_PASTE, M_PULSE, M_SET_VISIBLE, M_MOUSE_CAPTURE_POLL, M_TEXT_UPDATE_NAME, M_ASSERT_DLG, M_CLOSE, #if defined(HAIKU) M_HANDLE_IN_THREAD, // A = (LMessage::InThreadCb*)Cb; M_LWINDOW_DELETE, M_LMENUITEM_ENABLE, M_LSUBMENU_APPENDITEM, #endif #elif defined(MAC) /// Base point for system messages. M_SYSTEM = 0, /// Message that indicates the user is trying to close a top level window. M_CLOSE = (M_SYSTEM+92), /// \brief Mouse enter event /// /// a = bool Inside; // is the mouse inside the client area?\n /// b = MAKELONG(x, y); // mouse location M_MOUSEENTER = (M_SYSTEM+900), /// \brief Mouse exit event /// /// a = bool Inside; // is the mouse inside the client area?\n /// b = MAKELONG(x, y); // mouse location M_MOUSEEXIT, // return (bool) M_WANT_DIALOG_PROC, M_MENU, M_COMMAND, M_DRAG_DROP, M_TRAY_NOTIFY, M_CUT, M_COPY, M_PASTE, M_PULSE, M_MOUSE_TRACK_UP, M_GTHREADWORK_COMPELTE, M_TEXT_UPDATE_NAME, M_SET_VISIBLE, M_SETPOS, // A=(LRect*)Rectangle, B=(LView*)this M_ASSERT_DLG, M_QUIT, M_ABOUT, M_PERFERENCES, M_HIDE, M_DESTROY, #endif M_DESCRIBE, M_CHANGE, M_DELETE, M_TABLE_LAYOUT, M_URL, M_LOG_TEXT, M_ASSERT_UI, // A=(LString*)Msg M_INVALIDATE, // A=(LRect*)Rectangle, B=(LView*)this M_RESIZE_TO_CONTENT, // A=(int)Border (used by LItemContainer) M_SCROLL_TO, // Sent from LTreeItem to LTree M_SET_SCROLL, // LScrollBar M_JOBS_LOADED, // LHtml M_THREAD_COMPLETED, // A=(LThread*)Thread M_SET_CTRL_NAME, // A=(int)CtrlId, B=(LString*)Name M_SET_CTRL_ENABLE, // A=(int)CtrlId, B=(bool)Enabled M_SET_CTRL_VISIBLE, // A=(int)CtrlId, B=(bool)Visible #ifdef WINDOWS M_USER = WM_APP + 200 #else M_USER = 1000 #endif }; class LgiClass LMessage #ifdef HAIKU : public BMessage #endif { public: #if defined(WINNATIVE) typedef LPARAM Param; typedef LRESULT Result; #elif defined(LGI_SDL) typedef void *Param; typedef NativeInt Result; #else typedef NativeInt Param; typedef NativeInt Result; #endif #if !defined(LGI_SDL) && !defined(HAIKU) int m; #endif #if defined(LGI_SDL) SDL_Event Event; struct EventParams { Param a, b; EventParams(Param A, Param B) { a = A; b = B; } }; #elif defined(WINNATIVE) HWND hWnd; WPARAM a; LPARAM b; #elif !defined(HAIKU) Param a; Param b; #endif #if LGI_COCOA #if __OBJC__ NSEvent *event; #else void *event; #endif #endif #if defined(HAIKU) - static constexpr char *PropA = "lgiA"; - static constexpr char *PropB = "lgiB"; - static constexpr char *PropView = "lgiView"; - static constexpr char *PropCallback = "lgiCallback"; - static constexpr char *PropNames[2] = {"lgi_a", "lgi_b"}; + static constexpr const char *PropA = "lgiA"; + static constexpr const char *PropB = "lgiB"; + static constexpr const char *PropView = "lgiView"; + static constexpr const char *PropCallback = "lgiCallback"; + static constexpr const char *PropNames[2] = {"lgi_a", "lgi_b"}; typedef std::function InThreadCb; #endif LMessage() { #if defined(LGI_SDL) Set(0, 0, 0); #else #if defined(WINNATIVE) hWnd = 0; #endif #if !defined(LGI_SDL) && !defined(HAIKU) m = 0; a = 0; b = 0; #endif #endif #if LGI_COCOA event = NULL; #endif } LMessage ( int M, #if defined(WINNATIVE) WPARAM A = 0, LPARAM B = 0 #else Param A = 0, Param B = 0 #endif ) { #if defined(WINNATIVE) hWnd = 0; #endif #if LGI_COCOA event = NULL; #endif Set(M, A, B); } #if defined(LGI_SDL) || defined(HAIKU) int Msg(); Param A(); Param B(); #else int Msg() { return m; } Param A() { return a; } Param B() { return b; } #endif void Set(int m, Param a, Param b); bool Send(class LViewI *View); }; #ifdef LINUX extern LMessage CreateMsg(int m, int a = 0, int b = 0); #else #define CreateMsg(m, a, b) LMessage(m, a, b) #endif #endif diff --git a/src/haiku/App.cpp b/src/haiku/App.cpp --- a/src/haiku/App.cpp +++ b/src/haiku/App.cpp @@ -1,1110 +1,1109 @@ #include #include #include #include #include #include #include #include "lgi/common/Lgi.h" #include "lgi/common/SkinEngine.h" #include "lgi/common/Array.h" #include "lgi/common/Variant.h" #include "lgi/common/Token.h" #include "lgi/common/FontCache.h" #include "AppPriv.h" #include "MimeType.h" #define DEBUG_MSG_TYPES 0 #define DEBUG_HND_WARNINGS 0 #define IDLE_ALWAYS 0 LString LgiArgsAppPath; //////////////////////////////////////////////////////////////// struct OsAppArgumentsPriv { ::LArray Ptr; ~OsAppArgumentsPriv() { Ptr.DeleteArrays(); } }; OsAppArguments::OsAppArguments(int args, const char **arg) { d = new OsAppArgumentsPriv; for (int i=0; iPtr.Add(NewStr(arg[i])); } Args = d->Ptr.Length(); Arg = &d->Ptr[0]; } OsAppArguments::~OsAppArguments() { DeleteObj(d); } bool OsAppArguments::Get(const char *Name, const char **Val) { if (!Name) return false; for (int i=0; iPtr.DeleteArrays(); if (!CmdLine) return; for (char *s = CmdLine; *s; ) { while (*s && strchr(WhiteSpace, *s)) s++; if (*s == '\'' || *s == '\"') { char delim = *s++; char *e = strchr(s, delim); if (e) d->Ptr.Add(NewStr(s, e - s)); else break; s = e + 1; } else { char *e = s; while (*e && !strchr(WhiteSpace, *e)) e++; d->Ptr.Add(NewStr(s, e-s)); s = e; } } Args = d->Ptr.Length(); Arg = &d->Ptr[0]; } OsAppArguments &OsAppArguments::operator =(OsAppArguments &a) { d->Ptr.DeleteArrays(); for (int i=0; iPtr.Add(NewStr(a.Arg[i])); } Args = d->Ptr.Length(); Arg = &d->Ptr[0]; return *this; } //////////////////////////////////////////////////////////////// #if HAS_SHARED_MIME #include "GFilterUtils.h" #include "mime-types.h" class LSharedMime : public LLibrary { public: LSharedMime() : #ifdef _DEBUG LLibrary("libsharedmime1d") #else LLibrary("libsharedmime1") #endif { } DynFunc0(int, mimetypes_init); DynFunc1(const char*, mimetypes_set_default_type, const char *, default_type); DynFunc2(const char*, mimetypes_get_file_type, const char*, pathname, mimetypes_flags, flags); DynFunc2(const char*, mimetypes_get_data_type, const void*, data, int, length); DynFunc3(bool, mimetypes_decode, const char *, type, char **, media_type, char **, sub_type); DynFunc2(char *, mimetypes_convert_filename, const char *, pathname, const char *, mime_type); DynFunc3(bool, mimetypes_add_mime_dir, const char *, path, bool, high_priority, bool, rescan); DynFunc2(const char *, mimetypes_get_type_info, const char *, mime_type, const char *, lang); }; #endif #if 1 ///////////////////////////////////////////////////////////////////////////// // // Attempts to cleanup and call drkonqi to process the crash // void LgiCrashHandler(int Sig) { // Don't get into an infinite loop signal(SIGSEGV, SIG_DFL); #ifndef _MSC_VER // Our pid int MyPid = getpid(); printf("LgiCrashHandler trigger MyPid=%i\n", MyPid); #endif exit(-1); } #endif ///////////////////////////////////////////////////////////////////////////// #ifndef XK_Num_Lock #define XK_Num_Lock 0xff7f #endif #ifndef XK_Shift_Lock #define XK_Shift_Lock 0xffe6 #endif #ifndef XK_Caps_Lock #define XK_Caps_Lock 0xffe5 #endif struct Msg { LViewI *v; int m; LMessage::Param a, b; void Set(LViewI *V, int M, LMessage::Param A, LMessage::Param B) { v = V; m = M; a = A; b = B; } }; // Out of thread messages... must lock before access. class LMessageQue : public LMutex { public: typedef ::LArray MsgArray; LMessageQue() : LMutex("LMessageQue") { } MsgArray *Lock(const char *file, int line) { if (!LMutex::Lock(file, line)) return NULL; return &q; } operator bool() { return q.Length() > 0; } private: MsgArray q; } MsgQue; ///////////////////////////////////////////////////////////////////////////// LApp *TheApp = NULL; LSkinEngine *LApp::SkinEngine; LMouseHook *LApp::MouseHook; LApp::LApp(OsAppArguments &AppArgs, const char *name, LAppArguments *Args) : OsApplication(AppArgs.Args, AppArgs.Arg) { TheApp = this; LgiArgsAppPath = AppArgs.Arg[0]; Name(name); d = new LAppPrivate(this); if (LIsRelativePath(LgiArgsAppPath)) { char Cwd[MAX_PATH_LEN]; getcwd(Cwd, sizeof(Cwd)); LMakePath(Cwd, sizeof(Cwd), Cwd, LgiArgsAppPath); LgiArgsAppPath = Cwd; } char AppPathLnk[MAX_PATH_LEN]; if (LResolveShortcut(LgiArgsAppPath, AppPathLnk, sizeof(AppPathLnk))) LgiArgsAppPath = AppPathLnk; int WCharSz = sizeof(wchar_t); #if defined(_MSC_VER) LAssert(WCharSz == 2); ::LFile::Path Dlls(LgiArgsAppPath); Dlls--; SetDllDirectoryA(Dlls); #else LAssert(WCharSz == 4); #endif #ifdef _MSC_VER SetEnvironmentVariable(_T("GTK_CSD"), _T("0")); #else setenv("GTK_CSD", "0", true); #endif // We want our printf's NOW! setvbuf(stdout,(char *)NULL,_IONBF,0); // print mesgs immediately. // Setup the file and graphics sub-systems d->FileSystem = new LFileSystem; d->GdcSystem = new GdcDevice; SetAppArgs(AppArgs); srand(LCurrentTime()); LColour::OnChange(); MouseHook = new LMouseHook; d->GetConfig(); // System font setup LFontType SysFontType; if (SysFontType.GetSystemFont("System")) { SystemNormal = SysFontType.Create(); if (SystemNormal) SystemNormal->Transparent(true); SystemBold = SysFontType.Create(); if (SystemBold) { SystemBold->Bold(true); SystemBold->Transparent(true); SystemBold->Create(); } } else { printf("%s:%i - Couldn't get system font setting.\n", __FILE__, __LINE__); } if (!SystemNormal) { LgiMsg(0, "Error: Couldn't create system font.", "Lgi Error: LApp::LApp", MB_OK); LExitApp(); } if (!GetOption("noskin")) { extern LSkinEngine *CreateSkinEngine(LApp *App); SkinEngine = CreateSkinEngine(this); } } LApp::~LApp() { CommonCleanup(); DeleteObj(AppWnd); DeleteObj(SystemNormal); DeleteObj(SystemBold); DeleteObj(SkinEngine); DeleteObj(MouseHook); DeleteObj(d->FileSystem); DeleteObj(d->GdcSystem); DeleteObj(LFontSystem::Me); DeleteObj(d); TheApp = NULL; } LApp *LApp::ObjInstance() { return TheApp; } bool LApp::IsOk() { bool Status = #ifndef __clang__ (this != 0) && #endif (d != 0); LAssert(Status); return Status; } LMouseHook *LApp::GetMouseHook() { return MouseHook; } int LApp::GetMetric(LSystemMetric Metric) { switch (Metric) { case LGI_MET_DECOR_X: return 8; case LGI_MET_DECOR_Y: return 8 + 19; case LGI_MET_DECOR_CAPTION: return 19; default: break; } return 0; } LViewI *LApp::GetFocus() { - // GtkWidget *w = gtk_window_get_focus(GtkWindow *window); return NULL; } OsThread LApp::_GetGuiThread() { return d->GuiThread; } OsThreadId LApp::GetGuiThreadId() { return d->GuiThreadId; } OsProcessId LApp::GetProcessId() { #ifdef WIN32 return GetCurrentProcessId(); #else return getpid(); #endif } OsAppArguments *LApp::GetAppArgs() { return IsOk() ? &d->Args : 0; } void LApp::SetAppArgs(OsAppArguments &AppArgs) { if (IsOk()) { d->Args = AppArgs; } } bool LApp::InThread() { OsThreadId Me = GetCurrentThreadId(); OsThreadId Gui = GetGuiThreadId(); // printf("Me=%i Gui=%i\n", Me, Gui); return Gui == Me; } bool LApp::Run(OnIdleProc IdleCallback, void *IdleParam) { if (!InThread()) { printf("%s:%i - Error: Out of thread.\n", _FL); return false; } printf("Running main loop...\n"); d->Run(); printf("Main loop finished.\n"); return true; } bool LApp::Yield() { return false; } void LApp::Exit(int Code) { if (Code) { // hard exit ::exit(Code); } else { // soft exit printf("Quitting main loop...\n"); if (d->Lock()) { d->Quit(); d->Unlock(); } } } void LApp::OnUrl(const char *Url) { if (AppWnd) AppWnd->OnUrl(Url); } void LApp::OnReceiveFiles(::LArray &Files) { if (AppWnd) AppWnd->OnReceiveFiles(Files); else LAssert(!"You probably want to set 'AppWnd' before calling LApp::Run... maybe."); } const char *LApp::GetArgumentAt(int n) { return n >= 0 && n < d->Args.Args ? NewStr(d->Args.Arg[n]) : 0; } bool LApp::GetOption(const char *Option, char *Dest, int DestLen) { ::LString Buf; if (GetOption(Option, Buf)) { if (Dest) { if (DestLen > 0) { strcpy_s(Dest, DestLen, Buf); } else return false; } return true; } return false; } bool LApp::GetOption(const char *Option, ::LString &Buf) { if (IsOk() && Option) { int OptLen = strlen(Option); for (int i=1; iArgs.Args; i++) { auto *a = d->Args.Arg[i]; if (!a) continue; if (strchr("-/\\", a[0])) { if (strnicmp(a+1, Option, OptLen) == 0) { const char *Arg = NULL; if (strlen(a+1+OptLen) > 0) { Arg = a + 1 + OptLen; } else if (i < d->Args.Args - 1) { Arg = d->Args.Arg[i + 1]; } if (Arg) { if (strchr("\'\"", *Arg)) { char Delim = *Arg++; char *End = strchr(Arg, Delim); if (End) { auto Len = End-Arg; if (Len > 0) Buf.Set(Arg, Len); else return false; } else return false; } else { Buf = Arg; } } return true; } } } } return false; } void LApp::OnCommandLine() { ::LArray Files; for (int i=1; iArgs; i++) { auto a = GetAppArgs()->Arg[i]; if (LFileExists(a)) { Files.Add(NewStr(a)); } } // call app if (Files.Length() > 0) { OnReceiveFiles(Files); } // clear up Files.DeleteArrays(); } LString LApp::GetFileMimeType(const char *File) { BMimeType mt; auto r = BMimeType::GuessMimeType(File, &mt); if (r != B_OK) { LgiTrace("%s:%i - GuessMimeType(%s) failed: %i\n", _FL, File, r); return LString(); } return mt.Type(); } bool LApp::GetAppsForMimeType(const char *Mime, LArray &Apps) { // Find alternative version of the MIME type (e.g. x-type and type). char AltMime[256]; strcpy(AltMime, Mime); char *s = strchr(AltMime, '/'); if (s) { s++; int Len = strlen(s) + 1; if (strnicmp(s, "x-", 2) == 0) { memmove(s, s+2, Len - 2); } else { memmove(s+2, s, Len); s[0] = 'x'; s[1] = '-'; } } LGetAppsForMimeType(Mime, Apps); LGetAppsForMimeType(AltMime, Apps); return Apps.Length() > 0; } #if defined(LINUX) LLibrary *LApp::GetWindowManagerLib() { if (this != NULL && !d->WmLib) { char Lib[32]; WindowManager Wm = LGetWindowManager(); switch (Wm) { case WM_Kde: strcpy(Lib, "liblgikde3"); break; case WM_Gnome: strcpy(Lib, "liblgignome2"); break; default: strcpy(Lib, "liblgiother"); break; } #ifdef _DEBUG strcat(Lib, "d"); #endif d->WmLib = new LLibrary(Lib, true); if (d->WmLib) { if (d->WmLib->IsLoaded()) { Proc_LgiWmInit WmInit = (Proc_LgiWmInit) d->WmLib->GetAddress("LgiWmInit"); if (WmInit) { WmInitParams Params; // Params.Dsp = XObject::XDisplay(); Params.Args = d->Args.Args; Params.Arg = d->Args.Arg; WmInit(&Params); } // else printf("%s:%i - Failed to find method 'LgiWmInit' in WmLib.\n", __FILE__, __LINE__); } // else printf("%s:%i - couldn't load '%s.so'\n", __FILE__, __LINE__, Lib); } // else printf("%s:%i - alloc error\n", __FILE__, __LINE__); } return d->WmLib && d->WmLib->IsLoaded() ? d->WmLib : 0; } void LApp::DeleteMeLater(LViewI *v) { d->DeleteLater.Add(v); } void LApp::SetClipBoardContent(OsView Hnd, ::LVariant &v) { // Store the clipboard data we will serve d->ClipData = v; } bool LApp::GetClipBoardContent(OsView Hnd, ::LVariant &v, ::LArray &Types) { return false; } #endif LSymLookup *LApp::GetSymLookup() { return NULL; } bool LApp::IsElevated() { #ifdef WIN32 LAssert(!"What API works here?"); return false; #else return geteuid() == 0; #endif } int LApp::GetCpuCount() { return 1; } LFontCache *LApp::GetFontCache() { if (!d->FontCache) d->FontCache.Reset(new LFontCache(SystemNormal)); return d->FontCache; } #ifdef LINUX LApp::DesktopInfo::DesktopInfo(const char *file) { File = file; Dirty = false; if (File) Serialize(false); } bool LApp::DesktopInfo::Serialize(bool Write) { ::LFile f; if (Write) { ::LFile::Path p(File); p--; if (!p.Exists()) return false; } else if (!LFileExists(File)) return false; if (!f.Open(File, Write?O_WRITE:O_READ)) { LgiTrace("%s:%i - Failed to open '%s'\n", _FL, File.Get()); return false; } if (Write) { f.SetSize(0); for (unsigned i=0; i= 0) { int e = l.Find("]", ++s); if (e >= 0) { Cur = &Data.New(); Cur->Name = l(s, e - s + 1); } } else if ((s = l.Find("=")) >= 0) { if (!Cur) Cur = &Data.New(); KeyPair &kp = Cur->Values.New(); kp.Key = l(0, s).Strip(); kp.Value = l(++s, -1).Strip(); // printf("Read '%s': '%s'='%s'\n", Cur->Name.Get(), kp.Key.Get(), kp.Value.Get()); } } } return true; } LApp::DesktopInfo::Section *LApp::DesktopInfo::GetSection(const char *Name, bool Create) { for (unsigned i=0; iGet(Field, false, Dirty); if (kp) { return kp->Value; } } } return ::LString(); } bool LApp::DesktopInfo::Set(const char *Field, const char *Value, const char *Sect) { if (!Field) return false; Section *s = GetSection(Sect ? Sect : DefaultSection, true); if (!s) return false; KeyPair *kp = s->Get(Field, true, Dirty); if (!kp) return false; if (kp->Value != Value) { kp->Value = Value; Dirty = true; } return true; } LApp::DesktopInfo *LApp::GetDesktopInfo() { auto sExe = LGetExeFile(); ::LFile::Path Exe(sExe); ::LFile::Path Desktop(LSP_HOME); ::LString Leaf; Leaf.Printf("%s.desktop", Exe.Last().Get()); Desktop += ".local/share/applications"; Desktop += Leaf; const char *Ex = Exe; const char *Fn = Desktop; if (d->DesktopInfo.Reset(new DesktopInfo(Desktop))) { // Do a sanity check... ::LString s = d->DesktopInfo->Get("Name"); if (!s && Name()) d->DesktopInfo->Set("Name", Name()); s = d->DesktopInfo->Get("Exec"); if (!s || s != (const char*)sExe) d->DesktopInfo->Set("Exec", sExe); s = d->DesktopInfo->Get("Type"); if (!s) d->DesktopInfo->Set("Type", "Application"); s = d->DesktopInfo->Get("Categories"); if (!s) d->DesktopInfo->Set("Categories", "Application;"); s = d->DesktopInfo->Get("Terminal"); if (!s) d->DesktopInfo->Set("Terminal", "false"); d->DesktopInfo->Update(); } return d->DesktopInfo; } bool LApp::SetApplicationIcon(const char *FileName) { DesktopInfo *di = GetDesktopInfo(); if (!di) return false; ::LString IcoPath = di->Get("Icon"); if (IcoPath == FileName) return true; di->Set("Icon", FileName); return di->Update(); } #endif //////////////////////////////////////////////////////////////// OsApplication *OsApplication::Inst = 0; class OsApplicationPriv { public: OsApplicationPriv() { } }; OsApplication::OsApplication(int Args, const char **Arg) { Inst = this; d = new OsApplicationPriv; } OsApplication::~OsApplication() { DeleteObj(d); Inst = 0; } //////////////////////////////////////////////////////////////// int LMessage::Msg() { return what; } LMessage::Param LMessage::A() { int64 a = 0; if (FindInt64(PropA, &a) != B_OK) { int32 c = CountNames(B_ANY_TYPE); printf("%s:%i - Failed to find PropA (%i names)\n", _FL, c); for (int32 i=0; iPostEvent(what, A(), B()); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// LLocker::LLocker(BHandler *h, const char *File, int Line) { hnd = h; file = File; line = Line; } LLocker::~LLocker() { Unlock(); } bool LLocker::Lock(bool debug) { if (locked) { printf("%s:%i - Locker already locked.\n", file, line); LAssert(!"Locker already locked."); return false; } if (!hnd) { if (debug) printf("%s:%i - Locker hnd is NULL.\n", file, line); return false; } auto looper = hnd->Looper(); if (!looper) { if (debug) printf("%s:%i - Locker looper is NULL.\n", file, line); return false; } thread_id threadId = looper->Thread(); if (threadId <= 0) { if (debug) printf("%s:%i - Looper has no thread?!?!\n", file, line); noThread = true; return locked = true; } while (!locked) { status_t result = hnd->LockLooperWithTimeout(1000 * 1000); if (result == B_OK) { locked = true; break; } else if (result == B_TIMED_OUT) { // Warn about failure to lock... auto cur = GetCurrentThreadId(); auto locking = hnd->Looper()->LockingThread(); printf("%s:%i - Warning: can't lock. cur=%i locking=%i\n", _FL, cur, locking); } else if (result == B_BAD_VALUE) { break; } else { // Warn about error printf("%s:%i - Error from LockLooperWithTimeout = 0x%x\n", _FL, result); } } return locked; } status_t LLocker::LockWithTimeout(int64 time) { LAssert(!locked); if (!hnd) { // printf("%s:%i - Locker hnd is NULL.\n", file, line); return false; } auto looper = hnd->Looper(); if (!looper) { // printf("%s:%i - Locker looper is NULL %i.\n", file, line, count); return false; } thread_id threadId = looper->Thread(); if (threadId <= 0) { // printf("%s:%i - Looper has no thread?!?!\n", file, line); noThread = true; return locked = true; } status_t result = hnd->LockLooperWithTimeout(time); if (result == B_OK) locked = true; return result; } void LLocker::Unlock() { if (noThread) { locked = false; return; } if (locked) { hnd->UnlockLooper(); locked = false; } } diff --git a/src/haiku/ClipBoard.cpp b/src/haiku/ClipBoard.cpp --- a/src/haiku/ClipBoard.cpp +++ b/src/haiku/ClipBoard.cpp @@ -1,183 +1,171 @@ // Clipboard Implementation #include "lgi/common/Lgi.h" #include "lgi/common/Variant.h" #include "lgi/common/ClipBoard.h" #include #define DEBUG_CLIPBOARD 0 #define LGI_CLIP_BINARY "lgi.binary" class LClipBoardPriv : public BClipboard { public: LString Txt; LAutoWString WTxt; LClipBoardPriv() : BClipboard(NULL) { } }; /////////////////////////////////////////////////////////////////////////////////////////////// LClipBoard::LClipBoard(LView *o) { d = new LClipBoardPriv; Owner = o; Open = false; } LClipBoard::~LClipBoard() { DeleteObj(d); } bool LClipBoard::Empty() { if (!d->Lock()) { LgiTrace("%s:%i - Can't lock BClipboard.\n", _FL); return false; } auto result = d->Clear(); if (result) printf("%s:%i - clear=%i %s\n", _FL, result, strerror(result)); result = d->Commit(); if (result) printf("%s:%i - commit=%i %s\n", _FL, result, strerror(result)); d->Unlock(); return true; } bool LClipBoard::EnumFormats(::LArray &Formats) { return false; } bool LClipBoard::Html(const char *doc, bool AutoEmpty) { return false; } ::LString LClipBoard::Html() { return ::LString(); } bool LClipBoard::Text(const char *Str, bool AutoEmpty) { if (AutoEmpty) { Empty(); } if (!d->Lock()) { LgiTrace("%s:%i - Can't lock BClipboard.\n", _FL); return false; } auto clip = d->Data(); if (!clip) { d->Unlock(); LgiTrace("%s:%i - No clipboard data.\n", _FL); return false; } auto result = clip->AddString("text/plain", BString(Str)); if (result) printf("%s:%i - AddString=%i %s\n", _FL, result, strerror(result)); result = d->Commit(); if (result) printf("%s:%i - Commit=%i %s\n", _FL, result, strerror(result)); d->Unlock(); return result == B_OK; } char *LClipBoard::Text() { if (!d->Lock()) { LgiTrace("%s:%i - Can't lock BClipboard.\n", _FL); return NULL; } auto clip = d->Data(); BString s; auto result = clip->FindString("text/plain", &s); if (result) printf("%s:%i - FindString=%i %s\n", _FL, result, strerror(result)); d->Txt = s; d->Unlock(); return d->Txt; } // Wide char versions for plain text bool LClipBoard::TextW(const char16 *Str, bool AutoEmpty) { LAutoString u(WideToUtf8(Str)); return Text(u, AutoEmpty); } char16 *LClipBoard::TextW() { auto u = Text(); d->WTxt.Reset(Utf8ToWide(u)); return d->WTxt; } bool LClipBoard::Bitmap(LSurface *pDC, bool AutoEmpty) { bool Status = false; return Status; } -LAutoPtr LClipBoard::Bitmap() +void LClipBoard::Bitmap(BitmapCb Callback) { - LAutoPtr img; - - return img; } bool LClipBoard::Binary(FormatType Format, uchar *Ptr, ssize_t Len, bool AutoEmpty) { if (!Ptr || Len <= 0) return false; return false; } -::LString::Array LClipBoard::Files() +void LClipBoard::Files(FilesCb Callback) { - ::LString::Array a; - return a; } bool LClipBoard::Files(::LString::Array &a, bool AutoEmpty) { return false; } -struct ReceiveData +void LClipBoard::Binary(FormatType Format, BinaryCb Callback) { - LAutoPtr *Ptr; - ssize_t *Len; -}; - -bool LClipBoard::Binary(FormatType Format, LAutoPtr &Ptr, ssize_t *Len) -{ - return false; }