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;
}