mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-21 06:45:39 -06:00
Added uppsrc2 nest
git-svn-id: svn://ultimatepp.org/upp/trunk@1175 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
5855949de4
commit
bd051cab9f
31 changed files with 13819 additions and 0 deletions
21
uppsrc2/TServ/Copying
Normal file
21
uppsrc2/TServ/Copying
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
Copyright 1998-2008 The U++ Project. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||||
|
provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of
|
||||||
|
conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE U++ PROJECT ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD PROJECT OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
2616
uppsrc2/TServ/Makefile
Normal file
2616
uppsrc2/TServ/Makefile
Normal file
File diff suppressed because it is too large
Load diff
2046
uppsrc2/TServ/Makefile.solaris
Normal file
2046
uppsrc2/TServ/Makefile.solaris
Normal file
File diff suppressed because it is too large
Load diff
3470
uppsrc2/TServ/Makefile.ubuntu
Normal file
3470
uppsrc2/TServ/Makefile.ubuntu
Normal file
File diff suppressed because it is too large
Load diff
130
uppsrc2/TServ/TServ.sh
Normal file
130
uppsrc2/TServ/TServ.sh
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
# Project modules: Web\TServ Web TCore Core plugin\bz2 plugin
|
||||||
|
# Configurations:
|
||||||
|
mkdir -p /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST
|
||||||
|
echo /src/uppsrc/Web/util.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/util.cpp -o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/util.o
|
||||||
|
echo /src/uppsrc/Web/html.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/html.cpp -o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/html.o
|
||||||
|
echo /src/uppsrc/Web/socket.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/socket.cpp -o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/socket.o
|
||||||
|
echo /src/uppsrc/Web/http.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/http.cpp -o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/http.o
|
||||||
|
echo /src/uppsrc/Web/auth.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/auth.cpp -o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/auth.o
|
||||||
|
echo /src/uppsrc/Web/smtp.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/smtp.cpp -o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/smtp.o
|
||||||
|
echo /src/uppsrc/Web/sproc.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/sproc.cpp -o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/sproc.o
|
||||||
|
/usr/local/bin/ar -sr /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Web.a /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/util.o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/html.o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/socket.o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/http.o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/auth.o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/smtp.o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/sproc.o
|
||||||
|
mkdir -p /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST
|
||||||
|
echo /src/uppsrc/TCore/util.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/util.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/util.o
|
||||||
|
echo /src/uppsrc/TCore/dbf.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/dbf.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/dbf.o
|
||||||
|
echo /src/uppsrc/TCore/globcfg.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/globcfg.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/globcfg.o
|
||||||
|
echo /src/uppsrc/TCore/atexit.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/atexit.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/atexit.o
|
||||||
|
echo /src/uppsrc/TCore/help.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/help.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/help.o
|
||||||
|
echo /src/uppsrc/TCore/CalcType.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/CalcType.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CalcType.o
|
||||||
|
echo /src/uppsrc/TCore/CalcNode.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/CalcNode.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CalcNode.o
|
||||||
|
echo /src/uppsrc/TCore/CalcBasic.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/CalcBasic.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CalcBasic.o
|
||||||
|
echo /src/uppsrc/TCore/datafile.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/datafile.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/datafile.o
|
||||||
|
echo /src/uppsrc/TCore/database.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/database.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/database.o
|
||||||
|
echo /src/uppsrc/TCore/datatest.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/TCore/datatest.cpp -o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/datatest.o
|
||||||
|
/usr/local/bin/ar -sr /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/TCore.a /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/util.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/dbf.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/globcfg.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/atexit.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/help.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CalcType.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CalcNode.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CalcBasic.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/datafile.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/database.o /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/datatest.o
|
||||||
|
mkdir -p /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST
|
||||||
|
echo /src/uppsrc/Core/Mt.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Mt.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Mt.o
|
||||||
|
echo /src/uppsrc/Core/Thread.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Thread.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Thread.o
|
||||||
|
echo /src/uppsrc/Core/heap.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/heap.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/heap.o
|
||||||
|
echo /src/uppsrc/Core/nheap.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/nheap.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/nheap.o
|
||||||
|
echo /src/uppsrc/Core/OString.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/OString.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/OString.o
|
||||||
|
echo /src/uppsrc/Core/OWString.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/OWString.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/OWString.o
|
||||||
|
echo /src/uppsrc/Core/String.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/String.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/String.o
|
||||||
|
echo /src/uppsrc/Core/StrUtil.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/StrUtil.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/StrUtil.o
|
||||||
|
echo /src/uppsrc/Core/CharSet.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/CharSet.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CharSet.o
|
||||||
|
echo /src/uppsrc/Core/Path.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Path.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Path.o
|
||||||
|
echo /src/uppsrc/Core/App.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/App.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/App.o
|
||||||
|
echo /src/uppsrc/Core/Stream.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Stream.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Stream.o
|
||||||
|
echo /src/uppsrc/Core/Debug.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Debug.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Debug.o
|
||||||
|
echo /src/uppsrc/Core/Util.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Util.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Util.o
|
||||||
|
echo /src/uppsrc/Core/mathutil.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/mathutil.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/mathutil.o
|
||||||
|
echo /src/uppsrc/Core/Cont.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Cont.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Cont.o
|
||||||
|
echo /src/uppsrc/Core/Callback.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Callback.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Callback.o
|
||||||
|
echo /src/uppsrc/Core/Color.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Color.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Color.o
|
||||||
|
echo /src/uppsrc/Core/Gtypes.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Gtypes.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Gtypes.o
|
||||||
|
echo /src/uppsrc/Core/TimeDate.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/TimeDate.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/TimeDate.o
|
||||||
|
echo /src/uppsrc/Core/Value.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Value.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Value.o
|
||||||
|
echo /src/uppsrc/Core/Convert.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Convert.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Convert.o
|
||||||
|
echo /src/uppsrc/Core/Format.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Format.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Format.o
|
||||||
|
echo /src/uppsrc/Core/Lang.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Lang.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Lang.o
|
||||||
|
echo /src/uppsrc/Core/parser.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/parser.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/parser.o
|
||||||
|
echo /src/uppsrc/Core/Uuid.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Uuid.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Uuid.o
|
||||||
|
echo /src/uppsrc/Core/Ptr.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Ptr.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Ptr.o
|
||||||
|
echo /src/uppsrc/Core/Win32Com.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Win32Com.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Win32Com.o
|
||||||
|
echo /src/uppsrc/Core/Dli.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Dli.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Dli.o
|
||||||
|
echo /src/uppsrc/Core/Test.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Core/Test.cpp -o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Test.o
|
||||||
|
/usr/local/bin/ar -sr /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Core.a /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Mt.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Thread.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/heap.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/nheap.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/OString.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/OWString.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/String.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/StrUtil.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/CharSet.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Path.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/App.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Stream.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Debug.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Util.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/mathutil.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Cont.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Callback.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Color.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Gtypes.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/TimeDate.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Value.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Convert.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Format.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Lang.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/parser.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Uuid.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Ptr.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Win32Com.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Dli.o /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Test.o
|
||||||
|
mkdir -p /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST
|
||||||
|
echo /src/uppsrc/plugin/bz2/bz2upp.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/bz2upp.cpp -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/bz2upp.o
|
||||||
|
echo /src/uppsrc/plugin/bz2/blocksort.c
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/blocksort.c -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/blocksort.o
|
||||||
|
echo /src/uppsrc/plugin/bz2/bzlib.c
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/bzlib.c -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/bzlib.o
|
||||||
|
echo /src/uppsrc/plugin/bz2/compress.c
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/compress.c -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/compress.o
|
||||||
|
echo /src/uppsrc/plugin/bz2/crctable.c
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/crctable.c -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/crctable.o
|
||||||
|
echo /src/uppsrc/plugin/bz2/decompress.c
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/decompress.c -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/decompress.o
|
||||||
|
echo /src/uppsrc/plugin/bz2/huffman.c
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/huffman.c -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/huffman.o
|
||||||
|
echo /src/uppsrc/plugin/bz2/randtable.c
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/bz2/randtable.c -o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/randtable.o
|
||||||
|
/usr/local/bin/ar -sr /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/bz2.a /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/bz2upp.o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/blocksort.o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/bzlib.o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/compress.o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/crctable.o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/decompress.o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/huffman.o /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/randtable.o
|
||||||
|
mkdir -p /uppout/uppnew/plugin/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST
|
||||||
|
echo /src/uppsrc/plugin/dummy.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/plugin/dummy.cpp -o /uppout/uppnew/plugin/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/dummy.o
|
||||||
|
/usr/local/bin/ar -sr /uppout/uppnew/plugin/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/plugin.a /uppout/uppnew/plugin/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/dummy.o
|
||||||
|
mkdir -p /uppout/uppnew/Web/TServ/CONSOLE-GNU3-IA32-LINUX-MAIN-RELEASE-ST
|
||||||
|
echo /src/uppsrc/Web/TServ/tserv.cpp
|
||||||
|
/usr/local/bin/g++ -c -O2 -ffunction-sections -x c++ -fuse-cxa-atexit -I"/src/uppsrc" -DflagCONSOLE -DflagST -DflagMAIN -DflagLINUX -DflagGNU3 -DflagIA32 -DflagRELEASE /src/uppsrc/Web/TServ/tserv.cpp -o /uppout/uppnew/Web/TServ/CONSOLE-GNU3-IA32-LINUX-MAIN-RELEASE-ST/tserv.o
|
||||||
|
/usr/local/bin/g++ -Wl,-s -static -o /uppout/tserv -Wl,--start-group /uppout/uppnew/Web/TServ/CONSOLE-GNU3-IA32-LINUX-MAIN-RELEASE-ST/tserv.o /uppout/uppnew/Web/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Web.a /uppout/uppnew/TCore/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/TCore.a /uppout/uppnew/Core/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/Core.a -lpthread -ldl -luuid /uppout/uppnew/plugin/bz2/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/bz2.a /uppout/uppnew/plugin/CONSOLE-GNU3-IA32-LINUX-RELEASE-ST/plugin.a -Wl,--end-group
|
||||||
22
uppsrc2/TServ/TServ.upp
Normal file
22
uppsrc2/TServ/TServ.upp
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
uses
|
||||||
|
Web,
|
||||||
|
plugin\bz2;
|
||||||
|
|
||||||
|
target(WIN32) tserv.exe;
|
||||||
|
|
||||||
|
target(!WIN32) tserv;
|
||||||
|
|
||||||
|
link(GNU3) "-Wl,-R -Wl,/usr/local/lib";
|
||||||
|
|
||||||
|
file
|
||||||
|
Makefile,
|
||||||
|
TServ.sh,
|
||||||
|
version.h,
|
||||||
|
tserv.cpp,
|
||||||
|
Info readonly separator,
|
||||||
|
Copying;
|
||||||
|
|
||||||
|
mainconfig
|
||||||
|
"" = "",
|
||||||
|
"" = "SHARED";
|
||||||
|
|
||||||
869
uppsrc2/TServ/err
Normal file
869
uppsrc2/TServ/err
Normal file
|
|
@ -0,0 +1,869 @@
|
||||||
|
make: Warning: File `/upp/uppsrc/Web/TServ/tserv.cpp' has modification time 2.9e+03 s in the future
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:206,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/stdlib.h:140: error: syntax error before `(' token
|
||||||
|
In file included from /usr/include/sys/types.h:133,
|
||||||
|
from /usr/include/stdlib.h:433,
|
||||||
|
from /upp/uppsrc/Core/Core.h:206,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/time.h:10: error: 'time_t' is used as a type, but is not
|
||||||
|
defined as a type.
|
||||||
|
/usr/include/linux/time.h:16: error: 'time_t' is used as a type, but is not
|
||||||
|
defined as a type.
|
||||||
|
/usr/include/linux/time.h:17: error: 'suseconds_t' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
In file included from /usr/include/sys/select.h:46,
|
||||||
|
from /usr/include/sys/types.h:216,
|
||||||
|
from /usr/include/stdlib.h:433,
|
||||||
|
from /upp/uppsrc/Core/Core.h:206,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/bits/time.h:70: error: redefinition of `struct timeval'
|
||||||
|
/usr/include/linux/time.h:15: error: previous definition of `struct timeval'
|
||||||
|
In file included from /usr/include/sys/types.h:266,
|
||||||
|
from /usr/include/stdlib.h:433,
|
||||||
|
from /upp/uppsrc/Core/Core.h:206,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/bits/pthreadtypes.h:48: error: 'size_t' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/bits/pthreadtypes.h:51: error: 'size_t' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:206,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/stdlib.h:450: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:450: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:480: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:480: error: syntax error before `,' token
|
||||||
|
/usr/include/stdlib.h:584: error: `size_t' was not declared in this scope
|
||||||
|
/usr/include/stdlib.h:584: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:586: error: `size_t' was not declared in this scope
|
||||||
|
/usr/include/stdlib.h:586: error: syntax error before `,' token
|
||||||
|
/usr/include/stdlib.h:595: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:595: error: syntax error before `)' token
|
||||||
|
In file included from /usr/include/stdlib.h:606,
|
||||||
|
from /upp/uppsrc/Core/Core.h:206,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/alloca.h:33: error: `size_t' was not declared in this scope
|
||||||
|
/usr/include/alloca.h:33: error: syntax error before `)' token
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:206,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/stdlib.h:611: error: `size_t' was not declared in this scope
|
||||||
|
/usr/include/stdlib.h:611: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:616: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:616: error: syntax error before `,' token
|
||||||
|
/usr/include/stdlib.h:768: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:768: error: syntax error before `,' token
|
||||||
|
/usr/include/stdlib.h:773: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:773: error: syntax error before `,' token
|
||||||
|
/usr/include/stdlib.h:846: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:846: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:849: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:849: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:853: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:853: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:857: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:857: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:866: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:866: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:870: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:870: error: syntax error before `)' token
|
||||||
|
/usr/include/stdlib.h:877: error: syntax error before `(' token
|
||||||
|
/usr/include/stdlib.h:880: error: syntax error before `(' token
|
||||||
|
/usr/include/stdlib.h:943: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdlib.h:943: error: syntax error before `)' token
|
||||||
|
In file included from /usr/include/_G_config.h:44,
|
||||||
|
from /usr/include/libio.h:32,
|
||||||
|
from /usr/include/stdio.h:72,
|
||||||
|
from /upp/uppsrc/Core/Core.h:207,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/gconv.h:72: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/gconv.h:72: error: syntax error before `*' token
|
||||||
|
/usr/include/gconv.h:88: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/gconv.h:88: error: syntax error before `*' token
|
||||||
|
/usr/include/gconv.h:97: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/gconv.h:97: error: syntax error before `*' token
|
||||||
|
/usr/include/gconv.h:174: error: 'size_t' is used as a type, but is not defined
|
||||||
|
as a type.
|
||||||
|
In file included from /usr/include/stdio.h:72,
|
||||||
|
from /upp/uppsrc/Core/Core.h:207,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/libio.h:53:21: stdarg.h: No such file or directory
|
||||||
|
In file included from /usr/include/stdio.h:72,
|
||||||
|
from /upp/uppsrc/Core/Core.h:207,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/libio.h:354: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/libio.h:354: error: syntax error before `)' token
|
||||||
|
/usr/include/libio.h:363: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/libio.h:363: error: syntax error before `)' token
|
||||||
|
/usr/include/libio.h:475: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/libio.h:477: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/libio.h:479: error: syntax error before `(' token
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:207,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/stdio.h:77: error: syntax error before `;' token
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:207,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/stdio.h:286: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:286: error: syntax error before `,' token
|
||||||
|
/usr/include/stdio.h:292: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:292: error: syntax error before `*' token
|
||||||
|
/usr/include/stdio.h:304: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:304: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:311: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:311: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:339: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:339: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:344: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:344: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:347: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:347: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:353: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:353: error: syntax error before `,' token
|
||||||
|
/usr/include/stdio.h:357: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:357: error: syntax error before `,' token
|
||||||
|
/usr/include/stdio.h:367: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:367: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:383: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:383: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:414: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:414: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:421: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:421: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:426: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:426: error: syntax error before `)' token
|
||||||
|
/usr/include/stdio.h:562: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:562: error: syntax error before `*' token
|
||||||
|
/usr/include/stdio.h:565: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:565: error: syntax error before `*' token
|
||||||
|
/usr/include/stdio.h:575: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/stdio.h:575: error: syntax error before `*' token
|
||||||
|
/usr/include/stdio.h:605: error: syntax error before `(' token
|
||||||
|
/usr/include/stdio.h:611: error: syntax error before `(' token
|
||||||
|
/usr/include/stdio.h:633: error: syntax error before `(' token
|
||||||
|
/usr/include/stdio.h:635: error: syntax error before `(' token
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:207,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/stdio.h:800: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/stdio.h:800: error: syntax error before `)' token
|
||||||
|
In file included from /usr/include/stdio.h:830,
|
||||||
|
from /upp/uppsrc/Core/Core.h:207,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/bits/stdio.h:34: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/bits/stdio.h:34: error: syntax error before `)' token
|
||||||
|
/usr/include/bits/stdio.h: In function `int vprintf(...)':
|
||||||
|
/usr/include/bits/stdio.h:36: error: `__fmt' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/bits/stdio.h:36: error: (Each undeclared identifier is reported
|
||||||
|
only once for each function it appears in.)
|
||||||
|
/usr/include/bits/stdio.h:36: error: `__arg' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/bits/stdio.h: At global scope:
|
||||||
|
/usr/include/bits/stdio.h:102: error: type specifier omitted for parameter `
|
||||||
|
size_t'
|
||||||
|
/usr/include/bits/stdio.h:102: error: syntax error before `*' token
|
||||||
|
/usr/include/bits/stdio.h: In function `__ssize_t getline(...)':
|
||||||
|
/usr/include/bits/stdio.h:104: error: `__lineptr' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/bits/stdio.h:104: error: `__n' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/bits/stdio.h:104: error: `__stream' undeclared (first use this
|
||||||
|
function)
|
||||||
|
In file included from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/upp/uppsrc/Core/Core.h:209:20: stdarg.h: No such file or directory
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:221,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/sys/time.h: At global scope:
|
||||||
|
/usr/include/sys/time.h:57: error: redefinition of `struct timezone'
|
||||||
|
/usr/include/linux/time.h:20: error: previous definition of `struct timezone'
|
||||||
|
/usr/include/sys/time.h:94: error: syntax error before numeric constant
|
||||||
|
/usr/include/sys/time.h:108: error: redefinition of `struct itimerval'
|
||||||
|
/usr/include/linux/time.h:402: error: previous definition of `struct itimerval'
|
||||||
|
In file included from /usr/include/asm-x86_64/vsyscall.h:4,
|
||||||
|
from /usr/include/asm/vsyscall.h:4,
|
||||||
|
from /usr/include/asm-x86_64/timex.h:12,
|
||||||
|
from /usr/include/asm/timex.h:4,
|
||||||
|
from /usr/include/linux/timex.h:157,
|
||||||
|
from /usr/include/linux/sched.h:11,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/seqlock.h: In function `void write_seqlock(seqlock_t*)':
|
||||||
|
/usr/include/linux/seqlock.h:52: error: `spin_lock' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/linux/seqlock.h:54: error: `smp_wmb' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/linux/seqlock.h: In function `void write_sequnlock(seqlock_t*)':
|
||||||
|
/usr/include/linux/seqlock.h:61: error: `spin_unlock' undeclared (first use
|
||||||
|
this function)
|
||||||
|
/usr/include/linux/seqlock.h: In function `int write_tryseqlock(seqlock_t*)':
|
||||||
|
/usr/include/linux/seqlock.h:66: error: `spin_trylock' undeclared (first use
|
||||||
|
this function)
|
||||||
|
/usr/include/linux/seqlock.h: In function `unsigned int read_seqbegin(const
|
||||||
|
seqlock_t*)':
|
||||||
|
/usr/include/linux/seqlock.h:79: error: `smp_rmb' undeclared (first use this
|
||||||
|
function)
|
||||||
|
In file included from /usr/include/asm/system.h:4,
|
||||||
|
from /usr/include/linux/jiffies.h:8,
|
||||||
|
from /usr/include/linux/sched.h:12,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/asm-x86_64/system.h: At global scope:
|
||||||
|
/usr/include/asm-x86_64/system.h:243: error: syntax error before `new'
|
||||||
|
/usr/include/asm-x86_64/system.h: In function `long unsigned int __cmpxchg(...)
|
||||||
|
':
|
||||||
|
/usr/include/asm-x86_64/system.h:246: error: `size' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/asm-x86_64/system.h:248: error: syntax error before string
|
||||||
|
constant
|
||||||
|
/usr/include/asm-x86_64/system.h:254: error: syntax error before string
|
||||||
|
constant
|
||||||
|
/usr/include/asm-x86_64/system.h:260: error: syntax error before string
|
||||||
|
constant
|
||||||
|
/usr/include/asm-x86_64/system.h:266: error: syntax error before string
|
||||||
|
constant
|
||||||
|
/usr/include/asm-x86_64/system.h:272: error: `old' undeclared (first use this
|
||||||
|
function)
|
||||||
|
In file included from /usr/include/linux/sched.h:12,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/jiffies.h: At global scope:
|
||||||
|
/usr/include/linux/jiffies.h:16: error: syntax error before `;' token
|
||||||
|
/usr/include/linux/jiffies.h:20: error: syntax error before `)' token
|
||||||
|
In file included from /usr/include/linux/sched.h:13,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/rbtree.h:129: error: syntax error before `new'
|
||||||
|
In file included from /usr/include/linux/thread_info.h:20,
|
||||||
|
from /usr/include/linux/sched.h:14,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/bitops.h: In function `int get_bitmask_order(unsigned int)':
|
||||||
|
/usr/include/linux/bitops.h:78: error: `fls' undeclared (first use this
|
||||||
|
function)
|
||||||
|
In file included from /usr/include/linux/cpumask.h:78,
|
||||||
|
from /usr/include/linux/sched.h:15,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/bitmap.h: In function `void bitmap_zero(long unsigned int*,
|
||||||
|
int)':
|
||||||
|
/usr/include/linux/bitmap.h:113: error: `BITS_PER_LONG' undeclared (first use
|
||||||
|
this function)
|
||||||
|
/usr/include/linux/bitmap.h:116: error: `BITS_TO_LONGS' undeclared (first use
|
||||||
|
this function)
|
||||||
|
/usr/include/linux/bitmap.h:117: error: `memset' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/linux/bitmap.h: In function `void bitmap_fill(long unsigned int*,
|
||||||
|
int)':
|
||||||
|
/usr/include/linux/bitmap.h:123: error: `size_t' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/linux/bitmap.h:123: error: syntax error before `=' token
|
||||||
|
/usr/include/linux/bitmap.h:124: error: `nlongs' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/linux/bitmap.h:126: error: `memset' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/linux/bitmap.h: In function `void bitmap_copy(long unsigned int*,
|
||||||
|
const long unsigned int*, int)':
|
||||||
|
/usr/include/linux/bitmap.h:137: error: `BITS_TO_LONGS' undeclared (first use
|
||||||
|
this function)
|
||||||
|
/usr/include/linux/bitmap.h:138: error: `memcpy' undeclared (first use this
|
||||||
|
function)
|
||||||
|
In file included from /usr/include/linux/sched.h:15,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/cpumask.h: At global scope:
|
||||||
|
/usr/include/linux/cpumask.h:81: error: `bits' was not declared in this scope
|
||||||
|
/usr/include/linux/cpumask.h:81: error: invalid data member initialization
|
||||||
|
/usr/include/linux/cpumask.h:81: error: (use `=' to initialize static data
|
||||||
|
members)
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpu_set(int, volatile
|
||||||
|
cpumask_t*)':
|
||||||
|
/usr/include/linux/cpumask.h:87: error: 'volatile struct cpumask_t' has no
|
||||||
|
member named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpu_clear(int, volatile
|
||||||
|
cpumask_t*)':
|
||||||
|
/usr/include/linux/cpumask.h:93: error: 'volatile struct cpumask_t' has no
|
||||||
|
member named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_setall(cpumask_t*, int)
|
||||||
|
':
|
||||||
|
/usr/include/linux/cpumask.h:99: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_clear(cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:105: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpu_test_and_set(int,
|
||||||
|
cpumask_t*)':
|
||||||
|
/usr/include/linux/cpumask.h:114: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_and(cpumask_t*, const
|
||||||
|
cpumask_t*, const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:121: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h:121: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h:121: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_or(cpumask_t*, const
|
||||||
|
cpumask_t*, const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:128: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h:128: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h:128: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_xor(cpumask_t*, const
|
||||||
|
cpumask_t*, const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:135: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h:135: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h:135: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_andnot(cpumask_t*, const
|
||||||
|
cpumask_t*, const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:143: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h:143: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h:143: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_complement(cpumask_t*,
|
||||||
|
const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:150: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h:150: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpus_equal(const cpumask_t*,
|
||||||
|
const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:157: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h:157: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpus_intersects(const
|
||||||
|
cpumask_t*, const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:164: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h:164: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpus_subset(const cpumask_t*,
|
||||||
|
const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:171: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h:171: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpus_empty(const cpumask_t*,
|
||||||
|
int)':
|
||||||
|
/usr/include/linux/cpumask.h:177: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpus_full(const cpumask_t*,
|
||||||
|
int)':
|
||||||
|
/usr/include/linux/cpumask.h:183: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpus_weight(const cpumask_t*,
|
||||||
|
int)':
|
||||||
|
/usr/include/linux/cpumask.h:189: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_shift_right(cpumask_t*,
|
||||||
|
const cpumask_t*, int, int)':
|
||||||
|
/usr/include/linux/cpumask.h:197: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h:197: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `void __cpus_shift_left(cpumask_t*,
|
||||||
|
const cpumask_t*, int, int)':
|
||||||
|
/usr/include/linux/cpumask.h:205: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
/usr/include/linux/cpumask.h:205: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __first_cpu(const cpumask_t*,
|
||||||
|
int)':
|
||||||
|
/usr/include/linux/cpumask.h:211: error: syntax error before `,' token
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __next_cpu(int, const
|
||||||
|
cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:217: error: syntax error before `,' token
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpumask_scnprintf(char*, int,
|
||||||
|
const cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:268: error: 'const struct cpumask_t' has no member
|
||||||
|
named 'bits'
|
||||||
|
/usr/include/linux/cpumask.h: In function `int __cpumask_parse(const char*,
|
||||||
|
int, cpumask_t*, int)':
|
||||||
|
/usr/include/linux/cpumask.h:276: error: 'struct cpumask_t' has no member named
|
||||||
|
'bits'
|
||||||
|
In file included from /usr/include/asm/mmu.h:4,
|
||||||
|
from /usr/include/linux/sched.h:21,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/asm-x86_64/mmu.h: At global scope:
|
||||||
|
/usr/include/asm-x86_64/mmu.h:15: error: 'rwlock_t' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/mmu.h:17: error: field `sem' has incomplete type
|
||||||
|
In file included from /usr/include/linux/signal.h:4,
|
||||||
|
from /usr/include/linux/sched.h:25,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/list.h:715:2: warning: #warning "don't include kernel headers in userspace"
|
||||||
|
In file included from /usr/include/asm/signal.h:4,
|
||||||
|
from /usr/include/linux/signal.h:6,
|
||||||
|
from /usr/include/linux/sched.h:25,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/asm-x86_64/signal.h:35: error: conflicting types for `typedef long
|
||||||
|
unsigned int sigset_t'
|
||||||
|
/usr/include/sys/select.h:38: error: previous declaration as `typedef struct
|
||||||
|
__sigset_t sigset_t'
|
||||||
|
/usr/include/asm-x86_64/signal.h:163: error: 'size_t' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
In file included from /usr/include/asm-x86_64/siginfo.h:8,
|
||||||
|
from /usr/include/asm/siginfo.h:4,
|
||||||
|
from /usr/include/linux/signal.h:7,
|
||||||
|
from /usr/include/linux/sched.h:25,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/asm-generic/siginfo.h:57: error: 'timer_t' is used as a type, but
|
||||||
|
is not defined as a type.
|
||||||
|
/usr/include/asm-generic/siginfo.h:76: error: 'clock_t' is used as a type, but
|
||||||
|
is not defined as a type.
|
||||||
|
/usr/include/asm-generic/siginfo.h:77: error: 'clock_t' is used as a type, but
|
||||||
|
is not defined as a type.
|
||||||
|
In file included from /usr/include/linux/sched.h:27,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/fs_struct.h:9: error: 'rwlock_t' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
In file included from /usr/include/linux/sched.h:29,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/completion.h:15: error: syntax error before `;' token
|
||||||
|
/usr/include/linux/completion.h: In function `void init_completion(completion*)
|
||||||
|
':
|
||||||
|
/usr/include/linux/completion.h:27: error: invalid use of `union wait'
|
||||||
|
/usr/include/linux/completion.h:27: error: `init_waitqueue_head' undeclared
|
||||||
|
(first use this function)
|
||||||
|
In file included from /usr/include/linux/sched.h:30,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/pid.h: At global scope:
|
||||||
|
/usr/include/linux/pid.h:17: error: field `pid_chain' has incomplete type
|
||||||
|
/usr/include/linux/pid.h:19: error: field `pid_list' has incomplete type
|
||||||
|
In file included from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/sched.h:92: error: type specifier omitted for parameter `
|
||||||
|
process_counts'
|
||||||
|
In file included from /usr/include/linux/sched.h:101,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/linux/timer.h:11: error: field `entry' has incomplete type
|
||||||
|
/usr/include/linux/timer.h: In function `void init_timer(timer_list*)':
|
||||||
|
/usr/include/linux/timer.h:45: error: `spin_lock_init' undeclared (first use
|
||||||
|
this function)
|
||||||
|
In file included from /usr/include/asm/pda.h:4,
|
||||||
|
from /usr/include/asm-x86_64/current.h:7,
|
||||||
|
from /usr/include/asm/current.h:4,
|
||||||
|
from /usr/include/asm-x86_64/processor.h:18,
|
||||||
|
from /usr/include/asm/processor.h:4,
|
||||||
|
from /usr/include/linux/sched.h:103,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/asm-x86_64/pda.h: At global scope:
|
||||||
|
/usr/include/asm-x86_64/pda.h:26: error: `CONFIG_X86_L1_CACHE_SHIFT' was not
|
||||||
|
declared in this scope
|
||||||
|
/usr/include/asm-x86_64/pda.h:26: error: requested alignment is not a constant
|
||||||
|
In file included from /usr/include/asm/processor.h:4,
|
||||||
|
from /usr/include/linux/sched.h:103,
|
||||||
|
from /usr/include/pthread.h:20,
|
||||||
|
from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/asm-x86_64/processor.h:190: error: 'u16' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:191: error: 'u16' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:192: error: 'u16' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:193: error: 'u16' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:194: error: 'u64' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:195: error: 'u64' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:196: error: 'u32' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:197: error: 'u32' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:198: error: syntax error before `[' token
|
||||||
|
/usr/include/asm-x86_64/processor.h:199: error: syntax error before `[' token
|
||||||
|
/usr/include/asm-x86_64/processor.h:200: error: syntax error before `[' token
|
||||||
|
/usr/include/asm-x86_64/processor.h:208: error: 'u32' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:209: error: 'u64' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:210: error: 'u64' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:211: error: 'u64' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:212: error: 'u64' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:213: error: syntax error before `[' token
|
||||||
|
/usr/include/asm-x86_64/processor.h:214: error: 'u32' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:215: error: 'u32' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:216: error: 'u16' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:217: error: 'u16' is used as a type, but is
|
||||||
|
not defined as a type.
|
||||||
|
/usr/include/asm-x86_64/processor.h:228: error: `CONFIG_X86_L1_CACHE_SHIFT' was
|
||||||
|
not declared in this scope
|
||||||
|
/usr/include/asm-x86_64/processor.h:228: error: requested alignment is not a
|
||||||
|
constant
|
||||||
|
/usr/include/asm-x86_64/processor.h:259: error: syntax error before `[' token
|
||||||
|
/usr/include/asm-x86_64/processor.h: In function `void prefetchw(void*)':
|
||||||
|
/usr/include/asm-x86_64/processor.h:401: error: `"r"' cannot be used as a
|
||||||
|
function
|
||||||
|
/usr/include/asm-x86_64/processor.h:401: error: `alternative_input' undeclared
|
||||||
|
(first use this function)
|
||||||
|
In file included from /upp/uppsrc/Core/Core.h:225,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/pthread.h: At global scope:
|
||||||
|
/usr/include/pthread.h:247: error: type specifier omitted for parameter `size_t
|
||||||
|
'
|
||||||
|
/usr/include/pthread.h:247: error: syntax error before `)' token
|
||||||
|
/usr/include/pthread.h:251: error: type specifier omitted for parameter `size_t
|
||||||
|
'
|
||||||
|
/usr/include/pthread.h:251: error: syntax error before `*' token
|
||||||
|
/usr/include/pthread.h:272: error: type specifier omitted for parameter `size_t
|
||||||
|
'
|
||||||
|
/usr/include/pthread.h:272: error: syntax error before `)' token
|
||||||
|
/usr/include/pthread.h:277: error: type specifier omitted for parameter `size_t
|
||||||
|
'
|
||||||
|
/usr/include/pthread.h:277: error: syntax error before `*' token
|
||||||
|
/usr/include/pthread.h:284: error: type specifier omitted for parameter `size_t
|
||||||
|
'
|
||||||
|
/usr/include/pthread.h:284: error: syntax error before `)' token
|
||||||
|
/usr/include/pthread.h:288: error: type specifier omitted for parameter `size_t
|
||||||
|
'
|
||||||
|
/usr/include/pthread.h:288: error: syntax error before `*' token
|
||||||
|
In file included from /usr/include/c++/3.3.5/cstring:49,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:65,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/cstddef:52: error: `ptrdiff_t' not declared
|
||||||
|
In file included from /usr/include/c++/3.3.5/bits/stl_algobase.h:65,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/cstring:80: error: `memmove' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:81: error: `strcpy' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:82: error: `strncpy' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:83: error: `strcat' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:84: error: `strncat' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:85: error: `memcmp' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:86: error: `strcmp' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:87: error: `strcoll' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:88: error: `strncmp' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:89: error: `strxfrm' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:90: error: `strcspn' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:91: error: `strspn' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:92: error: `strtok' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:94: error: `strerror' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:95: error: `strlen' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:97: error: `memchr' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:100: error: type specifier omitted for parameter
|
||||||
|
`size_t'
|
||||||
|
/usr/include/c++/3.3.5/cstring:100: error: syntax error before `)' token
|
||||||
|
/usr/include/c++/3.3.5/cstring: In function `void* std::memchr(...)':
|
||||||
|
/usr/include/c++/3.3.5/cstring:101: error: `__p' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/c++/3.3.5/cstring:101: error: `__c' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/c++/3.3.5/cstring: At global scope:
|
||||||
|
/usr/include/c++/3.3.5/cstring:103: error: `strchr' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:109: error: `strpbrk' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:115: error: `strrchr' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstring:121: error: `strstr' not declared
|
||||||
|
In file included from /usr/include/c++/3.3.5/bits/stl_algobase.h:67,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/cstdlib:105: error: `mbstowcs' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstdlib:115: error: `wcstombs' not declared
|
||||||
|
In file included from /usr/include/c++/3.3.5/bits/stl_algobase.h:69,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/new:82: error: `size_t' undeclared in namespace `std'
|
||||||
|
/usr/include/c++/3.3.5/new:82: error: declaration of `operator new' as
|
||||||
|
non-function
|
||||||
|
/usr/include/c++/3.3.5/new:82: error: invalid declarator
|
||||||
|
/usr/include/c++/3.3.5/new:83: error: `size_t' undeclared in namespace `std'
|
||||||
|
/usr/include/c++/3.3.5/new:83: error: declaration of `operator new []' as
|
||||||
|
non-function
|
||||||
|
/usr/include/c++/3.3.5/new:83: error: invalid declarator
|
||||||
|
/usr/include/c++/3.3.5/new:86: error: `size_t' undeclared in namespace `std'
|
||||||
|
/usr/include/c++/3.3.5/new:86: error: syntax error before `::' token
|
||||||
|
/usr/include/c++/3.3.5/new:86: error: `operator new' takes type `size_t' (`long
|
||||||
|
unsigned int') as first parameter
|
||||||
|
/usr/include/c++/3.3.5/new:87: error: `size_t' undeclared in namespace `std'
|
||||||
|
/usr/include/c++/3.3.5/new:87: error: syntax error before `::' token
|
||||||
|
/usr/include/c++/3.3.5/new:87: error: `operator new' takes type `size_t' (`long
|
||||||
|
unsigned int') as first parameter
|
||||||
|
/usr/include/c++/3.3.5/new:92: error: `size_t' undeclared in namespace `std'
|
||||||
|
/usr/include/c++/3.3.5/new:92: error: syntax error before `*' token
|
||||||
|
/usr/include/c++/3.3.5/new:92: error: `operator new' takes type `size_t' (`long
|
||||||
|
unsigned int') as first parameter
|
||||||
|
/usr/include/c++/3.3.5/new: In function `void* operator new(long unsigned int,
|
||||||
|
...)':
|
||||||
|
/usr/include/c++/3.3.5/new:92: error: `__p' undeclared (first use this
|
||||||
|
function)
|
||||||
|
/usr/include/c++/3.3.5/new: At global scope:
|
||||||
|
/usr/include/c++/3.3.5/new:93: error: `size_t' undeclared in namespace `std'
|
||||||
|
/usr/include/c++/3.3.5/new:93: error: syntax error before `*' token
|
||||||
|
/usr/include/c++/3.3.5/new:93: error: `operator new' takes type `size_t' (`long
|
||||||
|
unsigned int') as first parameter
|
||||||
|
In file included from /usr/include/c++/3.3.5/x86_64-suse-linux/bits/c++locale.h:43,
|
||||||
|
from /usr/include/c++/3.3.5/iosfwd:46,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/iconv.h:43: error: syntax error before `(' token
|
||||||
|
In file included from /usr/include/c++/3.3.5/iosfwd:47,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/cctype:68: error: `isalnum' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:69: error: `isalpha' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:70: error: `iscntrl' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:71: error: `isdigit' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:72: error: `isgraph' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:73: error: `islower' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:74: error: `isprint' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:75: error: `ispunct' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:76: error: `isspace' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:77: error: `isupper' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:78: error: `isxdigit' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:79: error: `tolower' not declared
|
||||||
|
/usr/include/c++/3.3.5/cctype:80: error: `toupper' not declared
|
||||||
|
In file included from /usr/include/c++/3.3.5/x86_64-suse-linux/bits/c++io.h:35,
|
||||||
|
from /usr/include/c++/3.3.5/bits/fpos.h:44,
|
||||||
|
from /usr/include/c++/3.3.5/iosfwd:49,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/cstdio:114: error: `fread' not declared
|
||||||
|
/usr/include/c++/3.3.5/cstdio:120: error: `fwrite' not declared
|
||||||
|
In file included from /usr/include/c++/3.3.5/bits/fpos.h:44,
|
||||||
|
from /usr/include/c++/3.3.5/iosfwd:49,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/x86_64-suse-linux/bits/c++io.h:43: error: syntax error
|
||||||
|
before `;' token
|
||||||
|
/usr/include/c++/3.3.5/x86_64-suse-linux/bits/c++io.h:45: error: syntax error
|
||||||
|
before `;' token
|
||||||
|
In file included from /usr/include/c++/3.3.5/cwchar:51,
|
||||||
|
from /usr/include/c++/3.3.5/bits/fpos.h:45,
|
||||||
|
from /usr/include/c++/3.3.5/iosfwd:49,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/ctime:66: error: `clock_t' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:67: error: `time_t' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:68: error: `tm' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:70: error: `clock' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:71: error: `difftime' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:72: error: `mktime' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:73: error: `time' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:74: error: `asctime' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:75: error: `ctime' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:76: error: `gmtime' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:77: error: `localtime' not declared
|
||||||
|
/usr/include/c++/3.3.5/ctime:78: error: `strftime' not declared
|
||||||
|
In file included from /usr/include/c++/3.3.5/cwchar:54,
|
||||||
|
from /usr/include/c++/3.3.5/bits/fpos.h:45,
|
||||||
|
from /usr/include/c++/3.3.5/iosfwd:49,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/wchar.h:40:21: stdarg.h: No such file or directory
|
||||||
|
In file included from /usr/include/c++/3.3.5/cwchar:54,
|
||||||
|
from /usr/include/c++/3.3.5/bits/fpos.h:45,
|
||||||
|
from /usr/include/c++/3.3.5/iosfwd:49,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/wchar.h:137: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:137: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:145: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:145: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:152: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:152: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:162: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:162: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:172: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:172: error: syntax error before `,' token
|
||||||
|
/usr/include/wchar.h:182: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:198: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:224: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:228: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:243: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:254: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:261: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:261: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:266: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:266: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:271: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:271: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:275: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:275: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:279: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:279: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:286: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:286: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:306: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:311: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:315: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:317: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:324: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:333: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:339: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:348: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:354: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:368: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:368: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:575: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:575: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:602: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:602: error: syntax error before `,' token
|
||||||
|
/usr/include/wchar.h:612: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/wchar.h:612: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:619: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/wchar.h:619: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:623: error: type specifier omitted for parameter `size_t'
|
||||||
|
/usr/include/wchar.h:623: error: syntax error before `,' token
|
||||||
|
/usr/include/wchar.h:659: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/wchar.h:659: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:666: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/wchar.h:666: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:671: error: type specifier omitted for parameter `
|
||||||
|
__gnuc_va_list'
|
||||||
|
/usr/include/wchar.h:671: error: syntax error before `)' token
|
||||||
|
/usr/include/wchar.h:793: error: syntax error before `(' token
|
||||||
|
/usr/include/wchar.h:803: error: syntax error before `(' token
|
||||||
|
In file included from /usr/include/c++/3.3.5/bits/fpos.h:45,
|
||||||
|
from /usr/include/c++/3.3.5/iosfwd:49,
|
||||||
|
from /usr/include/c++/3.3.5/bits/stl_algobase.h:70,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/cwchar:147: error: `mbrlen' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:148: error: `mbrtowc' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:150: error: `mbsrtowcs' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:162: error: `wcrtomb' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:167: error: `wcscspn' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:168: error: `wcsftime' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:169: error: `wcslen' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:173: error: `wcsrtombs' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:174: error: `wcsspn' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:180: error: `wcsxfrm' not declared
|
||||||
|
/usr/include/c++/3.3.5/cwchar:216: error: type specifier omitted for parameter
|
||||||
|
`size_t'
|
||||||
|
/usr/include/c++/3.3.5/cwchar:216: error: syntax error before `)' token
|
||||||
|
/usr/include/c++/3.3.5/cwchar: In function `wchar_t* std::wmemchr(...)':
|
||||||
|
/usr/include/c++/3.3.5/cwchar:217: error: `wchar_t* std::wmemchr(...)'
|
||||||
|
conflicts with previous using declaration `wchar_t* wmemchr(...)'
|
||||||
|
In file included from /usr/include/c++/3.3.5/bits/stl_algobase.h:73,
|
||||||
|
from /usr/include/c++/3.3.5/algorithm:66,
|
||||||
|
from /upp/uppsrc/Core/Core.h:299,
|
||||||
|
from /upp/uppsrc/Web/Web.h:4,
|
||||||
|
from /upp/uppsrc/Web/TServ/tserv.cpp:1:
|
||||||
|
/usr/include/c++/3.3.5/bits/stl_iterator_base_types.h: At global scope:
|
||||||
|
/usr/include/c++/3.3.5/bits/stl_iterator_base_types.h:102: error: syntax error
|
||||||
|
before `,' token
|
||||||
|
/usr/include/c++/3.3.5/bits/stl_iterator_base_types.h:109: error: template
|
||||||
|
declaration of `typedef _Tp std::value_type'
|
||||||
|
/usr/include/c++/3.3.5/bits/stl_iterator_base_types.h:109: confused by earlier errors, bailing out
|
||||||
|
make: *** [/uppout/Web/TServ/GCC33-Gcc-Linux-Main/tserv.o] Error 1
|
||||||
5
uppsrc2/TServ/init
Normal file
5
uppsrc2/TServ/init
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#ifndef _Web_TServ_icpp_init_stub
|
||||||
|
#define _Web_TServ_icpp_init_stub
|
||||||
|
#include "Web/init"
|
||||||
|
#include "plugin\bz2/init"
|
||||||
|
#endif
|
||||||
843
uppsrc2/TServ/tserv.cpp
Normal file
843
uppsrc2/TServ/tserv.cpp
Normal file
|
|
@ -0,0 +1,843 @@
|
||||||
|
#include <Web/Web.h>
|
||||||
|
#include "version.h"
|
||||||
|
#include <plugin/bz2/bz2.h>
|
||||||
|
#ifdef PLATFORM_POSIX
|
||||||
|
#include <signal.h>
|
||||||
|
#endif//PLATFORM_POSIX
|
||||||
|
|
||||||
|
using namespace Upp;
|
||||||
|
|
||||||
|
enum { DEFAULT_PORT = 2346 };
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#define DO_SVRLOG 1
|
||||||
|
#else
|
||||||
|
#define DO_SVRLOG 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DO_SVRLOG
|
||||||
|
#define SVRLOG(x) { StringStream ss; ss << x << '\n'; RLOG(ss.GetResult()); fputs(ss.GetResult(), stderr); fflush(stderr); }
|
||||||
|
#else
|
||||||
|
#define SVRLOG(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
void DeleteFolderDeep(const char *dir)
|
||||||
|
{
|
||||||
|
FindFile ff(String(dir) + "/*.*");
|
||||||
|
while(ff) {
|
||||||
|
String name = ff.GetName();
|
||||||
|
String p = AppendFileName(dir, name);
|
||||||
|
if(ff.IsFile())
|
||||||
|
DeleteFile(p);
|
||||||
|
else
|
||||||
|
if(ff.IsFolder())
|
||||||
|
DeleteFolderDeep(p);
|
||||||
|
ff.Next();
|
||||||
|
}
|
||||||
|
DirectoryDelete(dir);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
static bool quit_signal = false;
|
||||||
|
|
||||||
|
static void QuitSignal(int)
|
||||||
|
{
|
||||||
|
puts("Termination signal received, quitting...");
|
||||||
|
quit_signal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CommandServer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef CommandServer CLASSNAME;
|
||||||
|
CommandServer();
|
||||||
|
virtual ~CommandServer();
|
||||||
|
|
||||||
|
CommandServer& Logging(bool l) { logging = l; return *this; }
|
||||||
|
CommandServer& Timing(bool t) { timing = t; return *this; }
|
||||||
|
CommandServer& Filter(const char *ip);
|
||||||
|
|
||||||
|
void Execute(Socket& socket);
|
||||||
|
bool StartServer(int port, const String& cmdline);
|
||||||
|
void StopServer(int port);
|
||||||
|
void RunServer(int port);
|
||||||
|
void RunClient();
|
||||||
|
void Quit() { quit_flag = true; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
String GetConInput(const char *prompt);
|
||||||
|
virtual void ExecTimer();
|
||||||
|
// void RunCommand(String cmd, Socket& socket);
|
||||||
|
String CheckFiles(const char *f);
|
||||||
|
String FileRemove(const char *f);
|
||||||
|
String DeleteFolderDeep(const char *f);
|
||||||
|
String UploadFiles(const char *f);
|
||||||
|
String DownloadFiles(const char *f);
|
||||||
|
String CreateDir(const char *f);
|
||||||
|
String GetFileInfo(const char *f);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
class Connection
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Connection(Socket socket) : socket(socket), eof(false) {}
|
||||||
|
virtual ~Connection();
|
||||||
|
|
||||||
|
bool IsEof() const { return eof; }
|
||||||
|
String GetName() const { return name; }
|
||||||
|
virtual bool Run() = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
String name;
|
||||||
|
Socket socket;
|
||||||
|
bool eof;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CommandConnection : public Connection
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CommandConnection(Socket& socket, const char *command);
|
||||||
|
|
||||||
|
virtual bool Run();
|
||||||
|
|
||||||
|
private:
|
||||||
|
One<SlaveProcess> slave;
|
||||||
|
};
|
||||||
|
|
||||||
|
Array<Connection> connections;
|
||||||
|
int timer_chunk;
|
||||||
|
bool logging;
|
||||||
|
bool timing;
|
||||||
|
bool quit_flag;
|
||||||
|
Index<dword> ip_filter;
|
||||||
|
// int thread_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// CommandServer::Connection::
|
||||||
|
|
||||||
|
CommandServer::Connection::~Connection()
|
||||||
|
{
|
||||||
|
if(socket.IsOpen())
|
||||||
|
socket.StopWrite();
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// CommandServer::CommandConnection::
|
||||||
|
|
||||||
|
CommandServer::CommandConnection::CommandConnection(Socket& _socket, const char *_command)
|
||||||
|
: Connection(_socket)
|
||||||
|
{
|
||||||
|
_socket.Clear();
|
||||||
|
|
||||||
|
try {
|
||||||
|
String environment;
|
||||||
|
String pathlist;
|
||||||
|
if(*_command == ':') {
|
||||||
|
const char *b = ++_command;
|
||||||
|
while(*_command && *_command++ != '\n')
|
||||||
|
;
|
||||||
|
environment = ASCII85Decode(String(b, _command));
|
||||||
|
for(b = environment; *b; b += strlen(b) + 1)
|
||||||
|
if(!MemICmp(b, "PATH=", 5)) {
|
||||||
|
pathlist = b + 5;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(*_command == '=')
|
||||||
|
_command++;
|
||||||
|
String command = _command;
|
||||||
|
if(!IsNull(pathlist)) {
|
||||||
|
String exec;
|
||||||
|
if(*_command == '\"') {
|
||||||
|
while(*++_command && (*_command != '\"' || *++_command == '\"'))
|
||||||
|
exec.Cat(*_command);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
while(*_command && (byte)*_command > ' ')
|
||||||
|
exec.Cat(*_command++);
|
||||||
|
command = GetFileOnPath(exec, pathlist, true);
|
||||||
|
#ifdef PLATFORM_WIN32
|
||||||
|
if(IsNull(command))
|
||||||
|
command = GetFileOnPath(exec + ".exe", pathlist, true);
|
||||||
|
#endif
|
||||||
|
if(IsNull(command))
|
||||||
|
command = exec;
|
||||||
|
if(command.Find(' ') >= 0)
|
||||||
|
command = '\"' + command + '\"';
|
||||||
|
command << ' ' << _command;
|
||||||
|
}
|
||||||
|
LOG("CommandServer::CommandConnection(" << command << ")");
|
||||||
|
slave = StartProcess(command, environment);
|
||||||
|
LOG("CommandServer::CommandConnection -> OK");
|
||||||
|
socket.Write("+\0", 2);
|
||||||
|
name << "[command]" << command;
|
||||||
|
}
|
||||||
|
catch(Exc e) {
|
||||||
|
if(socket.IsOpen())
|
||||||
|
socket.Write('-' + e + '\0');
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CommandServer::CommandConnection::Run()
|
||||||
|
{
|
||||||
|
// SVRLOG("CommandConnection::Run");
|
||||||
|
if(eof)
|
||||||
|
return true;
|
||||||
|
ASSERT(socket.IsOpen());
|
||||||
|
bool work = false;
|
||||||
|
String inp = socket.ReadUntil('\0', 0, 10000000);
|
||||||
|
if(inp.IsVoid())
|
||||||
|
{ // broken pipe
|
||||||
|
slave -> Kill();
|
||||||
|
eof = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(!inp.IsEmpty())
|
||||||
|
{
|
||||||
|
SVRLOG("-> input data: <" << inp << ">");
|
||||||
|
work = true;
|
||||||
|
slave -> Write(inp);
|
||||||
|
}
|
||||||
|
String out = Null;
|
||||||
|
eof = !slave -> Read(out);
|
||||||
|
if(!out.IsEmpty())
|
||||||
|
{
|
||||||
|
work = true;
|
||||||
|
SVRLOG("-> output data: <" << out << ">");
|
||||||
|
socket.Write(out);
|
||||||
|
}
|
||||||
|
if(eof)
|
||||||
|
{
|
||||||
|
work = true;
|
||||||
|
socket.Write("\0", 1);
|
||||||
|
SVRLOG("Process terminated, exit code = " << slave -> GetExitCode());
|
||||||
|
String ec = IntStr(slave -> GetExitCode());
|
||||||
|
socket.Write(ec, ec.GetLength() + 1);
|
||||||
|
socket.StopWrite();
|
||||||
|
}
|
||||||
|
// SVRLOG("/ CommandConnection::Run -> " << (work ? "working" : "idle"));
|
||||||
|
return work;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// CommandServer::
|
||||||
|
|
||||||
|
CommandServer::CommandServer()
|
||||||
|
{
|
||||||
|
timer_chunk = 100;
|
||||||
|
quit_flag = true;
|
||||||
|
Logging(false);
|
||||||
|
Timing(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandServer::~CommandServer()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandServer& CommandServer::Filter(const char *ip)
|
||||||
|
{
|
||||||
|
Socket::Init();
|
||||||
|
hostent *he = gethostbyname(ip);
|
||||||
|
if(he)
|
||||||
|
ip_filter.FindAdd(Peek32be((in_addr *)(he -> h_addr_list[0])));
|
||||||
|
else
|
||||||
|
fputs(NFormat("gethostbyname: adresa '%s' nebyla nalezena ...\n", ip), stderr);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
String CommandServer::CheckFiles(const char *f)
|
||||||
|
{
|
||||||
|
int line = 0;
|
||||||
|
String out = "OK\n";
|
||||||
|
while(*f)
|
||||||
|
{
|
||||||
|
line++;
|
||||||
|
const char *b = f;
|
||||||
|
while(*f && *f != '\n' && *f != '\t')
|
||||||
|
f++;
|
||||||
|
String fn = NativePath(String(b, f));
|
||||||
|
int t;
|
||||||
|
if(*f != '\t' || IsNull(t = ScanInt(f + 1, &f)))
|
||||||
|
return NFormat("ERROR(%s): file time expected at line %d", fn, line);
|
||||||
|
|
||||||
|
Time time = Time(2000, 1, 1) + t;
|
||||||
|
int l;
|
||||||
|
if(*f != '\t' || IsNull(l = ScanInt(f + 1, &f)))
|
||||||
|
return NFormat("ERROR(%s): file size expected at line %d", fn, line);
|
||||||
|
|
||||||
|
FindFile ff(fn);
|
||||||
|
if(ff && tabs(Time(ff.GetLastWriteTime()) - time) <= 2 && ff.GetLength() == l)
|
||||||
|
out << fn << '\n';
|
||||||
|
|
||||||
|
while(*f && *f++ != '\n')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
String CommandServer::FileRemove(const char *f)
|
||||||
|
{
|
||||||
|
String out;
|
||||||
|
while(*f)
|
||||||
|
{
|
||||||
|
const char *b = f;
|
||||||
|
while(*f && *f != '\n')
|
||||||
|
f++;
|
||||||
|
String fn(b, f);
|
||||||
|
if(!IsNull(fn) && !FileDelete(NativePath(fn)))
|
||||||
|
out << NFormat("%s: error deleting file\n", fn);
|
||||||
|
while(*f && *f++ != '\n')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
if(IsNull(out))
|
||||||
|
out = "OK";
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
String CommandServer::DeleteFolderDeep(const char *f)
|
||||||
|
{
|
||||||
|
while(*f)
|
||||||
|
{
|
||||||
|
const char *b = f;
|
||||||
|
while(*f && *f != '\n')
|
||||||
|
f++;
|
||||||
|
String fn(b, f);
|
||||||
|
if(!IsNull(fn))
|
||||||
|
Upp::DeleteFolderDeep(NativePath(fn));
|
||||||
|
while(*f && *f++ != '\n')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
return "OK";
|
||||||
|
}
|
||||||
|
|
||||||
|
String CommandServer::GetFileInfo(const char *f)
|
||||||
|
{
|
||||||
|
int td = ScanInt(f, &f) - (int)(GetSysTime() - Time(2000, 1, 1));
|
||||||
|
if(*f++ != ':')
|
||||||
|
return "ERROR(@): ':' expected after time delta";
|
||||||
|
int line = 0;
|
||||||
|
String output;
|
||||||
|
while(*f)
|
||||||
|
{
|
||||||
|
line++;
|
||||||
|
const char *b = f;
|
||||||
|
while(*f && *f != '\n')
|
||||||
|
f++;
|
||||||
|
String fn(b, f);
|
||||||
|
FindFile ff;
|
||||||
|
output << fn;
|
||||||
|
if(ff.Search(NativePath(fn)))
|
||||||
|
output << '\t' << ((int)(Time(ff.GetLastWriteTime()) - Time(2000, 1, 1)) + td)
|
||||||
|
<< '\t' << (ff.IsFile() ? (int)ff.GetLength() : -1);
|
||||||
|
output << "\n";
|
||||||
|
while(*f && *f++ != '\n')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
String CommandServer::UploadFiles(const char *f)
|
||||||
|
{
|
||||||
|
SVRLOG("CommandServer::UploadFiles");
|
||||||
|
int line = 0;
|
||||||
|
while(*f)
|
||||||
|
{
|
||||||
|
++line;
|
||||||
|
const char *b = f;
|
||||||
|
while(*f && *f != '\t' && *f != '\n')
|
||||||
|
f++;
|
||||||
|
String fn = NativePath(String(b, f));
|
||||||
|
if(IsNull(fn))
|
||||||
|
return NFormat("ERROR: file name expected at line %d", line);
|
||||||
|
SVRLOG("Updating file '" << fn << "'...");
|
||||||
|
int t;
|
||||||
|
if(*f != '\t' || IsNull(t = ScanInt(f + 1, &f)))
|
||||||
|
return NFormat("ERROR(%s): file time expected at line %d", fn, line);
|
||||||
|
|
||||||
|
Time time = Time(2000, 1, 1) + t;
|
||||||
|
int l;
|
||||||
|
if(*f != '\t' || IsNull(l = ScanInt(f + 1, &f)))
|
||||||
|
return NFormat("ERROR(%s): file size expected at line %d", fn, line);
|
||||||
|
|
||||||
|
if(*f != '\t')
|
||||||
|
return NFormat("ERROR(%s): file content expected at line %d", fn, line);
|
||||||
|
b = ++f;
|
||||||
|
while(*f && *f != '\n')
|
||||||
|
f++;
|
||||||
|
if(*f != '\n')
|
||||||
|
return NFormat("ERROR(%s): unexpected end of file at line %d", fn, line);
|
||||||
|
SVRLOG("ASCII85 length = " << (int)(f - b));
|
||||||
|
String bz = ASCII85Decode((const byte *)b, f - b);
|
||||||
|
SVRLOG("BZ compressed length = " << bz.GetLength());
|
||||||
|
String content = BZ2Decompress(bz);
|
||||||
|
SVRLOG("Content length = " << content.GetLength());
|
||||||
|
if(content.GetLength() != l)
|
||||||
|
return NFormat("ERROR(%s): file size (%d) doesn't match decompressed size %d", fn, l, content.GetLength());
|
||||||
|
RealizePath(fn);
|
||||||
|
if(!SaveFile(fn, content) || !FileSetTime(fn, time))
|
||||||
|
return NFormat("ERROR(%s): cannot write file", fn);
|
||||||
|
SVRLOG(NFormat("FileSetTime(%s, %`) -> %`", fn, time, FileGetTime(fn)));
|
||||||
|
while(*f && *f++ != '\n')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
SVRLOG("// CommandServer::UploadFiles");
|
||||||
|
return "OK";
|
||||||
|
}
|
||||||
|
|
||||||
|
String CommandServer::DownloadFiles(const char *f)
|
||||||
|
{
|
||||||
|
int line = 0;
|
||||||
|
String output;
|
||||||
|
while(*f)
|
||||||
|
{
|
||||||
|
line++;
|
||||||
|
const char *b = f;
|
||||||
|
while(*f && *f != '\n')
|
||||||
|
f++;
|
||||||
|
String fn(b, f);
|
||||||
|
FindFile ff;
|
||||||
|
output << fn;
|
||||||
|
String nfn = NativePath(fn);
|
||||||
|
if(ff.Search(nfn))
|
||||||
|
{
|
||||||
|
String data = LoadFile(nfn);
|
||||||
|
output << '\t' << data.GetLength() << '\t' << ASCII85Encode(BZ2Compress(data));
|
||||||
|
}
|
||||||
|
output << "\n";
|
||||||
|
while(*f && *f++ != '\n')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
String CommandServer::CreateDir(const char *f)
|
||||||
|
{
|
||||||
|
RealizeDirectory(f);
|
||||||
|
return "OK";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void CommandServer::RunCommand(const String& _command, Socket& socket)
|
||||||
|
{
|
||||||
|
String command = _command;
|
||||||
|
#ifdef PLATFORM_WIN32
|
||||||
|
if(*command == '/')
|
||||||
|
command = "x:" + command;
|
||||||
|
#endif
|
||||||
|
LOG("CommandServer::RunCommand(" << command << ")");
|
||||||
|
One<SlaveProcess> process = StartProcess(command);
|
||||||
|
LOG("CommandServer::RunCommand -> OK");
|
||||||
|
socket.Send("+\0", 2);
|
||||||
|
bool work = false, running;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if(socket.Peek())
|
||||||
|
{
|
||||||
|
SVRLOG("-> socket peek");
|
||||||
|
String inp = socket.Recv(0 | Socket::MULTIPART);
|
||||||
|
SVRLOG("-> input data: <" << inp << ">");
|
||||||
|
if(!inp.IsEmpty())
|
||||||
|
{
|
||||||
|
work = true;
|
||||||
|
process -> Write(inp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String out = Null;
|
||||||
|
running = process -> Read(out);
|
||||||
|
// SVRLOG("-> output data: <" << out << ">");
|
||||||
|
if(!out.IsEmpty())
|
||||||
|
{
|
||||||
|
work = true;
|
||||||
|
socket.Send(out);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
MtSleep(200);
|
||||||
|
// SVRLOG("work = " << work << ", running = " << running);
|
||||||
|
// if(!work && running)
|
||||||
|
}
|
||||||
|
while(running);
|
||||||
|
socket.Send("\0", 1);
|
||||||
|
LOG("Process terminated, exit code = " << process -> GetExitCode());
|
||||||
|
String ec = IntStr(process -> GetExitCode());
|
||||||
|
socket.Send(ec, ec.GetLength() + 1);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void CommandServer::Execute(Socket& socket)
|
||||||
|
{
|
||||||
|
String cmd = socket.ReadUntil('\0', Null, 10000000);
|
||||||
|
if(logging)
|
||||||
|
puts(cmd);
|
||||||
|
SVRLOG(cmd);
|
||||||
|
String out;
|
||||||
|
const char *data = cmd;
|
||||||
|
switch(*data++)
|
||||||
|
{
|
||||||
|
case '?':
|
||||||
|
out = "+" TSERV_VERSION "\x1A";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '.':
|
||||||
|
Quit();
|
||||||
|
out = ".QUITTING\x1A";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ':':
|
||||||
|
case '=':
|
||||||
|
connections.Add(new CommandConnection(socket, cmd));
|
||||||
|
return;
|
||||||
|
|
||||||
|
case '-':
|
||||||
|
out = FileRemove(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '~':
|
||||||
|
out = DeleteFolderDeep(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '<':
|
||||||
|
out = CheckFiles(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '>':
|
||||||
|
out = UploadFiles(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '^':
|
||||||
|
out = DownloadFiles(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '*':
|
||||||
|
out = CreateDir(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '@':
|
||||||
|
out = GetFileInfo(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw Exc(NFormat("Invalid command: '%s'", cmd));
|
||||||
|
}
|
||||||
|
socket.Write(out);
|
||||||
|
socket.Write("\0", 1);
|
||||||
|
socket.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandServer::ExecTimer()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CommandServer::StartServer(int port, const String& cmdline)
|
||||||
|
{
|
||||||
|
#ifdef PLATFORM_WIN32
|
||||||
|
STARTUPINFO sinfo;
|
||||||
|
GetStartupInfo(&sinfo);
|
||||||
|
PROCESS_INFORMATION pinfo;
|
||||||
|
Buffer<char> cmd(cmdline.GetLength() + 1);
|
||||||
|
memcpy(cmd, cmdline, cmdline.GetLength() + 1);
|
||||||
|
if(!CreateProcess(NULL, cmd, NULL, NULL, false,
|
||||||
|
CREATE_NO_WINDOW, NULL, NULL, &sinfo, &pinfo))
|
||||||
|
throw Exc(NFormat("Cannot create process '%s':\n%s", cmdline, GetErrorMessage(GetLastError())));
|
||||||
|
// detach from process
|
||||||
|
CloseHandle(pinfo.hThread);
|
||||||
|
CloseHandle(pinfo.hProcess);
|
||||||
|
#else
|
||||||
|
pid_t pid = fork();
|
||||||
|
if(pid == -1)
|
||||||
|
throw Exc(NFormat("Error executing fork(), error code: %d", errno));
|
||||||
|
// printf("fork -> %d\n", pid);
|
||||||
|
if(!pid)
|
||||||
|
{ // new process, return true to fall through to server loop
|
||||||
|
Logging(false);
|
||||||
|
Timing(false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Socket::Init();
|
||||||
|
String sockerr;
|
||||||
|
String self = Socket::GetHostName();
|
||||||
|
Socket socket;
|
||||||
|
if(!ClientSocket(socket, self, port))
|
||||||
|
throw Exc(NFormat("Error opening server %s:%d: %s", self, port, Socket::GetErrorText()));
|
||||||
|
socket.Write("?\n");
|
||||||
|
String res = socket.ReadUntil('\x1A');
|
||||||
|
if(*res == '\x08')
|
||||||
|
throw Exc(res.Mid(1));
|
||||||
|
if(res != TSERV_VERSION)
|
||||||
|
throw Exc("Cannot run server process.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandServer::StopServer(int port)
|
||||||
|
{
|
||||||
|
Socket::Init();
|
||||||
|
Socket socket;
|
||||||
|
if(!ClientSocket(socket, Socket::GetHostName(), port))
|
||||||
|
throw Exc(NFormat("Error opening server at port %d", port));
|
||||||
|
socket.Write(".\n");
|
||||||
|
socket.ReadUntil('\x1A');
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandServer::RunServer(int port)
|
||||||
|
{
|
||||||
|
// thread_count = 0;
|
||||||
|
|
||||||
|
puts(NFormat("Running server at port %d", port));
|
||||||
|
if(logging)
|
||||||
|
puts(NFormat("Creating server socket at port %d ...", port));
|
||||||
|
|
||||||
|
String error;
|
||||||
|
Socket server;
|
||||||
|
if(!ServerSocket(server, port, true, 100)) {
|
||||||
|
puts(NFormat("Error creating server socket at port %d: %s", port, Socket::GetErrorText()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
server.NoLinger();
|
||||||
|
|
||||||
|
if(logging) {
|
||||||
|
if(ip_filter.IsEmpty())
|
||||||
|
puts("IP Filtering: off (accepting requests from all IP addresses)");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fputs("IP filter:", stdout);
|
||||||
|
for(int i = 0; i < ip_filter.GetCount(); i++)
|
||||||
|
fputs(' ' + FormatIP(ip_filter[i]), stdout);
|
||||||
|
putc('\n', stdout);
|
||||||
|
}
|
||||||
|
puts("Running accept loop ...");
|
||||||
|
}
|
||||||
|
|
||||||
|
dword ipaddr;
|
||||||
|
dword ticks = GetTickCount() + 1000;
|
||||||
|
for(quit_flag = false; !quit_flag && !quit_signal;)
|
||||||
|
{
|
||||||
|
bool work = false;
|
||||||
|
Socket connection;
|
||||||
|
if(server.Accept(connection, &ipaddr, true, timer_chunk))
|
||||||
|
{
|
||||||
|
work = true;
|
||||||
|
if(logging)
|
||||||
|
{
|
||||||
|
fputc('\r', stderr);
|
||||||
|
fputs(Format(GetSysTime()), stderr);
|
||||||
|
fflush(stderr);
|
||||||
|
}
|
||||||
|
ExecTimer();
|
||||||
|
if(!connection.IsOpen())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(!ip_filter.IsEmpty() && ip_filter.Find(ipaddr) < 0)
|
||||||
|
throw Exc(NFormat("Invalid request source IP address: %s", FormatIP(ipaddr)));
|
||||||
|
Execute(connection);
|
||||||
|
}
|
||||||
|
catch(Exc e)
|
||||||
|
{
|
||||||
|
if(connection.IsOpen())
|
||||||
|
connection.Write('-' + e + '\0');
|
||||||
|
if(logging)
|
||||||
|
puts(NFormat("ERROR: %s", e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!connections.IsEmpty())
|
||||||
|
{
|
||||||
|
for(int i = connections.GetCount(); --i >= 0;)
|
||||||
|
{
|
||||||
|
Connection& conn = connections[i];
|
||||||
|
bool err = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if(conn.Run())
|
||||||
|
work = true;
|
||||||
|
}
|
||||||
|
catch(Exc e)
|
||||||
|
{
|
||||||
|
puts(NFormat("%s: %s", conn.GetName(), e));
|
||||||
|
err = true;
|
||||||
|
}
|
||||||
|
if(err || conn.IsEof())
|
||||||
|
{
|
||||||
|
connections.Remove(i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!work)
|
||||||
|
Sleep(timer_chunk);
|
||||||
|
dword new_ticks = GetTickCount();
|
||||||
|
if(new_ticks >= ticks)
|
||||||
|
{
|
||||||
|
ticks = new_ticks + 1000;
|
||||||
|
fputs(String().Cat() << "\r" << Format(GetSysTime()), stderr);
|
||||||
|
fflush(stderr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(logging)
|
||||||
|
fputs("\nServer is shutting down ... \n", stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
static void PutConsole(const char *p)
|
||||||
|
{
|
||||||
|
enum { ROW_BATCH = 20 };
|
||||||
|
int rows = ROW_BATCH;
|
||||||
|
int col = 0;
|
||||||
|
const char *b = p;
|
||||||
|
|
||||||
|
while(*p)
|
||||||
|
{
|
||||||
|
char c = *p;
|
||||||
|
putchar(c);
|
||||||
|
if(*p++ == '\n' || ++col >= 70)
|
||||||
|
{
|
||||||
|
col = 0;
|
||||||
|
if(*p && --rows <= 0)
|
||||||
|
{
|
||||||
|
rows = ROW_BATCH;
|
||||||
|
fputs("\n==== Pokracovat pomoci Enter ====\n", stdout);
|
||||||
|
fflush(stdout);
|
||||||
|
bool quit = false;
|
||||||
|
for(int c; (c = getchar()) >= 0 && c != '\n'; quit |= (c == 'Q' || c == 'q'))
|
||||||
|
;
|
||||||
|
if(quit)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(p > b && p[-1] != '\n')
|
||||||
|
putchar('\n');
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
String CommandServer::GetConInput(const char *prompt)
|
||||||
|
{
|
||||||
|
fputc('\n', stdout);
|
||||||
|
fputs(prompt, stdout);
|
||||||
|
int i = getchar();
|
||||||
|
if(i == EOF)
|
||||||
|
return String::GetVoid();
|
||||||
|
String s;
|
||||||
|
while(i != '\n')
|
||||||
|
{
|
||||||
|
s.Cat(i);
|
||||||
|
if((i = getchar()) == EOF)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandServer::RunClient()
|
||||||
|
{
|
||||||
|
Socket::Init();
|
||||||
|
quit_flag = false;
|
||||||
|
for(String in; !quit_flag && !(in = GetConInput("run> ")).IsVoid();)
|
||||||
|
{
|
||||||
|
if(!CompareNoCase(in, "."))
|
||||||
|
break;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
One<SlaveProcess> sp = StartProcess(in);
|
||||||
|
for(String s; sp -> Read(s); fputs(s, stdout))
|
||||||
|
{
|
||||||
|
// puts("Flushing application...");
|
||||||
|
Sleep(500);
|
||||||
|
}
|
||||||
|
printf("\nTerminated, exit code = %d\n", sp -> GetExitCode());
|
||||||
|
}
|
||||||
|
catch(Exc e)
|
||||||
|
{
|
||||||
|
puts("Error: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TryMain()
|
||||||
|
{
|
||||||
|
bool start = false;
|
||||||
|
bool stop = false;
|
||||||
|
int port = -1;
|
||||||
|
|
||||||
|
CommandServer server;
|
||||||
|
Vector<String> cmdline;
|
||||||
|
cmdline <<= CommandLine();
|
||||||
|
|
||||||
|
for(int c = 0; c < cmdline.GetCount(); c++)
|
||||||
|
{
|
||||||
|
const char *arg = cmdline[c];
|
||||||
|
if(*arg == '-')
|
||||||
|
switch(arg++, *arg++)
|
||||||
|
{
|
||||||
|
case 'r': start = true; break;
|
||||||
|
case 's': stop = true; break;
|
||||||
|
default: throw Exc(NFormat("invalid option: '%s'", cmdline[c]));
|
||||||
|
}
|
||||||
|
else if(IsDigit(*arg))
|
||||||
|
{ // port number
|
||||||
|
port = atoi(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool noport = (port < 0);
|
||||||
|
if(noport)
|
||||||
|
port = DEFAULT_PORT;
|
||||||
|
|
||||||
|
if(stop)
|
||||||
|
{
|
||||||
|
server.StopServer(port);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(noport)
|
||||||
|
{ // run client against host
|
||||||
|
server.RunClient();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(start)
|
||||||
|
{
|
||||||
|
String cmd_line;
|
||||||
|
cmd_line << port;
|
||||||
|
if(!server.StartServer(port, cmd_line))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
server.RunServer(port);
|
||||||
|
}
|
||||||
|
|
||||||
|
CONSOLE_APP_MAIN
|
||||||
|
{
|
||||||
|
#ifdef PLATFORM_POSIX
|
||||||
|
signal(SIGPIPE, SIG_IGN);
|
||||||
|
signal(SIGINT, &QuitSignal);
|
||||||
|
signal(SIGTERM, &QuitSignal);
|
||||||
|
#endif//PLATFORM_POSIX
|
||||||
|
puts(String().Cat() << "TSERV " TSERV_VERSION ", release date: " << TSERV_DATE << "\n"
|
||||||
|
TSERV_COPYRIGHT);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Vector<String> test;
|
||||||
|
for(int i = 0; i < 1000; i++)
|
||||||
|
test.Add(GetRandomIdent(10000));
|
||||||
|
test.Clear();
|
||||||
|
|
||||||
|
puts("Done !");
|
||||||
|
SetExitCode(111);
|
||||||
|
return;
|
||||||
|
*/
|
||||||
|
int retcode = 1;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// SetLanguage(LNG_ENGLISH);
|
||||||
|
TryMain();
|
||||||
|
}
|
||||||
|
catch(Exc e)
|
||||||
|
{
|
||||||
|
puts("Error: " + e);
|
||||||
|
SetExitCode(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
3
uppsrc2/TServ/version.h
Normal file
3
uppsrc2/TServ/version.h
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#define TSERV_VERSION "2.17c"
|
||||||
|
#define TSERV_DATE Date(2007, 6, 5)
|
||||||
|
#define TSERV_COPYRIGHT "Copyright (c) 2001-2007 Tomas Rylek"
|
||||||
174
uppsrc2/rw/Alias.cpp
Normal file
174
uppsrc2/rw/Alias.cpp
Normal file
|
|
@ -0,0 +1,174 @@
|
||||||
|
#include "Designer.h"
|
||||||
|
|
||||||
|
String AliasMap::StdFileName()
|
||||||
|
{
|
||||||
|
return ConfigFile("rw.ali");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AliasMap::Load(const char *path)
|
||||||
|
{
|
||||||
|
String file = LoadFile(path);
|
||||||
|
if(file.IsVoid())
|
||||||
|
return false;
|
||||||
|
obj_source.Clear();
|
||||||
|
obj_dest.Clear();
|
||||||
|
for(const char *s = file; *s;)
|
||||||
|
{
|
||||||
|
bool is_dest = (*s == ' ' || *s == '\t');
|
||||||
|
while(*s == ' ' || *s == '\t')
|
||||||
|
s++;
|
||||||
|
const char *b = s;
|
||||||
|
while(*s && *s != '\n')
|
||||||
|
s++;
|
||||||
|
const char *e = s;
|
||||||
|
while(e > b && (byte)e[-1] <= ' ')
|
||||||
|
e--;
|
||||||
|
String part(b, e);
|
||||||
|
if(is_dest)
|
||||||
|
{
|
||||||
|
while(obj_dest.GetCount() < obj_source.GetCount())
|
||||||
|
obj_dest.Add(part);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
obj_source.Add(part);
|
||||||
|
if(*s)
|
||||||
|
s++;
|
||||||
|
}
|
||||||
|
if(obj_dest.GetCount() < obj_source.GetCount())
|
||||||
|
obj_source.SetCount(obj_dest.GetCount());
|
||||||
|
IndexSort(obj_source, obj_dest, StdLess<String>());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AliasMap::Save(const char *path)
|
||||||
|
{
|
||||||
|
IndexSort(obj_dest, obj_source, StdLess<String>());
|
||||||
|
String out;
|
||||||
|
for(int i = 0; i < obj_source.GetCount(); i++)
|
||||||
|
{
|
||||||
|
out.Cat(obj_source[i]);
|
||||||
|
out.Cat("\r\n");
|
||||||
|
if(i + 1 >= obj_source.GetCount() || obj_dest[i + 1] != obj_dest[i])
|
||||||
|
{
|
||||||
|
out.Cat('\t');
|
||||||
|
out.Cat(obj_dest[i]);
|
||||||
|
out.Cat("\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IndexSort(obj_source, obj_dest, StdLess<String>());
|
||||||
|
return SaveFile(path, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AliasMap::SetDefault()
|
||||||
|
{
|
||||||
|
obj_source.Add("WithKeyMap<*>"); obj_dest.Add("@1");
|
||||||
|
obj_source.Add("WithDropChoice<*>"); obj_dest.Add("@1");
|
||||||
|
obj_source.Add("WithChoiceList<*>"); obj_dest.Add("@1");
|
||||||
|
obj_source.Add("EditDoubleSpin"); obj_dest.Add("EditDouble");
|
||||||
|
obj_source.Add("EditDoubleNotNullSpin"); obj_dest.Add("EditDouble");
|
||||||
|
obj_source.Add("Ctrl"); obj_dest.Add("Label");
|
||||||
|
obj_source.Add("NotNullCtrl<*>"); obj_dest.Add("@1");
|
||||||
|
obj_source.Add("SqlArray"); obj_dest.Add("ArrayCtrl");
|
||||||
|
obj_source.Add("DataPusher"); obj_dest.Add("EditField");
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool MatchAlias(const char *s, const char *t, Vector<String>& a)
|
||||||
|
{
|
||||||
|
while(*t)
|
||||||
|
switch(*t++)
|
||||||
|
{
|
||||||
|
case '*':
|
||||||
|
{
|
||||||
|
const char *b = s;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
a.Add(String(b, s));
|
||||||
|
if(MatchAlias(s, t, a))
|
||||||
|
return true;
|
||||||
|
a.Drop();
|
||||||
|
}
|
||||||
|
while(*s++);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
if(t[-1] != *s++)
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return !*s;
|
||||||
|
}
|
||||||
|
|
||||||
|
String AliasMap::Convert(const String& name) const
|
||||||
|
{
|
||||||
|
for(int i = 0; i < obj_source.GetCount(); i++)
|
||||||
|
{
|
||||||
|
Vector<String> args;
|
||||||
|
if(MatchAlias(name, obj_source[i], args))
|
||||||
|
{
|
||||||
|
const char *s = obj_dest[i];
|
||||||
|
String out;
|
||||||
|
while(*s)
|
||||||
|
if(*s == '@' && (s[1] >= '1' && s[1] < '1' + min(args.GetCount(), 10)))
|
||||||
|
{
|
||||||
|
s += 2;
|
||||||
|
out.Cat(args[s[-1] - '1']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
out.Cat(*s++);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
class DlgAlias : public WithAliasLayout<TopWindow>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef DlgAlias CLASSNAME;
|
||||||
|
DlgAlias();
|
||||||
|
|
||||||
|
bool Run(AliasMap& map);
|
||||||
|
|
||||||
|
private:
|
||||||
|
EditStringNotNull obj_source;
|
||||||
|
EditStringNotNull obj_dest;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool AliasMap::Edit()
|
||||||
|
{
|
||||||
|
return DlgAlias().Run(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
DlgAlias::DlgAlias()
|
||||||
|
{
|
||||||
|
CtrlLayoutOKCancel(*this, "Object alias map");
|
||||||
|
list.AutoHideSb();
|
||||||
|
list.AddColumn("Source object").Edit(obj_source);
|
||||||
|
list.AddColumn("Alias object").Edit(obj_dest);
|
||||||
|
list.Inserting().Removing().NoAskRemove();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DlgAlias::Run(AliasMap& map)
|
||||||
|
{
|
||||||
|
list.SetCount(map.obj_source.GetCount());
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < map.obj_source.GetCount(); i++)
|
||||||
|
{
|
||||||
|
list.Set(i, 0, map.obj_source[i]);
|
||||||
|
list.Set(i, 1, map.obj_dest[i]);
|
||||||
|
}
|
||||||
|
if(!map.obj_source.IsEmpty())
|
||||||
|
list.SetCursor(0);
|
||||||
|
if(TopWindow::Run() != IDOK)
|
||||||
|
return false;
|
||||||
|
int n = list.GetCount();
|
||||||
|
map.obj_source.SetCount(n);
|
||||||
|
map.obj_dest.SetCount(n);
|
||||||
|
for(i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
map.obj_source[i] = list.Get(i, 0);
|
||||||
|
map.obj_dest[i] = list.Get(i, 1);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
21
uppsrc2/rw/Copying
Normal file
21
uppsrc2/rw/Copying
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
Copyright 1998-2008 The U++ Project. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||||
|
provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of
|
||||||
|
conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE U++ PROJECT ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD PROJECT OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
1217
uppsrc2/rw/Designer.cpp
Normal file
1217
uppsrc2/rw/Designer.cpp
Normal file
File diff suppressed because it is too large
Load diff
401
uppsrc2/rw/Designer.h
Normal file
401
uppsrc2/rw/Designer.h
Normal file
|
|
@ -0,0 +1,401 @@
|
||||||
|
#include <CtrlLib/CtrlLib.h>
|
||||||
|
|
||||||
|
#define LAYOUTFILE <rw/Designer.lay>
|
||||||
|
#include <CtrlCore/lay.h>
|
||||||
|
|
||||||
|
#define IMAGEFILE <rw/rw.iml>
|
||||||
|
#include <Draw/iml_header.h>
|
||||||
|
|
||||||
|
const Display& VarLblDisplay(bool selected);
|
||||||
|
|
||||||
|
typedef Ctrl *(*CtrlCreator)();
|
||||||
|
|
||||||
|
class AliasMap {
|
||||||
|
public:
|
||||||
|
AliasMap() {}
|
||||||
|
|
||||||
|
static String StdFileName();
|
||||||
|
|
||||||
|
bool IsEmpty() const { return obj_source.IsEmpty(); }
|
||||||
|
|
||||||
|
bool Edit();
|
||||||
|
|
||||||
|
bool Load(const char *path);
|
||||||
|
bool Save(const char *path);
|
||||||
|
void SetDefault();
|
||||||
|
|
||||||
|
String Convert(const String& name) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Vector<String> obj_source;
|
||||||
|
Vector<String> obj_dest;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SelectedDisplay : public Display {
|
||||||
|
virtual void Paint(Draw& w, const Rect& r, const Value& q, Color i, Color p, dword s) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const SelectedDisplay SelDisplay;
|
||||||
|
|
||||||
|
class LayoutDesigner : public Ctrl {
|
||||||
|
public:
|
||||||
|
virtual void Paint(Draw& w);
|
||||||
|
virtual Image CursorImage(Point p, dword keyflags);
|
||||||
|
virtual void LeftDown(Point p, dword keyflags);
|
||||||
|
virtual void LeftRepeat(Point p, dword keyflags);
|
||||||
|
virtual void LeftUp(Point p, dword keyflags);
|
||||||
|
virtual void RightDown(Point p, dword keyflags);
|
||||||
|
virtual void MouseMove(Point p, dword keyflags);
|
||||||
|
virtual bool Key(dword key, int count);
|
||||||
|
virtual void Layout();
|
||||||
|
virtual void Serialize(Stream& s);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
enum {
|
||||||
|
LEFT,
|
||||||
|
CENTER,
|
||||||
|
RIGHT,
|
||||||
|
TOP = LEFT,
|
||||||
|
BOTTOM = RIGHT,
|
||||||
|
FORM,
|
||||||
|
SELECTRECT,
|
||||||
|
|
||||||
|
TRACKERSIZE = 6,
|
||||||
|
|
||||||
|
SLEFT = 0,
|
||||||
|
SRIGHT,
|
||||||
|
STOP,
|
||||||
|
SBOTTOM,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ITEMPOS
|
||||||
|
{
|
||||||
|
POS_NONE,
|
||||||
|
POS_AUTO,
|
||||||
|
POS_LEFT,
|
||||||
|
POS_CENTER,
|
||||||
|
POS_RIGHT,
|
||||||
|
POS_SIZE,
|
||||||
|
POS_TOP = POS_LEFT,
|
||||||
|
POS_BOTTOM = POS_RIGHT,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ItemInfo {
|
||||||
|
LogPos pos;
|
||||||
|
String classname;
|
||||||
|
String variable;
|
||||||
|
String labelid;
|
||||||
|
String helpid;
|
||||||
|
Vector<String> label;
|
||||||
|
Vector<String> help;
|
||||||
|
dword hotkey;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Form {
|
||||||
|
String name;
|
||||||
|
Size size;
|
||||||
|
Array<ItemInfo> item;
|
||||||
|
};
|
||||||
|
|
||||||
|
Array<Form> layout;
|
||||||
|
int layouti;
|
||||||
|
int langi;
|
||||||
|
|
||||||
|
DropList layoutlist;
|
||||||
|
DropList langlist;
|
||||||
|
|
||||||
|
CallbackArg<int> classset;
|
||||||
|
Point newctrl;
|
||||||
|
|
||||||
|
WithGridLayout<TopWindow> grid;
|
||||||
|
bool usegrid;
|
||||||
|
bool ignoremin;
|
||||||
|
bool qlib2_output;
|
||||||
|
|
||||||
|
WithMatrixLayout<TopWindow> matrix;
|
||||||
|
|
||||||
|
String filename;
|
||||||
|
FileSel filesel;
|
||||||
|
LRUList LruList;
|
||||||
|
|
||||||
|
AliasMap alias_map;
|
||||||
|
String alias_map_file;
|
||||||
|
|
||||||
|
Rect selectrect;
|
||||||
|
Point track;
|
||||||
|
Vector<int> itemi;
|
||||||
|
Vector<Point> melta;
|
||||||
|
Point delta;
|
||||||
|
bool moved;
|
||||||
|
bool cltm;
|
||||||
|
|
||||||
|
Ctrl design;
|
||||||
|
Splitter splital;
|
||||||
|
|
||||||
|
ArrayCtrl itab;
|
||||||
|
|
||||||
|
Splitter props;
|
||||||
|
Splitter label_help_split;
|
||||||
|
Ctrl class_var_lbl;
|
||||||
|
WithDropChoice<EditString> classname;
|
||||||
|
EditString variable;
|
||||||
|
DocEdit label;
|
||||||
|
DocEdit help;
|
||||||
|
|
||||||
|
struct DesignForm;
|
||||||
|
friend struct DesignForm;
|
||||||
|
struct DesignForm : public Ctrl {
|
||||||
|
virtual void Paint(Draw& w) { ld->PaintForm(w); }
|
||||||
|
LayoutDesigner *ld;
|
||||||
|
};
|
||||||
|
|
||||||
|
DesignForm form;
|
||||||
|
Array<Ctrl> ctrl;
|
||||||
|
Array<Ctrl> ref_ctrl;
|
||||||
|
Array<Ctrl> mnem_ctrl;
|
||||||
|
|
||||||
|
ScrollBars sb;
|
||||||
|
|
||||||
|
struct AfterPaint;
|
||||||
|
friend struct AfterPaint;
|
||||||
|
|
||||||
|
struct AfterPaint : public Ctrl {
|
||||||
|
virtual void Paint(Draw& w) { ld->PaintTrack(w); }
|
||||||
|
LayoutDesigner *ld;
|
||||||
|
};
|
||||||
|
|
||||||
|
AfterPaint apaint;
|
||||||
|
|
||||||
|
MenuBar menubar;
|
||||||
|
ToolBar toolbar;
|
||||||
|
FrameRight<Label> status;
|
||||||
|
|
||||||
|
static VectorMap<String, CtrlCreator>& ClassMap();
|
||||||
|
|
||||||
|
struct Frame;
|
||||||
|
friend struct Frame;
|
||||||
|
struct Frame : public TopWindow {
|
||||||
|
void WindowClose() { ld->CloseFile(); }
|
||||||
|
virtual bool Key(dword k, int c) { return ld->Key(k, c) ? true : TopWindow::Key(k, c); }
|
||||||
|
LayoutDesigner *ld;
|
||||||
|
|
||||||
|
Frame() { WhenClose = callback(this, &Frame::WindowClose); }
|
||||||
|
};
|
||||||
|
|
||||||
|
Frame frame;
|
||||||
|
|
||||||
|
static int GetTrack(int a, int b, int type);
|
||||||
|
static Image GetTrackShape(Point track);
|
||||||
|
|
||||||
|
String& Lng(Vector<String>& x) { return x.At(langi); }
|
||||||
|
String Lng(const Vector<String>& x) const;
|
||||||
|
Form& ActualForm() { return layout[layouti]; }
|
||||||
|
const Form& ActualForm() const { return layout[layouti]; }
|
||||||
|
ItemInfo& Item(int i) { return ActualForm().item[i]; }
|
||||||
|
const ItemInfo& Item(int i) const { return ActualForm().item[i]; }
|
||||||
|
int ItemCount() { return ActualForm().item.GetCount(); }
|
||||||
|
//G++ bug
|
||||||
|
String& ItemLabel(int i);
|
||||||
|
String ItemLabel(int i) const;
|
||||||
|
String& Help(int i);
|
||||||
|
String Help(int i) const;
|
||||||
|
|
||||||
|
Ctrl *CreateCtrl(const String& classname);
|
||||||
|
Ctrl *CreateCtrl(const String& classname, Index<String>& recursed);
|
||||||
|
Ctrl *CreateLayoutCtrl(String classname, Index<String>& recursed);
|
||||||
|
|
||||||
|
int ParseLayoutRef(String cls, String& base) const;
|
||||||
|
bool IsLayoutRef(String cls) const { String dummy; return ParseLayoutRef(cls, dummy) >= 0; }
|
||||||
|
void SynchronizeCtrl(int im);
|
||||||
|
void SynchronizeCtrl(Ctrl& ctrl, const ItemInfo& ii);
|
||||||
|
void SynchronizeCtrl();
|
||||||
|
void SynchronizeCtrls();
|
||||||
|
void SynchronizeMnemonic();
|
||||||
|
void CleanRefCtrl();
|
||||||
|
void AddCtrl(const String& cls, const String& var, const String& lbl, const String& hlp);
|
||||||
|
void SetClass(int im);
|
||||||
|
void UpdateClassList();
|
||||||
|
|
||||||
|
void LoadCtrl(CParser& p, ItemInfo& ii, int langi = 0);
|
||||||
|
String SaveCtrl(const ItemInfo& ii, int i, const String& name, bool lang) const;
|
||||||
|
|
||||||
|
Rect GetSpringRect(int i);
|
||||||
|
Rect GetTracker(Point track);
|
||||||
|
Point FindTracker(Point p);
|
||||||
|
Rect GetCtrlRect(int i);
|
||||||
|
Rect GetActualRect();
|
||||||
|
Rect GetActual();
|
||||||
|
void RefreshActual();
|
||||||
|
int FindItem(Point p);
|
||||||
|
void DrawHorzSpring(Draw& w, int i);
|
||||||
|
void DrawVertSpring(Draw& w, int i);
|
||||||
|
void PaintTrack(Draw& w);
|
||||||
|
void PaintForm(Draw& w);
|
||||||
|
void StartMoving(Point p);
|
||||||
|
void DoMoving();
|
||||||
|
bool IsMoving();
|
||||||
|
bool GetSpring(int im, int i);
|
||||||
|
bool GetSpring(int i);
|
||||||
|
void SetItemPos(int i, const Rect& r, int chi = -1, bool val = false, bool sync = true);
|
||||||
|
void SetActualPos(const Rect& r, int chi = -1, bool val = false);
|
||||||
|
void ShowHideLayouts();
|
||||||
|
// void SetAutoItemPos(int i, const Rect& r);
|
||||||
|
void WhenITab();
|
||||||
|
void NewClass();
|
||||||
|
void NewVariable();
|
||||||
|
void NewLabel();
|
||||||
|
void NewHelp();
|
||||||
|
void SetFormSize(Size sz);
|
||||||
|
void ClassMenu(Bar& menu);
|
||||||
|
void NewCtrl(int i);
|
||||||
|
|
||||||
|
int FindSelect(int im);
|
||||||
|
void SelectItem(int im);
|
||||||
|
void SelectOneItem(int im);
|
||||||
|
void UnselectItem(int im);
|
||||||
|
bool ItemSelected(int im) { return FindSelect(im) >= 0; }
|
||||||
|
void ClearSelection();
|
||||||
|
void ClearSelection0();
|
||||||
|
void RefreshSelect(int i);
|
||||||
|
void SelectToEnd(int i);
|
||||||
|
|
||||||
|
void RefreshSelectRect();
|
||||||
|
|
||||||
|
void Swap(int i1, int i2);
|
||||||
|
void SetLayout(int i, int li);
|
||||||
|
void SetLayout(int i) { SetLayout(i, langi); }
|
||||||
|
void EnterLayout();
|
||||||
|
void EnterLanguage();
|
||||||
|
void Scroll();
|
||||||
|
void ItemPos(int xy_long);
|
||||||
|
int GetItemPosMask() const;
|
||||||
|
|
||||||
|
void SetupLayoutList();
|
||||||
|
void NewLayout();
|
||||||
|
void RemoveLayout();
|
||||||
|
void RenameLayout();
|
||||||
|
void PrevLayout();
|
||||||
|
void NextLayout();
|
||||||
|
|
||||||
|
bool SaveLayoutFileAs();
|
||||||
|
|
||||||
|
bool DoSave();
|
||||||
|
bool PromptSave();
|
||||||
|
void LruOpen(const String& s);
|
||||||
|
void MakeCaption();
|
||||||
|
void OpenFile();
|
||||||
|
void SaveFile();
|
||||||
|
void SaveFileAs();
|
||||||
|
void CloseFile();
|
||||||
|
void NewFile();
|
||||||
|
|
||||||
|
#ifdef flagIDERW
|
||||||
|
void CloseDesigner();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void SetupAlias();
|
||||||
|
void SetupGrid();
|
||||||
|
void ToggleGrid();
|
||||||
|
void ToggleIgnoreMin();
|
||||||
|
void ToggleQLIB2Output();
|
||||||
|
int GridX() { return usegrid ? max((int)~grid.x, 1) : 1; }
|
||||||
|
int GridY() { return usegrid ? max((int)~grid.y, 1) : 1; }
|
||||||
|
|
||||||
|
void AddItem();
|
||||||
|
void MoveUp();
|
||||||
|
void MoveDown();
|
||||||
|
|
||||||
|
void DoDuplicate(const Vector<int>& imi, int dx, int dy);
|
||||||
|
void KeyMove(int dx, int dy, int sx, int sy);
|
||||||
|
|
||||||
|
void Copy();
|
||||||
|
void Cut();
|
||||||
|
void Paste();
|
||||||
|
void Delete();
|
||||||
|
void Duplicate();
|
||||||
|
void SelectAll();
|
||||||
|
|
||||||
|
void VertCenter();
|
||||||
|
void HorzCenter();
|
||||||
|
void AlignLeft();
|
||||||
|
void AlignRight();
|
||||||
|
void AlignTop();
|
||||||
|
void AlignBottom();
|
||||||
|
void AlignHCenter();
|
||||||
|
void AlignVCenter();
|
||||||
|
void SameWidth();
|
||||||
|
void SameHeight();
|
||||||
|
void SameSize();
|
||||||
|
void MinWidth();
|
||||||
|
void MinHeight();
|
||||||
|
void Matrix();
|
||||||
|
void AlignLbl();
|
||||||
|
|
||||||
|
void ShowStatus();
|
||||||
|
|
||||||
|
Vector<String> CoreLangs();
|
||||||
|
void AddLang(const String& lang, bool copy);
|
||||||
|
void NewLanguage();
|
||||||
|
void RenameLanguage();
|
||||||
|
void RemoveLanguage();
|
||||||
|
void AddCoreLanguages();
|
||||||
|
void NextLang();
|
||||||
|
void PrevLang();
|
||||||
|
|
||||||
|
void FileBar(Bar& bar);
|
||||||
|
void LayoutBar(Bar& bar);
|
||||||
|
void SpringsBar(Bar& bar);
|
||||||
|
void AlignBar(Bar& bar);
|
||||||
|
void SizeBar(Bar& bar);
|
||||||
|
void ItemBar(Bar& bar);
|
||||||
|
void OptionsBar(Bar& bar);
|
||||||
|
void EditBar(Bar& bar);
|
||||||
|
void LangBar(Bar& bar);
|
||||||
|
void MainBar(Bar& bar);
|
||||||
|
|
||||||
|
void Tool(Bar& bar);
|
||||||
|
|
||||||
|
void SetBar();
|
||||||
|
|
||||||
|
public:
|
||||||
|
static void Register(const String& classname, CtrlCreator creator);
|
||||||
|
|
||||||
|
void LoadLayoutFile(const char *s);
|
||||||
|
bool SaveLayoutFile();
|
||||||
|
bool CloseLayoutFile();
|
||||||
|
String GetLayoutFile() const;
|
||||||
|
String GetFileName() const { return filename; }
|
||||||
|
|
||||||
|
void Execute();
|
||||||
|
void OpenWindow();
|
||||||
|
|
||||||
|
LayoutDesigner();
|
||||||
|
|
||||||
|
typedef LayoutDesigner CLASSNAME;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
class CtrlClassRegistrator {
|
||||||
|
public:
|
||||||
|
static Ctrl *Create() { return new T; }
|
||||||
|
|
||||||
|
CtrlClassRegistrator(const char *name) { LayoutDesigner::Register(name, Create); }
|
||||||
|
};
|
||||||
|
|
||||||
|
class UrgCtrl : public Ctrl {
|
||||||
|
public:
|
||||||
|
virtual void SetLabelText(const char *s);
|
||||||
|
virtual void Paint(Draw& w);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
String label;
|
||||||
|
String classname;
|
||||||
|
|
||||||
|
public:
|
||||||
|
UrgCtrl(const String& classname) : classname(classname) { SetFrame(InsetFrame()); }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define REGCTRLCLASS(x) static CtrlClassRegistrator<x > MK__s (#x);
|
||||||
|
|
||||||
|
void DesignLayout();
|
||||||
46
uppsrc2/rw/Designer.lay
Normal file
46
uppsrc2/rw/Designer.lay
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
#ifdef LAYOUTFILE
|
||||||
|
|
||||||
|
LAYOUT(LayoutLayout, 220, 60)
|
||||||
|
ITEM(Label, label1, SetLabel("&Layout:").LeftPosZ(4, 46).TopPosZ(4, 20))
|
||||||
|
ITEM(EditString, layout, HSizePosZ(52, 4).TopPosZ(4, 19))
|
||||||
|
ITEM(Button, ok, SetLabel("OK").RightPosZ(88, 80).BottomPosZ(4, 22))
|
||||||
|
ITEM(Button, cancel, SetLabel("Cancel").RightPosZ(4, 80).BottomPosZ(4, 22))
|
||||||
|
END_LAYOUT
|
||||||
|
|
||||||
|
LAYOUT(GridLayout, 172, 64)
|
||||||
|
ITEM(Label, dv___0, SetLabel("&X:").LeftPosZ(4, 12).TopPosZ(4, 20))
|
||||||
|
ITEM(EditIntSpin, x, LeftPosZ(18, 40).TopPosZ(4, 20))
|
||||||
|
ITEM(Label, dv___2, SetLabel("&Y:").LeftPosZ(90, 16).TopPosZ(4, 20))
|
||||||
|
ITEM(EditIntSpin, y, LeftPosZ(108, 40).TopPosZ(4, 20))
|
||||||
|
ITEM(Button, ok, SetLabel("OK").RightPosZ(88, 80).BottomPosZ(4, 22))
|
||||||
|
ITEM(Button, cancel, SetLabel("Cancel").RightPosZ(4, 80).BottomPosZ(4, 22))
|
||||||
|
END_LAYOUT
|
||||||
|
|
||||||
|
LAYOUT(MatrixLayout, 202, 86)
|
||||||
|
ITEM(Label, dv___0, SetLabel("&Horizontal").LeftPosZ(4, 54).TopPosZ(4, 19))
|
||||||
|
ITEM(EditIntSpin, x, LeftPosZ(60, 42).TopPosZ(4, 19))
|
||||||
|
ITEM(Label, dv___2, SetLabel("&spacing").LeftPosZ(108, 50).TopPosZ(4, 19))
|
||||||
|
ITEM(EditIntSpin, hspace, LeftPosZ(156, 42).TopPosZ(4, 19))
|
||||||
|
ITEM(Label, dv___4, SetLabel("&Vertical").LeftPosZ(4, 54).TopPosZ(28, 19))
|
||||||
|
ITEM(EditIntSpin, y, LeftPosZ(60, 42).TopPosZ(28, 19))
|
||||||
|
ITEM(Label, dv___6, SetLabel("s&pacing").LeftPosZ(108, 50).TopPosZ(28, 19))
|
||||||
|
ITEM(EditIntSpin, vspace, LeftPosZ(156, 42).TopPosZ(28, 19))
|
||||||
|
ITEM(Button, ok, SetLabel("OK").RightPosZ(88, 80).BottomPosZ(4, 22))
|
||||||
|
ITEM(Button, cancel, SetLabel("Cancel").RightPosZ(4, 80).BottomPosZ(4, 22))
|
||||||
|
END_LAYOUT
|
||||||
|
|
||||||
|
LAYOUT(LangLayout, 212, 82)
|
||||||
|
ITEM(Label, label1, SetLabel("&New language:").LeftPosZ(4, 76).TopPosZ(4, 19))
|
||||||
|
ITEM(WithDropChoice<EditString>, language, LeftPosZ(82, 126).TopPosZ(4, 19))
|
||||||
|
ITEM(Option, copy, SetLabel("&Copy current language").HSizePosZ(4, 4).TopPosZ(28, 18))
|
||||||
|
ITEM(Button, ok, SetLabel("OK").HSizePosZ(44, 88).BottomPosZ(4, 22))
|
||||||
|
ITEM(Button, cancel, SetLabel("Cancel").RightPosZ(4, 80).BottomPosZ(4, 22))
|
||||||
|
END_LAYOUT
|
||||||
|
|
||||||
|
LAYOUT(AliasLayout, 400, 400)
|
||||||
|
ITEM(ArrayCtrl, list, HSizePosZ(4, 4).VSizePosZ(4, 34))
|
||||||
|
ITEM(Button, ok, SetLabel("OK").RightPosZ(88, 80).BottomPosZ(4, 22))
|
||||||
|
ITEM(Button, cancel, SetLabel("Cancel").RightPosZ(4, 80).BottomPosZ(4, 22))
|
||||||
|
END_LAYOUT
|
||||||
|
|
||||||
|
#endif
|
||||||
421
uppsrc2/rw/DesignerFile.cpp
Normal file
421
uppsrc2/rw/DesignerFile.cpp
Normal file
|
|
@ -0,0 +1,421 @@
|
||||||
|
#include "Designer.h"
|
||||||
|
|
||||||
|
static Point sReadAB(CParser& p) {
|
||||||
|
Point pt;
|
||||||
|
p.PassChar('(');
|
||||||
|
pt.x = p.ReadInt();
|
||||||
|
p.PassChar(',');
|
||||||
|
pt.y = p.ReadInt();
|
||||||
|
p.PassChar(')');
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String ReadVar(CParser& p) {
|
||||||
|
String var;
|
||||||
|
for(;;) {
|
||||||
|
if(p.IsId())
|
||||||
|
var << p.ReadId();
|
||||||
|
else
|
||||||
|
if(p.IsInt())
|
||||||
|
var << p.ReadInt();
|
||||||
|
else
|
||||||
|
if(p.Char('.'))
|
||||||
|
var << '.';
|
||||||
|
else
|
||||||
|
if(p.Char('['))
|
||||||
|
var << '[';
|
||||||
|
else
|
||||||
|
if(p.Char(']'))
|
||||||
|
var << ']';
|
||||||
|
else
|
||||||
|
return var;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::LoadCtrl(CParser& p, ItemInfo& ii, int li) {
|
||||||
|
if(p.Id("ITEM")) {
|
||||||
|
p.PassChar('(');
|
||||||
|
if(p.IsId()) ii.classname = p.ReadIdt();
|
||||||
|
p.PassChar(',');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("UNTYPED"))
|
||||||
|
p.PassChar('(');
|
||||||
|
else
|
||||||
|
p.ThrowError("Bad item.");
|
||||||
|
if(p.IsId()) ii.variable = ReadVar(p);
|
||||||
|
if(strncmp(ii.variable, "dv___", 5) == 0)
|
||||||
|
ii.variable.Clear();
|
||||||
|
p.PassChar(',');
|
||||||
|
LogPos pos;
|
||||||
|
do {
|
||||||
|
if(p.Id("LeftPosZ") || p.Id("LeftPos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.x = PosLeft(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("RightPosZ") || p.Id("RightPos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.x = PosRight(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("HSizePosZ") || p.Id("HSizePos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.x = PosSize(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("HCenterPosZ") || p.Id("HCenterPos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.x = PosCenter(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("TopPosZ") || p.Id("TopPos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.y = PosLeft(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("BottomPosZ") || p.Id("BottomPos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.y = PosRight(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("VSizePosZ") || p.Id("VSizePos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.y = PosSize(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("VCenterPosZ") || p.Id("VCenterPos")) {
|
||||||
|
Point pt = sReadAB(p);
|
||||||
|
pos.y = PosCenter(pt.x, pt.y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("SetLabel")) {
|
||||||
|
p.PassChar('(');
|
||||||
|
if(p.IsString())
|
||||||
|
ii.label.At(li) = p.ReadString();
|
||||||
|
else
|
||||||
|
ii.labelid = p.ReadId();
|
||||||
|
p.PassChar(')');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("HelpC") || p.Id("Help") || p.Id("Description")) {
|
||||||
|
p.PassChar('(');
|
||||||
|
if(p.IsString())
|
||||||
|
ii.help.At(li) = p.ReadString();
|
||||||
|
else
|
||||||
|
ii.helpid = p.ReadId();
|
||||||
|
p.PassChar(')');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("Hide")) {
|
||||||
|
p.PassChar('(');
|
||||||
|
p.PassChar(')');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
p.ThrowError("Invalid item modifier.");
|
||||||
|
}
|
||||||
|
while(p.Char('.'));
|
||||||
|
p.PassChar(')');
|
||||||
|
ii.pos = pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::LoadLayoutFile(const char *_filename) {
|
||||||
|
SetLayout(-1);
|
||||||
|
layout.Clear();
|
||||||
|
langlist.Clear();
|
||||||
|
try {
|
||||||
|
filename = _filename;
|
||||||
|
String s = LoadFile(filename);
|
||||||
|
CParser p(s);
|
||||||
|
if(p.Id("#ifdef"))
|
||||||
|
p.Id("LAYOUTFILE");
|
||||||
|
while(p.Id("LAYOUT")) {
|
||||||
|
p.PassChar('(');
|
||||||
|
String name = p.ReadId();
|
||||||
|
p.PassChar(',');
|
||||||
|
int cx = p.ReadInt();
|
||||||
|
p.PassChar(',');
|
||||||
|
int cy = p.ReadInt();
|
||||||
|
p.PassChar(')');
|
||||||
|
const char *a = p.GetPtr();
|
||||||
|
const char *b = a;
|
||||||
|
Form& l = layout.Add();
|
||||||
|
l.name = name;
|
||||||
|
l.size = Size(cx, cy);
|
||||||
|
while(!p.IsEof() && !p.Id("END_LAYOUT"))
|
||||||
|
LoadCtrl(p, l.item.Add());
|
||||||
|
while(*a == '\n' || *a == '\r')
|
||||||
|
a++;
|
||||||
|
}
|
||||||
|
p.Id("#endif");
|
||||||
|
while(p.Id("#if")) {
|
||||||
|
p.PassId("LANGUAGE");
|
||||||
|
p.PassChar2('=', '=');
|
||||||
|
String langid = p.ReadId();
|
||||||
|
CParser::Pos idpos = p.GetPos();
|
||||||
|
if(*idpos.ptr == '(')
|
||||||
|
{
|
||||||
|
const char *b = idpos.ptr;
|
||||||
|
while(*idpos.ptr && *idpos.ptr++ != ')')
|
||||||
|
;
|
||||||
|
langid.Cat(b, idpos.ptr - b);
|
||||||
|
p.SetPos(idpos);
|
||||||
|
}
|
||||||
|
langlist.Add(langlist.GetCount(), langid);
|
||||||
|
VectorMap<String, String> map;
|
||||||
|
while(p.Id("txt")) {
|
||||||
|
p.PassChar('(');
|
||||||
|
String& txt = map.Add("txt" + p.ReadId());
|
||||||
|
p.PassChar(',');
|
||||||
|
txt = p.ReadString();
|
||||||
|
p.PassChar(')');
|
||||||
|
}
|
||||||
|
p.PassId("#endif");
|
||||||
|
for(int i = 0; i < layout.GetCount(); i++) {
|
||||||
|
Form& l = layout[i];
|
||||||
|
for(int i = 0; i < l.item.GetCount(); i++) {
|
||||||
|
ItemInfo& ii = l.item[i];
|
||||||
|
ii.label.Add(map.Get(ii.labelid, String()));
|
||||||
|
ii.help.Add(map.Get(ii.helpid, String()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(CParser::Error& e) {
|
||||||
|
Exclamation(e);
|
||||||
|
filename.Clear();
|
||||||
|
}
|
||||||
|
MakeCaption();
|
||||||
|
SetupLayoutList();
|
||||||
|
SetLayout(layout.GetCount() ? 0 : -1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
String SaveText(String mod, const Vector<String>& txt, bool lang, const String& name, int ii) {
|
||||||
|
mod = '.' + mod + '(';
|
||||||
|
if(lang) {
|
||||||
|
for(int i = 0; i < txt.GetCount(); i++)
|
||||||
|
if(!txt[i].IsEmpty())
|
||||||
|
return mod + name + Format("_%d", ii) + ')';
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
return txt.GetCount() && !txt[0].IsEmpty() ? mod + AsCString(txt[0]) + ')' : String();
|
||||||
|
}
|
||||||
|
|
||||||
|
String LayoutDesigner::SaveCtrl(const ItemInfo& ii, int i, const String& name, bool lang) const {
|
||||||
|
String out;
|
||||||
|
if(ii.classname.IsEmpty())
|
||||||
|
out << "\tUNTYPED(";
|
||||||
|
else
|
||||||
|
out << "\tITEM(" << ii.classname << ", ";
|
||||||
|
out << (ii.variable.IsEmpty() ? Format("dv___%d", i) : ii.variable) << ", ";
|
||||||
|
LogPos p = ii.pos;
|
||||||
|
const char *zfix = (qlib2_output ? "" : "Z");
|
||||||
|
switch(p.x.GetAlign()) {
|
||||||
|
case Ctrl::LEFT: out << Format("LeftPos%s(%d, %d).", zfix, p.x.GetA(), p.x.GetB()); break;
|
||||||
|
case Ctrl::RIGHT: out << Format("RightPos%s(%d, %d).", zfix, p.x.GetA(), p.x.GetB()); break;
|
||||||
|
case Ctrl::SIZE: out << Format("HSizePos%s(%d, %d).", zfix, p.x.GetA(), p.x.GetB()); break;
|
||||||
|
case Ctrl::CENTER: out << Format("HCenterPos%s(%d, %d).", zfix, p.x.GetB(), p.x.GetA()); break;
|
||||||
|
}
|
||||||
|
switch(p.y.GetAlign()) {
|
||||||
|
case Ctrl::TOP: out << Format("TopPos%s(%d, %d)", zfix, p.y.GetA(), p.y.GetB()); break;
|
||||||
|
case Ctrl::BOTTOM: out << Format("BottomPos%s(%d, %d)", zfix, p.y.GetA(), p.y.GetB()); break;
|
||||||
|
case Ctrl::SIZE: out << Format("VSizePos%s(%d, %d)", zfix, p.y.GetA(), p.y.GetB()); break;
|
||||||
|
case Ctrl::CENTER: out << Format("VCenterPos%s(%d, %d)", zfix, p.y.GetB(), p.y.GetA()); break;
|
||||||
|
}
|
||||||
|
out << SaveText("SetLabel", ii.label, lang, "txt" + name, i);
|
||||||
|
out << SaveText(qlib2_output ? "HelpC" : "Description", ii.help, lang, "txt" + name + "_HLP", i);
|
||||||
|
if(IsLayoutRef(ii.classname) && ii.variable.IsEmpty())
|
||||||
|
out << ".Hide()";
|
||||||
|
out << ")\n";
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
String txtSave(int li, const Vector<String>& txt, int ii, String name) {
|
||||||
|
for(int i = 0; i < txt.GetCount(); i++)
|
||||||
|
if(!txt[i].IsEmpty()) {
|
||||||
|
String s;
|
||||||
|
if(li < txt.GetCount())
|
||||||
|
s = txt[li];
|
||||||
|
return "txt(" + name + Format("_%d", ii) + ", " + AsCString(s) + ")\n";
|
||||||
|
}
|
||||||
|
return String();
|
||||||
|
}
|
||||||
|
|
||||||
|
String LayoutDesigner::GetLayoutFile() const {
|
||||||
|
int i;
|
||||||
|
Vector<int> layindex;
|
||||||
|
layindex.SetCount(layout.GetCount());
|
||||||
|
for(i = 0; i < layout.GetCount(); i++)
|
||||||
|
layindex[i] = i;
|
||||||
|
int maxswaps = layout.GetCount() * layout.GetCount();
|
||||||
|
for(i = 0; maxswaps > 0 && i < layindex.GetCount(); i++)
|
||||||
|
{
|
||||||
|
int lx = layindex[i];
|
||||||
|
const Form& l = layout[lx];
|
||||||
|
int maxref = -1;
|
||||||
|
String dummy;
|
||||||
|
for(int c = 0; c < l.item.GetCount(); c++)
|
||||||
|
maxref = max(maxref, FindIndex(layindex, ParseLayoutRef(l.item[c].classname, dummy)));
|
||||||
|
if(maxref > i)
|
||||||
|
{
|
||||||
|
layindex.Remove(i);
|
||||||
|
layindex.Insert(maxref, lx);
|
||||||
|
i--;
|
||||||
|
maxswaps--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StringStream out;
|
||||||
|
out << "#ifdef LAYOUTFILE\n\n";
|
||||||
|
for(i = 0; i < layindex.GetCount(); i++) {
|
||||||
|
const Form& l = layout[layindex[i]];
|
||||||
|
out << "LAYOUT(" << l.name << ", " << l.size.cx << ", " << l.size.cy << ")\n";
|
||||||
|
for(int c = 0; c < l.item.GetCount(); c++)
|
||||||
|
out << SaveCtrl(l.item[c], c, l.name, langlist.GetCount());
|
||||||
|
out << "END_LAYOUT\n\n";
|
||||||
|
}
|
||||||
|
out << "#endif\n";
|
||||||
|
for(int li = 0; li < langlist.GetCount(); li++) {
|
||||||
|
out << "\n#if LANGUAGE == " << String(langlist.GetValue(li)) << "\n\n";
|
||||||
|
for(int i = 0; i < layindex.GetCount(); i++) {
|
||||||
|
const Form& l = layout[layindex[i]];
|
||||||
|
for(int c = 0; c < l.item.GetCount(); c++) {
|
||||||
|
out << txtSave(li, l.item[c].label, c, l.name);
|
||||||
|
out << txtSave(li, l.item[c].help, c, l.name + "_HLP");
|
||||||
|
}
|
||||||
|
out << '\n';
|
||||||
|
}
|
||||||
|
out << "#endif\n";
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LayoutDesigner::SaveLayoutFile() {
|
||||||
|
String lf = GetLayoutFile();
|
||||||
|
if(::LoadFile(filename) != lf && !::SaveFile(filename, lf)) {
|
||||||
|
Exclamation("Error storing output file " + filename);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char exts[] =
|
||||||
|
"Layout files (*.lay)|*.lay|"
|
||||||
|
"All files (*.*)|*.*|"
|
||||||
|
;
|
||||||
|
|
||||||
|
void LayoutDesigner::MakeCaption() {
|
||||||
|
String s;
|
||||||
|
if(layouti >= 0) {
|
||||||
|
s.Cat(layout[layouti].name);
|
||||||
|
if(!s.IsEmpty())
|
||||||
|
s.Cat(" - ");
|
||||||
|
}
|
||||||
|
s.Cat(filename.IsEmpty() ? "New layout file" : filename);
|
||||||
|
frame.Title(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LayoutDesigner::DoSave() {
|
||||||
|
if(filename.IsEmpty()) {
|
||||||
|
if(!SaveLayoutFileAs()) return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(!SaveLayoutFile()) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LayoutDesigner::PromptSave() {
|
||||||
|
return layout.GetCount() == 0
|
||||||
|
|| (!filename.IsEmpty() && GetLayoutFile() == LoadFile(filename))
|
||||||
|
|| !PromptYesNo("Save current file ?") || DoSave();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::NewFile() {
|
||||||
|
if(!PromptSave()) return;
|
||||||
|
SetLayout(-1);
|
||||||
|
layout.Clear();
|
||||||
|
filename.Clear();
|
||||||
|
frame.Refresh();
|
||||||
|
MakeCaption();
|
||||||
|
SetupLayoutList();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::OpenFile() {
|
||||||
|
if(!PromptSave()) return;
|
||||||
|
if(filesel.ExecuteOpen()) {
|
||||||
|
LoadLayoutFile(~filesel);
|
||||||
|
LruList.NewEntry(filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LayoutDesigner::SaveLayoutFileAs() {
|
||||||
|
filesel = filename;
|
||||||
|
if(!filesel.ExecuteSaveAs(NULL)) return false;
|
||||||
|
filename = filesel;
|
||||||
|
bool r = SaveLayoutFile();
|
||||||
|
if(r) LruList.NewEntry(filename);
|
||||||
|
MakeCaption();
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SaveFileAs() {
|
||||||
|
SaveLayoutFileAs();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SaveFile() {
|
||||||
|
DoSave();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::CloseFile() {
|
||||||
|
if(CloseLayoutFile())
|
||||||
|
{
|
||||||
|
#ifdef flagIDERW
|
||||||
|
SetTimeCallback(0, THISBACK(CloseDesigner), 555);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LayoutDesigner::CloseLayoutFile() {
|
||||||
|
if(layout.GetCount() && (filename.IsEmpty() || LoadFile(filename) != GetLayoutFile()))
|
||||||
|
switch(PromptYesNoCancel("Save current file ?")) {
|
||||||
|
case 1:
|
||||||
|
if(!DoSave()) return false;
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
frame.Close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::LruOpen(const String& s) {
|
||||||
|
if(!PromptSave()) return;
|
||||||
|
LoadLayoutFile(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::Serialize(Stream& s) {
|
||||||
|
int version = 1;
|
||||||
|
s.Magic();
|
||||||
|
s / version;
|
||||||
|
s % filesel;
|
||||||
|
LruList.Serialize(s);
|
||||||
|
splital.Serialize(s);
|
||||||
|
if(version == 0) {
|
||||||
|
Splitter d;
|
||||||
|
d.Serialize(s);
|
||||||
|
}
|
||||||
|
itab.SerializeHeader(s);
|
||||||
|
if(version >= 1)
|
||||||
|
frame.SerializePlacement(s);
|
||||||
|
else {
|
||||||
|
Rect r = frame.GetRect();
|
||||||
|
s % r;
|
||||||
|
frame.SetRect(r);
|
||||||
|
}
|
||||||
|
s % grid.x % grid.y;
|
||||||
|
s % ignoremin;
|
||||||
|
s % matrix.x % matrix.y % matrix.hspace % matrix.vspace;
|
||||||
|
s % usegrid;
|
||||||
|
s.Magic();
|
||||||
|
}
|
||||||
106
uppsrc2/rw/DesignerLayt.cpp
Normal file
106
uppsrc2/rw/DesignerLayt.cpp
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
#include "Designer.h"
|
||||||
|
|
||||||
|
void LayoutDesigner::SetLayout(int i, int li) {
|
||||||
|
ClearSelection();
|
||||||
|
layouti = i;
|
||||||
|
layoutlist = i;
|
||||||
|
langi = li;
|
||||||
|
if(langlist.GetCount())
|
||||||
|
langlist = li;
|
||||||
|
itab.Clear();
|
||||||
|
if(layouti >= 0) {
|
||||||
|
Form& l = layout[layouti];
|
||||||
|
SetFormSize(l.size);
|
||||||
|
SynchronizeCtrls();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ctrl.Clear();
|
||||||
|
ref_ctrl.Clear();
|
||||||
|
mnem_ctrl.Clear();
|
||||||
|
form.Hide();
|
||||||
|
itab.Clear();
|
||||||
|
}
|
||||||
|
sb = Point(0, 0);
|
||||||
|
form.Show(layouti >= 0);
|
||||||
|
MakeCaption();
|
||||||
|
ShowStatus();
|
||||||
|
langlist.Enable(langlist.GetCount());
|
||||||
|
SynchronizeMnemonic();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::EnterLayout() {
|
||||||
|
SetLayout(~layoutlist, langlist.GetCount() ? langlist.GetIndex() : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::EnterLanguage() {
|
||||||
|
int i = -1;
|
||||||
|
if(itemi.GetCount())
|
||||||
|
i = itemi.Top();
|
||||||
|
EnterLayout();
|
||||||
|
SelectOneItem(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SetupLayoutList() {
|
||||||
|
layoutlist.Clear();
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < layout.GetCount(); i++)
|
||||||
|
layoutlist.Add(i, layout[i].name);
|
||||||
|
layoutlist.Enable(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int FilterCid(int c) {
|
||||||
|
return IsAlNum(c) || c == '_' ? c : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::NewLayout() {
|
||||||
|
WithLayoutLayout<TopWindow> dlg;
|
||||||
|
CtrlLayoutOKCancel(dlg, "New Layout");
|
||||||
|
dlg.layout.SetFilter(FilterCid);
|
||||||
|
dlg.ActiveFocus(dlg.layout);
|
||||||
|
if(dlg.Run() == IDOK) {
|
||||||
|
int i = layout.GetCount();
|
||||||
|
Form& l = layout.Add();
|
||||||
|
l.name = dlg.layout;
|
||||||
|
l.size = Size(400, 200);
|
||||||
|
SetupLayoutList();
|
||||||
|
SetLayout(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::RemoveLayout() {
|
||||||
|
if(layouti < 0) return;
|
||||||
|
if(PromptYesNo("Remove current layout ?")) {
|
||||||
|
int i = layouti;
|
||||||
|
SetLayout(-1);
|
||||||
|
layout.Remove(i);
|
||||||
|
SetupLayoutList();
|
||||||
|
SetLayout(min(i, layout.GetCount() - 1));
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::RenameLayout() {
|
||||||
|
if(layouti < 0) return;
|
||||||
|
WithLayoutLayout<TopWindow> dlg;
|
||||||
|
CtrlLayoutOKCancel(dlg, "Rename Layout");
|
||||||
|
dlg.ActiveFocus(dlg.layout);
|
||||||
|
dlg.layout.SetFilter(FilterCid);
|
||||||
|
dlg.layout = layout[layouti].name;
|
||||||
|
if(dlg.Run() == IDOK) {
|
||||||
|
layout[layouti].name = dlg.layout;
|
||||||
|
SetupLayoutList();
|
||||||
|
SetLayout(layouti);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::NextLayout() {
|
||||||
|
if(layoutlist.GetCount() == 0) return;
|
||||||
|
layoutlist.SetIndex((layoutlist.GetIndex() + 1) % layoutlist.GetCount());
|
||||||
|
EnterLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::PrevLayout() {
|
||||||
|
if(layoutlist.GetCount() == 0) return;
|
||||||
|
layoutlist.SetIndex((layoutlist.GetIndex() + layoutlist.GetCount() - 1) % layoutlist.GetCount());
|
||||||
|
EnterLayout();
|
||||||
|
}
|
||||||
374
uppsrc2/rw/DesignerWin.cpp
Normal file
374
uppsrc2/rw/DesignerWin.cpp
Normal file
|
|
@ -0,0 +1,374 @@
|
||||||
|
#include "Designer.h"
|
||||||
|
#pragma hdrstop
|
||||||
|
#include "iderw.h"
|
||||||
|
|
||||||
|
void LayoutDesigner::SetupGrid() {
|
||||||
|
CtrlLayoutOKCancel(grid, "Grid settings");
|
||||||
|
grid.x.MinMax(1, 32);
|
||||||
|
grid.y.MinMax(1, 32);
|
||||||
|
grid.Backup();
|
||||||
|
grid.Execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::FileBar(Bar& bar) {
|
||||||
|
bar.Add("New", THISBACK(NewFile))
|
||||||
|
.Key(K_CTRL_N);
|
||||||
|
bar.Add("Open..", THISBACK(OpenFile))
|
||||||
|
.Key(K_CTRL_O);
|
||||||
|
bar.Add("Save", THISBACK(SaveFile))
|
||||||
|
.Key(K_CTRL_S);
|
||||||
|
bar.Add("Save as..", THISBACK(SaveFileAs));
|
||||||
|
LruList(bar);
|
||||||
|
bar.MenuSeparator();
|
||||||
|
bar.Add(
|
||||||
|
#ifdef flagIDERW
|
||||||
|
"Close"
|
||||||
|
#else
|
||||||
|
"Exit"
|
||||||
|
#endif
|
||||||
|
, THISBACK(CloseFile));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::EditBar(Bar& bar) {
|
||||||
|
bar.Add("Cut", CtrlImg::cut(), THISBACK(Cut))
|
||||||
|
.Key(K_CTRL_X);
|
||||||
|
bar.Add("Copy", CtrlImg::copy(), THISBACK(Copy))
|
||||||
|
.Key(K_CTRL_C);
|
||||||
|
bar.Add("Paste", CtrlImg::paste(), THISBACK(Paste))
|
||||||
|
.Key(K_CTRL_V);
|
||||||
|
bar.Add("Duplicate", THISBACK(Duplicate))
|
||||||
|
.Key(K_CTRL_D);
|
||||||
|
bar.Add("Delete", CtrlImg::remove(), THISBACK(Delete))
|
||||||
|
.Key(K_DELETE);
|
||||||
|
bar.MenuSeparator();
|
||||||
|
bar.Add("Select All", THISBACK(SelectAll))
|
||||||
|
.Key(K_CTRL_A);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::LayoutBar(Bar& bar) {
|
||||||
|
bar.Add("New layout..", THISBACK(NewLayout));
|
||||||
|
bar.Add(layoutlist.GetCount(), "Remove layout", THISBACK(RemoveLayout));
|
||||||
|
bar.Add(layoutlist.GetCount(), "Rename layout..", THISBACK(RenameLayout));
|
||||||
|
if(layoutlist.GetCount() > 1) {
|
||||||
|
bar.Separator();
|
||||||
|
bar.Add("Previous layout", THISBACK(PrevLayout))
|
||||||
|
.Key(K_ALT_UP);
|
||||||
|
bar.Add("Next layout", THISBACK(NextLayout))
|
||||||
|
.Key(K_ALT_DOWN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::LangBar(Bar& bar) {
|
||||||
|
bar.Add("New language..", THISBACK(NewLanguage));
|
||||||
|
bar.Add(langlist.GetCount(), "Remove language", THISBACK(RemoveLanguage));
|
||||||
|
bar.Add(langlist.GetCount(), "Rename language..", THISBACK(RenameLanguage));
|
||||||
|
if(langlist.GetCount() > 1) {
|
||||||
|
bar.Separator();
|
||||||
|
bar.Add("Previous language", THISBACK(PrevLang))
|
||||||
|
.Key(K_ALT_LEFT);
|
||||||
|
bar.Add("Next language", THISBACK(NextLang))
|
||||||
|
.Key(K_ALT_RIGHT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::OptionsBar(Bar& bar) {
|
||||||
|
bar.Add("Alias map", THISBACK(SetupAlias));
|
||||||
|
bar.Add("Use grid", TB_GRID(), THISBACK(ToggleGrid))
|
||||||
|
.Check(usegrid);
|
||||||
|
bar.Add("Grid settings..", THISBACK(SetupGrid));
|
||||||
|
bar.Add("Ignore min size", THISBACK(ToggleIgnoreMin))
|
||||||
|
.Check(ignoremin);
|
||||||
|
bar.Add("QLIB2 output", THISBACK(ToggleQLIB2Output))
|
||||||
|
.Check(qlib2_output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::AlignBar(Bar& bar) {
|
||||||
|
int m = itemi.GetCount();
|
||||||
|
bar.Add(m, "Vertical center in layout", TB_VERTCENTER(), THISBACK(VertCenter))
|
||||||
|
.Key(K_CTRL_F9);
|
||||||
|
bar.Add(m, "Align label", TB_ALIGNLBL(), THISBACK(AlignLbl))
|
||||||
|
.Key(K_ALT_F9);
|
||||||
|
bar.Add(m, "Horizontal center in layout", TB_HORZCENTER(), THISBACK(HorzCenter))
|
||||||
|
.Key(K_CTRL|K_SHIFT_F9);
|
||||||
|
bar.Separator();
|
||||||
|
bar.Add(m > 1, "Left", TB_ALIGNLEFT(), THISBACK(AlignLeft))
|
||||||
|
.Key(K_ALT_LEFT);
|
||||||
|
bar.Add(m > 1, "Horizontal center", TB_ALIGNHCENTER(), THISBACK(AlignHCenter))
|
||||||
|
.Key(K_SHIFT_F9);
|
||||||
|
bar.Add(m > 1, "Right", TB_ALIGNRIGHT(), THISBACK(AlignRight))
|
||||||
|
.Key(K_ALT_RIGHT);
|
||||||
|
bar.Separator();
|
||||||
|
bar.Add(m > 1, "Top", TB_ALIGNTOP(), THISBACK(AlignTop))
|
||||||
|
.Key(K_ALT_UP);
|
||||||
|
bar.Add(m > 1, "Vertical center", TB_ALIGNVCENTER(), THISBACK(AlignVCenter))
|
||||||
|
.Key(K_F9);
|
||||||
|
bar.Add(m > 1, "Bottom", TB_ALIGNBOTTOM(), THISBACK(AlignBottom))
|
||||||
|
.Key(K_ALT_DOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SizeBar(Bar& bar) {
|
||||||
|
int m = itemi.GetCount();
|
||||||
|
bar.Add(m > 1, "Same width", TB_SAMEWIDTH(), THISBACK(SameWidth))
|
||||||
|
.Key(K_SHIFT_F8);
|
||||||
|
bar.Add(m > 1, "Same height", TB_SAMEHEIGHT(), THISBACK(SameHeight))
|
||||||
|
.Key(K_CTRL_F8);
|
||||||
|
bar.Add(m > 1, "Same size", TB_SAMESIZE(), THISBACK(SameSize))
|
||||||
|
.Key(K_F8);
|
||||||
|
bar.Add(m, "Minimal width", TB_MINWIDTH(), THISBACK(MinWidth))
|
||||||
|
.Key(K_SHIFT_F7);
|
||||||
|
bar.Add(m, "Minimal height", TB_MINHEIGHT(), THISBACK(MinHeight))
|
||||||
|
.Key(K_CTRL_F7);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SpringsBar(Bar& bar) {
|
||||||
|
bool m = !itemi.IsEmpty();
|
||||||
|
int im = GetItemPosMask();
|
||||||
|
bar.Add(m, "Left", TB_SPRINGLEFT(), THISBACK1(ItemPos, MAKELONG(POS_LEFT, POS_NONE)))
|
||||||
|
.Check(im & MAKELONG(1 << POS_LEFT, 0));
|
||||||
|
bar.Add(m, "Right", TB_SPRINGRIGHT(), THISBACK1(ItemPos, MAKELONG(POS_RIGHT, POS_NONE)))
|
||||||
|
.Check(im & MAKELONG(1 << POS_RIGHT, 0));
|
||||||
|
bar.Add(m, "Horz size", TB_SPRINGHSIZE(), THISBACK1(ItemPos, MAKELONG(POS_SIZE, POS_NONE)))
|
||||||
|
.Check(im & MAKELONG(1 << POS_SIZE, 0));
|
||||||
|
bar.Add(m, "Horz center", TB_SPRINGHCENTER(), THISBACK1(ItemPos, MAKELONG(POS_CENTER, POS_NONE)))
|
||||||
|
.Check(im & MAKELONG(1 << POS_CENTER, 0));
|
||||||
|
bar.Separator();
|
||||||
|
bar.Add(m, "Top", TB_SPRINGTOP(), THISBACK1(ItemPos, MAKELONG(POS_NONE, POS_TOP)))
|
||||||
|
.Check(im & MAKELONG(0, 1 << POS_TOP));
|
||||||
|
bar.Add(m, "Bottom", TB_SPRINGBOTTOM(), THISBACK1(ItemPos, MAKELONG(POS_NONE, POS_BOTTOM)))
|
||||||
|
.Check(im & MAKELONG(0, 1 << POS_BOTTOM));
|
||||||
|
bar.Add(m, "Vert size", TB_SPRINGVSIZE(), THISBACK1(ItemPos, MAKELONG(POS_NONE, POS_SIZE)))
|
||||||
|
.Check(im & MAKELONG(0, 1 << POS_SIZE));
|
||||||
|
bar.Add(m, "Vert center", TB_SPRINGVCENTER(), THISBACK1(ItemPos, MAKELONG(POS_NONE, POS_CENTER)))
|
||||||
|
.Check(im & MAKELONG(0, 1 << POS_CENTER));
|
||||||
|
bar.Separator();
|
||||||
|
bar.Add(m, "Auto springs", TB_SPRINGAUTO(), THISBACK1(ItemPos, MAKELONG(POS_AUTO, POS_AUTO)))
|
||||||
|
.Key(K_CTRL_R);
|
||||||
|
bar.Add(m, "Topleft springs", TB_SPRINGTOPLEFT(), THISBACK1(ItemPos, MAKELONG(POS_LEFT, POS_TOP)))
|
||||||
|
.Key(im == MAKELONG(1 << POS_LEFT, 1 << POS_TOP));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::ItemBar(Bar& bar) {
|
||||||
|
int m = itemi.GetCount();
|
||||||
|
bar.Add(layouti >= 0, "New item", THISBACK(AddItem))
|
||||||
|
.Key(K_ENTER);
|
||||||
|
bar.Add(m, "Remove item", THISBACK(Delete))
|
||||||
|
.Key(K_DELETE);
|
||||||
|
bar.Add(m, "Move item up", THISBACK(MoveUp))
|
||||||
|
.Key(K_CTRL_UP);
|
||||||
|
bar.Add(m, "Move item down", THISBACK(MoveDown))
|
||||||
|
.Key(K_CTRL_DOWN);
|
||||||
|
bar.MenuSeparator();
|
||||||
|
bar.Add("Alignment", THISBACK(AlignBar));
|
||||||
|
bar.Add("Size", THISBACK(SizeBar));
|
||||||
|
bar.Add("Springs", THISBACK(SpringsBar));
|
||||||
|
bar.MenuSeparator();
|
||||||
|
bar.Add(m, "Matrix..", THISBACK(Matrix))
|
||||||
|
.Key(K_CTRL_M);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::MainBar(Bar& bar) {
|
||||||
|
bar.Add("File", THISBACK(FileBar));
|
||||||
|
bar.Add("Edit", THISBACK(EditBar));
|
||||||
|
bar.Add("Layout", THISBACK(LayoutBar));
|
||||||
|
bar.Add("Language", THISBACK(LangBar));
|
||||||
|
bar.Add("Item", THISBACK(ItemBar));
|
||||||
|
bar.Add("Options", THISBACK(OptionsBar));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::Tool(Bar& bar) {
|
||||||
|
EditBar(bar);
|
||||||
|
// bar.Separator();
|
||||||
|
ItemBar(bar);
|
||||||
|
bar.Separator();
|
||||||
|
OptionsBar(bar);
|
||||||
|
bar.Break();
|
||||||
|
bar.Add(layoutlist, 200);
|
||||||
|
bar.Gap();
|
||||||
|
bar.Add(langlist, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::OpenWindow() {
|
||||||
|
if(!frame.IsOpen()) {
|
||||||
|
alias_map_file = AliasMap::StdFileName();
|
||||||
|
alias_map.Load(alias_map_file);
|
||||||
|
if(alias_map.IsEmpty())
|
||||||
|
alias_map.SetDefault();
|
||||||
|
UpdateClassList();
|
||||||
|
frame.OpenMain();
|
||||||
|
MakeCaption();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::Execute() {
|
||||||
|
// frame.SetRect(100, 100, 700, 500);
|
||||||
|
#ifndef flagIDERW
|
||||||
|
LoadFromFile(*this);
|
||||||
|
#endif
|
||||||
|
OpenWindow();
|
||||||
|
frame.Run();
|
||||||
|
#ifndef flagIDERW
|
||||||
|
StoreToFile(*this);
|
||||||
|
#endif
|
||||||
|
if(!alias_map.Save(alias_map_file))
|
||||||
|
Exclamation(NFormat("Error updating alias file [* \1%s\1].", alias_map_file));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::UpdateClassList() {
|
||||||
|
Vector<String> avail_classes;
|
||||||
|
Append(avail_classes, ClassMap().GetKeys());
|
||||||
|
Append(avail_classes, alias_map.obj_source);
|
||||||
|
Sort(avail_classes, StdLess<String>());
|
||||||
|
classname.ClearList();
|
||||||
|
for(int i = 0; i < avail_classes.GetCount(); i++)
|
||||||
|
classname.AddList(avail_classes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SetBar()
|
||||||
|
{
|
||||||
|
toolbar.Set(THISBACK(Tool));
|
||||||
|
}
|
||||||
|
|
||||||
|
LayoutDesigner::LayoutDesigner() {
|
||||||
|
int ehg = EditField::GetStdHeight();
|
||||||
|
VSizePos(0, 0).HSizePos(0, 0);
|
||||||
|
form.IgnoreMouse();
|
||||||
|
form.ld = this;
|
||||||
|
Add(form);
|
||||||
|
apaint.VSizePos(0, 0).HSizePos(0, 0).Transparent().IgnoreMouse();
|
||||||
|
apaint.ld = this;
|
||||||
|
itab.NoWantFocus();
|
||||||
|
itab.AddColumn("class");
|
||||||
|
itab.AddColumn("var / label").SetDisplay(VarLblDisplay(false)).Add(2);
|
||||||
|
itab.AddIndex();
|
||||||
|
itab.WhenLeftClick = THISBACK(WhenITab);
|
||||||
|
props.Vert(itab, label_help_split);
|
||||||
|
props.SetPos(6000);
|
||||||
|
class_var_lbl.NoWantFocus().Transparent();
|
||||||
|
class_var_lbl.Add(classname.TopPos(0, ehg).HSizePos(0, 88));
|
||||||
|
class_var_lbl.Add(variable.TopPos(0, ehg).RightPos(0, 80));
|
||||||
|
class_var_lbl.Add(label.VSizePos(ehg + 4, 0).HSizePos());
|
||||||
|
label_help_split.Vert(class_var_lbl, help);
|
||||||
|
// props.Add(itab.VSizePos(0, ehg + 8 + 60 + 8 + 60 + 8).HSizePos());
|
||||||
|
// props.Add(classname.BottomPos(60 + 8 + 60 + 8, STDSIZE).HSizePos(0, 88));
|
||||||
|
// props.Add(variable.BottomPos(60 + 8 + 60 + 8, STDSIZE).RightPos(0, 80));
|
||||||
|
// props.Add(label.BottomPos(60 + 8, 60).HSizePos());
|
||||||
|
// props.Add(help.BottomPos(0, 60).HSizePos());
|
||||||
|
classname.WhenAction = THISBACK(NewClass);
|
||||||
|
classname.SetDropLines(24);
|
||||||
|
variable.WhenAction = THISBACK(NewVariable);
|
||||||
|
variable.ClickSelect();
|
||||||
|
label.WhenAction = THISBACK(NewLabel);
|
||||||
|
help.WhenAction = THISBACK(NewHelp);
|
||||||
|
classset = THISBACK(NewCtrl);
|
||||||
|
layoutlist.WhenAction = THISBACK(EnterLayout);
|
||||||
|
layoutlist.SizePos();
|
||||||
|
// layoutlist.LeftPos(0, 150).TopPos(ehg + 11, ehg);
|
||||||
|
layouti = -1;
|
||||||
|
|
||||||
|
langlist.WhenAction = THISBACK(EnterLanguage);
|
||||||
|
langlist.SizePos();
|
||||||
|
// langlist.LeftPos(150, 150).TopPos(ehg + 11, ehg);
|
||||||
|
langi = 0;
|
||||||
|
|
||||||
|
form.Hide();
|
||||||
|
sb.WhenScroll = THISBACK(Scroll);
|
||||||
|
// menubar.TopPos(0, ehg + 4).HSizePos(0, 0);
|
||||||
|
// toolbar.HSizePos(300, 0).TopPos(ehg + 8, 24).SetFrame(NullFrame());
|
||||||
|
frame.ld = this;
|
||||||
|
frame.Sizeable().Zoomable().Icon(RwIconSmall(), RwIconLarge()); //.HelpBox(); // todo? or not to do?
|
||||||
|
frame.AddFrame(menubar);
|
||||||
|
frame.AddFrame(toolbar);
|
||||||
|
frame.WhenClose = THISBACK(CloseFile);
|
||||||
|
// status.TopPos(0, ehg + 4).HSizePos(0, 0);
|
||||||
|
status.NoTransparent();
|
||||||
|
menubar.AddFrame(status);
|
||||||
|
SetBar();
|
||||||
|
menubar.Set(THISBACK(MainBar));
|
||||||
|
design.SetFrame(InsetFrame());
|
||||||
|
design.AddFrame(sb);
|
||||||
|
design.Add(*this);
|
||||||
|
design.Add(apaint);
|
||||||
|
// splital.VSizePos(2 * EditField::GetStdHeight() + 16, 0);
|
||||||
|
splital.Horz(props, design);
|
||||||
|
splital.SetPos(3000);
|
||||||
|
frame.Add(splital.SizePos());
|
||||||
|
SetLayout(-1);
|
||||||
|
LruList.WhenSelect = THISBACK(LruOpen);
|
||||||
|
grid.x <<= grid.y <<= 2;
|
||||||
|
matrix.x <<= matrix.y <<= 1;
|
||||||
|
matrix.vspace <<= matrix.hspace <<= 0;
|
||||||
|
CtrlLayoutOKCancel(matrix, "Matrix duplication");
|
||||||
|
matrix.x.MinMax(1, 10);
|
||||||
|
matrix.y.MinMax(1, 10);
|
||||||
|
ignoremin = false;
|
||||||
|
qlib2_output = false;
|
||||||
|
moved = false;
|
||||||
|
usegrid = true;
|
||||||
|
// frame.HelpBox().CommentBox(); // todo? or not to do?
|
||||||
|
filesel.Type("Layout files (*.lay)", "*.lay").Type("All files (*.*)", "*.*")
|
||||||
|
.DefaultExt("lay");
|
||||||
|
layoutlist.Disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Array<LayoutDesigner>& GetDesigners() {
|
||||||
|
static Array<LayoutDesigner> list;
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef flagIDERW
|
||||||
|
void LayoutDesigner::CloseDesigner() {
|
||||||
|
Array<LayoutDesigner>& list = GetDesigners();
|
||||||
|
for(int i = 0; i < list.GetCount(); i++)
|
||||||
|
if(&list[i] == this)
|
||||||
|
{
|
||||||
|
list.Remove(i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool CloseDesignLayout() {
|
||||||
|
Array<LayoutDesigner>& list = GetDesigners();
|
||||||
|
while(!list.IsEmpty())
|
||||||
|
{
|
||||||
|
if(!list[0].CloseLayoutFile())
|
||||||
|
return false;
|
||||||
|
list.Remove(0);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SaveDesignLayout() {
|
||||||
|
Array<LayoutDesigner>& list = GetDesigners();
|
||||||
|
bool is_ok = true;
|
||||||
|
for(int i = 0; i < list.GetCount(); i++)
|
||||||
|
if(!list[i].SaveLayoutFile())
|
||||||
|
is_ok = false;
|
||||||
|
return is_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DesignLayout(String open_file) {
|
||||||
|
Array<LayoutDesigner>& list = GetDesigners();
|
||||||
|
for(int i = 0; i < list.GetCount(); i++)
|
||||||
|
if(!CompareNoCase(list[i].GetFileName(), open_file))
|
||||||
|
{
|
||||||
|
list[i].SetWantFocus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LayoutDesigner& ld = list.Add();
|
||||||
|
ld.OpenWindow();
|
||||||
|
ld.LoadLayoutFile(open_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
Image GetRwIcon() {
|
||||||
|
return RwIconSmall();
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef flagIDERW
|
||||||
|
void AppMain()
|
||||||
|
{
|
||||||
|
SetDefaultCharset(CHARSET_WIN1250);
|
||||||
|
LayoutDesigner ld;
|
||||||
|
ld.Execute();
|
||||||
|
}
|
||||||
|
#endif//flagIDERW
|
||||||
295
uppsrc2/rw/ItemCtrl.cpp
Normal file
295
uppsrc2/rw/ItemCtrl.cpp
Normal file
|
|
@ -0,0 +1,295 @@
|
||||||
|
#include "Designer.h"
|
||||||
|
//#include <TCtrlLib/TCtrlLib.h>
|
||||||
|
|
||||||
|
typedef VectorMap<String, CtrlCreator> CtrlCreatorMap;
|
||||||
|
GLOBAL_VAR(CtrlCreatorMap, LayoutDesigner::ClassMap);
|
||||||
|
|
||||||
|
void LayoutDesigner::Register(const String& classname, CtrlCreator creator) {
|
||||||
|
ClassMap().GetAdd(classname) = creator;
|
||||||
|
}
|
||||||
|
|
||||||
|
String LayoutDesigner::Lng(const Vector<String>& x) const {
|
||||||
|
return langi < x.GetCount() ? x[langi] : String();
|
||||||
|
}
|
||||||
|
|
||||||
|
String& LayoutDesigner::ItemLabel(int i) {
|
||||||
|
return Lng(Item(i).label);
|
||||||
|
}
|
||||||
|
|
||||||
|
String LayoutDesigner::ItemLabel(int i) const {
|
||||||
|
return Lng(Item(i).label);
|
||||||
|
}
|
||||||
|
|
||||||
|
String& LayoutDesigner::Help(int i) {
|
||||||
|
return Lng(Item(i).help);
|
||||||
|
}
|
||||||
|
|
||||||
|
String LayoutDesigner::Help(int i) const {
|
||||||
|
return Lng(Item(i).help);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SynchronizeCtrl(int im) {
|
||||||
|
const ItemInfo& ii = Item(im);
|
||||||
|
SynchronizeCtrl(ctrl[im], ii);
|
||||||
|
itab.Set(im, 0, ii.classname);
|
||||||
|
itab.Set(im, 1, ii.variable);
|
||||||
|
itab.Set(im, 2, (langi < ii.label.GetCount() ? ii.label[langi] : String()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SynchronizeCtrl(Ctrl& q, const ItemInfo& ii)
|
||||||
|
{
|
||||||
|
q.SetLabel(Lng(ii.label));
|
||||||
|
// q.Help(Help(im));
|
||||||
|
q.Tip(Lng(ii.help));
|
||||||
|
q.DesignMode();
|
||||||
|
q.SetPos(ii.pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SynchronizeCtrl() {
|
||||||
|
SynchronizeCtrl(itemi.Top());
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SynchronizeCtrls() {
|
||||||
|
mnem_ctrl.Clear();
|
||||||
|
ref_ctrl.Clear();
|
||||||
|
ctrl.Clear();
|
||||||
|
for(int i = 0; i < ItemCount(); i++) {
|
||||||
|
ItemInfo& ii = Item(i);
|
||||||
|
Ctrl& q = ctrl.Add(CreateCtrl(ii.classname));
|
||||||
|
form.Add(q);
|
||||||
|
SynchronizeCtrl(i);
|
||||||
|
}
|
||||||
|
ShowHideLayouts();
|
||||||
|
}
|
||||||
|
|
||||||
|
int LayoutDesigner::ParseLayoutRef(String cls, String& base) const
|
||||||
|
{
|
||||||
|
const char *p = cls;
|
||||||
|
if(p[0] != 'W' || p[1] != 'i' || p[2] != 't' || p[3] != 'h')
|
||||||
|
return -1;
|
||||||
|
const char *b = (p += 4);
|
||||||
|
while(IsAlNum(*p) || *p == '_')
|
||||||
|
p++;
|
||||||
|
if(p <= b)
|
||||||
|
return -1;
|
||||||
|
String layoutid(b, p);
|
||||||
|
int fi = FindFieldIndex(layout, &Form::name, layoutid);
|
||||||
|
if(fi < 0)
|
||||||
|
return -1;
|
||||||
|
while(*p && (byte)*p <= ' ')
|
||||||
|
p++;
|
||||||
|
if(*p++ != '<')
|
||||||
|
return -1;
|
||||||
|
while(*p && (byte)*p <= ' ')
|
||||||
|
p++;
|
||||||
|
const char *e = cls.End();
|
||||||
|
while(e > p && (byte)e[-1] <= ' ')
|
||||||
|
e--;
|
||||||
|
if(e > p && e[-1] == '>')
|
||||||
|
e--;
|
||||||
|
while(e > p && (byte)e[-1] <= ' ')
|
||||||
|
e--;
|
||||||
|
base = String(p, e);
|
||||||
|
return fi;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ctrl *LayoutDesigner::CreateLayoutCtrl(String classname, Index<String>& recursed)
|
||||||
|
{
|
||||||
|
String base;
|
||||||
|
int fi = ParseLayoutRef(classname, base);
|
||||||
|
if(fi < 0 || recursed.Find(layout[fi].name) >= 0 || recursed.Find(base) >= 0)
|
||||||
|
return NULL;
|
||||||
|
recursed.Add(layout[fi].name);
|
||||||
|
recursed.Add(base);
|
||||||
|
Ctrl *ctrl = CreateCtrl(base, recursed);
|
||||||
|
if(!ctrl)
|
||||||
|
{
|
||||||
|
ctrl = new Ctrl();
|
||||||
|
ctrl->Transparent();
|
||||||
|
}
|
||||||
|
const Form& form = layout[fi];
|
||||||
|
for(int i = 0; i < form.item.GetCount(); i++) {
|
||||||
|
const ItemInfo& ii = form.item[i];
|
||||||
|
Ctrl *q = CreateCtrl(ii.classname, recursed);
|
||||||
|
if(!q)
|
||||||
|
{
|
||||||
|
q = new UrgCtrl(ii.classname);
|
||||||
|
q->DesignMode();
|
||||||
|
}
|
||||||
|
ref_ctrl.Add(q);
|
||||||
|
ctrl -> Add(*q);
|
||||||
|
SynchronizeCtrl(*q, ii);
|
||||||
|
}
|
||||||
|
recursed.Drop();
|
||||||
|
recursed.Drop();
|
||||||
|
return ctrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ctrl *LayoutDesigner::CreateCtrl(const String& classname, Index<String>& recursed)
|
||||||
|
{
|
||||||
|
Ctrl *q = CreateLayoutCtrl(classname, recursed);
|
||||||
|
if(q)
|
||||||
|
return q;
|
||||||
|
int ci = ClassMap().Find(alias_map.Convert(classname));
|
||||||
|
if(ci >= 0)
|
||||||
|
{
|
||||||
|
q = ClassMap()[ci]();
|
||||||
|
q->DesignMode();
|
||||||
|
}
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ctrl *LayoutDesigner::CreateCtrl(const String& classname) {
|
||||||
|
Index<String> temp;
|
||||||
|
Ctrl *q = CreateCtrl(classname, temp);
|
||||||
|
if(!q)
|
||||||
|
{
|
||||||
|
q = new UrgCtrl(~classname);
|
||||||
|
q->DesignMode();
|
||||||
|
}
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::AddCtrl(const String& cls, const String& var, const String& lbl,
|
||||||
|
const String& help) {
|
||||||
|
int imi = ctrl.GetCount();
|
||||||
|
ItemInfo& ii = ActualForm().item.Add();
|
||||||
|
ii.classname = cls;
|
||||||
|
ii.variable = var;
|
||||||
|
Lng(ii.label) = lbl;
|
||||||
|
Lng(ii.help) = help;
|
||||||
|
Ctrl& q = ctrl.Add(CreateCtrl(cls));
|
||||||
|
q.TopPos(0, max(10, q.GetStdSize().cy)).LeftPos(0, 50);
|
||||||
|
ii.pos = q.GetPos();
|
||||||
|
q.SetLabel(lbl);
|
||||||
|
// q.Help(help);
|
||||||
|
q.Tip(help);
|
||||||
|
q.DesignMode();
|
||||||
|
form.Add(q);
|
||||||
|
Refresh();
|
||||||
|
itab.Add(cls, var, lbl);
|
||||||
|
SelectOneItem(imi);
|
||||||
|
}
|
||||||
|
|
||||||
|
class MnemCtrl : public Ctrl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MnemCtrl(char letter, Font font) : letter(letter), font(font) {}
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void Paint(Draw& draw)
|
||||||
|
{
|
||||||
|
draw.DrawRect(draw.GetClip(), LtRed);
|
||||||
|
draw.DrawText(1, 0, &letter, font, SBlack, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
char letter;
|
||||||
|
Font font;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void AddMnemonic(VectorMap< int, Vector<Ctrl *> >& out, Array<Ctrl>& in)
|
||||||
|
{
|
||||||
|
for(int i = in.GetCount(); --i >= 0;)
|
||||||
|
{
|
||||||
|
Ctrl& c = in[i];
|
||||||
|
int m;
|
||||||
|
if(c.GetParent() && c.GetParent() -> IsShown() && (m = c.GetMnemonic()) != 0)
|
||||||
|
out.GetAdd(ToUpper(m)).Add(&c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SynchronizeMnemonic()
|
||||||
|
{
|
||||||
|
mnem_ctrl.Clear();
|
||||||
|
|
||||||
|
VectorMap< int, Vector<Ctrl *> > mnemonic;
|
||||||
|
AddMnemonic(mnemonic, ctrl);
|
||||||
|
AddMnemonic(mnemonic, ref_ctrl);
|
||||||
|
Point p = sb;
|
||||||
|
Size shift = Point(10, 10) - p;
|
||||||
|
Font mfont = StdFont().Bold();
|
||||||
|
FontInfo minfo = ScreenInfo().GetFontInfo(mfont);
|
||||||
|
int mht = minfo.GetHeight();
|
||||||
|
for(int m = 0; m < mnemonic.GetCount(); m++)
|
||||||
|
if(mnemonic[m].GetCount() >= 2)
|
||||||
|
{
|
||||||
|
const Vector<Ctrl *>& mdup = mnemonic[m];
|
||||||
|
for(int c = 0; c < mdup.GetCount(); c++)
|
||||||
|
{
|
||||||
|
char mnem = mnemonic.GetKey(m);
|
||||||
|
int mwd = minfo[(byte)mnem];
|
||||||
|
Ctrl& mctrl = mnem_ctrl.Add(new MnemCtrl(mnem, mfont));
|
||||||
|
mdup[c] -> Add(mctrl.RightPos(0, mwd + 2).BottomPos(0, mht));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::CleanRefCtrl()
|
||||||
|
{
|
||||||
|
for(int i = ref_ctrl.GetCount(); --i >= 0;)
|
||||||
|
if(!ref_ctrl[i].GetParent())
|
||||||
|
ref_ctrl.Remove(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::SetClass(int im) {
|
||||||
|
Ctrl& q = ctrl.Set(im, CreateCtrl(Item(im).classname));
|
||||||
|
CleanRefCtrl();
|
||||||
|
form.Add(q);
|
||||||
|
SynchronizeCtrl(im);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::Swap(int i1, int i2) {
|
||||||
|
ActualForm().item.Swap(i1, i2);
|
||||||
|
SetClass(i1);
|
||||||
|
SetClass(i2);
|
||||||
|
}
|
||||||
|
|
||||||
|
REGCTRLCLASS(Button)
|
||||||
|
REGCTRLCLASS(EditField)
|
||||||
|
REGCTRLCLASS(EditInt)
|
||||||
|
REGCTRLCLASS(EditDouble)
|
||||||
|
REGCTRLCLASS(EditDate)
|
||||||
|
//REGCTRLCLASS(EditTime)
|
||||||
|
REGCTRLCLASS(EditIntNotNull)
|
||||||
|
REGCTRLCLASS(EditDoubleNotNull)
|
||||||
|
REGCTRLCLASS(EditDateNotNull)
|
||||||
|
REGCTRLCLASS(EditIntSpin)
|
||||||
|
REGCTRLCLASS(EditString)
|
||||||
|
REGCTRLCLASS(EditStringNotNull)
|
||||||
|
//REGCTRLCLASS(TableArray)
|
||||||
|
REGCTRLCLASS(ArrayCtrl)
|
||||||
|
REGCTRLCLASS(Option)
|
||||||
|
REGCTRLCLASS(Switch)
|
||||||
|
REGCTRLCLASS(Label)
|
||||||
|
REGCTRLCLASS(LabelBox)
|
||||||
|
REGCTRLCLASS(WithDropChoice<EditString>)
|
||||||
|
REGCTRLCLASS(DropList)
|
||||||
|
REGCTRLCLASS(ScrollBar)
|
||||||
|
REGCTRLCLASS(DocEdit)
|
||||||
|
REGCTRLCLASS(QtfCtrl)
|
||||||
|
REGCTRLCLASS(StaticRect)
|
||||||
|
REGCTRLCLASS(Icon)
|
||||||
|
REGCTRLCLASS(ProgressIndicator)
|
||||||
|
/*
|
||||||
|
REGCTRLCLASS(Picture)
|
||||||
|
REGCTRLCLASS(SqlTable)
|
||||||
|
REGCTRLCLASS(SqlArray)
|
||||||
|
REGCTRLCLASS(SqlOption)
|
||||||
|
*/
|
||||||
|
REGCTRLCLASS(ToolBar)
|
||||||
|
REGCTRLCLASS(MenuBar)
|
||||||
|
//REGCTRLCLASS(InfoBar)
|
||||||
|
/*
|
||||||
|
REGCTRLCLASS(TableCheck)
|
||||||
|
REGCTRLCLASS(ValueOption)
|
||||||
|
REGCTRLCLASS(FileCtrl)
|
||||||
|
REGCTRLCLASS(MenuButton)
|
||||||
|
REGCTRLCLASS(DragDropCtrl)
|
||||||
|
REGCTRLCLASS(ScrollTable)
|
||||||
|
REGCTRLCLASS(StaticCtrl)
|
||||||
|
*/
|
||||||
|
REGCTRLCLASS(DataPusher)
|
||||||
|
//REGCTRLCLASS(ColorCtrl)
|
||||||
|
REGCTRLCLASS(TabCtrl)
|
||||||
|
//REGCTRLCLASS(OldTreeCtrl)
|
||||||
117
uppsrc2/rw/Lang.cpp
Normal file
117
uppsrc2/rw/Lang.cpp
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
#include "Designer.h"
|
||||||
|
|
||||||
|
int FindDlIndex(const DropList& d, const Value& val) {
|
||||||
|
for(int i = 0; i < d.GetCount(); i++)
|
||||||
|
if(d.GetValue(i) == val) return i;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector<String> LayoutDesigner::CoreLangs() {
|
||||||
|
Vector<String> r;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::AddLang(const String& lang, bool copy) {
|
||||||
|
int li = langlist.GetCount();
|
||||||
|
langlist.Add(li, lang);
|
||||||
|
if(copy)
|
||||||
|
for(int i = 0; i < layout.GetCount(); i++) {
|
||||||
|
Form& l = layout[i];
|
||||||
|
for(int i = 0; i < l.item.GetCount(); i++) {
|
||||||
|
String s = l.item[i].label.At(langi);
|
||||||
|
l.item[i].label.At(li) = s;
|
||||||
|
s = l.item[i].help.At(langi);
|
||||||
|
l.item[i].help.At(li) = s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetLayout(~layoutlist, li);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::NewLanguage() {
|
||||||
|
WithLangLayout<TopWindow> dlg;
|
||||||
|
CtrlLayoutOKCancel(dlg, "New language");
|
||||||
|
dlg.copy = true;
|
||||||
|
Vector<String> cl = CoreLangs();
|
||||||
|
dlg.language.AddList("LNG_ALBANIAN");
|
||||||
|
dlg.language.AddList("LNG_BELARUSIAN");
|
||||||
|
dlg.language.AddList("LNG_BULGARIAN");
|
||||||
|
dlg.language.AddList("LNG_CROATIAN");
|
||||||
|
dlg.language.AddList("LNG_CZECH");
|
||||||
|
dlg.language.AddList("LNG_DANISH");
|
||||||
|
dlg.language.AddList("LNG_DUTCH");
|
||||||
|
dlg.language.AddList("LNG_ENGLISH");
|
||||||
|
dlg.language.AddList("LNG_ESTONIAN");
|
||||||
|
dlg.language.AddList("LNG_FINNISH");
|
||||||
|
dlg.language.AddList("LNG_FRENCH");
|
||||||
|
dlg.language.AddList("LNG_GERMAN");
|
||||||
|
dlg.language.AddList("LNG_GREEK");
|
||||||
|
dlg.language.AddList("LNG_HUNGARIAN");
|
||||||
|
dlg.language.AddList("LNG_ICELANDIC");
|
||||||
|
dlg.language.AddList("LNG_ITALIAN");
|
||||||
|
dlg.language.AddList("LNG_LATVIAN");
|
||||||
|
dlg.language.AddList("LNG_LITHUANIAN");
|
||||||
|
dlg.language.AddList("LNG_MACEDONIAN");
|
||||||
|
dlg.language.AddList("LNG_NORWEGIAN");
|
||||||
|
dlg.language.AddList("LNG_POLISH");
|
||||||
|
dlg.language.AddList("LNG_PORTUGUESE");
|
||||||
|
dlg.language.AddList("LNG_ROMANIAN");
|
||||||
|
dlg.language.AddList("LNG_RUSSIAN");
|
||||||
|
dlg.language.AddList("LNG_SERBIAN");
|
||||||
|
dlg.language.AddList("LNG_SLOVAK");
|
||||||
|
dlg.language.AddList("LNG_SLOVENIAN");
|
||||||
|
dlg.language.AddList("LNG_SPANISH");
|
||||||
|
dlg.language.AddList("LNG_SWEDISH");
|
||||||
|
dlg.language.AddList("LNG_TURKISH");
|
||||||
|
dlg.language.AddList("LNG_UKRAINIAN");
|
||||||
|
if(dlg.Run() != IDOK) return;
|
||||||
|
AddLang(dlg.language, dlg.copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::RenameLanguage() {
|
||||||
|
if(langlist.GetCount() == 0) return;
|
||||||
|
String s = langlist.GetValue();
|
||||||
|
if(!EditText(s, "Pøejmenovat jazyk", "Nový jazyk")) return;
|
||||||
|
langlist.SetValue(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::RemoveLanguage() {
|
||||||
|
if(langlist.GetCount() == 0) return;
|
||||||
|
if(!PromptYesNo("Remove current language ?")) return;
|
||||||
|
int i;
|
||||||
|
Vector<String> s;
|
||||||
|
for(i = 0; i < langlist.GetCount(); i++)
|
||||||
|
if(i != langi)
|
||||||
|
s.Add(langlist.GetValue(i));
|
||||||
|
if(langlist.GetCount() > 1)
|
||||||
|
for(i = 0; i < layout.GetCount(); i++) {
|
||||||
|
Form& l = layout[i];
|
||||||
|
for(int i = 0; i < l.item.GetCount(); i++) {
|
||||||
|
l.item[i].label.Remove(langi);
|
||||||
|
l.item[i].help.Remove(langi);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
langlist.Clear();
|
||||||
|
for(i = 0; i < s.GetCount(); i++)
|
||||||
|
langlist.Add(i, s[i]);
|
||||||
|
SetLayout(~layoutlist, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::AddCoreLanguages() {
|
||||||
|
int id = PromptYesNoCancel("Copy current language ?");
|
||||||
|
if(id == IDCANCEL) return;
|
||||||
|
Vector<String> cl = CoreLangs();
|
||||||
|
for(int i = 0; i < cl.GetCount(); i++)
|
||||||
|
AddLang(cl[i], id == IDYES);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::PrevLang() {
|
||||||
|
if(langlist.GetCount() == 0) return;
|
||||||
|
langlist.SetIndex((langlist.GetIndex() + 1) % langlist.GetCount());
|
||||||
|
EnterLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LayoutDesigner::NextLang() {
|
||||||
|
if(langlist.GetCount() == 0) return;
|
||||||
|
langlist.SetIndex((langlist.GetIndex() + langlist.GetCount() - 1) % langlist.GetCount());
|
||||||
|
EnterLanguage();
|
||||||
|
}
|
||||||
1
uppsrc2/rw/StdCtrls.cpp
Normal file
1
uppsrc2/rw/StdCtrls.cpp
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
#include "Designer.h"
|
||||||
61
uppsrc2/rw/Util.cpp
Normal file
61
uppsrc2/rw/Util.cpp
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
#include "Designer.h"
|
||||||
|
|
||||||
|
struct VarLblDisplayCls : public Display
|
||||||
|
{
|
||||||
|
VarLblDisplayCls(bool selected) : selected(selected) {}
|
||||||
|
|
||||||
|
virtual void Paint(Draw& draw, const Rect& rc, const Value& value, Color i, Color p, dword style) const
|
||||||
|
{
|
||||||
|
ValueArray va(value);
|
||||||
|
if(selected && !(style & CURSOR))
|
||||||
|
i = SLtBlue;
|
||||||
|
if(va.GetCount() <= 1 || !IsNull(va[0]))
|
||||||
|
StdDisplay().Paint(draw, rc, va[0], i, p, style);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!(style & CURSOR))
|
||||||
|
i = Color(64, 160, selected ? 255 : 64);
|
||||||
|
StdDisplay().Paint(draw, rc, va[1], i, p, style);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool selected;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Display& VarLblDisplay(bool selected)
|
||||||
|
{
|
||||||
|
if(selected)
|
||||||
|
{
|
||||||
|
static VarLblDisplayCls vls(true);
|
||||||
|
return vls;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static VarLblDisplayCls vln(false);
|
||||||
|
return vln;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SelectedDisplay::Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper,
|
||||||
|
dword style) const {
|
||||||
|
w.DrawRect(r, paper);
|
||||||
|
DrawSmartText(w, r.left, r.top, r.Width(),
|
||||||
|
IsString(q) ? String(q) : StdFormat(q), StdFont(),
|
||||||
|
(style & CURSOR) ? ink : SLtBlue);
|
||||||
|
}
|
||||||
|
|
||||||
|
const SelectedDisplay SelDisplay;
|
||||||
|
|
||||||
|
void UrgCtrl::SetLabelText(const char *s) {
|
||||||
|
label = s;
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UrgCtrl::Paint(Draw& w) {
|
||||||
|
Size sz = GetSize();
|
||||||
|
w.DrawRect(0, 0, sz.cx, sz.cy, SLtCyan);
|
||||||
|
DrawSmartText(w, 0, 0, sz.cx, label);
|
||||||
|
Size tsz = w.GetTextSize(classname, Arial(11));
|
||||||
|
w.DrawRect(sz.cx - tsz.cx, sz.cy - tsz.cy, tsz.cx, tsz.cy, SBlue);
|
||||||
|
w.DrawText(sz.cx - tsz.cx, sz.cy - tsz.cy, classname, Arial(11), SYellow);
|
||||||
|
}
|
||||||
23
uppsrc2/rw/doc.dpp/AppDoc_RW_NewFeatures_EN-US.dpp
Normal file
23
uppsrc2/rw/doc.dpp/AppDoc_RW_NewFeatures_EN-US.dpp
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
ITEM("AppDoc", "RW", "NewFeatures", "EN-US") EXTERNAL
|
||||||
|
TEXT("[{_} ")
|
||||||
|
TEXT("[s0; [*2 May 27, 2003]]")
|
||||||
|
TEXT("&")
|
||||||
|
TEXT("[s0;2 ]")
|
||||||
|
TEXT("&")
|
||||||
|
TEXT("[s0; [* Graphical warnings on duplicate ][*_ m][* ne][*_ m][* on")
|
||||||
|
TEXT("ic ")
|
||||||
|
TEXT("keys]]")
|
||||||
|
TEXT("&")
|
||||||
|
TEXT("[s0;2 ]")
|
||||||
|
TEXT("&")
|
||||||
|
TEXT("[s0; [2 Layout editor displays a ][/2 red block with letter][2 ")
|
||||||
|
TEXT("in ")
|
||||||
|
TEXT("the bottomright corner of each set of layout controls sharing ")
|
||||||
|
TEXT("the same mnemonic hotkey (underlined letter marked by `& in the ")
|
||||||
|
TEXT("label text string). This helps the designer catch situations ")
|
||||||
|
TEXT("in which multiple controls are assigned the same hotkey which ")
|
||||||
|
TEXT("is annoying to the end application user.]]")
|
||||||
|
TEXT("&")
|
||||||
|
TEXT("[s0;2 ]")
|
||||||
|
TEXT("]")
|
||||||
|
END_ITEM
|
||||||
0
uppsrc2/rw/doc.dpp/links
Normal file
0
uppsrc2/rw/doc.dpp/links
Normal file
4
uppsrc2/rw/iderw.h
Normal file
4
uppsrc2/rw/iderw.h
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
bool CloseDesignLayout();
|
||||||
|
bool SaveDesignLayout();
|
||||||
|
void DesignLayout(String open_file);
|
||||||
|
Image GetRwIcon();
|
||||||
4
uppsrc2/rw/init
Normal file
4
uppsrc2/rw/init
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#ifndef _rw_icpp_init_stub
|
||||||
|
#define _rw_icpp_init_stub
|
||||||
|
#include "CtrlLib/init"
|
||||||
|
#endif
|
||||||
4
uppsrc2/rw/prj.aux
Normal file
4
uppsrc2/rw/prj.aux
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
file
|
||||||
|
e:\out\cxlsrc\rw\DEBUG-GUI-MAIN-MSC-ST-WIN32\rw.log,
|
||||||
|
G:\upp2out\rw\Debug-gui-main-msc-st-win32\rw.log,
|
||||||
|
F:\uppsrc\Core\core.upp;
|
||||||
BIN
uppsrc2/rw/rw.ico
Normal file
BIN
uppsrc2/rw/rw.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
497
uppsrc2/rw/rw.iml
Normal file
497
uppsrc2/rw/rw.iml
Normal file
|
|
@ -0,0 +1,497 @@
|
||||||
|
IMAGE_BEGIN(CrossCursor)
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("‰\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1\0\0\0")
|
||||||
|
IMAGE_PACKED(CrossCursor, "\2\20\0\0\0\20\0\0\0\4\0\0\0\4\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(RwIconSmall)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("<22>€€€")
|
||||||
|
IMAGE_SCAN("\1€€€<E282AC>\377\0\0\1€€€")
|
||||||
|
IMAGE_SCAN("\1€€€<E282AC>\377\0\0\1€€€")
|
||||||
|
IMAGE_SCAN("\1€€€<E282AC>ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("\2€€€ÀÀÀ‚\377\377\377\1\0\0\0…\377\377\377„ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("\2€€€ÀÀÀ‚\377\377\377‚\0\0\0„\377\377\377„ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("\1€€€ƒÀÀÀ\3\0\0\0003×\377\0\0\0‡ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("\1€€€ƒÀÀÀ\1\0\0\0‚3×\377\1\0\0\0†ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("\1€€€ƒÀÀÀ\1\0\0\0ƒ3×\377\1\0\0\0…ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("\1€€€ƒÀÀÀ\1\0\0\0ƒ3×\377‚\0\0\0…€€€")
|
||||||
|
IMAGE_SCAN("\1€€€ƒÀÀÀ\1\0\0\0‚3×\377\1\0\0\0‚ÀÀÀ\1€€€‚ÀÀÀ‚€€€")
|
||||||
|
IMAGE_SCAN("\1€€€ƒÀÀÀ\6\0\0\0hhh\0\0\0003×\377\0\0\0ÀÀÀ…€€€")
|
||||||
|
IMAGE_SCAN("„€€€\5\0\0\0€€€\0\0\0003×\377\0\0\0†€€€")
|
||||||
|
IMAGE_SCAN("Ç\3\0\0\0003×\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1€€€‚\0\0\0")
|
||||||
|
IMAGE_PACKED(RwIconSmall, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(RwIconLarge)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("Áž€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€œ\377\0\0\1€€€")
|
||||||
|
IMAGE_SCAN("Á\4€€€\377\0\0\377\377\377\377\0\0‚\377\377\377\1°°°‚\377\0\0\3\377\377\377\377\0\0\377\377\377‘\377\0\0\1€€€")
|
||||||
|
IMAGE_SCAN("Á\3€€€\377\0\0\377\377\377‚\377\0\0\6\377\377\377°°°\377\377\377\377\0\0\377\377\377\377\0\0‚\377\377\377<37>\377\0\0\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€œ\377\0\0\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€œÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€œÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€‚ÀÀÀŽ ŒÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€‚ÀÀÀ\1 <C2A0>\377\377\377\1ÞÞÞ‹ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€‚ÀÀÀ\1 <C2A0>\377\377\377\1ÞÞÞ‹ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ƒÀÀÀŽÞÞÞ‹ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€œÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€œÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€‚ÀÀÀ‚NNN‚ÀÀÀ\2 ÀÀÀ‚\0\0\0’ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€‚ÀÀÀ\3NNNÞÞÞÀÀÀ‚ \4ÀÀÀ\0\0\0003×\377\0\0\0‘ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0‚3×\377\1\0\0\0<>ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0ƒ3×\377\1\0\0\0<>ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0„3×\377\1\0\0\0ŽÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0…3×\377\1\0\0\0<>ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0†3×\377\1\0\0\0ŒÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0„3×\377„\0\0\0‹ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0‚3×\377\3\0\0\0003×\377\0\0\0ƒÀÀÀ‰ÞÞÞ‚ÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\2\0\0\0003×\377‚\0\0\0‚3×\377\1\0\0\0‚ÀÀÀ\3ÞÞÞÀÀÀ ‚ÀÀÀ‚ ‚ÀÀÀ\3 ÀÀÀ€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ‚\0\0\0\2ÀÀÀ\0\0\0‚3×\377\1\0\0\0‚ÀÀÀ\2ÞÞÞÀÀÀ‚ \2ÀÀÀ ƒÀÀÀ\3 ÀÀÀ€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ˆÀÀÀ\1\0\0\0ƒÀÀÀ\1\0\0\0‚3×\377\1\0\0\0‚ÀÀÀ‰ \2ÀÀÀ€€€")
|
||||||
|
IMAGE_SCAN("Á\1€€€ŒÀÀÀ\1\0\0\0‚3×\377\1\0\0\0ŒÀÀÀ\1€€€")
|
||||||
|
IMAGE_SCAN("Á<>\0\0\0\0013×\377Ž\0\0\0")
|
||||||
|
IMAGE_SCAN("Ð\1\0\0\0")
|
||||||
|
IMAGE_PACKED(RwIconLarge, "\2 \0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ALIGNLEFT)
|
||||||
|
IMAGE_SCAN("\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á‡\0\0\0Ã\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0‚€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á\7\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0Á…€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0‚€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á‡\0\0\0Ã\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0ƒ\0\0\0Ä\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0‚€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á\5\0\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0Á‡€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Á\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0‚€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0ƒ\0\0\0Ä\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_ALIGNLEFT, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ALIGNRIGHT)
|
||||||
|
IMAGE_SCAN("Î\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Î\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Â\1€\0\0Ç\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("‚€\0\0Â\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("…€\0\0Á\7\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("‚€\0\0Â\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Â\1€\0\0Ç\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Î\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Î\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0ă\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä‚€\0\0Â\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("‡€\0\0Á\5\0\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä‚€\0\0Â\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Á\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0ă\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Î\1\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_ALIGNRIGHT, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ALIGNTOP)
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("ƒ\0\0\0‡\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Á\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\5\0\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0Á\7\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Á\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\0\0\0‡\0\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("ƒ€\0\0ă€\0\0")
|
||||||
|
IMAGE_SCAN("Á…€\0\0Â…€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Æ\1€\0\0")
|
||||||
|
IMAGE_PACKED(TB_ALIGNTOP, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ALIGNBOTTOM)
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Á…€\0\0Ã…€\0\0")
|
||||||
|
IMAGE_SCAN("ƒ€\0\0Ń€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("ƒ\0\0\0Ç\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Â\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\5\0\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0Â\7\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Â\7\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\0\0\0Ç\0\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_ALIGNBOTTOM, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_VERTCENTER)
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Ç\1€\0\0Æ\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Å…€\0\0Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0ƃ€\0\0Å\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Ç\1€\0\0Æ\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Š\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\12\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\12\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Š\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Ç\1€\0\0Æ\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0ƃ€\0\0Å\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Å…€\0\0Ä\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Ç\1€\0\0Æ\1\0\0\0")
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_VERTCENTER, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_HORZCENTER)
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Î\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Å„\0\0\0Å\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Å\4\0\0\0\377\377\377ÀÀÀ\0\0\0Å\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Å\4\0\0\0ÀÀÀ\377\377\377\0\0\0Å\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1€\0\0Â\4\0\0\0\377\377\377ÀÀÀ\0\0\0Â\1€\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0‚€\0\0Á\4\0\0\0ÀÀÀ\377\377\377\0\0\0Á‚€\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0…€\0\0\4\0\0\0\377\377\377ÀÀÀ\0\0\0…€\0\0\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0‚€\0\0Á\4\0\0\0ÀÀÀ\377\377\377\0\0\0Á‚€\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1€\0\0Â\4\0\0\0\377\377\377ÀÀÀ\0\0\0Â\1€\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Å\4\0\0\0ÀÀÀ\377\377\377\0\0\0Å\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Å„\0\0\0Å\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Î\1\0\0\0")
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_HORZCENTER, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ESPACEHORZ)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("ƒ\0\0\0Ƀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\3\377\377\377ÀÀÀ\0\0\0É\3\0\0\0\377\377\377ÀÀÀ")
|
||||||
|
IMAGE_SCAN("\3ÀÀÀ\377\377\377\0\0\0É\3\0\0\0ÀÀÀ\377\377\377")
|
||||||
|
IMAGE_SCAN("\3\377\377\377ÀÀÀ\0\0\0É\3\0\0\0\377\377\377ÀÀÀ")
|
||||||
|
IMAGE_SCAN("\3ÀÀÀ\377\377\377\0\0\0Â\1€\0\0Ã\1€\0\0Â\3\0\0\0ÀÀÀ\377\377\377")
|
||||||
|
IMAGE_SCAN("\3\377\377\377ÀÀÀ\0\0\0Á‚€\0\0€\0\0Á\3\0\0\0\377\377\377ÀÀÀ")
|
||||||
|
IMAGE_SCAN("\3ÀÀÀ\377\377\377\0\0\0‰€\0\0\3\0\0\0ÀÀÀ\377\377\377")
|
||||||
|
IMAGE_SCAN("\3\377\377\377ÀÀÀ\0\0\0Á‚€\0\0€\0\0Á\3\0\0\0\377\377\377ÀÀÀ")
|
||||||
|
IMAGE_SCAN("\3ÀÀÀ\377\377\377\0\0\0Â\1€\0\0Ã\1€\0\0Â\3\0\0\0ÀÀÀ\377\377\377")
|
||||||
|
IMAGE_SCAN("\3\377\377\377ÀÀÀ\0\0\0É\3\0\0\0\377\377\377ÀÀÀ")
|
||||||
|
IMAGE_SCAN("\3ÀÀÀ\377\377\377\0\0\0É\3\0\0\0ÀÀÀ\377\377\377")
|
||||||
|
IMAGE_SCAN("ƒ\0\0\0Ƀ\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_ESPACEHORZ, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ESPACEVERT)
|
||||||
|
IMAGE_SCAN("\14\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\14\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Œ\0\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ń€\0\0")
|
||||||
|
IMAGE_SCAN("Ä…€\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ä…€\0\0")
|
||||||
|
IMAGE_SCAN("Ń€\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Œ\0\0\0")
|
||||||
|
IMAGE_SCAN("\14\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\14\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_ESPACEVERT, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SAMEWIDTH)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\2\0\0\0\377\377\377‚€\0\0\7ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ‚€\0\0\2\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0<>€\0\0\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\2\0\0\0\377\377\377‚€\0\0\7ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ‚€\0\0\2\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_SAMEWIDTH, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SAMEHEIGHT)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("É\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\11\0\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\3\0\0\0ÀÀÀ\377\377\377ƒ€\0\0\3\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\2\0\0\0\377\377\377…€\0\0\2\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\11\0\0\0ÀÀÀ\377\377\377ÀÀÀ€\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\11\0\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\11\0\0\0ÀÀÀ\377\377\377ÀÀÀ€\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\11\0\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\11\0\0\0ÀÀÀ\377\377\377ÀÀÀ€\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\2\0\0\0\377\377\377…€\0\0\2\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\3\0\0\0ÀÀÀ\377\377\377ƒ€\0\0\3\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\11\0\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("É\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_SAMEHEIGHT, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SAMESIZE)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ€\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\6\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀƒ€\0\0\6ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\5\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ…€\0\0\5ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\2\0\0\0\377\377\377‚€\0\0\7ÀÀÀ\377\377\377ÀÀÀ€\0\0ÀÀÀ\377\377\377ÀÀÀ‚€\0\0\2\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0<>€\0\0\1\0\0\0")
|
||||||
|
IMAGE_SCAN("\2\0\0\0\377\377\377‚€\0\0\7ÀÀÀ\377\377\377ÀÀÀ€\0\0ÀÀÀ\377\377\377ÀÀÀ‚€\0\0\2\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\377\377\377€\0\0\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\5\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ…€\0\0\5ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("\6\0\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀƒ€\0\0\6ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("\17\0\0\0\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ€\0\0ÀÀÀ\377\377\377ÀÀÀ\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("<22>\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_SAMESIZE, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_GRID)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0Â\1\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_GRID, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ALIGNHCENTER)
|
||||||
|
IMAGE_SCAN("Ç\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\1€\0\0‡\0\0\0Â\1€\0\0")
|
||||||
|
IMAGE_SCAN("Á‚€\0\0Á\7\0\0\0\377\377\377ÀÀÀ\0\0\0ÀÀÀ\377\377\377\0\0\0Á‚€\0\0")
|
||||||
|
IMAGE_SCAN("„€\0\0\7\0\0\0ÀÀÀ\377\377\377\0\0\0\377\377\377ÀÀÀ\0\0\0„€\0\0")
|
||||||
|
IMAGE_SCAN("Á‚€\0\0Á\7\0\0\0\377\377\377ÀÀÀ\0\0\0ÀÀÀ\377\377\377\0\0\0Á‚€\0\0")
|
||||||
|
IMAGE_SCAN("Á\1€\0\0‡\0\0\0Â\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Â\1€\0\0Ã\0\0\0Ã\1€\0\0")
|
||||||
|
IMAGE_SCAN("‚€\0\0Á\5\0\0\0\377\377\377\0\0\0\377\377\377\0\0\0Á‚€\0\0")
|
||||||
|
IMAGE_SCAN("…€\0\0\5\0\0\0ÀÀÀ\0\0\0ÀÀÀ\0\0\0…€\0\0")
|
||||||
|
IMAGE_SCAN("‚€\0\0Á\5\0\0\0\377\377\377\0\0\0\377\377\377\0\0\0Á‚€\0\0")
|
||||||
|
IMAGE_SCAN("Â\1€\0\0Ã\0\0\0Ã\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_ALIGNHCENTER, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ALIGNVCENTER)
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0Æ\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0Ä…€\0\0")
|
||||||
|
IMAGE_SCAN("Â…€\0\0À\0\0")
|
||||||
|
IMAGE_SCAN("À\0\0Å\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0Ä…\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\0\0\0Ã\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Â\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Â\5\0\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Á<>\0\0\0")
|
||||||
|
IMAGE_SCAN("Â\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0Â\5\0\0\0ÀÀÀ\377\377\377ÀÀÀ\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\0\0\0Ã\5\0\0\0\377\377\377ÀÀÀ\377\377\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0Ä…\0\0\0")
|
||||||
|
IMAGE_SCAN("À\0\0Å\1€\0\0")
|
||||||
|
IMAGE_SCAN("Â…€\0\0À\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0Ä…€\0\0")
|
||||||
|
IMAGE_SCAN("Ä\1€\0\0Æ\1€\0\0")
|
||||||
|
IMAGE_PACKED(TB_ALIGNVCENTER, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_MINHEIGHT)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Å…€\0\0")
|
||||||
|
IMAGE_SCAN("ƃ€\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Á<>\0\0\0")
|
||||||
|
IMAGE_SCAN("Á\1\0\0\0‹\0\0\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Á<>\0\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("ƃ€\0\0")
|
||||||
|
IMAGE_SCAN("Å…€\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1€\0\0")
|
||||||
|
IMAGE_PACKED(TB_MINHEIGHT, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_MINWIDTH)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("ƃ\0\0\0")
|
||||||
|
IMAGE_SCAN("Æ\3\0\0\0\0\0\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Æ\3\0\0\0\0\0\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Æ\3\0\0\0\0\0\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Â\3\0\0\0\0\0\377\0\0\0Â\1€\0\0")
|
||||||
|
IMAGE_SCAN("€\0\0Á\3\0\0\0\0\0\377\0\0\0Á‚€\0\0")
|
||||||
|
IMAGE_SCAN("Á…€\0\0\3\0\0\0\0\0\377\0\0\0…€\0\0")
|
||||||
|
IMAGE_SCAN("€\0\0Á\3\0\0\0\0\0\377\0\0\0Á‚€\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1€\0\0Â\3\0\0\0\0\0\377\0\0\0Â\1€\0\0")
|
||||||
|
IMAGE_SCAN("Æ\3\0\0\0\0\0\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Æ\3\0\0\0\0\0\377\0\0\0")
|
||||||
|
IMAGE_SCAN("Æ\3\0\0\0\0\0\377\0\0\0")
|
||||||
|
IMAGE_SCAN("ƃ\0\0\0")
|
||||||
|
IMAGE_PACKED(TB_MINWIDTH, "\2\20\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_ALIGNLBL)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("Ì\1€\0\0")
|
||||||
|
IMAGE_SCAN("˃€\0\0")
|
||||||
|
IMAGE_SCAN("Ê…€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0‚\0\0\0Â\1\0\0\0Ä\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Á\1\0\0\0Á\1\0\0\0Ä\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Á\1\0\0\0Á\1\0\0\0Ä\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0‚\0\0\0Â\1\0\0\0Á†\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Á\1\0\0\0Á\1\0\0\0Ä\1€\0\0")
|
||||||
|
IMAGE_SCAN("\1\0\0\0Â\1\0\0\0Á\1\0\0\0Á\1\0\0\0Ä\1€\0\0")
|
||||||
|
IMAGE_SCAN("‚\0\0\0Á‚\0\0\0‚\0\0\0Ã\1€\0\0")
|
||||||
|
IMAGE_SCAN("Ê…€\0\0")
|
||||||
|
IMAGE_SCAN("˃€\0\0")
|
||||||
|
IMAGE_SCAN("Ì\1€\0\0")
|
||||||
|
IMAGE_PACKED(TB_ALIGNLBL, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGLEFT)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("Ì\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0‡\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0…\377\377\377\1\0\0\0Áƒ\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0\1\0\0\0…\377\377\377\1\0\0\0‚\377\0\0Á\1\377\0\0Á\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0…\377\377\377\1\0\0\0Ã\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0‡\0\0\0Ä\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Î\1\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGLEFT, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGHSIZE)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Š\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0ˆ\377\377\377\1\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0\1\0\0\0ˆ\377\377\377\1\0\0\0ƒ\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0ˆ\377\377\377\1\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Š\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGHSIZE, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGHCENTER)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("Ã\1\377\0\0Ê\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1\377\0\0Á†\0\0\0Ã\1\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0\1\0\0\0„\377\377\377\1\0\0\0ƒ\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Á\1\377\0\0Á\2\377\0\0\0\0\0„\377\377\377\2\0\0\0\377\0\0Á\1\377\0\0Á\1\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0Â\1\0\0\0„\377\377\377\1\0\0\0ƒ\377\0\0")
|
||||||
|
IMAGE_SCAN("Á\1\377\0\0Æ\0\0\0Á\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Á\1\377\0\0Ê\1\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGHCENTER, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGRIGHT)
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("")
|
||||||
|
IMAGE_SCAN("Ã\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1\377\0\0‡\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0Á\1\0\0\0…\377\377\377\1\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Á\1\377\0\0Á‚\377\0\0\1\0\0\0…\377\377\377\1\0\0\0ƒ\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0Ã\1\0\0\0…\377\377\377\1\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Á\1\377\0\0ć\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Á\1\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGRIGHT, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGTOP)
|
||||||
|
IMAGE_SCAN("Å…\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç‚\377\0\0")
|
||||||
|
IMAGE_SCAN("ȃ\377\0\0")
|
||||||
|
IMAGE_SCAN("ƃ\377\0\0")
|
||||||
|
IMAGE_SCAN("ă\377\0\0")
|
||||||
|
IMAGE_SCAN("Æ‚\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGTOP, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGVSIZE)
|
||||||
|
IMAGE_SCAN("Å…\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Å…\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGVSIZE, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGVCENTER)
|
||||||
|
IMAGE_SCAN("Æ‚\377\0\0")
|
||||||
|
IMAGE_SCAN("ă\377\0\0")
|
||||||
|
IMAGE_SCAN("ƃ\377\0\0")
|
||||||
|
IMAGE_SCAN("ȃ\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç‚\377\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Æ‚\377\0\0")
|
||||||
|
IMAGE_SCAN("ă\377\0\0")
|
||||||
|
IMAGE_SCAN("ƃ\377\0\0")
|
||||||
|
IMAGE_SCAN("ȃ\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç‚\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGVCENTER, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGBOTTOM)
|
||||||
|
IMAGE_SCAN("Æ‚\377\0\0")
|
||||||
|
IMAGE_SCAN("ă\377\0\0")
|
||||||
|
IMAGE_SCAN("ƃ\377\0\0")
|
||||||
|
IMAGE_SCAN("ȃ\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç‚\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\0\0\0ƒ\377\377\377\1\0\0\0")
|
||||||
|
IMAGE_SCAN("Å…\0\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Å…\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGBOTTOM, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGTOPLEFT)
|
||||||
|
IMAGE_SCAN("Ä…\377\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0…\377\377\377\1\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0…\377\377\377\1\0\0\0Áƒ\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0\1\0\0\0…\377\377\377\1\0\0\0‚\377\0\0Á\1\377\0\0Á\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0…\377\377\377\1\0\0\0Ã\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0…\377\377\377\1\0\0\0Ä\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ç\0\0\0Ä\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Æ\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Æ‚\377\0\0")
|
||||||
|
IMAGE_SCAN("ǃ\377\0\0")
|
||||||
|
IMAGE_SCAN("Ń\377\0\0")
|
||||||
|
IMAGE_SCAN("Ã\377\0\0")
|
||||||
|
IMAGE_SCAN("Å‚\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGTOPLEFT, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
|
IMAGE_BEGIN(TB_SPRINGAUTO)
|
||||||
|
IMAGE_SCAN("Ã…\377\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Å\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â…\0\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0ƒ\377\377\377\1\0\0\0Â\1\377\0\0Ã\1\377\0\0")
|
||||||
|
IMAGE_SCAN("ƒ\377\0\0\1\0\0\0ƒ\377\377\377\1\0\0\0‚\377\0\0Á\1\377\0\0Á\1\377\0\0Á\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â\1\0\0\0ƒ\377\377\377\1\0\0\0Ä\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Â…\0\0\0")
|
||||||
|
IMAGE_SCAN("È…\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Á\1\377\0\0Ã\1\377\0\0Â\1\0\0\0ƒ\377\377\377\1\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("\1\377\0\0Á\1\377\0\0Á\1\377\0\0Á‚\377\0\0\1\0\0\0ƒ\377\377\377\1\0\0\0ƒ\377\0\0")
|
||||||
|
IMAGE_SCAN("Ã\1\377\0\0Ä\1\0\0\0ƒ\377\377\377\1\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("È…\0\0\0Â\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ê\1\377\0\0")
|
||||||
|
IMAGE_SCAN("Ê\1\377\0\0")
|
||||||
|
IMAGE_SCAN("È…\377\0\0")
|
||||||
|
IMAGE_PACKED(TB_SPRINGAUTO, "\2\20\0\0\0\20\0\0\0\377\377\377\377\0\0\0\0\0\0\0\0")
|
||||||
1
uppsrc2/rw/rw.rc
Normal file
1
uppsrc2/rw/rw.rc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
5555 ICON "rw.ico"
|
||||||
27
uppsrc2/rw/rw.upp
Normal file
27
uppsrc2/rw/rw.upp
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
acceptflags
|
||||||
|
IDERW;
|
||||||
|
|
||||||
|
uses
|
||||||
|
CtrlLib;
|
||||||
|
|
||||||
|
file
|
||||||
|
Designer.h,
|
||||||
|
Designer.lay,
|
||||||
|
Designer.cpp,
|
||||||
|
DesignerFile.cpp,
|
||||||
|
DesignerLayt.cpp,
|
||||||
|
DesignerWin.cpp,
|
||||||
|
iderw.h,
|
||||||
|
Alias.cpp,
|
||||||
|
ItemCtrl.cpp,
|
||||||
|
Lang.cpp,
|
||||||
|
StdCtrls.cpp,
|
||||||
|
Util.cpp,
|
||||||
|
rw.iml,
|
||||||
|
rw.rc,
|
||||||
|
Info readonly separator,
|
||||||
|
Copying;
|
||||||
|
|
||||||
|
mainconfig
|
||||||
|
"" = "";
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue