Compare commits
206 Commits
Author | SHA1 | Date | |
---|---|---|---|
92b55c43f6 | |||
8806c99613 | |||
626c9ba386 | |||
b7b962c3f5 | |||
432fa5bf2e | |||
c8f4a14517 | |||
05a4627a23 | |||
a044d64f02 | |||
1d65639191 | |||
e575ec6116 | |||
8b5a8c83dc | |||
962da14ed1 | |||
bba1477118 | |||
857ad3001b | |||
ebc0fdef72 | |||
47c144910f | |||
18ca91a514 | |||
45827887f7 | |||
2d6e2d4d2f | |||
dc8f8429fc | |||
c2f8cc81f3 | |||
9305207371 | |||
8f320e07e3 | |||
ee3c56e02f | |||
ff76c178d4 | |||
e07b79db49 | |||
43c841608e | |||
e34df50369 | |||
24616dac9c | |||
735bfbc9e9 | |||
40339d34bd | |||
b6e3bce68f | |||
f655155aa4 | |||
34af3f6bb2 | |||
d8b43a1f78 | |||
df14d2364a | |||
15ff9cebb0 | |||
a42436092b | |||
c4f59d8734 | |||
395ada4ec8 | |||
f273f809c2 | |||
06624bb21e | |||
1857db4208 | |||
d756dbe9fd | |||
b2e2d8254a | |||
a09f071a11 | |||
fde82393d2 | |||
d9f9c89118 | |||
6e517cec42 | |||
0cc540449b | |||
6a937ebb8c | |||
da184c6767 | |||
4667e78aa6 | |||
c7de44171d | |||
8d22c48dc3 | |||
8094d7c5ab | |||
64b9f31a53 | |||
c284ad0b3a | |||
8eb7fe9839 | |||
0b84458985 | |||
c0de59ac9a | |||
dbc6b3439d | |||
c7efaf95ab | |||
ac0ab974f6 | |||
1a2f0b6d91 | |||
235847a1c6 | |||
948e672eb1 | |||
bc7ed8f729 | |||
0d47ff22e2 | |||
c251a419ad | |||
a265735cd1 | |||
1821f2927b | |||
badb11d80d | |||
499dfcffe6 | |||
3f5d2abc41 | |||
3e3c47cfa9 | |||
c0705be42c | |||
9f96beced2 | |||
aed62ff58b | |||
2d4aac44fb | |||
d3d4650d62 | |||
c9b86afea0 | |||
d1f0caf386 | |||
6980c78684 | |||
b5ef639438 | |||
590e84e486 | |||
cca05c01c0 | |||
dbac89199f | |||
52ee889ee5 | |||
893213c6c9 | |||
b5ff73e030 | |||
82836ac045 | |||
0db5f0c528 | |||
f6c4f4f9b3 | |||
2028030df6 | |||
c6269cbfd6 | |||
d2a7464341 | |||
1fcf8b8a74 | |||
ad32734537 | |||
89afc13dce | |||
32b0b76fb9 | |||
4e527931c7 | |||
e0bf7c77c2 | |||
2a467a7a5d | |||
386f5ed011 | |||
1359193a63 | |||
192bd045fa | |||
0f64bad930 | |||
d2e9ab8b1a | |||
e17c9f9cf7 | |||
7340844d12 | |||
bd9e5f03f4 | |||
2330788ace | |||
e3dc686ec9 | |||
3f4a71065d | |||
cefe0aacdb | |||
3c79dec2c8 | |||
7f7b3283e3 | |||
7c37d8e549 | |||
a201439665 | |||
67a08dd775 | |||
7952872980 | |||
78887e64ed | |||
d93844d6da | |||
243d7e7494 | |||
154351e629 | |||
febbaffdf4 | |||
b890f931ca | |||
2c3a64933d | |||
b8962cc3b9 | |||
f9ff0b8899 | |||
f971c4fdfe | |||
6076698201 | |||
c12ed9e7fa | |||
e29aa94cc5 | |||
05ac6a9210 | |||
0a054c209f | |||
996fd58370 | |||
3574fd917c | |||
b889b4aa5a | |||
668570cdc7 | |||
7e6f56a1cd | |||
a371c09e22 | |||
cd3c5ff2d4 | |||
686ec6d8bd | |||
d31137e1a3 | |||
03fa46bbcd | |||
7da1beb12d | |||
ddd21072b5 | |||
bf7899e045 | |||
3f0febce28 | |||
5a924f7c9d | |||
39801fd265 | |||
ebdfd8be4c | |||
1d60917575 | |||
86d54590c0 | |||
b9a1c026fa | |||
4942765ccf | |||
a425bdc17b | |||
7d7d66d121 | |||
55e05d24a3 | |||
173e57342d | |||
09425067dc | |||
780234de13 | |||
c421bd5f90 | |||
3ec3fa00d9 | |||
9b21e5c769 | |||
2157099f0a | |||
d18b202e75 | |||
63834fe960 | |||
cab0e6009d | |||
08261def10 | |||
304ac2ba45 | |||
2d8c5d588d | |||
f1543f6199 | |||
7acd5127eb | |||
0c6151283b | |||
8854a5a34b | |||
958138ecbb | |||
44bc1dd277 | |||
0821335de6 | |||
8d0fc9023f | |||
4f0839221d | |||
17101a38b0 | |||
def986ab82 | |||
7ebc20e936 | |||
f807faf55a | |||
bca2019789 | |||
108afd2d30 | |||
a7907cd9b5 | |||
8830d47b51 | |||
599e49bcfd | |||
78c6baa02f | |||
46b95656bd | |||
e2b365cffb | |||
bcf318dbec | |||
55e45c1b6b | |||
eef2bf64b9 | |||
db8f379e30 | |||
2fc47723f0 | |||
29f0656dfa | |||
3a95113f82 | |||
450732a27b | |||
90b766d2c7 | |||
edb2ab58f2 | |||
9ce727e481 |
70
.travis.yml
Normal file
@@ -0,0 +1,70 @@
|
||||
language:
|
||||
- cpp
|
||||
|
||||
sudo: false
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- dev
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-4.9
|
||||
|
||||
install:
|
||||
- echo "BUILDER = $BUILDER"
|
||||
- echo "BOARD = $BOARD"
|
||||
- echo "CONF = $CONF"
|
||||
- pip install --user lutin
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- CONF=debug BOARD=Linux
|
||||
#- CONF=debug BOARD=Windows
|
||||
#- CONF=debug BOARD=Android
|
||||
- CONF=release BOARD=Linux
|
||||
#- CONF=release BOARD=Windows
|
||||
#- CONF=release BOARD=Android
|
||||
exclude:
|
||||
- compiler: clang
|
||||
env: BOARD=Windows
|
||||
- compiler: clang
|
||||
env: BOARD=Android
|
||||
|
||||
before_script:
|
||||
- cd ..
|
||||
- mkdir bin
|
||||
- curl https://storage.googleapis.com/git-repo-downloads/repo > bin/repo
|
||||
- chmod a+x bin/repo
|
||||
- git config --global user.email "travis@travis.com"
|
||||
- git config --global user.name "Travis"
|
||||
- git config --global color.ui "auto"
|
||||
- git config --global core.editor "vi"
|
||||
- mkdir framework
|
||||
- cd framework
|
||||
- ../bin/repo init -u https://github.com/HeeroYui/manifest.git
|
||||
- ../bin/repo sync -j8
|
||||
- cd ..
|
||||
- pwd
|
||||
- ls -l
|
||||
- if [ "$CXX" == "clang++" ]; then BUILDER=clang; else BUILDER=gcc; fi
|
||||
- if [ "$CXX" == "g++" ]; then COMPILATOR_OPTION="--compilator-version=4.9"; else COMPILATOR_OPTION=""; fi
|
||||
|
||||
script:
|
||||
- lutin -C -P -t $BOARD -c $BUILDER $COMPILATOR_OPTION -m $CONF -p edn
|
||||
|
||||
notifications:
|
||||
email:
|
||||
- yui.heero@gmail.com
|
4
CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
SUBDIRS(${CMAKE_CURRENT_SOURCE_DIR}/../ewol)
|
||||
SUBDIRS(sources)
|
95
README.md
@@ -5,58 +5,83 @@ Edn
|
||||
|
||||
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
|
||||
|
||||
|
||||
[](https://travis-ci.org/HeeroYui/edn)
|
||||
|
||||
Instructions
|
||||
============
|
||||
|
||||
download the software :
|
||||
need google repo:
|
||||
-----------------
|
||||
|
||||
mkdir yourDevFolder
|
||||
cd yourDevFolder
|
||||
git clone git://github.com/HeeroYui/ewol.git
|
||||
cd ewol
|
||||
git submodule init
|
||||
git submodule update
|
||||
cd ..
|
||||
git clone git://github.com/HeeroYui/edn.git
|
||||
cd edn
|
||||
see: http://source.android.com/source/downloading.html#installing-repo
|
||||
|
||||
mkdir ~/.bin
|
||||
PATH=~/.bin:$PATH
|
||||
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
|
||||
chmod a+x ~/.bin/repo
|
||||
|
||||
download Build system:
|
||||
----------------------
|
||||
|
||||
sudo pip install lutin
|
||||
sudo pip install pillow
|
||||
|
||||
|
||||
download the Framework:
|
||||
----------------------
|
||||
|
||||
mkdir -p WORKING_DIRECTORY/framework
|
||||
cd WORKING_DIRECTORY/framework
|
||||
repo init -u git://github.com/atria-soft/manifest.git
|
||||
repo sync -j8
|
||||
cd ../..
|
||||
|
||||
download the software:
|
||||
----------------------
|
||||
|
||||
mkdir -p WORKING_DIRECTORY/application
|
||||
cd WORKING_DIRECTORY/application
|
||||
git clone https://github.com/HeeroYui/edn.git
|
||||
cd ../..
|
||||
|
||||
Compile software:
|
||||
-----------------
|
||||
|
||||
cd WORKING_DIRECTORY
|
||||
lutin -C -P edn
|
||||
|
||||
(debug) Compile software & Run debug version:
|
||||
|
||||
../ewol/build/lutin.py --color --mode=debug
|
||||
or
|
||||
../ewol/build/lutin.py --color --compilator=clang --mode=debug
|
||||
./out/Linux/debug/staging/edn//usr/bin/edn -l6 yourFile.txt
|
||||
Note : -l6 corespond at the LOG level to display.
|
||||
lutin -C -P -m debug edn
|
||||
# or
|
||||
lutin -C -P -c clang -m debug edn
|
||||
|
||||
|
||||
(release) Compile software & install & run:
|
||||
|
||||
# generate binary, tree, package and install it ...
|
||||
../ewol/build/lutin.py -c edn-install
|
||||
edn exemple.txt
|
||||
lutin -C -P edn?install
|
||||
|
||||
|
||||
(Android) Compile software & install
|
||||
|
||||
cd yourDevFolder
|
||||
mkdir andoid
|
||||
cd android
|
||||
download here in "sdk" and "ndk" the coresponding SDK and NDK of Android:
|
||||
http://developer.android.com/tools/sdk/ndk/index.html
|
||||
http://developer.android.com/sdk/index.html
|
||||
==> you need to download sub package of the NDK (refer to the NDK doccumentation) but only supported android version >4.0
|
||||
cd ../edn
|
||||
# generate .so
|
||||
../ewol/build/lutin.py --color --target=Android --mode=debug edn-install
|
||||
cd ..
|
||||
# Generate package and install on Android device (in debug mode a generic key is set)
|
||||
lutin -C -P -t Android -m debug edn?install
|
||||
# to show the log :
|
||||
../ewol/build/lutin.py --target=Android edn-log
|
||||
lutin -C -P -t Android edn?log
|
||||
|
||||
|
||||
(Windows) Compile software & install
|
||||
|
||||
cd yourDevFolder/edn
|
||||
../ewol/build/lutin.py --color --target=Windows --mode=debug
|
||||
lutin -C -P -t Windows -m debug edn
|
||||
|
||||
|
||||
(MAC) All needed and some useful packages
|
||||
@@ -65,15 +90,25 @@ download the software :
|
||||
- Xcode ==> for all developement packages
|
||||
- in Xcode : XCode->Setting->Download and install component: "Command Line Tools"
|
||||
|
||||
cd yourDevFolder/edn
|
||||
../ewol/build/lutin.py --color --mode=debug
|
||||
lutin -C -P -m debug edn
|
||||
|
||||
|
||||
On linux you can generate 3 board in one time
|
||||
=============================================
|
||||
(IOs) All needed and some useful packages
|
||||
|
||||
cd yourDevFolder/edn
|
||||
../ewol/build/lutin.py --color --target=Linux --mode=debug edn --target=Windows --mode=debug edn --target=Android --mode=debug edn
|
||||
- Git access (client you want or : http://code.google.com/p/git-osx-installer/ ==>need a ctrl+click to remove the normal installation control)
|
||||
- Xcode ==> for all developement packages
|
||||
- in Xcode : XCode->Setting->Download and install component: "Command Line Tools"
|
||||
|
||||
for porting on IOs you need a developper account
|
||||
|
||||
# compile and install on simulator (no developper account needed)
|
||||
lutin -C -P -t IOs -m debug --simulation edn?install
|
||||
# launch IOs simulator in xcode, and your application will appear on the second page (32 bit mode only)
|
||||
|
||||
# compile and install on board
|
||||
lutin -C -P -t IOs -m debug edn?install
|
||||
# compile and install on board and debug mode :
|
||||
lutin -C -P -t IOs -m debug --simulation edn?log
|
||||
|
||||
Dependency packages
|
||||
===================
|
||||
|
@@ -1,68 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Modules
|
||||
#
|
||||
# CONFIG_BUILD_AGG is not set
|
||||
# CONFIG_BUILD_LINEARMATH is not set
|
||||
# CONFIG_BUILD_BULLET is not set
|
||||
# CONFIG_BUILD_ETK is not set
|
||||
# CONFIG_BUILD_FREETYPE is not set
|
||||
# CONFIG_BUILD_LUA is not set
|
||||
# CONFIG_BUILD_OGG is not set
|
||||
# CONFIG_BUILD_PARSERSVG is not set
|
||||
# CONFIG_BUILD_LIBPNG is not set
|
||||
# CONFIG_BUILD_TINYXML is not set
|
||||
# CONFIG_BUILD_ZLIB is not set
|
||||
# CONFIG_BUILD_LIBZIP is not set
|
||||
# CONFIG_BUILD_EWOL is not set
|
||||
CONFIG_BUILD_EDN=y
|
||||
|
||||
#
|
||||
# ewol
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
|
||||
CONFIG___EWOL_INTEGRATED_FONT__=y
|
||||
|
||||
#
|
||||
# Android
|
||||
#
|
||||
CONFIG___EWOL_ANDROID_MINIMUM_SDK_VERSION__=9
|
||||
# CONFIG___EWOL_ANDROID_SHOW_TITLE__ is not set
|
||||
CONFIG___EWOL_ANDROID_ORIENTATION_AUTO__=y
|
||||
# CONFIG___EWOL_ANDROID_ORIENTATION_LANDSCAPE__ is not set
|
||||
# CONFIG___EWOL_ANDROID_ORIENTATION_PORTRAIT__ is not set
|
||||
|
||||
#
|
||||
# Permissions
|
||||
#
|
||||
CONFIG___ANDROID_PERMISSION__WRITE_EXTERNAL_STORAGE__=y
|
||||
# CONFIG___ANDROID_PERMISSION__CAMERA__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__INTERNET__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__MODIFY_AUDIO_SETTINGS__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__READ_CALENDAR__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__READ_CONTACTS__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__READ_FRAME_BUFFER__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__READ_PROFILE__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__RECORD_AUDIO__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__SET_ORIENTATION__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__VIBRATE__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__ACCESS_COARSE_LOCATION__ is not set
|
||||
# CONFIG___ANDROID_PERMISSION__ACCESS_FINE_LOCATION__ is not set
|
||||
|
||||
#
|
||||
# edn
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG_APPL_BUFFER_FONT_NORMAL=y
|
||||
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set
|
@@ -1,49 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Modules
|
||||
#
|
||||
# CONFIG_BUILD_AGG is not set
|
||||
# CONFIG_BUILD_LINEARMATH is not set
|
||||
# CONFIG_BUILD_BULLET is not set
|
||||
# CONFIG_BUILD_ETK is not set
|
||||
# CONFIG_BUILD_FREETYPE is not set
|
||||
# CONFIG_BUILD_LUA is not set
|
||||
# CONFIG_BUILD_OGG is not set
|
||||
# CONFIG_BUILD_PARSERSVG is not set
|
||||
# CONFIG_BUILD_LIBPNG is not set
|
||||
# CONFIG_BUILD_PORTAUDIO is not set
|
||||
# CONFIG_BUILD_TINYXML is not set
|
||||
# CONFIG_BUILD_ZLIB is not set
|
||||
# CONFIG_BUILD_LIBZIP is not set
|
||||
# CONFIG_BUILD_EWOL is not set
|
||||
CONFIG_BUILD_EDN=y
|
||||
|
||||
#
|
||||
# ewol
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
|
||||
# CONFIG___EWOL_INTEGRATED_FONT__ is not set
|
||||
|
||||
#
|
||||
# Linux
|
||||
#
|
||||
CONFIG___EWOL_LINUX_GUI_MODE_X11__=y
|
||||
# CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__ is not set
|
||||
|
||||
#
|
||||
# edn
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG_APPL_BUFFER_FONT_NORMAL=y
|
||||
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set
|
@@ -1,48 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Modules
|
||||
#
|
||||
# CONFIG_BUILD_AGG is not set
|
||||
# CONFIG_BUILD_LINEARMATH is not set
|
||||
# CONFIG_BUILD_BULLET is not set
|
||||
# CONFIG_BUILD_ETK is not set
|
||||
# CONFIG_BUILD_FREETYPE is not set
|
||||
# CONFIG_BUILD_LUA is not set
|
||||
# CONFIG_BUILD_OGG is not set
|
||||
# CONFIG_BUILD_PARSERSVG is not set
|
||||
# CONFIG_BUILD_LIBPNG is not set
|
||||
# CONFIG_BUILD_TINYXML is not set
|
||||
# CONFIG_BUILD_ZLIB is not set
|
||||
# CONFIG_BUILD_LIBZIP is not set
|
||||
# CONFIG_BUILD_EWOL is not set
|
||||
CONFIG_BUILD_EDN=y
|
||||
|
||||
#
|
||||
# ewol
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
|
||||
CONFIG___EWOL_INTEGRATED_FONT__=y
|
||||
|
||||
#
|
||||
# Linux
|
||||
#
|
||||
CONFIG___EWOL_LINUX_GUI_MODE_X11__=y
|
||||
# CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__ is not set
|
||||
|
||||
#
|
||||
# edn
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG_APPL_BUFFER_FONT_NORMAL=y
|
||||
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set
|
@@ -1,43 +0,0 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Modules
|
||||
#
|
||||
# CONFIG_BUILD_AGG is not set
|
||||
# CONFIG_BUILD_LINEARMATH is not set
|
||||
# CONFIG_BUILD_BULLET is not set
|
||||
# CONFIG_BUILD_ETK is not set
|
||||
# CONFIG_BUILD_FREETYPE is not set
|
||||
# CONFIG_BUILD_GLEW is not set
|
||||
# CONFIG_BUILD_LUA is not set
|
||||
# CONFIG_BUILD_OGG is not set
|
||||
# CONFIG_BUILD_PARSERSVG is not set
|
||||
# CONFIG_BUILD_LIBPNG is not set
|
||||
# CONFIG_BUILD_TINYXML is not set
|
||||
# CONFIG_BUILD_ZLIB is not set
|
||||
# CONFIG_BUILD_LIBZIP is not set
|
||||
# CONFIG_BUILD_EWOL is not set
|
||||
CONFIG_BUILD_EDN=y
|
||||
|
||||
#
|
||||
# ewol
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG___EWOL_APPL_BASIC_TITLE__="Ewol Basic Title"
|
||||
CONFIG___EWOL_INTEGRATED_FONT__=y
|
||||
|
||||
#
|
||||
# edn
|
||||
#
|
||||
|
||||
#
|
||||
# General
|
||||
#
|
||||
CONFIG_APPL_BUFFER_FONT_NORMAL=y
|
||||
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set
|
18
data/GUI-Parameter-global.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<sizer mode="vert" fill="true" expand="true">
|
||||
<spacer fill="true" expand="true"/>
|
||||
<checkbox name="[{ID}]appl-param:auto-indent" fill="true" expand="true,false">
|
||||
<label>_T{Automatic Indentation}</label>
|
||||
</checkbox>
|
||||
<checkbox name="[{ID}]appl-param:display-space-char" fill="true" expand="true,false">
|
||||
<label>_T{Display space char (' ')}</label>
|
||||
</checkbox>
|
||||
<checkbox name="[{ID}]appl-param:display-tab" fill="true" expand="true,false">
|
||||
<label>_T{Display tabulation char ('\\t')}</label>
|
||||
</checkbox>
|
||||
<checkbox name="[{ID}]appl-param:display-eol" fill="true" expand="true,false">
|
||||
<label>_T{Display end of line ('\\n')}</label>
|
||||
</checkbox>
|
||||
<checkbox name="[{ID}]appl-param:display-shape" fill="true" expand="true,false">
|
||||
<label>_T{switch Rounded/default}</label>
|
||||
</checkbox>
|
||||
</sizer>
|
83
data/GUI-Search.egi
Normal file
@@ -0,0 +1,83 @@
|
||||
sizer {
|
||||
mode: "hori"
|
||||
expand: "true,false"
|
||||
fill: true
|
||||
lock: true
|
||||
button {
|
||||
name: "[{ID}]SEARCH:close"
|
||||
image {
|
||||
src: "THEME_GUI:///Remove.svg"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
hover: "_T(Close search bar)"
|
||||
}
|
||||
}
|
||||
entry {
|
||||
name: "[{ID}]SEARCH:search-entry"
|
||||
expand: true
|
||||
fill: true
|
||||
}
|
||||
button {
|
||||
name: "[{ID}]SEARCH:search"
|
||||
image {
|
||||
src: "THEME_GUI:///Search.svg"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
}
|
||||
entry {
|
||||
name: "[{ID}]SEARCH:replace-entry"
|
||||
expand: true
|
||||
fill: true
|
||||
}
|
||||
button {
|
||||
name: "[{ID}]SEARCH:replace"
|
||||
image {
|
||||
src: "THEME_GUI:///Replace.svg?lib=ewol"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
}
|
||||
button {
|
||||
name: "[{ID}]SEARCH:case"
|
||||
toggle: true
|
||||
image {
|
||||
src: "THEME_GUI:///CaseSensitive.svg?lib=ewol"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
image {
|
||||
src: "THEME_GUI:///CaseSensitive.svg?lib=ewol"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
}
|
||||
button {
|
||||
name: "[{ID}]SEARCH:wrap"
|
||||
toggle: true
|
||||
image {
|
||||
src: "THEME_GUI:///WrapAround.svg?lib=ewol"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
image {
|
||||
src: "THEME_GUI:///WrapAround.svg?lib=ewol"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
}
|
||||
button {
|
||||
name: "[{ID}]SEARCH:up-down"
|
||||
toggle: true
|
||||
image {
|
||||
src: "THEME_GUI:///Up.svg?lib=ewol"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
image {
|
||||
src: "THEME_GUI:///Down.svg?lib=ewol"
|
||||
fill: true
|
||||
size: "7,7mm"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,28 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<composer>
|
||||
<sizer mode="hori" expand="true,false" fill="true" lock="true">
|
||||
<button name="SEARCH:close">
|
||||
<image src="THEME:GUI:Remove.svg" fill="true" size="7,7mm"/>
|
||||
</button>
|
||||
<entry name="SEARCH:search-entry" expand="true" fill="true"/>
|
||||
<button name="SEARCH:search">
|
||||
<image src="THEME:GUI:Search.svg" fill="true" size="7,7mm"/>
|
||||
</button>
|
||||
<entry name="SEARCH:replace-entry" expand="true" fill="true"/>
|
||||
<button name="SEARCH:replace">
|
||||
<image src="THEME:GUI:Replace.svg" fill="true" size="7,7mm"/>
|
||||
</button>
|
||||
<button name="SEARCH:case">
|
||||
<image src="THEME:GUI:CaseSensitive.svg" fill="true" size="7,7mm" hover="Close search bar"/>
|
||||
<image src="THEME:GUI:CaseSensitive.svg" fill="true" size="7,7mm" hover="Close search bar"/>
|
||||
</button>
|
||||
<button name="SEARCH:wrap">
|
||||
<image src="THEME:GUI:WrapAround.svg" fill="true" size="7,7mm" hover="Close search bar"/>
|
||||
<image src="THEME:GUI:WrapAround.svg" fill="true" size="7,7mm" hover="Close search bar"/>
|
||||
</button>
|
||||
<button name="SEARCH:up-down">
|
||||
<image src="THEME:GUI:Up.svg" fill="true" size="7,7mm" hover="Close search bar"/>
|
||||
<image src="THEME:GUI:Down.svg" fill="true" size="7,7mm" hover="Close search bar"/>
|
||||
</button>
|
||||
</sizer>
|
||||
</composer>
|
||||
<sizer mode="hori" expand="true,false" fill="true" lock="true">
|
||||
<button name="[{ID}]SEARCH:close">
|
||||
<image src="THEME_GUI:///Remove.svg" fill="true" size="7,7mm"/>
|
||||
</button>
|
||||
<entry name="[{ID}]SEARCH:search-entry" expand="true" fill="true"/>
|
||||
<button name="[{ID}]SEARCH:search">
|
||||
<image src="THEME_GUI:///Search.svg" fill="true" size="7,7mm"/>
|
||||
</button>
|
||||
<entry name="[{ID}]SEARCH:replace-entry" expand="true" fill="true"/>
|
||||
<button name="[{ID}]SEARCH:replace">
|
||||
<image src="THEME_GUI:///Replace.svg?lib=ewol" fill="true" size="7,7mm"/>
|
||||
</button>
|
||||
<button name="[{ID}]SEARCH:case" toggle="true">
|
||||
<image src="THEME_GUI:///CaseSensitive.svg?lib=ewol" fill="true" size="7,7mm" hover="_T(Close search bar)"/>
|
||||
<image src="THEME_GUI:///CaseSensitive.svg?lib=ewol" fill="true" size="7,7mm" hover="_T(Close search bar)"/>
|
||||
</button>
|
||||
<button name="[{ID}]SEARCH:wrap" toggle="true">
|
||||
<image src="THEME_GUI:///WrapAround.svg?lib=ewol" fill="true" size="7,7mm" hover="_T(Close search bar)"/>
|
||||
<image src="THEME_GUI:///WrapAround.svg?lib=ewol" fill="true" size="7,7mm" hover="_T(Close search bar)"/>
|
||||
</button>
|
||||
<button name="[{ID}]SEARCH:up-down" toggle="true">
|
||||
<image src="THEME_GUI:///Up.svg?lib=ewol" fill="true" size="7,7mm" hover="_T(Close search bar)"/>
|
||||
<image src="THEME_GUI:///Down.svg?lib=ewol" fill="true" size="7,7mm" hover="_T(Close search bar)"/>
|
||||
</button>
|
||||
</sizer>
|
@@ -1,14 +1,27 @@
|
||||
[Desktop Entry]
|
||||
Version=0.3.0
|
||||
Name=Edn : Editeur de N'ours
|
||||
Exec=edn
|
||||
Icon=Edn
|
||||
Exec=edn %U
|
||||
Icon=/usr/share/edn/icon.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;Utility;TextEditor;
|
||||
Categories=Development;
|
||||
GenericName=Text editor
|
||||
GenericName[en]=Text editor
|
||||
GenericName[nl]=Tekst verwerker
|
||||
GenericName[fr]=éditeur de text
|
||||
GenericName[fr]=Éditeur de text
|
||||
Comment=Code editor for c, c++, php, bash, xml ...
|
||||
Comment[fr]=éditeur de text pour les language c, c++, php, bash, xml ...
|
||||
OnlyShowIn=GNOME;Unity;
|
||||
MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https;
|
||||
StartupNotify=true
|
||||
Actions=New;
|
||||
|
||||
[Desktop Action New]
|
||||
Name=Open a New Window
|
||||
Name[fr]=Ouvrir une nouvelle fenêtre
|
||||
Name[nl]=Nieuw venster openen
|
||||
Name[en]=Open a New Window
|
||||
Exec=edn
|
||||
|
||||
#desktop-file-validate edn.desktop
|
||||
#sudo cp xxx /usr/share/applications/
|
BIN
data/icon.icns
Normal file
0
data/lang/EN.json
Normal file
0
data/lang/FR.json
Normal file
145
data/languages/TypeScript/highlight.xml
Normal file
@@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="TypeScript">
|
||||
<ext>(ts)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>//!.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<regex>//.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="double quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>"(\\(n|t|v|b|r|f|a|\\|\?|"|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*"</regex>
|
||||
</rule>
|
||||
<rule name="simple quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>'(\\(n|t|v|b|r|f|a|\\|\?|'|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\{|\}|\[|\]</regex>
|
||||
</rule>
|
||||
<rule name="separator">
|
||||
<color>error</color>
|
||||
<regex>:|,</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\@let|function|typeof|alert|never|implements|as|export|import|from\@</regex>
|
||||
</rule>
|
||||
<rule name="etk type">
|
||||
<color>type</color>
|
||||
<regex>\@(Array|string|any|boolean|number|void)\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<regex>\@const|class|private|public|protected|undefined|null|enum|interface|class\@</regex>
|
||||
</rule>
|
||||
<rule name="json member">
|
||||
<color>memberClass</color>
|
||||
<regex>\@[a-zA-Z_0-9_\-]+:\@</regex>
|
||||
</rule>
|
||||
<rule name="json member2">
|
||||
<color>memberClass</color>
|
||||
<regex>\@this\.[a-zA-Z_0-9_\-]+\@</regex>
|
||||
</rule>
|
||||
<rule name="decorator">
|
||||
<color>systemFunction</color>
|
||||
<regex>\@@[a-zA-Z_0-9_\-]+\(?\)?\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
<rule name="lambda">
|
||||
<color>boolean</color>
|
||||
<regex>=></regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<regex>===|==|<==|<=|>==|>=|!==|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="simple operator">
|
||||
<color>preprocesseur</color>
|
||||
<regex>=|\+|-|&|\|</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
<rule name="my keyword deprecated">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>\@var\@</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(\@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*$</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
@@ -1,57 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Assembleur">
|
||||
<ext>*.s</ext>
|
||||
<ext>*.S</ext>
|
||||
<ext>*.asm</ext>
|
||||
<ext>(s|S|asm|ASM)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>/\*\*</start>
|
||||
<end>\*/</end>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my comment multiline">
|
||||
<color>comment</color>
|
||||
<start>/\*</start>
|
||||
<end>\*/</end>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my if 0">
|
||||
<color>preprocesseur</color>
|
||||
<start>#[ \t]*if 0</start>
|
||||
<end>#endif|#else</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>
|
||||
<start>#[ \t]*if 0</start>
|
||||
<stop>#(endif|else)</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my preprocesseur">
|
||||
<color>preprocesseur</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>#.*$</regex>
|
||||
</rule>
|
||||
<rule name="my comment doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>//!</start>
|
||||
<end>\n</end>
|
||||
<regex>//!.*$</regex>
|
||||
</rule>
|
||||
<rule name="my todo comment">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>//[ \t]*TODO[ \t]*:</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>//[ \t]*TODO[ \t]*:.*$</regex>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<start>(//|@)</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>(//|@).*$</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@smull|ldrsh|smlal|stmdb|mul|mla|umull|ldr|add|str|mov|subs|bgt|ldmia|stmia|ldmfd|cmp|sub|strd|stmfd|bne|bhi|ldrd|mvn\@</start>
|
||||
<regex>\@smull|ldrsh|smlal|stmdb|mul|mla|umull|ldr|add|str|mov|subs|bgt|ldmia|stmia|ldmfd|cmp|sub|strd|stmfd|bne|bhi|ldrd|mvn\@</regex>
|
||||
</rule>
|
||||
<rule name="register list">
|
||||
<color>type</color>
|
||||
<start>\@r(10|11|12|[0-9]?)|sp|lp|lr|pc\@</start>
|
||||
<regex>\@r(10|11|12|[0-9]?)|sp|lp|lr|pc\@</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,48 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Bash script">
|
||||
<ext>*.sh</ext>
|
||||
<ext>(sh|bash|zsh)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="first line">
|
||||
<color>commentDoxygen</color>
|
||||
<start>#!</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<rule name="main declaration of executable">
|
||||
<color>DECLARE_EXECUTABLE</color>
|
||||
<regex>#!.*$</regex>
|
||||
</rule>
|
||||
<rule name="comment line">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>#(\\[\\\n]|.)*$</regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*?"</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
<regex>'(.|\\[\\'])*?'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@for|done|do|while|in|if|elif|then|else|fi\@</start>
|
||||
<regex>\@for|done|do|while|in|if|elif|then|else|fi\@</regex>
|
||||
</rule>
|
||||
<rule name="my Variable">
|
||||
<color>keyword</color>
|
||||
<start>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</start>
|
||||
<regex>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>function (\w|_)+[ \t]*\(</start>
|
||||
<regex>function (\w|_)+[ \t]*\(</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,60 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Boulou log">
|
||||
<ext>*.boo</ext>
|
||||
<ext>(boo|BOO)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="comment ##">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>##</start>
|
||||
<end>\n</end>
|
||||
<regex>##.*$</regex>
|
||||
</rule>
|
||||
<rule name="comment #">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<regex>#.*$</regex>
|
||||
</rule>
|
||||
<rule name="notes ... ">
|
||||
<color>preprocesseur</color>
|
||||
<start>(NOTE|TODO) : </start>
|
||||
<end>\n</end>
|
||||
<regex>(NOTE|TODO) : .*$</regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*$</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>\@'</start>
|
||||
<end>'</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
<regex>\@'(.|\\[\\'])*$</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
|
||||
<rule name="pourcentage OK">
|
||||
<color>TestResultOK</color>
|
||||
<start>100%</start>
|
||||
<regex>100%</regex>
|
||||
</rule>
|
||||
<rule name="pourcentage">
|
||||
<color>number</color>
|
||||
<start>[0-9]*%</start>
|
||||
<regex>[0-9]*%</regex>
|
||||
</rule>
|
||||
<rule name="R<EFBFBD>sultat OK">
|
||||
<rule name="Résultat OK">
|
||||
<color>TestResultOK</color>
|
||||
<start>\[( )*(OK|Ok|ok)( )*\]</start>
|
||||
<regex>\[(\t| )*(OK|Ok|ok|DONE|Done|done)(\t| )*\]</regex>
|
||||
</rule>
|
||||
<rule name="resultat en erreur">
|
||||
<color>TestResultERROR</color>
|
||||
<start>\[(ERREUR|Erreur|erreur)\]</start>
|
||||
<regex>\[(\t| )*(ERREUR|Erreur|erreur)(\t| )*\]</regex>
|
||||
</rule>
|
||||
<rule name="to do">
|
||||
<color>TestResultTODO</color>
|
||||
<regex>\[(\t| )*(TODO|Todo|todo)(\t| )*\]</regex>
|
||||
</rule>
|
||||
<rule name="resultat vide">
|
||||
<color>number</color>
|
||||
<start>\[( )*\]</start>
|
||||
<regex>\[(\t| )*\]</regex>
|
||||
</rule>
|
||||
<rule name="notes ... ">
|
||||
<color>macro</color>
|
||||
<start>==></start>
|
||||
<regex>==></regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,138 +1,134 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="C/C++">
|
||||
<ext>*.c</ext>
|
||||
<ext>*.cpp</ext>
|
||||
<ext>*.cc</ext>
|
||||
<ext>*.h</ext>
|
||||
<ext>*.hpp</ext>
|
||||
<ext>*.mm</ext>
|
||||
<EdnLang version="0.1" lang="C">
|
||||
<ext>(c|C|m|M)</ext>
|
||||
<!--might be : <ext>.*\.(c|h|m)</ext>-->
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline doxygen">
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<start>/\*\*</start>
|
||||
<end>\*/</end>
|
||||
<rule name="macro">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_]{4,500}\@</start>
|
||||
</rule>
|
||||
<rule name="keyword">
|
||||
<color>keyword</color>
|
||||
<start>@\w*[ \t]*(\[(in|out| |,)*\])?[ \t]*([a-zA-Z0-9\-_]*)</start>
|
||||
<underColor idPThese="1"></underColor><!-- (\[(in|out| |,)*\]) -->
|
||||
<underColor idPThese="3"></underColor><!-- (([a-zA-Z0-9\-_])*) -->
|
||||
</rule>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="code Review">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>/\*[ \t]*TODO :</start>
|
||||
<end>\*/</end>
|
||||
</rule>
|
||||
<rule name="my comment multiline">
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<start>/\*</start>
|
||||
<end>\*/</end>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="my if 0">
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="#if 0">
|
||||
<color>preprocesseur</color>
|
||||
<start>#[ \t]*if 0</start>
|
||||
<end>#endif|#else</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>
|
||||
<start>#[ \t]*if 0</start>
|
||||
<stop>#(endif|else)</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my preprocesseur">
|
||||
<rule name="#if 0 ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>#[ \t]*if 0</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="#preproc">
|
||||
<color>preprocesseur</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>#(.|\\[\\\n])*</regex>
|
||||
</rule>
|
||||
<rule name="my comment doxygen">
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>//!</start>
|
||||
<end>\n</end>
|
||||
<regex>//!.*</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="my todo comment">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>//[ \t]*TODO[ \t]*:</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<start>//</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>//.*</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<rule name="double quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*?"</regex> <!-- " -->
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<rule name="simple quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
<regex>'\\?.'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</start>
|
||||
<regex>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</regex>
|
||||
</rule>
|
||||
<rule name="my function keyword">
|
||||
<color>systemFunction</color>
|
||||
<start>\@new|delete|try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc|(cyg|sup)_([a-z]|[A-Z]|[0-9]|_)+\@</start>
|
||||
<regex>\@memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc\@</regex>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@bool|BOOL|char(16_t|32_t)?|double|float|u?int(8|16|32|64|128)?(_t)?|long|short|signed|size_t|unsigned|void|(I|U)(8|16|32|64|128)\@</start>
|
||||
</rule>
|
||||
<rule name="std type">
|
||||
<color>type</color>
|
||||
<start>\@std::(vector|(u16|u32|w)?string|codecvt_utf(16|8_utf16|8)+|complex|iterator(_traits)?|tuple(_element|_size)?|pair)\@</start>
|
||||
<regex>\@bool|char(16_t|32_t)?|double|float|u?int(8|16|32|64|128)?(_t)?|long|short|signed|size_t|unsigned|void|(I|U)(8|16|32|64|128)\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<start>\@inline|const|class|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum\@</start>
|
||||
<regex>\@inline|const|const|extern|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum\@</regex>
|
||||
</rule>
|
||||
<rule name="my common Define">
|
||||
<color>commonDefine</color>
|
||||
<start>\@NULL|MAX|MIN|__LINE__|__DATA__|__FILE__|__func__|__TIME__|__STDC__\@</start>
|
||||
<regex>\@NULL|MAX|MIN|__(LINE|DATA|FILE|func|TIME|STDC|PRETTY_FUNCTION|FUNCTION)__\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|TRUE|false|FALSE\@</start>
|
||||
<regex>\@TRUE|FALSE\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
|
||||
</rule>
|
||||
<rule name="CPP member">
|
||||
<color>memberClass</color>
|
||||
<start>\@m_[A-Za-z_0-9]*\@</start>
|
||||
<regex>\@([A-Z_][A-Z_0-9]{3,500})\@</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<start>\@_[A-Za-z_0-9]*\@</start>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<!-- With all elementes :
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>([A-Z]|_){4,500}</start>
|
||||
<elemSubColor id="1">doxElem</elemSubColor>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
-->
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
||||
|
83
data/languages/cmake/highlight.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="cmake">
|
||||
<file>CMakeLists.txt</file>
|
||||
<file>CMakeCache.txt</file>
|
||||
<ext>(cmake)</ext>
|
||||
<pass1>
|
||||
<rule name="my comment doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>##.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<regex>#(.|\\[\\\n])*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>"(.|\\[\\"])*"</regex>
|
||||
<sub>parameters</sub>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="files path">
|
||||
<color>memberClass</color>
|
||||
<regex>\@[0-9a-zA-Z\-\.]+((\.|/)\w)+\@</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\@foreach|message|endforeach|if|else|endif|list|file|string\@</regex>
|
||||
</rule>
|
||||
<rule name="my function keyword">
|
||||
<color>systemFunction</color>
|
||||
<regex>\@set|include_directories|add_definitions|add_library|include_directories|target_link_libraries|project|include|check_include_file|enable_testing|option|cmake_minimum_required|add_definitions|check_include_file|configure_file|include_directories|add_custom_command|add_executable|add_test|find_package|pkg_check_modules|set_target_properties|source_group\@</regex>
|
||||
</rule>
|
||||
<rule name="Variable">
|
||||
<color>inputFunction</color>
|
||||
<regex>\$\{.*\}</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@(\w|_)+[ \t]*\(</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(\@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*$</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="parameters">
|
||||
<rule name="Variable">
|
||||
<color>inputFunction</color>
|
||||
<regex>\$\{.*\}</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
168
data/languages/cpp/highlight.xml
Normal file
@@ -0,0 +1,168 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="C++">
|
||||
<ext>(cpp|CPP|cxx|CXX|cc|CC|hpp|HPP|hxx|HXX|hh|h|H|mm|MM|c\+\+|C\+\+|m\+\+|M\+\+|mpp|MPP)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="RawText">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>
|
||||
<start>R"#\(</start>
|
||||
<stop>\)#"</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="#if 0">
|
||||
<color>preprocesseur</color>
|
||||
<regex>
|
||||
<start>#[ \t]*if 0</start>
|
||||
<stop>#e(ndif|lse)</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="#if 0 ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>#[ \t]*if 0</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="#preproc">
|
||||
<color>preprocesseur</color>
|
||||
<regex>#(\\[\\\n]|.)*$</regex>
|
||||
</rule>
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>//(!|/).*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<regex>//.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="double quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>(U|u|u8)?"(\\(n|t|v|b|r|f|a|\\|\?|"|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*"</regex>
|
||||
</rule>
|
||||
<rule name="simple quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>'(\\(n|t|v|b|r|f|a|\\|\?|'|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|[^\n])'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="old school elements">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"|NULL|MAX|MIN|TRUE|FALSE|calloc|malloc|realloc|free|BOOL</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</regex>
|
||||
</rule>
|
||||
<rule name="my function keyword">
|
||||
<color>systemFunction</color>
|
||||
<regex>\@new|delete|try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|(reinterpret|static|dynamic|const)_cast\@</regex>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<regex>\@bool|char(16_t|32_t)?|double|float|u?int(8|16|32|64|128)?(_t)?|long|short|signed|size_t|unsigned|void|(I|U)(8|16|32|64|128)\@</regex>
|
||||
</rule>
|
||||
<rule name="std type">
|
||||
<color>type</color>
|
||||
<regex>\@std::[a-zA-Z_:][\w:]*\@</regex>
|
||||
</rule>
|
||||
<rule name="etk type">
|
||||
<color>type</color>
|
||||
<regex>\@etk::(Map|Set|Path|Uri|Vector|Array|List|Function|String|UString|RegEx|Pair|NullPtr|Color|Exception|exception::(InvalidArgument|DomainError|LengthError|OutOfRange|RangeError|OverflowError|UnderflowError|CastError|AllocationError|RuntimeError))\@</regex>
|
||||
</rule>
|
||||
<rule name="ememory type">
|
||||
<color>type</color>
|
||||
<regex>\@ememory::(SharedPtr|WeakPtr|EnableSharedFromThis|Counter|RefCounter|RefPtr|UniquePtr)\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<regex>\@inline|const|class|namespace|virtual|private|public|protected|friend|const|extern|mutable|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum|override|final\@</regex>
|
||||
</rule>
|
||||
<rule name="my common Define">
|
||||
<color>commonDefine</color>
|
||||
<regex>\@nullptr|null|__(LINE|DATA|FILE|func|TIME|STDC|PRETTY_FUNCTION|FUNCTION)__\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(LL|L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="CPP member">
|
||||
<color>memberClass</color>
|
||||
<regex>\@((m|s|p|s|g)_|property|signal)\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="CPP member (bad version)">
|
||||
<color>memberClass</color>
|
||||
<regex>\@\w+_\@</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(\@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*$</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
121
data/languages/css/highlight.xml
Normal file
@@ -0,0 +1,121 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="JavaScript">
|
||||
<ext>(css|less|scss)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>//!.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<regex>//.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="double quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>"(\\(n|t|v|b|r|f|a|\\|\?|"|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*"</regex>
|
||||
</rule>
|
||||
<rule name="simple quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>'(\\(n|t|v|b|r|f|a|\\|\?|'|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\{|\}|\[|\]</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="class element">
|
||||
<color>keyword</color>
|
||||
<regex>\.[a-zA-Z0-9\-_\.]+\@</regex>
|
||||
</rule>
|
||||
<rule name="decorator">
|
||||
<color>macro</color>
|
||||
<regex>:[a-zA-Z0-9\-_\.]+\@</regex>
|
||||
</rule>
|
||||
<rule name="systemKey">
|
||||
<color>type</color>
|
||||
<regex>#[a-zA-Z0-9\-_\.]+\@</regex>
|
||||
</rule>
|
||||
<rule name="keyword">
|
||||
<color>systemFunction</color>
|
||||
<regex>(position|margin|width|float|display|height|border|background|padding):</regex>
|
||||
</rule>
|
||||
<rule name="keyword">
|
||||
<color>functionName</color>
|
||||
<regex>\@[a-zA-Z0-9\-_\.]+:</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="simple operator">
|
||||
<color>preprocesseur</color>
|
||||
<regex>=|\+|-|&|\|</regex>
|
||||
</rule>
|
||||
<rule name="dimentionPX">
|
||||
<color>commonDefine</color>
|
||||
<regex>\@[0-9]+px\@</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(\@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*$</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
20
data/languages/gcov/highlight.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="gcov">
|
||||
<ext>(gcov)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="Not parsed">
|
||||
<color>normal</color>
|
||||
<regex>( )+\-:.*</regex>
|
||||
</rule>
|
||||
<rule name="Not executed">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>( )+(#)+:.*</regex>
|
||||
</rule>
|
||||
<rule name="Not parsed">
|
||||
<color>number</color>
|
||||
<regex>( )+[0-9]+:.*</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
</pass2>
|
||||
</EdnLang>
|
@@ -1,82 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Glsl">
|
||||
<ext>*.glsl</ext>
|
||||
<ext>*.vert</ext>
|
||||
<ext>*.frag</ext>
|
||||
<ext>*.prog</ext>
|
||||
<ext>(glsl|vert|frag|prog)</ext>
|
||||
<pass1>
|
||||
<rule name="my comment multiline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>/\*\*</start>
|
||||
<end>\*/</end>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my comment multiline">
|
||||
<color>comment</color>
|
||||
<start>/\*</start>
|
||||
<end>\*/</end>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my if 0">
|
||||
<color>preprocesseur</color>
|
||||
<start>#[ \t]*if 0</start>
|
||||
<end>#endif|#else</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>
|
||||
<start>#[ \t]*if 0</start>
|
||||
<stop>#(endif|else)</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my preprocesseur">
|
||||
<color>preprocesseur</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>#(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="my comment doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>//!</start>
|
||||
<end>\n</end>
|
||||
<regex>//!(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="my todo comment">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>//[ \t]*TODO[ \t]*:</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>//[ \t]*TODO[ \t]*:(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<start>//</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>//(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</start>
|
||||
<regex>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</regex>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@void|bool|float|int|(vec|mat|ivect|bvect)[2-4]\@</start>
|
||||
<regex>\@void|bool|float|int|(vec|mat|ivec|bvec)[2-4]\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<start>\@varying|uniform|attribute|precision|mediump\@</start>
|
||||
<regex>\@varying|uniform|attribute|precision|mediump\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|false\@</start>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
<regex>\@(\w|_)+[ \t]*\(</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,46 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Kernel conf file">
|
||||
<ext>*.in</ext>
|
||||
<ext>in</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my preprocesseur">
|
||||
<color>preprocesseur</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>#(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*$</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
<regex>'(.|\\[\\'])*$</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@menu|endmenu|comment|if|endif|help|default|choice|endchoice|prompt|depends on|config\@</start>
|
||||
<regex>\@menu|endmenu|comment|if|endif|help|default|choice|endchoice|prompt|depends on|config\@</regex>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@int|hex|bool|string\@</start>
|
||||
<regex>\@int|hex|bool|string\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,87 +1,116 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Java">
|
||||
<ext>*.java</ext>
|
||||
<ext>(java|JAVA)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline doxygen">
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<start>/\*\*</start>
|
||||
<end>\*/</end>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="my comment multiline">
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<start>/\*</start>
|
||||
<end>\*/</end>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="my comment doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>//!</start>
|
||||
<end>\n</end>
|
||||
</rule>
|
||||
<rule name="my todo comment">
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>//[ \t]*TODO[ \t]*:</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>//!.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<start>//</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>//.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<rule name="double quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>(U|u|u8)?"(.|\\[\\"])*"</regex> <!-- " -->
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<rule name="simple quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
<regex>'\\?.'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for\@</start>
|
||||
<regex>\@return|goto|if|else|case|default|switch|break|continue|while|do|for\@</regex>
|
||||
</rule>
|
||||
<rule name="my function keyword">
|
||||
<color>systemFunction</color>
|
||||
<start>\@new|try|catch|print\@</start>
|
||||
<regex>\@new|try|catch|print\@</regex>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@boolean|byte|char|double|float|int|long|short|String|Object|Thread|void|enum\@</start>
|
||||
<regex>\@boolean|byte|char|double|float|int|long|short|String|Object|Thread|void|enum\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<start>\@import|package|extends|Override|implements|const|class|abstract|private|public|protected|final|const|static|transiant|volatile|interface@</start>
|
||||
<regex>\@import|package|extends|Override|implements|const|class|abstract|private|public|protected|final|const|static|transiant|volatile|interface@</regex>
|
||||
</rule>
|
||||
<rule name="my common Define">
|
||||
<color>commonDefine</color>
|
||||
<start>\@null\@</start>
|
||||
<regex>\@null\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|false\@</start>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="java member">
|
||||
<color>memberClass</color>
|
||||
<regex>\@m_\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
||||
|
121
data/languages/js/highlight.xml
Normal file
@@ -0,0 +1,121 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="JavaScript">
|
||||
<ext>(js)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>//!.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<regex>//.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="double quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>"(\\(n|t|v|b|r|f|a|\\|\?|"|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*"</regex>
|
||||
</rule>
|
||||
<rule name="simple quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>'(\\(n|t|v|b|r|f|a|\\|\?|'|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\{|\}|\[|\]</regex>
|
||||
</rule>
|
||||
<rule name="separator">
|
||||
<color>error</color>
|
||||
<regex>:|,</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\@let|var|function|typeof|alert\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
<rule name="lambda">
|
||||
<color>boolean</color>
|
||||
<regex>=></regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="simple operator">
|
||||
<color>preprocesseur</color>
|
||||
<regex>=|\+|-|&|\|</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(\@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*$</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
@@ -1,34 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Json">
|
||||
<ext>*.json</ext>
|
||||
<ext>(json|JSON)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*?"</regex>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<regex>#.*</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\{|\}|\[|\]</start>
|
||||
<regex>\{|\}|\[|\]</regex>
|
||||
</rule>
|
||||
<rule name="separator">
|
||||
<color>error</color>
|
||||
<start>:|,</start>
|
||||
<regex>:|,</regex>
|
||||
</rule>
|
||||
<rule name="names">
|
||||
<color>functionName</color>
|
||||
<start>([a-zA-Z0-9]|-|_)*</start>
|
||||
<regex>[a-zA-Z0-9\-_]+</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|false\@</start>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,60 +1,55 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Lua">
|
||||
<ext>*.lua</ext>
|
||||
<ext>lua</ext>
|
||||
<pass1>
|
||||
<rule name="Comment multiline">
|
||||
<color>comment</color>
|
||||
<start>\-\-\[\[</start>
|
||||
<end>\-\-\]\]</end>
|
||||
<regex>
|
||||
<start>\-\-\[\[</start>
|
||||
<stop>\-\-\]\]</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my todo comment">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>\-\-[ \t]*TODO[ \t]*:</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>\-\-[ \t]*TODO[ \t]*:(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<start>\-\-</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>\-\-(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*"</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<regex>'(.|\\[\\'])*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@and|break|do|else|elseif|end|for|function|if|in|local|nil|not|or|repeat|return|then|until|while\@</start>
|
||||
<regex>\@and|break|do|elseif|else|end|for|function|if|in|local|nil|not|or|repeat|return|then|until|while|require\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|false\@</start>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
<regex>\@(\w|_)+[ \t]*\(</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|~=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|~=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,43 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Makefiles">
|
||||
<ext>Makefile</ext>
|
||||
<ext>*.mk</ext>
|
||||
<ext>*.global</ext>
|
||||
<file>Makefile</file>
|
||||
<ext>(mk|global)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my preprocesseur">
|
||||
<color>preprocesseur</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>#(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*"</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<regex>'(.|\\[\\'])*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="confition">
|
||||
<color>type</color>
|
||||
<start>\@if|ifeq|ifneq|else|endif|define|endef\@</start>
|
||||
<regex>\@if|ifeq|ifneq|else|endif|define|endef\@</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\$\([a-zA-Z_][a-zA-Z0-9_]*\)</start>
|
||||
<regex>\$\([a-zA-Z_][a-zA-Z0-9_]*\)</regex>
|
||||
</rule>
|
||||
<rule name="function call">
|
||||
<color>functionName</color>
|
||||
<start>\$\((call|info|error|warning|shell|patsubst|lastword|wildcard|addprefix|foreach|subst|word|eval)</start>
|
||||
<regex>\$\((call|info|error|warning|shell|patsubst|lastword|wildcard|addprefix|foreach|subst|word|eval)</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>:=|?=|!=|=</start>
|
||||
<regex>:=|\?=|!=|=</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,62 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Matlab">
|
||||
<ext>*.m</ext>
|
||||
<ext>*.M</ext>
|
||||
<ext>(m|M)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>%%</start>
|
||||
<end>\n</end>
|
||||
<regex>%%(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<start>%</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>%(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start> "</start>
|
||||
<end>("|\n)</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex> ".*($|")</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start> '</start>
|
||||
<end>('|\n)</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
<regex> '.*($|')</regex>
|
||||
</rule>
|
||||
<rule name="global inclusion">
|
||||
<color>preprocesseur</color>
|
||||
<start>global( |\t)+</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>global( |\t)+(.|\\[\\\n])*$</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|otherwise|end\@</start>
|
||||
<regex>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|otherwise|end\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|false\@</start>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
<regex>\@(\w|_)+[ \t]*\(</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
116
data/languages/perl/highlight.xml
Normal file
@@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="perl">
|
||||
<ext>pl</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>=begin</start>
|
||||
<stop>=cut</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="main declaration of executable">
|
||||
<color>DECLARE_EXECUTABLE</color>
|
||||
<regex>#!.*$</regex>
|
||||
</rule>
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>##.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<regex>#.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>"(.|\\[\\"])*"</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>'(.|\\[\\'])*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2>
|
||||
<rule name="my keyword">
|
||||
<color>inputFunction</color>
|
||||
<regex>(\$|%|@)_[a-zA-Z_][a-zA-Z0-9_]*\@</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>(\$|%|@)[a-zA-Z_][a-zA-Z0-9_]*\@</regex>
|
||||
</rule>
|
||||
<!--
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<regex>\@array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset\@</regex>
|
||||
</rule>
|
||||
-->
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<regex>\@if|else|elseif|unless|switch|case|while|until|foreach|for|do|next|last|continue|redo|goto|scalar|sub|my|locale|return|use\@</regex>
|
||||
</rule>
|
||||
<rule name="SYSTEM function">
|
||||
<color>systemFunction</color>
|
||||
<regex>\@print|push|pop|shift|unshift|splice|split|join|sort|keys|values|exists|delete\@</regex>
|
||||
</rule>
|
||||
<rule name="my common Define">
|
||||
<color>commonDefine</color>
|
||||
<regex>\@__FILE__|__LINE__|__PACKAGE__\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<regex>\@([A-Z_][A-Z_0-9]{3,500})\@</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<regex><=>|==|<=|>=|!=|<|>|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="condition2">
|
||||
<color>boolean</color>
|
||||
<regex>\@gt|lt|le|ge|eq|ne|cmp\@</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
@@ -1,76 +1,120 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Php: pretty home page">
|
||||
<ext>*.php</ext>
|
||||
<ext>*.php3</ext>
|
||||
<ext>*.php4</ext>
|
||||
<ext>*.phtml</ext>
|
||||
<EdnLang version="0.1" lang="PHP">
|
||||
<ext>(php(3|4|5|6|7|8)|PHP(3|4|5|6|7|8)|phtml|php|PHP)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline">
|
||||
<color>comment</color>
|
||||
<start>/\*</start>
|
||||
<end>\*/</end>
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="my todo comment">
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>//[ \t]*TODO[ \t]*:</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my comment inline">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>//(!|/).*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<start>//</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>(//|#).*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(\\[\\"]|.)*"</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<regex>'(\\[\\']|.)*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="start-stop-php">
|
||||
<color>macro</color>
|
||||
<regex>(<\?\w+|\?>)</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>inputFunction</color>
|
||||
<regex>\$_[a-zA-Z_][a-zA-Z0-9_]*\@</regex>
|
||||
</rule>
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</start>
|
||||
<regex>\$[a-zA-Z_][a-zA-Z0-9_]*\@</regex>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset\@</start>
|
||||
<regex>\@array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<start>\@abstract|and|as|break|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor\@</start>
|
||||
<regex>\@abstract|and|as|break|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor\@</regex>
|
||||
</rule>
|
||||
<rule name="my common Define">
|
||||
<color>commonDefine</color>
|
||||
<start>\@doubleval|floatval|gettype|intval|print_r|serialize|settype|strval|unserialize|var_dump|var_export\@</start>
|
||||
<regex>\@doubleval|floatval|gettype|intval|print_r|serialize|settype|strval|unserialize|var_dump|var_export\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|TRUE|false|FALSE\@</start>
|
||||
<regex>\@TRUE|FALSE\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<regex>\@([A-Z_][A-Z_0-9]{3,500})\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
<regex>\@(\w|_)+[ \t]*\(</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<|>|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<|>|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
||||
|
@@ -1,77 +1,158 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Python">
|
||||
<ext>*.py</ext>
|
||||
<ext>(py|PY)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline">
|
||||
<color>comment</color>
|
||||
<start>"""</start>
|
||||
<end>"""</end>
|
||||
<regex>
|
||||
<start>"""</start>
|
||||
<stop>"""</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="my comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>'''</start>
|
||||
<stop>'''</stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="comment multiline Error">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>("""|''')</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="main declaration of executable">
|
||||
<color>DECLARE_EXECUTABLE</color>
|
||||
<regex>#!.*$</regex>
|
||||
</rule>
|
||||
<rule name="my comment doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>##</start>
|
||||
<end>\n</end>
|
||||
<regex>##.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>#.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<regex>"(.|\\[\\"])*"</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
<regex>'((\\[\\'])|.)*'</regex>
|
||||
</rule>
|
||||
<rule name="internalParameter">
|
||||
<color>normal</color>
|
||||
<regex>self\.\w*\@</regex>
|
||||
<sub>parameter_internal</sub>
|
||||
</rule>
|
||||
<rule name="Function name private">
|
||||
<color>functionNamePrivate</color>
|
||||
<regex>\@_(\w|_)+[ \t]*\(</regex>
|
||||
<sub>checkCamelCaseError</sub>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@(\w|_)+[ \t]*\(</regex>
|
||||
<sub>checkCamelCaseError</sub>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_(\w|_)+\@</regex>
|
||||
<sub>checkCamelCaseError</sub>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\@if|else|elif|break|pass|continue|while|do|for|in|return\@</start>
|
||||
<regex>\@if|else|elif|break|pass|continue|while|do|for|in|return\@</regex>
|
||||
</rule>
|
||||
<rule name="my function keyword">
|
||||
<color>systemFunction</color>
|
||||
<start>\@print|len|range|del|__init__|self|os\.|sys\.|path\.\@</start>
|
||||
<regex>\@print|len|range|del|__init__|self|os\.|sys\.|path\.\@</regex>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@bool|BOOL|char|double|float\@</start>
|
||||
<regex>\@bool|BOOL|char|double|float\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<start>\@def|class|import|from|as|try|except\@</start>
|
||||
<regex>\@def|class|import|from|as|try|except\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@True|False\@</start>
|
||||
<regex>\@True|False\@</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
<regex>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<!-- With all elementes : -->
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<start>([A-Z]|_){4,500}</start>
|
||||
<elemSubColor id="1">doxElem</elemSubColor>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(\@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="parameter_internal">
|
||||
<rule name="self">
|
||||
<color>systemFunction</color>
|
||||
<regex>self</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>memberClassPrivate</color>
|
||||
<regex>_[a-z0-9_]+</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>memberClass</color>
|
||||
<regex>[a-z0-9_]+</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>_\w+</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>\w+</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="checkCamelCaseError">
|
||||
<rule name="Function name ERROR (camel case ...)">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>[A-Z]</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
||||
|
133
data/languages/qml/highlight.xml
Normal file
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="QML">
|
||||
<ext>(qml)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="doxygen multiline">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>
|
||||
<start>/\*(\*|!)</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline ERROR">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="inline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>//!.*$</regex>
|
||||
<sub>doxyparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<regex>//.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="double quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>"(\\(n|t|v|b|r|f|a|\\|\?|"|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*"</regex>
|
||||
</rule>
|
||||
<rule name="simple quote text">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>'(\\(n|t|v|b|r|f|a|\\|\?|'|0|o[0-7]{2}|x[0-9a-fA-F]{2}|u[0-9]{4}|U[0-9]{8})|.)*'</regex>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<regex>\{|\}|\[|\]</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<regex>\@true|false\@</regex>
|
||||
</rule>
|
||||
<rule name="my keyword special">
|
||||
<color>keyword</color>
|
||||
<regex>\@return|if|else|case|default|switch|break|continue|while|do|for|let|var|function|typeof|alert\@</regex>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<regex>\@import|property|string|bool|int|as|signal|readonly|alias\@</regex>
|
||||
</rule>
|
||||
<rule name="property name">
|
||||
<color>memberClass</color>
|
||||
<regex>\@(\w|_)(\w|_|\.)+[ \t]*:</regex>
|
||||
</rule>
|
||||
<rule name="Object Name">
|
||||
<color>memberClassPrivate</color>
|
||||
<regex>\@(\w|_)(\w|_|\.)+[ \t]*\{</regex>
|
||||
</rule>
|
||||
<rule name="BIG LETTER">
|
||||
<color>macro</color>
|
||||
<regex>\@[A-Z_][A-Z_0-9]{3,500}\@</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
<rule name="object Name">
|
||||
<color>error</color>
|
||||
<regex>:|,</regex>
|
||||
</rule>
|
||||
<rule name="lambda">
|
||||
<color>boolean</color>
|
||||
<regex>=></regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<regex>===|==|<=|>=|!==|!=|<{1,2}|>{1,2}|&&|\{|\}</regex>
|
||||
</rule>
|
||||
<rule name="simple operator">
|
||||
<color>preprocesseur</color>
|
||||
<regex>=|\+|\-|&|\|</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteTextError">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>'|"</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="doxyparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(\@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
|
||||
</rule>
|
||||
<rule name="key">
|
||||
<color>doxygen-key</color>
|
||||
<regex>(\@|\\)[\t ]*\w+</regex>
|
||||
</rule>
|
||||
<rule name="in-out">
|
||||
<color>doxygen-in-out</color>
|
||||
<regex>\[(in|in,out|out)\]</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@_\w+\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*$</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
@@ -1,35 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.2" lang="XML">
|
||||
<ext>*.xml</ext>
|
||||
<ext>*.svg</ext>
|
||||
<ext>(xml|XML|svg|SVG|html|HTML|htm|HTM|tpl|TPL|xhtml|XHTML)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="Comment">
|
||||
<color>comment</color>
|
||||
<start><!\-\-</start>
|
||||
<end>\-\-></end>
|
||||
<regex>
|
||||
<start><!\-\-</start>
|
||||
<stop>\-\-></stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
<rule name="CDATA">
|
||||
<color>macro</color>
|
||||
<regex>
|
||||
<start><!\[CDATA\[</start>
|
||||
<stop>\]\]></stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>\@'</start>
|
||||
<end>('|\n)</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
<rule name="stop balise">
|
||||
<color>functionName</color>
|
||||
<regex></[ \t]*[a-zA-Z0-9\-_:\.]+[ \t]*></regex>
|
||||
</rule>
|
||||
<rule name="stop balise">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start></</start>
|
||||
<stop>></stop>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="start balise">
|
||||
<color>normal</color>
|
||||
<regex>
|
||||
<start><</start>
|
||||
<stop>></stop>
|
||||
</regex>
|
||||
<sub>parseInsideBalise</sub>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2>
|
||||
<rule name="special Balise">
|
||||
<color>error</color>
|
||||
<start><\?\w*|\?></start>
|
||||
<rule name="start balise">
|
||||
<color>commonDefine</color>
|
||||
<regex>&(gt|lt|amp|apos|quot);</regex>
|
||||
</rule>
|
||||
<rule name="normale Balise">
|
||||
<color>functionName</color>
|
||||
<start></[0-9a-zA-Z_]+|<[0-9a-zA-Z_]+|/>|></start>
|
||||
<rule name="start balise">
|
||||
<color>error</color>
|
||||
<regex>>|<|&|'|"</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="parseInsideBalise">
|
||||
<rule name="special Balise">
|
||||
<color>error</color>
|
||||
<regex><\?\w*|\?></regex>
|
||||
</rule>
|
||||
<rule name="open balise">
|
||||
<color>functionName</color>
|
||||
<regex><[ \t]*[a-zA-Z0-9\-_:\.]+\@</regex>
|
||||
</rule>
|
||||
<rule name="close balise">
|
||||
<color>functionName</color>
|
||||
<regex>/?></regex>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>"(\r|\n|\\\\|\\"|.)*"</regex>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<regex>\@'(\r|\n)*?('|\n|.)</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<regex>=</regex>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>keyword</color>
|
||||
<regex>\w+</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
||||
|
||||
|
60
data/languages/zeus.idl/highlight.xml
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Zeus-IDL">
|
||||
<ext>(zeus|idl)</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="comment multiline">
|
||||
<color>comment</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
<stop>\*/</stop>
|
||||
</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
<rule name="comment multiline Error">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>
|
||||
<start>/\*</start>
|
||||
</regex>
|
||||
</rule>
|
||||
<rule name="documantation">
|
||||
<color>commentDoxygen</color>
|
||||
<regex>#.*$</regex>
|
||||
<sub>docparse</sub>
|
||||
</rule>
|
||||
<rule name="inline comment">
|
||||
<color>comment</color>
|
||||
<regex>//.*$</regex>
|
||||
<sub>TODO</sub>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<regex>\@import|void|bool|path|uri|string|int(8|16|32|64)|uint(8|16|32|64)|float(32|64)|vector:(bool|string|int(8|16|32|64)|uint(8|16|32|64)|float(32|64))|time|duration|file|stream\@</regex>
|
||||
</rule>
|
||||
<rule name="numeric constant">
|
||||
<color>number</color>
|
||||
<regex>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</regex>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<regex>\@((\w|_)+[ \t]*\()</regex>
|
||||
</rule>
|
||||
</pass2>
|
||||
<pass name="docparse">
|
||||
<rule name="knownkey">
|
||||
<color>doxygen-key-known</color>
|
||||
<regex>(srv\-brief|srv\-version|srv\-type|srv\-author|brief|param|return|note):</regex>
|
||||
</rule>
|
||||
<rule name="function input">
|
||||
<color>inputFunction</color>
|
||||
<regex>\@\w+:\@</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
<pass name="TODO">
|
||||
<rule name="function input">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<regex>TODO[ \t]*:.*</regex>
|
||||
</rule>
|
||||
</pass>
|
||||
</EdnLang>
|
@@ -2,8 +2,10 @@
|
||||
"ednColor": [
|
||||
{ name:"backgroung1", foreground:"#202020" },
|
||||
{ name:"backgroung2", foreground:"#000000" },
|
||||
{ name:"backgroundhide", foreground:"#606060" },
|
||||
{ name:"backgroungSelected", foreground:"#2f0ba4" },
|
||||
{ name:"textNormal", foreground:"#EEEEEE" },
|
||||
{ name:"textModify", foreground:"#FF0000" },
|
||||
{ name:"textNotOpen", foreground:"#808080"},
|
||||
]
|
||||
}
|
||||
|
@@ -14,6 +14,7 @@
|
||||
{ name:"storageKeyword", foreground:"#5c8fed"},
|
||||
{ name:"inputFunction", foreground:"#B80000", bold:true, italic:true},
|
||||
{ name:"memberClass", foreground:"#7c5406", bold:true},
|
||||
{ name:"memberClassPrivate", foreground:"#7c2400", bold:true},
|
||||
{ name:"number", foreground:"#00ff00"},
|
||||
{ name:"systemFunction", foreground:"#ffff00"},
|
||||
{ name:"commonDefine", foreground:"#56bf10"},
|
||||
@@ -24,8 +25,14 @@
|
||||
{ name:"keyword", foreground:"#5c8fed", bold:true},
|
||||
{ name:"macro", foreground:"#6c09c8", bold:true},
|
||||
{ name:"SYNTAX_ERROR", foreground:"#000000", background:"#FF0000", bold:true},
|
||||
{ name:"DECLARE_EXECUTABLE", foreground:"#000000", background:"#ef4d00", bold:true},
|
||||
{ name:"functionName", foreground:"#24d1e0", bold:true},
|
||||
{ name:"functionNamePrivate", foreground:"#24d190", bold:true},
|
||||
{ name:"TestResultOK", foreground:"#000000", background:"#00FF00", bold:true},
|
||||
{ name:"TestResultERROR", FG:"#000000", background:"#FF0000", bold:true}
|
||||
|
||||
{ name:"doxygen-key-known", foreground:"#Fc4700", bold:true, italic:false},
|
||||
{ name:"doxygen-key", foreground:"#dc3700", bold:true, italic:false},
|
||||
{ name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false},
|
||||
]
|
||||
}
|
||||
|
@@ -2,8 +2,10 @@
|
||||
"ednColor": [
|
||||
{ name:"backgroung1", foreground:"#d9d7d7"},
|
||||
{ name:"backgroung2", foreground:"#b7b6b6"},
|
||||
{ name:"backgroundhide", foreground:"#606060" },
|
||||
{ name:"backgroungSelected", foreground:"#3da3f9"},
|
||||
{ name:"textNormal", foreground:"#000000"},
|
||||
{ name:"textModify", foreground:"#FF0000"}
|
||||
{ name:"textModify", foreground:"#FF0000"},
|
||||
{ name:"textNotOpen", foreground:"#808080"}
|
||||
]
|
||||
}
|
@@ -9,8 +9,10 @@
|
||||
{ name:"SelectedText", foreground:"#292929", background:"#009ce7"},
|
||||
{ name:"error", foreground:"#FF0000"},
|
||||
{ name:"doubleQuoteText", foreground:"#008e00"},
|
||||
|
||||
{ name:"type", foreground:"#376d0a", bold:true},
|
||||
{ name:"memberClass", foreground:"#7c5406", bold:true},
|
||||
{ name:"memberClassPrivate", foreground:"#7c2400", bold:true},
|
||||
{ name:"inputFunction", foreground:"#B80000", bold:true, italic:true},
|
||||
{ name:"storageKeyword", foreground:"#466cb4"},
|
||||
{ name:"number", foreground:"#007b00"},
|
||||
@@ -23,9 +25,16 @@
|
||||
{ name:"keyword", foreground:"#215eb8", bold:true},
|
||||
{ name:"macro", foreground:"#571793", bold:true},
|
||||
{ name:"SYNTAX_ERROR", foreground:"#000000", background:"#c20000", bold:true},
|
||||
{ name:"DECLARE_EXECUTABLE", foreground:"#000000", background:"#bf3e00", bold:true},
|
||||
{ name:"functionName", foreground:"#09857e", bold:true},
|
||||
{ name:"functionNamePrivate", foreground:"#09854e", bold:true},
|
||||
{ name:"TestResultOK", foreground:"#000000", background:"#009c00", bold:true},
|
||||
{ name:"TestResultERROR", foreground:"#000000", background:"#c20000", bold:true}
|
||||
{ name:"TestResultERROR", foreground:"#000000", background:"#c20000", bold:true},
|
||||
{ name:"TestResultTODO", foreground:"#000000", background:"#bf3e00", bold:true},
|
||||
|
||||
{ name:"doxygen-key-known", foreground:"#Fc4700", bold:true, italic:false},
|
||||
{ name:"doxygen-key", foreground:"#dc3700", bold:true, italic:false},
|
||||
{ name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false},
|
||||
]
|
||||
}
|
||||
|
||||
|
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-579.7336,-567.9832)">
|
||||
<path d="m 509.778,477.486 c -12.426,0 -22.5,10.072 -22.5,22.5 0,12.426 10.074,22.5 22.5,22.5 12.428,0 22.5,-10.074 22.5,-22.5 0,-12.427 -10.072,-22.5 -22.5,-22.5 z m 11.5,25 c 0,0.549 -0.451,1 -1,1 h -6 c -0.551,0 -1.001,0.449 -1.001,1 v 6 c 0,0.549 -0.45,1 -1,1 h -5 c -0.55,0 -1,-0.451 -1,-1 v -6 c 0,-0.551 -0.45,-1 -1,-1 h -6 c -0.55,0 -1,-0.451 -1,-1 v -5 c 0,-0.551 0.45,-1 1,-1 h 6 c 0.55,0 1,-0.451 1,-1 v -6 c 0,-0.551 0.45,-1 1,-1 h 5 c 0.55,0 1,0.449 1,1 v 6 c 0,0.549 0.45,1 1.001,1 h 6 c 0.549,0 1,0.449 1,1 v 5 z"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 735 B |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-651.9616,-494.5316)">
|
||||
<path d="m 562.663,451.271 -1.24,-3.193 h -0.188 c -0.463,0.631 -0.926,1.174 -1.389,1.629 -0.463,0.457 -0.967,0.832 -1.514,1.125 -0.547,0.295 -1.16,0.512 -1.838,0.65 -0.682,0.143 -1.469,0.211 -2.365,0.211 -0.953,0 -1.836,-0.148 -2.648,-0.455 -0.813,-0.299 -1.516,-0.756 -2.111,-1.361 -0.596,-0.611 -1.061,-1.381 -1.396,-2.314 -0.336,-0.932 -0.506,-2.035 -0.506,-3.311 0,-2.494 0.799,-4.332 2.396,-5.518 1.598,-1.184 3.986,-1.838 7.168,-1.965 l 3.74,-0.125 v -1.766 c 0,-0.967 -0.279,-1.682 -0.842,-2.145 -0.559,-0.461 -1.344,-0.693 -2.354,-0.693 -1.01,0 -1.994,0.146 -2.953,0.441 -0.959,0.295 -1.924,0.688 -2.891,1.178 l -2.08,-4.246 c 1.178,-0.658 2.48,-1.177 3.908,-1.554 1.43,-0.379 2.93,-0.568 4.498,-0.568 2.93,0 5.174,0.688 6.736,2.06 1.563,1.373 2.344,3.461 2.344,6.264 v 15.658 h -4.477 v -0.002 z m -1.891,-10.887 -2.123,0.084 c -0.854,0.027 -1.578,0.141 -2.164,0.336 -0.59,0.195 -1.063,0.457 -1.42,0.787 -0.357,0.33 -0.615,0.721 -0.777,1.178 -0.16,0.455 -0.24,0.963 -0.24,1.523 0,0.98 0.238,1.678 0.713,2.092 0.477,0.412 1.102,0.619 1.871,0.619 0.59,0 1.135,-0.102 1.641,-0.305 0.504,-0.203 0.941,-0.504 1.313,-0.902 0.373,-0.4 0.662,-0.891 0.873,-1.471 0.211,-0.582 0.314,-1.252 0.314,-2.01 v -1.931 l -10e-4,0 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 568.976,440.552 v -4.244 h 9.549 v 4.244 h -9.549 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 592.468,451.241 h -17.279 v -3.785 l 9.607,-14.816 h -8.953 v -4.896 h 16.225 v 4.159 l -9.289,14.441 h 9.689 v 4.897 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.6 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.199923,0,0,1.199923,-436.75556,-134.85476)">
|
||||
<path d="m 374.192,161.556 c -1.619,0 -3.152,-0.607 -4.269,-1.707 -1.237,-1.221 -1.877,-2.961 -1.755,-4.776 l 0.501,-7.477 c 0.198,-2.952 1.959,-6.933 4.009,-9.065 l 20.588,-21.415 c 0.854,-0.89 2.268,-0.916 3.154,-0.063 0.886,0.853 0.916,2.266 0.063,3.154 l -20.589,21.416 c -1.347,1.401 -2.644,4.331 -2.772,6.271 l -0.502,7.477 c -0.035,0.526 0.119,0.988 0.436,1.3 0.317,0.312 0.776,0.465 1.306,0.417 l 6.095,-0.496 c 1.936,-0.158 4.842,-1.497 6.219,-2.865 l 21.382,-21.251 c 0.413,-0.411 0.64,-0.957 0.637,-1.537 -0.005,-0.58 -0.236,-1.123 -0.655,-1.529 l -4.043,-3.92 c -0.874,-0.847 -2.334,-0.832 -3.189,0.037 l -16.287,16.555 c -0.512,0.521 -0.809,1.177 -0.794,1.759 0.007,0.303 0.097,0.537 0.268,0.693 0.524,0.485 1.872,0.332 2.826,-0.589 l 12.685,-12.247 c 0.886,-0.856 2.297,-0.831 3.154,0.056 0.855,0.886 0.83,2.298 -0.057,3.153 l -12.684,12.248 c -2.605,2.517 -6.623,2.811 -8.952,0.656 -1.06,-0.979 -1.664,-2.352 -1.7,-3.865 -0.043,-1.788 0.713,-3.608 2.072,-4.992 l 16.289,-16.556 c 2.582,-2.623 6.83,-2.675 9.475,-0.111 l 4.043,3.92 c 1.285,1.246 2,2.917 2.01,4.705 0.012,1.788 -0.682,3.467 -1.952,4.729 l -21.382,21.25 c -2.098,2.086 -6.053,3.907 -9.002,4.148 l -6.094,0.496 c -0.18,0.013 -0.358,0.021 -0.534,0.021 l 0,0 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,13 +0,0 @@
|
||||
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path d="M57.268,52.064,55.78,48.233h-0.2256c-0.5556,0.7572-1.1112,1.4088-1.6668,1.9548-0.5556,0.5484-1.1604,0.9984-1.8168,1.35-0.6564,0.354-1.392,0.6144-2.2056,0.78-0.8184,0.1716-1.7628,0.2532-2.838,0.2532-1.1436,0-2.2032-0.1776-3.1776-0.546-0.9756-0.3588-1.8192-0.9072-2.5332-1.6332-0.7152-0.7332-1.2732-1.6572-1.6752-2.7768-0.4032-1.1184-0.6072-2.442-0.6072-3.9732,0-2.9928,0.9588-5.1984,2.8752-6.6216,1.9176-1.4208,4.7832-2.2056,8.6016-2.358l4.488-0.15v-2.1192c0-1.1604-0.3348-2.0184-1.0104-2.574-0.6708-0.5532-1.6128-0.8316-2.8248-0.8316s-2.3928,0.1752-3.5436,0.5292-2.3088,0.8256-3.4692,1.4136l-2.496-5.0952c1.4136-0.7896,2.976-1.4124,4.6896-1.8648,1.716-0.4548,3.516-0.6816,5.3976-0.6816,3.516,0,6.2088,0.8256,8.0832,2.472,1.8756,1.6476,2.8128,4.1532,2.8128,7.5168v18.79h-5.3724v-0.0024zm-0.781-9.233-2.548,0.101c-1.0248,0.0324-1.8936,0.1692-2.5968,0.4032-0.708,0.234-1.2756,0.5484-1.704,0.9444s-0.738,0.8652-0.9324,1.4136c-0.192,0.546-0.288,1.1556-0.288,1.8276,0,1.176,0.2856,2.0136,0.8556,2.5104,0.5724,0.4944,1.3224,0.7428,2.2452,0.7428,0.708,0,1.362-0.1224,1.9692-0.366,0.6048-0.2436,1.1292-0.6048,1.5756-1.0824,0.4476-0.48,0.7944-1.0692,1.0476-1.7652,0.252-0.699,0.376-1.503,0.376-2.413v-2.317h-0.0012z" fill="#333"/>
|
||||
<path d="M26,38,14,38,9,54,3,54,17,9h6l8,25h-6l-5-18-5,18h16l6,20h-6z" fill="#333"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-579.7336,-495.3904)">
|
||||
<path d="m 514.172,439.484 4.041,-4.041 c 0.26,-0.26 0.404,-0.605 0.404,-0.975 0,-0.371 -0.143,-0.717 -0.404,-0.977 l -2.441,-2.443 c -0.521,-0.521 -1.434,-0.52 -1.949,0 l -4.044,4.043 -4.043,-4.043 c -0.52,-0.52 -1.429,-0.52 -1.949,0 l -2.443,2.443 c -0.26,0.26 -0.402,0.605 -0.402,0.975 0,0.37 0.143,0.717 0.402,0.977 l 4.043,4.041 -4.041,4.041 c -0.261,0.26 -0.404,0.605 -0.404,0.975 0,0.371 0.143,0.717 0.402,0.979 l 2.444,2.443 c 0.521,0.52 1.429,0.52 1.95,-0.002 l 4.041,-4.041 4.042,4.041 c 0.26,0.26 0.605,0.404 0.975,0.404 0.37,0 0.715,-0.145 0.975,-0.404 l 2.441,-2.439 c 0.262,-0.262 0.406,-0.609 0.406,-0.98 0,-0.369 -0.145,-0.717 -0.404,-0.973 l -4.042,-4.044 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 509.778,425.027 c 7.976,0 14.464,6.488 14.464,14.465 0,7.975 -6.488,14.463 -14.464,14.463 -7.975,0 -14.464,-6.488 -14.464,-14.463 0,-7.976 6.489,-14.465 14.464,-14.465 m 0,-8.035 c -12.426,0 -22.5,10.073 -22.5,22.5 0,12.426 10.074,22.5 22.5,22.5 12.427,0 22.5,-10.074 22.5,-22.5 -10e-4,-12.428 -10.073,-22.5 -22.5,-22.5 l 0,0 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.1999733,0,0,1.1999733,-436.77498,-206.48907)">
|
||||
<path d="m 412.51,211.853 c 0.354,0.375 0.645,0.26 0.645,-0.256 v -24.754 c 0,-0.516 -0.321,-0.664 -0.714,-0.329 l -12.536,10.671 c -0.394,0.334 -0.425,0.914 -0.07,1.289 l 12.675,13.379 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 410.761,184.249 c 0.394,-0.334 0.292,-0.607 -0.223,-0.607 h -40.092 c -0.515,0 -0.614,0.271 -0.219,0.602 l 19.701,16.524 c 0.396,0.331 1.041,0.329 1.434,-0.006 l 19.399,-16.513 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 368.154,211.597 c 0,0.516 0.29,0.631 0.645,0.256 l 12.625,-13.326 c 0.354,-0.375 0.321,-0.951 -0.074,-1.283 l -12.477,-10.465 c -0.396,-0.332 -0.719,-0.181 -0.719,0.335 v 24.483 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 392.28,203.674 c -0.393,0.335 -0.979,0.759 -1.302,0.943 0,0 0,0 -0.324,0 -0.321,0 -0.321,0 -0.321,0 -0.32,-0.181 -0.905,-0.6 -1.301,-0.931 l -4.086,-3.428 c -0.396,-0.332 -1.009,-0.297 -1.363,0.078 l -12.847,13.561 c -0.354,0.375 -0.223,0.682 0.293,0.682 h 39.25 c 0.516,0 0.647,-0.307 0.293,-0.682 l -12.883,-13.599 c -0.354,-0.374 -0.966,-0.407 -1.358,-0.073 l -4.051,3.449 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,14 +0,0 @@
|
||||
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g transform="matrix(0,1.2,-1.2,0,631.9838,-722.6014)">
|
||||
<polygon points="629.89,509.46,607.39,509.46,607.39,490.51,629.89,490.51,629.89,481.04,652.39,499.94,629.89,518.93" fill="#333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 638 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2136037,0,0,1.2136037,-732.43441,-64.413778)">
|
||||
<path d="m 617.617,100.868 c -0.703,0 -1.336,-0.279 -1.781,-0.785 -0.496,-0.56 -0.707,-1.346 -0.6,-2.215 l 1.354,-10.822 c 0.074,-0.585 -0.262,-1.62 -0.666,-2.049 l -7.453,-7.961 c -0.742,-0.792 -1.004,-1.754 -0.717,-2.637 0.287,-0.883 1.063,-1.508 2.129,-1.712 l 10.709,-2.056 c 0.578,-0.111 1.459,-0.752 1.746,-1.27 l 5.08,-9.213 c 0.199,-0.404 0.988,-1.78 2.469,-1.78 1.557,0 2.383,1.58 2.531,1.897 l 5.02,9.097 c 0.285,0.517 1.168,1.157 1.746,1.269 l 10.709,2.056 c 1.066,0.205 1.842,0.829 2.129,1.712 0.287,0.883 0.025,1.844 -0.717,2.637 l -7.453,7.96 c -0.404,0.43 -0.74,1.465 -0.668,2.051 l 1.352,10.822 c 0.109,0.866 -0.102,1.652 -0.596,2.213 -0.723,0.816 -1.939,1.017 -3.1,0.475 l -9.873,-4.633 c -0.197,-0.092 -0.582,-0.189 -1.08,-0.189 -0.498,0 -0.883,0.098 -1.078,0.188 l -9.873,4.633 c -0.444,0.207 -0.887,0.312 -1.319,0.312 l 0,0 z m 12.27,-8.239 c 0.883,0 1.734,0.172 2.398,0.484 l 9.057,4.249 -1.238,-9.932 c -0.186,-1.498 0.451,-3.457 1.482,-4.557 l 6.84,-7.304 -9.828,-1.891 c -1.48,-0.284 -3.148,-1.495 -3.879,-2.817 l -4.832,-8.764 -4.832,8.763 c -0.73,1.323 -2.396,2.534 -3.879,2.818 l -9.824,1.887 6.838,7.309 c 1.031,1.101 1.668,3.06 1.48,4.558 l -1.242,9.928 9.063,-4.247 c 0.663,-0.312 1.515,-0.484 2.396,-0.484 l 0,0 z"
|
||||
style="fill:#333369" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.1999726,0,0,1.1999726,-723.8473,-206.71515)">
|
||||
<path d="m 617.479,220.601 c -0.711,0 -1.352,-0.282 -1.803,-0.794 -0.5,-0.566 -0.715,-1.361 -0.605,-2.24 l 1.369,-10.944 c 0.074,-0.592 -0.266,-1.638 -0.674,-2.073 l -7.539,-8.051 c -0.75,-0.801 -1.016,-1.773 -0.725,-2.667 0.291,-0.893 1.074,-1.524 2.152,-1.731 l 10.832,-2.08 c 0.584,-0.112 1.477,-0.76 1.766,-1.284 l 5.137,-9.317 c 0.201,-0.408 1,-1.799 2.498,-1.799 1.574,0 2.408,1.598 2.561,1.918 l 5.074,9.2 c 0.289,0.523 1.182,1.171 1.766,1.283 l 10.832,2.08 c 1.078,0.207 1.861,0.838 2.152,1.731 0.291,0.893 0.027,1.866 -0.725,2.667 l -7.539,8.05 c -0.408,0.436 -0.748,1.482 -0.674,2.075 l 1.367,10.944 c 0.109,0.876 -0.104,1.671 -0.604,2.238 -0.73,0.826 -1.961,1.028 -3.135,0.48 l -9.984,-4.685 c -0.199,-0.093 -0.588,-0.192 -1.092,-0.192 -0.504,0 -0.895,0.099 -1.092,0.191 l -9.982,4.685 c -0.45,0.209 -0.897,0.315 -1.333,0.315 l 0,0 z m 12.409,-8.331 c 0.893,0 1.752,0.174 2.424,0.489 l 9.16,4.297 -1.252,-10.044 c -0.189,-1.515 0.455,-3.496 1.498,-4.609 l 6.918,-7.387 -9.939,-1.913 c -1.498,-0.288 -3.184,-1.512 -3.922,-2.85 l -4.887,-8.863 -4.887,8.862 c -0.738,1.338 -2.426,2.563 -3.924,2.851 l -9.936,1.908 6.916,7.391 c 1.043,1.113 1.688,3.094 1.498,4.61 l -1.256,10.041 9.164,-4.295 c 0.673,-0.315 1.532,-0.488 2.425,-0.488 l 0,0 z"
|
||||
style="fill:#333369" />
|
||||
<path d="m 629.28,189.527 c 0,0 0.244,-0.523 0.607,-0.523 0.363,0 0.627,0.56 0.627,0.56 l 2.816,5.108 c 0.285,0.514 0.988,1.026 1.564,1.137 l 5.955,1.144 c 0.578,0.111 0.721,0.553 0.32,0.981 l -4.146,4.427 c -0.402,0.428 -0.67,1.256 -0.598,1.838 l 0.752,6.02 c 0.074,0.581 -0.303,0.855 -0.834,0.606 l -5.49,-2.577 c -0.533,-0.249 -1.402,-0.249 -1.934,0 l -5.49,2.577 c -0.533,0.249 -0.908,-0.024 -0.836,-0.606 l 0.754,-6.02 c 0.072,-0.582 -0.197,-1.41 -0.598,-1.838 l -4.146,-4.427 c -0.402,-0.429 -0.258,-0.871 0.318,-0.981 l 5.957,-1.144 c 0.576,-0.111 1.279,-0.623 1.564,-1.137 l 2.838,-5.145 z"
|
||||
style="fill:#333369;fill-rule:evenodd" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.0 KiB |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2135952,0,0,1.2135952,-732.42924,-136.47014)">
|
||||
<path d="m 617.617,160.243 c -0.701,0 -1.334,-0.279 -1.781,-0.785 -0.494,-0.56 -0.707,-1.346 -0.598,-2.215 l 1.354,-10.822 c 0.072,-0.585 -0.264,-1.62 -0.668,-2.049 l -7.453,-7.961 c -0.742,-0.792 -1.004,-1.753 -0.717,-2.637 0.287,-0.883 1.063,-1.507 2.129,-1.712 l 10.709,-2.056 c 0.578,-0.111 1.461,-0.751 1.746,-1.27 l 5.08,-9.213 c 0.199,-0.404 0.99,-1.779 2.469,-1.779 1.557,0 2.383,1.58 2.531,1.896 l 5.02,9.097 c 0.287,0.517 1.168,1.158 1.746,1.269 l 10.709,2.056 c 1.066,0.205 1.842,0.829 2.129,1.712 0.287,0.883 0.027,1.845 -0.717,2.637 l -7.453,7.96 c -0.404,0.431 -0.74,1.465 -0.668,2.051 l 1.354,10.822 c 0.107,0.866 -0.104,1.652 -0.598,2.213 -0.723,0.817 -1.939,1.017 -3.1,0.475 l -9.873,-4.633 c -0.195,-0.092 -0.582,-0.19 -1.08,-0.19 -0.496,0 -0.883,0.098 -1.078,0.189 l -9.871,4.633 c -0.446,0.207 -0.889,0.312 -1.321,0.312 l 0,0 z m 12.27,-8.238 c 0.883,0 1.734,0.171 2.398,0.484 l 9.057,4.249 -1.238,-9.932 c -0.186,-1.498 0.451,-3.457 1.482,-4.557 l 6.84,-7.304 -9.828,-1.891 c -1.48,-0.285 -3.148,-1.496 -3.879,-2.818 l -4.832,-8.764 -4.832,8.763 c -0.73,1.323 -2.396,2.534 -3.877,2.819 l -9.826,1.886 6.838,7.309 c 1.031,1.101 1.668,3.06 1.48,4.559 l -1.24,9.928 9.061,-4.247 c 0.663,-0.313 1.515,-0.484 2.396,-0.484 l 0,0 z"
|
||||
style="fill:#333369" />
|
||||
<path d="m 641.045,137.83 c 0.396,-0.424 0.254,-0.861 -0.316,-0.971 l -5.891,-1.131 c -0.568,-0.109 -1.264,-0.616 -1.547,-1.124 l -2.783,-5.05 c 0,0 -0.262,-0.554 -0.621,-0.554 -0.357,0 -0.6,0.518 -0.6,0.518 l -2.805,5.087 c -0.281,0.508 -0.977,1.015 -1.547,1.124 l -5.889,1.131 c -0.57,0.11 -0.713,0.547 -0.314,0.971 l 4.098,4.377 c 0.398,0.424 0.664,1.242 0.592,1.817 l -0.744,5.952 c -0.072,0.576 0.299,0.846 0.824,0.599 l 5.43,-2.547 c 0.264,-0.123 0.609,-0.185 0.955,-0.185 0.348,0 0.693,0.062 0.957,0.185 l 5.428,2.547 c 0.133,0.062 0.254,0.091 0.363,0.091 0.322,0 0.518,-0.26 0.463,-0.69 l -0.742,-5.952 c -0.074,-0.576 0.191,-1.394 0.59,-1.817 l 4.099,-4.378 z m -9.563,-2.222 c 0.578,1.042 1.797,1.928 2.967,2.153 l 3.242,0.623 -2.256,2.408 c -0.818,0.871 -1.283,2.308 -1.135,3.49 l 0.408,3.275 -2.988,-1.402 c -0.67,-0.314 -1.367,-0.38 -1.834,-0.38 v -13.059 l 1.596,2.892 z"
|
||||
style="fill:#333369" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1,4 +0,0 @@
|
||||
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<path fill="#333" d="m50.318,5.003h-21.273c-5.515,6-11.03,12-16.545,18v34.714c0.10749,1.7195,2.0191,1.2097,3.1801,1.2857h34.638c1.6346-0.23497,1.0847-2.1237,1.1818-3.284v-49.431c0.018-0.6455-0.51-1.2961-1.182-1.285z"/>
|
||||
<path fill="#FFF" d="m29.038,22.993h-14.182c4.7273-5.143,9.4547-10.286,14.182-15.429v15.429z"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 544 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64px" height="64px">
|
||||
<g transform="matrix(1.199961,0,0,1.2222222,-436.76926,-579.09522)">
|
||||
<path d="m 378.923,493.986 c -1.41,0 -2.684,1.188 -2.781,2.594 l -0.932,12.574 c -0.059,0.787 -0.717,1.389 -1.495,1.389 -0.037,0 -0.075,-0.002 -0.112,-0.004 -0.826,-0.063 -1.446,-0.781 -1.385,-1.607 l 0.932,-12.566 c 0.205,-2.963 2.796,-5.379 5.773,-5.379 h 28.369 c 0,-0.465 0,-0.873 0,-1.031 0,-1.635 -1.654,-2.973 -3.309,-2.973 h -17.744 c 0,0 0,-1.193 0,-2.543 0,-1.35 -1.354,-2.453 -3.008,-2.453 h -12.07 c -1.654,0 -3.008,1.35 -3.008,3 v 30 c 0,1.65 1.354,3 3.008,3 h 37.098 c 1.655,0 3.122,-1.346 3.262,-2.99 l 1.623,-19.021 c 0.065,-0.766 -0.177,-1.459 -0.612,-1.988 h -33.609 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 793 B |
@@ -1,60 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3028"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Forbidden.svg">
|
||||
<metadata
|
||||
id="metadata3038">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs3036" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1340"
|
||||
inkscape:window-height="892"
|
||||
id="namedview3034"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="52.794424"
|
||||
inkscape:cy="15.718112"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg3028" />
|
||||
<g
|
||||
transform="matrix(1.2,0,0,1.2,-579.7324,-351.106)"
|
||||
id="g3030">
|
||||
<path
|
||||
d="m 532.27833,319.25811 c 0,-12.427 -10.07533,-22.50311 -22.50133,-22.50311 -12.426,0 -22.5,10.073 -22.5,22.5 0,12.427 10.074,22.5 22.5,22.5 l 0.021,-8.437 c -7.755,0 -14.08298,-6.308 -14.08298,-14.063 0,-2.343 0.584,-4.55 1.602,-6.493 l 18.955,18.953 c -1.943,1.019 -4.15,1.603 -6.494,1.603 l -0.001,8.45698 c 12.426,0 22.5,-10.09298 22.5,-22.51998 l -8.43744,5.9e-4 c 0,2.344 -0.58356,4.54941 -1.60156,6.49441 l -18.955,-18.955 c 1.945,-1.019 4.151,-1.603 6.494,-1.603 7.754,10e-4 14.063,6.309 14.063,14.063 z"
|
||||
style="fill:#333333"
|
||||
id="path3032"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cssccsccccccccccc" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-579.7336,-711.5908)">
|
||||
<path d="m 509.778,597.159 c -12.427,0 -22.5,10.074 -22.5,22.5 0,12.428 10.073,22.5 22.5,22.5 12.427,0 22.5,-10.072 22.5,-22.5 -10e-4,-12.426 -10.073,-22.5 -22.5,-22.5 z m -0.559,36.414 c -1.676,0 -3.054,-1.379 -3.054,-3.055 0,-1.676 1.378,-3.053 3.054,-3.053 1.677,0 3.054,1.377 3.054,3.053 0,1.676 -1.377,3.055 -3.054,3.055 z m 2.904,-11.791 c -0.892,1.305 -0.594,3.129 -3.052,3.129 -1.602,0 -2.385,-1.305 -2.385,-2.496 0,-4.432 6.519,-5.436 6.519,-9.086 0,-2.012 -1.34,-3.203 -3.576,-3.203 -4.767,0 -2.905,4.916 -6.518,4.916 -1.304,0 -2.421,-0.783 -2.421,-2.271 0,-3.65 4.172,-6.891 8.714,-6.891 4.769,0 9.46,2.197 9.46,7.449 10e-4,4.842 -5.55,6.703 -6.741,8.453 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 857 B |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.1999968,0,0,1.3606385,-147.9521,-648.3007)">
|
||||
<path d="m 170.351,504.021 c -0.343,0.365 -0.922,0.385 -1.288,0.043 L 150.392,486.63 c -0.365,-0.342 -0.966,-0.342 -1.332,0 l -18.204,16.97 c -0.367,0.344 -0.945,0.322 -1.287,-0.045 l -1.865,-2 c -0.342,-0.365 -0.321,-0.945 0.045,-1.287 l 21.313,-19.869 c 0.367,-0.342 0.967,-0.342 1.334,0.002 l 21.777,20.334 c 0.365,0.342 0.386,0.922 0.043,1.289 l -1.865,1.997 z"
|
||||
style="fill:#333333"/>
|
||||
<path d="m 149.725,489.777 -15.345,14.305 v 14.83 c 0,0.504 0.414,0.918 0.919,0.918 h 10.085 v -12.857 c 0,-0.504 0.414,-0.918 0.919,-0.918 h 7.347 c 0.506,0 0.918,0.414 0.918,0.918 v 12.857 h 10.119 c 0.505,0 0.918,-0.414 0.918,-0.918 v -14.307 l -15.88,-14.828 z"
|
||||
style="fill:#333333"/>
|
||||
<path d="m 165.543,482.311 c 0,-0.506 -0.414,-0.92 -0.919,-0.92 h -5.51 c -0.505,0 -0.918,0.414 -0.918,0.92 v 1.604 l 7.347,6.918 v -8.522 z"
|
||||
style="fill:#333333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-579.7336,-639.148)">
|
||||
<path d="m 509.778,536.79 c -12.427,0 -22.5,10.074 -22.5,22.5 0,12.428 10.073,22.5 22.5,22.5 12.426,0 22.5,-10.072 22.5,-22.5 0,-12.426 -10.074,-22.5 -22.5,-22.5 z m 3.749,35.66 c 0,0.516 -0.422,0.938 -0.937,0.938 h -5.625 c -0.516,0 -0.938,-0.422 -0.938,-0.938 v -15 c 0,-0.514 0.422,-0.938 0.938,-0.938 h 5.625 c 0.515,0 0.937,0.424 0.937,0.938 v 15 z m 0,-19.758 c 0,0.516 -0.422,0.938 -0.937,0.938 h -5.625 c -0.516,0 -0.938,-0.422 -0.938,-0.938 v -6.563 c 0,-0.516 0.422,-0.938 0.938,-0.938 h 5.625 c 0.515,0 0.937,0.422 0.937,0.938 v 6.563 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 736 B |
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.1999733,0,0,1.1999733,-364.43055,-494.42419)">
|
||||
<path d="m 352.572,429.142 c 0,0.494 -0.406,0.9 -0.9,0.9 h -43.201 c -0.494,0 -0.9,-0.406 -0.9,-0.9 v -8.099 c 0,-0.496 0.406,-0.9 0.9,-0.9 h 43.201 c 0.494,0 0.9,0.404 0.9,0.9 v 8.099 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 352.572,443.542 c 0,0.494 -0.406,0.9 -0.9,0.9 h -43.201 c -0.494,0 -0.9,-0.406 -0.9,-0.9 v -8.1 c 0,-0.496 0.406,-0.9 0.9,-0.9 h 43.201 c 0.494,0 0.9,0.404 0.9,0.9 v 8.1 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 352.572,457.942 c 0,0.494 -0.406,0.898 -0.9,0.898 h -43.201 c -0.494,0 -0.9,-0.404 -0.9,-0.898 v -8.102 c 0,-0.494 0.406,-0.898 0.9,-0.898 h 43.201 c 0.494,0 0.9,0.404 0.9,0.898 v 8.102 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 842 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.1818182,0,0,1.2857143,-429.68201,-454.27086)">
|
||||
<path d="m 406.154,357.213 h -18 l -14,14 v 27 c 0,0.55 0.449,1 1,1 h 11 v -11 h -4 c -1.1,0 -1.418,-0.688 -0.709,-1.526 l 8.416,-9.947 c 0.711,-0.84 1.875,-0.84 2.584,0 l 8.416,9.947 c 0.711,0.839 0.393,1.526 -0.707,1.526 h -4 v 11 h 10 c 0.549,0 1,-0.45 1,-1 v -40 c 0,-0.551 -0.451,-1 -1,-1 z m -18,14 h -12 l 12,-12 v 12 z"
|
||||
style="fill:#333333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 529 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-3.2008856,-206.932)">
|
||||
<path d="m 43.688,193.586 h -1.077 v -8.353 c 0,-4.743 -3.881,-8.623 -8.623,-8.623 h -8.623 c -4.742,0 -8.623,3.88 -8.623,8.623 v 8.353 h -1.078 c -1.778,0 -3.232,1.455 -3.232,3.234 v 21.557 c 0,1.778 1.454,3.233 3.232,3.233 h 28.024 c 1.779,0 3.233,-1.455 3.233,-3.233 V 196.82 c 10e-4,-1.779 -1.453,-3.234 -3.233,-3.234 z m -11.856,14.928 v 6.81 h -4.311 v -6.81 c -1.413,-0.769 -2.383,-2.248 -2.383,-3.969 0,-2.506 2.031,-4.538 4.538,-4.538 2.505,0 4.536,2.032 4.536,4.538 10e-4,1.721 -0.968,3.2 -2.38,3.969 z m 4.516,-14.928 H 23.006 v -7.545 c 0,-2.371 1.938,-4.31 4.311,-4.31 h 4.721 c 2.37,0 4.311,1.939 4.311,4.31 v 7.545 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 821 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-723.8644,-566.7208)">
|
||||
<polygon points="629.887,481.039 652.387,499.941 629.887,518.934 629.887,509.459 607.387,509.459 607.387,490.512 629.887,490.512 "
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 322 B |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-579.7336,-421.8556)">
|
||||
<path d="m 509.778,363.895 c 7.908,0 14.318,6.411 14.318,14.318 0,7.907 -6.41,14.318 -14.318,14.318 -7.908,0 -14.318,-6.411 -14.318,-14.318 0,-7.907 6.41,-14.318 14.318,-14.318 m 0,-8.182 c -12.406,0 -22.5,10.094 -22.5,22.5 0,12.406 10.094,22.5 22.5,22.5 12.406,0 22.5,-10.094 22.5,-22.5 0,-12.406 -10.094,-22.5 -22.5,-22.5 l 0,0 z"
|
||||
style="fill:#333333" />
|
||||
<polygon points="498.698,373.228 509.778,387.162 520.857,373.228 "
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 625 B |
@@ -1,61 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="64"
|
||||
width="64"
|
||||
version="1.1"
|
||||
id="svg3026"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Parameter.svg">
|
||||
<defs
|
||||
id="defs3034" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="968"
|
||||
id="namedview3032"
|
||||
showgrid="true"
|
||||
showguides="false"
|
||||
inkscape:zoom="10.429825"
|
||||
inkscape:cx="15.854083"
|
||||
inkscape:cy="35.324394"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg3026">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3036" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata3028">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path
|
||||
style="color:#000000;fill:#333333;enable-background:accumulate"
|
||||
d="m 4,51 c 6,-6 6,-6 6,-6 l 9,0 0,9 -6,6 C 23,63 28,51 26,45 33.5363,37.4993 38.48,32.485 46,25 52,27 63,24 60,14 L 55,19 45,19 45,9 50,4 C 40,1 37,12 39,18 31.467,25.472 26.513,30.476 19,38 13,36 1,41 4,51 z"
|
||||
id="path3030"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccccccc" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.9 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(-1.2,0,0,1.2,787.8644,-566.7208)">
|
||||
<polygon points="652.387,499.941 629.887,518.934 629.887,509.459 607.387,509.459 607.387,490.512 629.887,490.512 629.887,481.039 "
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 322 B |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2000267,0,0,1.2000267,-3.5226163,-279.15673)">
|
||||
<path d="m 36.314,239.696 v 8.396 c 4.282,2.353 7.191,6.905 7.191,12.126 0,7.626 -6.203,13.829 -13.829,13.829 -7.626,0 -13.829,-6.203 -13.829,-13.829 0,-5.221 2.91,-9.773 7.191,-12.126 v -8.396 c -8.664,2.802 -14.936,10.925 -14.936,20.522 0,11.915 9.658,21.573 21.573,21.573 11.915,0 21.573,-9.658 21.573,-21.573 0.002,-9.596 -6.269,-17.72 -14.934,-20.522 z"
|
||||
style="fill:#333333"/>
|
||||
<path d="m 32.998,256.706 c 0,1.218 -0.995,2.213 -2.213,2.213 h -2.217 c -1.218,0 -2.213,-0.995 -2.213,-2.213 v -17.701 c 0,-1.218 0.995,-2.213 2.213,-2.213 h 2.217 c 1.218,0 2.213,0.995 2.213,2.213 v 17.701 z"
|
||||
style="fill:#333333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 804 B |
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.3012048,0,0,1.255814,-631.32431,-293.62251)">
|
||||
<circle d="m 514.52701,259.29199 c 0,2.20914 -1.79086,4 -4,4 -2.20914,0 -4,-1.79086 -4,-4 0,-2.20914 1.79086,-4 4,-4 2.20914,0 4,1.79086 4,4 z"
|
||||
style="fill:#333333"
|
||||
cx="510.52701"
|
||||
cy="259.29199"
|
||||
r="4"/>
|
||||
<path d="m 530.527,254.292 v -13 l -4.098,3.514 c -4.137,-4.393 -10.08,-7.014 -15.902,-7.014 -11.855,0 -21.5,9.646 -21.5,21.5 0,11.854 9.645,21.5 21.5,21.5 8.551,0 16.287,-5.064 19.711,-12.902 l -6.416,-2.801 c -2.309,5.287 -7.527,8.703 -13.295,8.703 -7.996,0 -14.5,-6.504 -14.5,-14.5 0,-7.994 6.504,-14.5 14.5,-14.5 3.824,0 7.744,1.715 10.568,4.584 l -4.568,3.916 14,1 z"
|
||||
style="fill:#333333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 818 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2000267,0,0,1.2000267,-651.9777,-351.11481)">
|
||||
<path d="m 579.088,319.255 12.91,-12.908 c 0.627,-0.627 0.627,-1.654 0,-2.281 l -6.84,-6.842 c -0.627,-0.625 -1.652,-0.625 -2.279,0 l -12.91,12.91 -12.91,-12.91 c -0.627,-0.625 -1.654,-0.625 -2.281,0 l -6.84,6.842 c -0.625,0.627 -0.625,1.654 0,2.281 l 12.91,12.908 -12.908,12.908 c -0.627,0.627 -0.627,1.654 0,2.281 l 6.84,6.842 c 0.627,0.625 1.654,0.625 2.281,0 l 12.908,-12.91 12.908,12.91 c 0.627,0.625 1.652,0.625 2.279,0 l 6.84,-6.842 c 0.627,-0.627 0.627,-1.654 0,-2.281 l -12.908,-12.908 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 699 B |
@@ -1,63 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg3028"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Remove2.svg">
|
||||
<metadata
|
||||
id="metadata3038">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs3036" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="968"
|
||||
id="namedview3034"
|
||||
showgrid="true"
|
||||
inkscape:zoom="9.0377085"
|
||||
inkscape:cx="14.895958"
|
||||
inkscape:cy="28.796248"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg3028">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3040" />
|
||||
</sodipodi:namedview>
|
||||
<g
|
||||
transform="matrix(1.2000267,0,0,1.2000267,-651.9777,-351.11481)"
|
||||
id="g3030">
|
||||
<path
|
||||
d="m 576.63525,319.25524 15.35699,-15.27674 c 0.627,-0.627 0.627,-1.654 0,-2.281 l -4.29338,-4.3352 c -0.627,-0.625 -1.652,-0.625 -2.279,0 l -15.45113,15.22642 -15.83298,-15.45692 c -0.627,-0.625 -1.654,-0.625 -2.281,0 l -3.9859,4.00946 c -0.625,0.627 -0.625,1.654 0,2.281 l 15.43337,15.83298 -15.31612,15.67389 c -0.61972,0.63419 -0.627,1.654 0,2.281 l 4.14303,4.07587 c 0.627,0.625 1.654,0.625 2.281,0 l 15.5586,-15.36424 16.05393,15.36226 c 0.627,0.625 1.652,0.625 2.279,0 l 3.69434,-4.06095 c 0.627,-0.627 0.62038,-1.64745 0,-2.281 z"
|
||||
style="fill:#fe0000;fill-opacity:0.88627452"
|
||||
id="path3032"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccccscccccccsc" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1,15 +0,0 @@
|
||||
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path d="M56.308,30.297c-0.34-11.332-7.1-21.282-17.44-25.505-10.575-4.3193-22.883-1.4808-30.624,7.062l6.7808,6.444c5.1608-5.6978,13.367-7.5874,20.417-4.7076,6.802,2.7782,11.249,9.2808,11.584,16.709l-6.7794,0.0046,11.511,14.941,10.893-14.949-6.3435-0.000321z" fill="#333"/>
|
||||
<g transform="matrix(0.71188026,0,0,0.77215001,-386.35967,-207.86869)">
|
||||
<path fill="#333" d="m579.09,319.26,12.91-12.908c0.627-0.627,0.627-1.654,0-2.281l-6.84-6.842c-0.627-0.625-1.652-0.625-2.279,0l-12.91,12.91-12.91-12.91c-0.627-0.625-1.654-0.625-2.281,0l-6.84,6.842c-0.625,0.627-0.625,1.654,0,2.281l12.91,12.908-12.908,12.908c-0.627,0.627-0.627,1.654,0,2.281l6.84,6.842c0.627,0.625,1.654,0.625,2.281,0l12.908-12.91,12.908,12.91c0.627,0.625,1.652,0.625,2.279,0l6.84-6.842c0.627-0.627,0.627-1.654,0-2.281l-12.908-12.908z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.1999941,0,0,1.2,-75.451168,-351.106)">
|
||||
<path d="m 104.793,296.755 h -24.75 c -1.237,0 -2.25,1.013 -2.25,2.25 v 9 c 0,1.237 -0.562,3.093 -1.248,4.122 l -2.004,3.005 c -0.687,1.029 -1.248,2.885 -1.248,4.123 0,1.236 0.905,1.797 2.013,1.244 l 0.475,-0.238 c 1.107,-0.554 2.013,0.006 2.013,1.244 v 2.25 c 0,1.236 -0.717,2.967 -1.591,3.84 l -1.318,1.318 c -0.874,0.875 -1.591,2.604 -1.591,3.842 v 6.75 c 0,1.236 1.013,2.25 2.25,2.25 h 24.75 c 4.359,0 6.75,-2.25 6.75,-6.75 v -36 c -10e-4,-1.237 -1.014,-2.25 -2.251,-2.25 z m -20.25,13 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64px" height="64px">
|
||||
<g transform="matrix(1.2,0,0,1.2000267,-436.7836,-495.40152)">
|
||||
<rect style="fill:#333333"
|
||||
x="386.36899"
|
||||
y="419.13501"
|
||||
width="8.5719995"
|
||||
height="10.714"
|
||||
/>
|
||||
<path style="fill:#333333"
|
||||
d="m 403.435,416.992 h -3.139 v 16.071 h -25.713 v -16.071 h -5.893 c -0.295,0 -0.537,0.241 -0.537,0.535 v 43.929 c 0,0.295 0.242,0.535 0.537,0.535 h 43.928 c 0.295,0 0.535,-0.24 0.535,-0.535 V 426.71 l -9.718,-9.718 z m 3.291,41.784 h -32.143 v -21.428 h 32.143 v 21.428 z"
|
||||
/>
|
||||
<polygon style="fill:#333333" points="403.511,445.921 403.511,445.921 377.798,445.921 377.798,442.706 403.511,442.706 " />
|
||||
<polygon style="fill:#333333" points="403.511,453.421 403.511,453.421 377.798,453.421 377.798,450.206 403.511,450.206 " />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 859 B |
@@ -1,49 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg height="64"
|
||||
width="64" >
|
||||
<metadata
|
||||
id="metadata3975">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs3973" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="968"
|
||||
id="namedview3971"
|
||||
showgrid="false"
|
||||
inkscape:zoom="16"
|
||||
inkscape:cx="27.03623"
|
||||
inkscape:cy="33.687368"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg3965" />
|
||||
<path
|
||||
d="M 39.436904,24.062448 C 39.915614,33.278293 29.16429,41.203307 19.736168,37.727362 10.452887,34.884476 6.7103607,23.258769 12.262163,15.90798 17.329733,7.8698857 31.048441,7.5763012 36.47627,15.419465 c 1.929199,2.496703 2.965789,5.568455 2.960389,8.64209 z"
|
||||
id="path3969"
|
||||
style="fill:#ffffff;fill-opacity:0.87450981"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 58.168,50.56 46.013,38.407 c -0.91442,-0.91442 -2.3016,-1.0644 -3.3865,-0.47161 l -2.592,-2.592 c 2.208,-3.1357 3.5185,-6.9493 3.5185,-11.068 0,-10.629 -8.6485,-19.276 -19.277,-19.276 -10.629,0 -19.276,8.6461 -19.276,19.276 0,10.6299 8.6461,19.277 19.276,19.277 4.1017,0 7.8985,-1.296 11.026,-3.4873 0,0 0.596082,-5.606306 -5.038478,-5.016691 -4.69706,2.902115 -12.054397,2.017375 -15.875086,-3.769003 -3.142722,-4.56604 -2.630816,-13.100523 2.668347,-16.731928 5.299163,-3.631405 14.142128,-3.981951 18.471312,4.363412 2.363082,6.040278 0.78609,12.603632 -5.311526,16.1632 7.665096,7.559567 7.694231,7.60221 7.694231,7.60221 -0.56041,1.0752 -0.40321,2.4348 0.49681,3.3373 l 12.155,12.153 c 1.1088,1.1112 2.9268,1.1112 4.0357,0 l 3.5725,-3.5701 c 1.1064,-1.1088 1.1064,-2.9256 -0.0024,-4.0369 z"
|
||||
id="path3967"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333"
|
||||
sodipodi:nodetypes="ccccssssccczccccccccc" />
|
||||
</svg>
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-436.9344,-711.5908)">
|
||||
<path d="m 408.302,604.218 h -7.95 c 0.002,-0.055 0.009,-0.109 0.009,-0.166 v -1.6 c 0,-2.91 -2.384,-5.293 -5.294,-5.293 h -8.824 c -2.912,0 -5.294,2.383 -5.294,5.293 v 1.6 c 0,0.057 0.007,0.111 0.009,0.166 h -7.95 c -1.456,0 -2.646,1.191 -2.646,2.646 v 2.646 c 0,1.457 1.19,2.648 2.646,2.648 h 0.883 v -1.766 h 33.529 v 1.766 h 0.883 c 1.455,0 2.646,-1.191 2.646,-2.648 v -2.646 c -0.001,-1.455 -1.192,-2.646 -2.647,-2.646 z m -22.969,-2.647 h 10.588 v 2.646 h -10.588 v -2.646 z"
|
||||
style="fill:#333333"/>
|
||||
<path d="m 375.654,613.042 v 26.469 c 0,1.457 1.19,2.648 2.647,2.648 h 24.705 c 1.456,0 2.647,-1.191 2.647,-2.648 v -26.469 h -29.999 z m 8.824,23.381 c 0,0.486 -0.397,0.883 -0.882,0.883 h -1.765 c -0.486,0 -0.883,-0.396 -0.883,-0.883 v -17.646 c 0,-0.484 0.396,-0.883 0.883,-0.883 h 1.765 c 0.484,0 0.882,0.398 0.882,0.883 v 17.646 z m 7.941,0 c 0,0.486 -0.398,0.883 -0.882,0.883 h -1.766 c -0.485,0 -0.882,-0.396 -0.882,-0.883 v -17.646 c 0,-0.484 0.396,-0.883 0.882,-0.883 h 1.766 c 0.483,0 0.882,0.398 0.882,0.883 v 17.646 z m 7.941,0 c 0,0.486 -0.398,0.883 -0.883,0.883 h -1.765 c -0.485,0 -0.882,-0.396 -0.882,-0.883 v -17.646 c 0,-0.484 0.396,-0.883 0.882,-0.883 h 1.765 c 0.484,0 0.883,0.398 0.883,0.883 v 17.646 z"
|
||||
style="fill:#333333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(-1.3012048,0,0,1.255814,695.32425,-293.62251)">
|
||||
<circle d="m 514.52701,259.29199 c 0,2.20914 -1.79086,4 -4,4 -2.20914,0 -4,-1.79086 -4,-4 0,-2.20914 1.79086,-4 4,-4 2.20914,0 4,1.79086 4,4 z"
|
||||
style="fill:#333333"
|
||||
cx="510.52701"
|
||||
cy="259.29199"
|
||||
r="4"/>
|
||||
<path d="m 530.527,254.292 v -13 l -4.098,3.514 c -4.137,-4.393 -10.08,-7.014 -15.902,-7.014 -11.855,0 -21.5,9.646 -21.5,21.5 0,11.854 9.645,21.5 21.5,21.5 8.551,0 16.287,-5.064 19.711,-12.902 l -6.416,-2.801 c -2.309,5.287 -7.527,8.703 -13.295,8.703 -7.996,0 -14.5,-6.504 -14.5,-14.5 0,-7.994 6.504,-14.5 14.5,-14.5 3.824,0 7.744,1.715 10.568,4.584 l -4.568,3.916 14,1 z"
|
||||
style="fill:#333333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 818 B |
@@ -1,14 +0,0 @@
|
||||
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g transform="matrix(0,-1.2,1.2,0,-567.9838,789.1274)">
|
||||
<polygon points="652.39,499.94,629.89,518.93,629.89,509.46,607.39,509.46,607.39,490.51,629.89,490.51,629.89,481.04" fill="#333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 638 B |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.1999733,0,0,1.1999733,-579.72065,-63.509343)">
|
||||
<path d="m 528.054,71.68 c -3.166,-7.28 -10.25,-11.956 -18.232,-11.956 -8.164,0 -15.625,5.116 -18.564,12.729 l 6.188,2.39 c 1.959,-5.077 6.934,-8.486 12.377,-8.486 5.251,0 9.9,3.048 12.05,7.791 l -4.514,1.804 11.543,6.66 3.377,-12.617 -4.225,1.685 z"
|
||||
style="fill:#333333"/>
|
||||
<path d="m 509.822,92.88 c -5.205,0 -9.952,-3.14 -12.074,-7.853 l 4.45,-1.721 -11.423,-6.515 -3.497,12.281 4.26,-1.646 c 3.106,7.252 10.357,12.084 18.284,12.084 8.193,0 15.449,-4.917 18.484,-12.524 l -6.158,-2.457 c -2.026,5.073 -6.862,8.351 -12.326,8.351 z"
|
||||
style="fill:#333333"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 744 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2,0,0,1.2,-651.9628,-63.5416)">
|
||||
<path d="m 569.969,57.117 c -12.428,0 -22.5,10.073 -22.5,22.501 0,12.426 10.072,22.5 22.5,22.5 12.426,0 22.5,-10.074 22.5,-22.5 0,-12.428 -10.074,-22.501 -22.5,-22.501 z m 11.324,21.029 -10.391,10.391 c -0.514,0.514 -1.357,0.514 -1.871,0 L 558.642,78.148 c -0.514,-0.514 -0.514,-1.355 0,-1.869 l 2.279,-2.281 c 0.867,-0.867 2.174,-0.752 2.943,0.02 l 5.166,5.164 c 0.514,0.516 1.357,0.516 1.871,0 l 5.182,-5.18 c 0.867,-0.869 2.121,-0.816 2.934,-0.002 l 2.275,2.275 c 0.515,0.513 0.515,1.357 10e-4,1.871 z"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 711 B |
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.300523,0,0,1.300523,-4.3338536,-458.79144)">
|
||||
<polygon points="16.142,372.236 26.103,362.274 26.103,394.151 16.142,384.189 7.177,384.189 7.177,372.236 "
|
||||
style="fill:#333333" />
|
||||
<path d="m 34.567,369.749 -2.816,2.816 c 1.447,1.446 2.344,3.444 2.344,5.647 0,2.203 -0.896,4.201 -2.344,5.646 l 2.816,2.816 c 2.168,-2.168 3.512,-5.161 3.512,-8.463 0,-3.302 -1.344,-6.293 -3.512,-8.462 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 39.704,365.025 -2.816,2.816 c 2.645,2.645 4.283,6.297 4.283,10.324 0,4.027 -1.639,7.68 -4.283,10.324 l 2.816,2.816 c 3.365,-3.367 5.451,-8.015 5.451,-13.141 0,-5.123 -2.086,-9.771 -5.451,-13.139 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 44.56,359.854 -2.816,2.816 c 3.982,3.982 6.449,9.48 6.449,15.543 0,6.063 -2.467,11.561 -6.447,15.543 l 2.814,2.816 c 4.705,-4.704 7.617,-11.197 7.617,-18.359 0,-7.162 -2.914,-13.655 -7.617,-18.359 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.0 KiB |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2249898,0,0,1.2249898,-3.7905268,-358.08412)">
|
||||
<polygon points="16.82,325.684 7.176,325.684 7.176,312.827 16.82,312.827 27.534,302.112 27.534,336.398 "
|
||||
style="fill:#333333" />
|
||||
<path d="m 47.081,319.255 4.918,-4.917 c 0.238,-0.24 0.238,-0.631 0,-0.87 l -2.607,-2.606 c -0.237,-0.238 -0.629,-0.238 -0.866,0 l -4.919,4.918 -4.92,-4.918 c -0.236,-0.238 -0.629,-0.238 -0.867,0 l -2.605,2.606 c -0.239,0.239 -0.239,0.63 0,0.87 l 4.917,4.917 -4.917,4.917 c -0.239,0.24 -0.239,0.632 0,0.87 l 2.607,2.607 c 0.236,0.236 0.629,0.236 0.867,0 l 4.918,-4.919 4.916,4.919 c 0.24,0.236 0.632,0.236 0.869,0 l 2.607,-2.607 c 0.236,-0.237 0.236,-0.63 0,-0.87 l -4.918,-4.917 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 820 B |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2000035,0,0,1.2000035,-76.201658,-63.592236)">
|
||||
<path d="M 111.858,93.287 93.524,62.64 C 91.67,59.542 88.639,59.543 86.789,62.641 L 68.476,93.286 c -1.851,3.098 -0.413,5.633 3.197,5.633 h 36.993 c 3.608,-10e-4 5.045,-2.535 3.192,-5.632 z M 88.2,73.367 c 0,-1.084 0.887,-1.969 1.969,-1.969 1.083,0 1.969,0.885 1.969,1.969 v 9.192 c 0,1.085 -0.886,1.969 -1.969,1.969 -1.082,0 -1.969,-0.884 -1.969,-1.969 v -9.192 z m 1.969,19.596 c -1.449,0 -2.625,-1.177 -2.625,-2.625 0,-1.451 1.176,-2.624 2.625,-2.624 1.45,0 2.625,1.173 2.625,2.624 0,1.449 -1.175,2.625 -2.625,2.625 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 724 B |
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.2000267,0,0,1.2000267,-220.089,-63.543123)">
|
||||
<path d="m 232.569,79.617 -16.755,-3.49 2.864,-5.115 -5.023,3.029 -3.585,-16.924 -3.585,16.924 -5.023,-3.029 2.864,5.115 -16.755,3.49 h -0.001 l 0.001,0 0,0 16.755,3.49 -2.864,5.114 5.023,-3.029 3.585,16.925 3.585,-16.925 5.023,3.029 -2.864,-5.114 16.755,-3.49 0,0 0,0 0,0 z m -22.499,4.302 c -2.376,0 -4.302,-1.925 -4.302,-4.301 0,-2.375 1.926,-4.301 4.302,-4.301 2.376,0 4.302,1.926 4.302,4.301 0,2.376 -1.926,4.301 -4.302,4.301 z"
|
||||
style="fill:#451c54" />
|
||||
<g>
|
||||
<path d="m 199.03,75.203 c 1.204,-2.997 3.589,-5.393 6.58,-6.609 l 1.242,-5.866 c -6.921,1.314 -12.371,6.771 -13.676,13.694 l 5.854,-1.219 z"
|
||||
style="fill:#451c54" />
|
||||
<path d="m 221.139,84.026 c -1.204,3.017 -3.604,5.428 -6.615,6.644 l -1.24,5.861 c 6.939,-1.307 12.404,-6.779 13.703,-13.723 l -5.848,1.218 z"
|
||||
style="fill:#451c54" />
|
||||
<path d="m 214.529,68.586 c 3.002,1.214 5.396,3.615 6.603,6.622 l 5.852,1.219 C 225.679,69.495 220.22,64.032 213.289,62.725 l 1.24,5.861 z"
|
||||
style="fill:#451c54" />
|
||||
<path d="m 205.614,90.663 c -3,-1.219 -5.391,-3.624 -6.592,-6.632 l -5.85,-1.218 c 1.299,6.935 6.754,12.402 13.684,13.715 l -1.242,-5.865 z"
|
||||
style="fill:#451c54" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1,13 +0,0 @@
|
||||
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path d="m36.594,31.471,9.9047,12.555,9.3732-12.561-9.4514,0.0011z" fill="#333"/>
|
||||
<path fill="#353535" d="m31.724,51.573c-6.6423,0-11.845-9.0656-11.845-20.048s5.203-20.048,11.845-20.048c7.389,0,12.257,7.595,11.625,20.494,3.1648,0.01798,3.0508-0.01346,7.1142-0.17954,0.674-20.911-8.501-28.985-18.739-28.985-9.0867,0-18.935,12.636-18.935,28.584s9.849,29.002,18.935,28.855"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 818 B |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="64" height="64">
|
||||
<g transform="matrix(1.20002,0,0,1.20002,-651.97375,-639.15903)">
|
||||
<path d="m 591.775,574.756 -10.129,-10.127 c -0.762,-0.762 -1.918,-0.887 -2.822,-0.393 l -2.16,-2.16 c 1.84,-2.613 2.932,-5.791 2.932,-9.223 0,-8.857 -7.207,-16.063 -16.064,-16.063 -8.857,0 -16.063,7.205 -16.063,16.063 0,8.858 7.205,16.064 16.063,16.064 3.418,0 6.582,-1.08 9.188,-2.906 l 2.174,2.176 c -0.467,0.896 -0.336,2.029 0.414,2.781 l 10.129,10.127 c 0.924,0.926 2.439,0.926 3.363,0 l 2.977,-2.975 c 0.922,-0.925 0.922,-2.438 -0.002,-3.364 z m -28.244,-11.787 c -5.584,0 -10.113,-4.529 -10.113,-10.115 0,-5.584 4.529,-10.113 10.113,-10.113 5.586,0 10.115,4.529 10.115,10.113 0,5.585 -4.529,10.115 -10.115,10.115 z"
|
||||
style="fill:#333333" />
|
||||
<path d="m 568.498,550.863 h -3 v -3 c 0,-1.104 -0.895,-2 -2,-2 -1.104,0 -2,0.896 -2,2 v 3 h -3 c -1.104,0 -2,0.896 -2,2 0,1.105 0.896,2 2,2 h 3 v 3 c 0,1.105 0.896,2 2,2 1.105,0 2,-0.895 2,-2 v -3 h 3 c 1.105,0 2,-0.895 2,-2 0,-1.103 -0.894,-2 -2,-2 z"
|
||||
style="fill:#333333" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -1,6 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
import lutinModule
|
||||
import lutinTools
|
||||
|
||||
lutinModule.ImportPath(lutinTools.GetCurrentPath(__file__) + "/sources/")
|
||||
lutinModule.ImportPath(lutinTools.GetCurrentPath(__file__) + "/../ewol/")
|
140
lutin_edn.py
Normal file
@@ -0,0 +1,140 @@
|
||||
#!/usr/bin/python
|
||||
import lutin.module as module
|
||||
import lutin.tools as tools
|
||||
import realog.debug as debug
|
||||
import os
|
||||
|
||||
def get_type():
|
||||
return "BINARY"
|
||||
|
||||
def get_name():
|
||||
return "Editeur de N'ours"
|
||||
|
||||
def get_desc():
|
||||
return "Text editor for sources code with ctags management"
|
||||
|
||||
def get_licence():
|
||||
return "GPL-3"
|
||||
|
||||
def get_compagny_type():
|
||||
return "org"
|
||||
|
||||
def get_compagny_name():
|
||||
return "Edouard DUPIN"
|
||||
|
||||
def get_maintainer():
|
||||
return ["Mr DUPIN Edouard <yui.heero@gmail.com>"]
|
||||
|
||||
def get_version():
|
||||
return [1,3,"dev"]
|
||||
|
||||
def get_version_id():
|
||||
return 6
|
||||
|
||||
def configure(target, my_module):
|
||||
my_module.add_extra_flags()
|
||||
my_module.add_src_file([
|
||||
'sources/appl/ctags/readtags.cpp'
|
||||
])
|
||||
my_module.add_src_file([
|
||||
'sources/appl/debug.cpp',
|
||||
'sources/appl/global.cpp',
|
||||
'sources/appl/globalMsg.cpp',
|
||||
'sources/appl/init.cpp'
|
||||
])
|
||||
# Gui:
|
||||
my_module.add_src_file([
|
||||
'sources/appl/widget/BufferList.cpp',
|
||||
'sources/appl/widget/BufferTree.cpp',
|
||||
'sources/appl/Gui/TextViewer.cpp',
|
||||
'sources/appl/Gui/ViewerManager.cpp',
|
||||
'sources/appl/Gui/MainWindows.cpp',
|
||||
'sources/appl/Gui/Search.cpp',
|
||||
'sources/appl/Gui/TagFileSelection.cpp',
|
||||
'sources/appl/Gui/TagFileList.cpp',
|
||||
'sources/appl/Gui/WorkerSaveFile.cpp',
|
||||
'sources/appl/Gui/WorkerSaveAllFile.cpp',
|
||||
'sources/appl/Gui/WorkerCloseFile.cpp',
|
||||
'sources/appl/Gui/WorkerCloseAllFile.cpp'
|
||||
])
|
||||
# All needed for the buffer management :
|
||||
my_module.add_src_file([
|
||||
'sources/appl/Buffer.cpp',
|
||||
'sources/appl/BufferManager.cpp',
|
||||
'sources/appl/TextPlugin.cpp',
|
||||
'sources/appl/TextPluginCopy.cpp',
|
||||
'sources/appl/TextPluginMultiLineTab.cpp',
|
||||
'sources/appl/TextPluginAutoIndent.cpp',
|
||||
'sources/appl/TextPluginHistory.cpp',
|
||||
'sources/appl/TextPluginRmLine.cpp',
|
||||
'sources/appl/TextPluginSelectAll.cpp',
|
||||
'sources/appl/TextPluginCtags.cpp',
|
||||
'sources/appl/TextPluginManager.cpp'
|
||||
])
|
||||
# Generic color management for the text editor :
|
||||
my_module.add_src_file([
|
||||
'sources/appl/GlyphDecoration.cpp',
|
||||
'sources/appl/GlyphPainting.cpp'
|
||||
])
|
||||
# syntax coloration for the text editor
|
||||
my_module.add_src_file([
|
||||
'sources/appl/HighlightPattern.cpp',
|
||||
'sources/appl/Highlight.cpp',
|
||||
'sources/appl/HighlightManager.cpp'
|
||||
])
|
||||
my_module.add_depend(['ewol'])
|
||||
my_module.copy_path('data/icon.*','')
|
||||
my_module.copy_path('data/languages/gcov/*.xml','languages/gcov/')
|
||||
my_module.copy_path('data/languages/asm/*.xml','languages/asm/')
|
||||
my_module.copy_path('data/languages/bash/*.xml','languages/bash/')
|
||||
my_module.copy_path('data/languages/boo/*.xml','languages/boo/')
|
||||
my_module.copy_path('data/languages/cpp/*.xml','languages/cpp/')
|
||||
my_module.copy_path('data/languages/c/*.xml','languages/c/')
|
||||
my_module.copy_path('data/languages/cmake/*.xml','languages/cmake/')
|
||||
my_module.copy_path('data/languages/glsl/*.xml','languages/glsl/')
|
||||
my_module.copy_path('data/languages/in/*.xml','languages/in/')
|
||||
my_module.copy_path('data/languages/java/*.xml','languages/java/')
|
||||
my_module.copy_path('data/languages/js/*.xml','languages/js/')
|
||||
my_module.copy_path('data/languages/qml/*.xml','languages/qml/')
|
||||
my_module.copy_path('data/languages/json/*.xml','languages/json/')
|
||||
my_module.copy_path('data/languages/lua/*.xml','languages/lua/')
|
||||
my_module.copy_path('data/languages/makefile/*.xml','languages/makefile/')
|
||||
my_module.copy_path('data/languages/matlab/*.xml','languages/matlab/')
|
||||
my_module.copy_path('data/languages/php/*.xml','languages/php/')
|
||||
my_module.copy_path('data/languages/xml/*.xml','languages/xml/')
|
||||
my_module.copy_path('data/languages/python/*.xml','languages/python/')
|
||||
my_module.copy_path('data/languages/zeus.idl/*.xml','languages/zeus.idl/')
|
||||
my_module.copy_path('data/languages/perl/*.xml','languages/perl/')
|
||||
my_module.copy_path('data/languages/TypeScript/*.xml','languages/TypeScript/')
|
||||
my_module.copy_path('data/languages/css/*.xml','languages/css/')
|
||||
my_module.copy_path('data/theme/colorWhite/*.json','theme/color/white/')
|
||||
my_module.copy_path('data/theme/colorBlack/*.json','theme/color/black/')
|
||||
my_module.copy_path('data/GUI-*.xml')
|
||||
|
||||
my_module.add_path("sources")
|
||||
|
||||
my_module.copy_file("data/Font/freefont/FreeSerif.ttf","fonts/FreeSerif.ttf")
|
||||
my_module.copy_path("data/Font/freefont/FreeMon*.ttf","fonts/")
|
||||
|
||||
my_module.add_flag('c', [
|
||||
"-DPROJECT_NAME=\"\\\""+my_module.get_name()+"\\\"\"",
|
||||
"-DAPPL_VERSION=\"\\\"" + tools.version_to_string(get_version()) + "\\\"\""
|
||||
])
|
||||
versionIDCode = str(get_version_id())
|
||||
|
||||
my_module.compile_version("c++", 2014)
|
||||
|
||||
# set the package properties:
|
||||
my_module.set_pkg("VERSION_CODE", versionIDCode)
|
||||
if "MacOs" in target.get_type():
|
||||
my_module.set_pkg("ICON", "data/icon.icns")
|
||||
else:
|
||||
my_module.set_pkg("ICON", "data/icon.png")
|
||||
|
||||
my_module.set_pkg("SECTION", ["Development", "Editors"])
|
||||
my_module.set_pkg("PRIORITY", "optional")
|
||||
my_module.add_pkg("RIGHT", "WRITE_EXTERNAL_STORAGE")
|
||||
my_module.add_pkg("RIGHT", "SET_ORIENTATION")
|
||||
|
||||
return True
|
||||
|
110
sources/CMakeLists.txt
Normal file
@@ -0,0 +1,110 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
# Declare the project
|
||||
project(edn)
|
||||
|
||||
##
|
||||
## Include C++ X11 dependency ... (check correct flags)
|
||||
##
|
||||
include(CheckCXXCompilerFlag)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
|
||||
if(COMPILER_SUPPORTS_CXX11)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
else()
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
|
||||
if(COMPILER_SUPPORTS_CXX0X)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
else()
|
||||
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# set output path:
|
||||
set(LIBRARY_OUTPUT_PATH lib/${CMAKE_BUILD_TYPE})
|
||||
|
||||
include_directories(.)
|
||||
|
||||
#Create src file list
|
||||
set(src_files
|
||||
appl/ctags/readtags.cpp
|
||||
appl/debug.cpp
|
||||
appl/global.cpp
|
||||
appl/globalMsg.cpp
|
||||
appl/init.cpp
|
||||
appl/Gui/BufferView.cpp
|
||||
appl/Gui/TextViewer.cpp
|
||||
appl/Gui/ViewerManager.cpp
|
||||
appl/Gui/MainWindows.cpp
|
||||
appl/Gui/Search.cpp
|
||||
appl/Gui/TagFileSelection.cpp
|
||||
appl/Gui/TagFileList.cpp
|
||||
appl/Gui/WorkerSaveFile.cpp
|
||||
appl/Gui/WorkerSaveAllFile.cpp
|
||||
appl/Gui/WorkerCloseFile.cpp
|
||||
appl/Gui/WorkerCloseAllFile.cpp
|
||||
appl/Buffer.cpp
|
||||
appl/BufferManager.cpp
|
||||
appl/TextPlugin.cpp
|
||||
appl/TextPluginCopy.cpp
|
||||
appl/TextPluginMultiLineTab.cpp
|
||||
appl/TextPluginAutoIndent.cpp
|
||||
appl/TextPluginHistory.cpp
|
||||
appl/TextPluginRmLine.cpp
|
||||
appl/TextPluginSelectAll.cpp
|
||||
appl/TextPluginCtags.cpp
|
||||
appl/TextPluginManager.cpp
|
||||
appl/GlyphDecoration.cpp
|
||||
appl/GlyphPainting.cpp
|
||||
appl/HighlightPattern.cpp
|
||||
appl/Highlight.cpp
|
||||
appl/HighlightManager.cpp
|
||||
)
|
||||
|
||||
add_definitions( -DDEBUG_LEVEL=3 )
|
||||
add_definitions( -DDEBUG=1 )
|
||||
add_definitions( -DPROJECT_NAME="edn" )
|
||||
if (APPLE)
|
||||
add_definitions( -D__TARGET_OS__MacOs )
|
||||
elseif (UNIX)
|
||||
add_definitions( -D__TARGET_OS__Linux )
|
||||
elseif (WIN32)
|
||||
add_definitions( -D__TARGET_OS__Windows )
|
||||
endif ()
|
||||
# read version :
|
||||
file (STRINGS "tag" BUILD_VERSION)
|
||||
add_definitions( -DAPPL_VERSION="${BUILD_VERSION}" )
|
||||
|
||||
#Create a static Lib:
|
||||
add_executable(edn ${src_files} )
|
||||
|
||||
include_directories(${zlib_SOURCE_DIR}/contrib/)
|
||||
include_directories(${linearmath_SOURCE_DIR}/bullet/src/)
|
||||
include_directories(${etk_SOURCE_DIR})
|
||||
include_directories(${freetype_SOURCE_DIR})
|
||||
include_directories(${exml_SOURCE_DIR})
|
||||
include_directories(${ejson_SOURCE_DIR})
|
||||
include_directories(${egami_SOURCE_DIR})
|
||||
include_directories(${edtaa3_SOURCE_DIR})
|
||||
include_directories(${date_SOURCE_DIR})
|
||||
include_directories(${agg_SOURCE_DIR})
|
||||
include_directories(${ewol_SOURCE_DIR})
|
||||
|
||||
|
||||
#target_link_libraries(edn ewol)
|
||||
target_link_libraries(edn ewol linearmath zlib etk freetype exml ejson egami edtaa3 date esvg png)
|
||||
|
||||
if (APPLE)
|
||||
target_link_libraries(edn
|
||||
"-framework Cocoa"
|
||||
"-framework OpenGL"
|
||||
"-framework QuartzCore"
|
||||
"-framework AppKit"
|
||||
)
|
||||
elseif (UNIX)
|
||||
target_link_libraries(edn -lGL -lX11 -lpthread)
|
||||
elseif (WIN32)
|
||||
|
||||
endif ()
|
||||
|
||||
|
@@ -1,51 +1,47 @@
|
||||
/**
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#include <etk/types.hpp>
|
||||
#include <etk/stdTools.hpp>
|
||||
#include <etk/system.hpp>
|
||||
#include <etk/Vector.hpp>
|
||||
#include <etk/path/fileSystem.hpp>
|
||||
|
||||
#include <appl/Buffer.hpp>
|
||||
#include <appl/debug.hpp>
|
||||
#include <gale/context/clipBoard.hpp>
|
||||
#include <appl/HighlightManager.hpp>
|
||||
|
||||
#include <appl/Buffer.h>
|
||||
#include <appl/debug.h>
|
||||
#include <ewol/clipBoard.h>
|
||||
#include <appl/HighlightManager.h>
|
||||
|
||||
|
||||
const char* const appl::Buffer::eventIsModify = "edn-is-modify";
|
||||
const char* const appl::Buffer::eventIsSave = "edn-is-save";
|
||||
const char* const appl::Buffer::eventSelectChange = "edn-select-change";
|
||||
const char* const appl::Buffer::eventChangeName = "edn-buffer-name-change";
|
||||
|
||||
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ (void) {
|
||||
m_value = etk::UChar::Null;
|
||||
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
|
||||
m_value = u32char::Null;
|
||||
if (m_current < 0) {
|
||||
m_current = 0;
|
||||
return *this;
|
||||
}
|
||||
if (m_data != NULL) {
|
||||
if (m_current < m_data->m_data.size() ) {
|
||||
int8_t nbChar = etk::UChar::theoricUTF8Len(m_data->m_data[m_current]);
|
||||
if (m_data != null) {
|
||||
if (m_current < (int64_t)m_data->m_data.size() ) {
|
||||
int8_t nbChar = utf8::length(m_data->m_data[m_current]);
|
||||
if (nbChar != 0) {
|
||||
m_current+=nbChar;
|
||||
} else {
|
||||
m_current++;
|
||||
}
|
||||
}
|
||||
if (m_current >= m_data->m_data.size()) {
|
||||
if (m_current >= (int64_t)m_data->m_data.size()) {
|
||||
m_current = m_data->m_data.size();
|
||||
}
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- (void) {
|
||||
m_value = etk::UChar::Null;
|
||||
if (m_data != NULL) {
|
||||
appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- () {
|
||||
m_value = u32char::Null;
|
||||
if (m_data != null) {
|
||||
if (m_current > 0) {
|
||||
int32_t iii = -1;
|
||||
while( etk::UChar::theoricUTF8First(m_data->m_data[m_current+iii]) == false
|
||||
while( utf8::first(m_data->m_data[m_current+iii]) == false
|
||||
&& iii >= -6
|
||||
&& m_current-iii>0) {
|
||||
--iii;
|
||||
@@ -61,28 +57,28 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- (void) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
char32_t appl::Buffer::Iterator::operator* (void) {
|
||||
if (m_value != etk::UChar::Null) {
|
||||
char32_t appl::Buffer::Iterator::operator* () {
|
||||
if (m_value != u32char::Null) {
|
||||
return m_value;
|
||||
}
|
||||
if (m_data == NULL) {
|
||||
if (m_data == null) {
|
||||
APPL_ERROR("request an element that iterator not link");
|
||||
return m_value;
|
||||
}
|
||||
if ( m_current < 0
|
||||
|| m_current >= m_data->m_data.size()) {
|
||||
|| m_current >= (int64_t)m_data->m_data.size()) {
|
||||
APPL_ERROR("request an element out of bounding !!! 0 <= " << m_current << " < " << m_data->m_data.size());
|
||||
return m_value;
|
||||
}
|
||||
char tmpVal[5];
|
||||
memset(tmpVal, 0, sizeof(tmpVal));
|
||||
tmpVal[0] = m_data->m_data[m_current];
|
||||
int8_t nbChar = etk::UChar::theoricUTF8Len(tmpVal[0]);
|
||||
for (int32_t iii=1; iii<nbChar && m_current+iii<m_data->m_data.size(); ++iii) {
|
||||
int8_t nbChar = utf8::length(tmpVal[0]);
|
||||
for (int32_t iii=1; iii<nbChar && m_current+iii<(int64_t)m_data->m_data.size(); ++iii) {
|
||||
tmpVal[iii] = m_data->m_data[m_current+iii];
|
||||
}
|
||||
// transform ...
|
||||
m_value = etk::setUtf8(tmpVal);
|
||||
m_value = utf8::convertChar32(tmpVal);
|
||||
return m_value;
|
||||
}
|
||||
|
||||
@@ -91,32 +87,36 @@ appl::Buffer::Iterator appl::Buffer::position(int64_t _pos) {
|
||||
return appl::Buffer::Iterator(this, _pos);
|
||||
}
|
||||
|
||||
appl::Buffer::Iterator appl::Buffer::begin(void) {
|
||||
appl::Buffer::Iterator appl::Buffer::begin() {
|
||||
return position(0);
|
||||
}
|
||||
|
||||
appl::Buffer::Iterator appl::Buffer::end(void) {
|
||||
appl::Buffer::Iterator appl::Buffer::end() {
|
||||
// TODO : chek the validity of the char ...
|
||||
return position( m_data.size() );
|
||||
}
|
||||
|
||||
appl::Buffer::Iterator appl::Buffer::cursor(void) {
|
||||
appl::Buffer::Iterator appl::Buffer::cursor() {
|
||||
if (m_cursorPos<= 0) {
|
||||
return begin();
|
||||
}
|
||||
return position( m_cursorPos );
|
||||
}
|
||||
|
||||
appl::Buffer::Iterator appl::Buffer::selectStart(void) {
|
||||
appl::Buffer::Iterator appl::Buffer::selectStart() {
|
||||
return position( getStartSelectionPos() );
|
||||
}
|
||||
|
||||
appl::Buffer::Iterator appl::Buffer::selectStop(void) {
|
||||
appl::Buffer::Iterator appl::Buffer::selectStop() {
|
||||
return position( getStopSelectionPos() );
|
||||
}
|
||||
|
||||
|
||||
appl::Buffer::Buffer(void) :
|
||||
appl::Buffer::Buffer() :
|
||||
signalFileIsModify(this, "file-is-modify", ""),
|
||||
signalIsModify(this, "is-modify", ""),
|
||||
signalIsSave(this, "is-save", ""),
|
||||
signalSelectChange(this, "select-change", ""),
|
||||
signalChangeName(this, "change-name", ""),
|
||||
m_hasFileName(false),
|
||||
m_fileName(""),
|
||||
m_isModify(false),
|
||||
@@ -124,59 +124,78 @@ appl::Buffer::Buffer(void) :
|
||||
m_cursorSelectPos(-1),
|
||||
m_cursorPreferredCol(-1),
|
||||
m_nbLines(1),
|
||||
m_highlight(NULL) {
|
||||
m_highlight(null) {
|
||||
addObjectType("appl::Buffer");
|
||||
static int32_t bufferBaseId = 0;
|
||||
m_fileName = "No Name " + std::to_string(bufferBaseId);
|
||||
m_fileName = "No Name " + etk::toString(bufferBaseId);
|
||||
bufferBaseId++;
|
||||
addEventId(eventIsModify);
|
||||
addEventId(eventIsSave);
|
||||
addEventId(eventSelectChange);
|
||||
addEventId(eventChangeName);
|
||||
}
|
||||
|
||||
appl::Buffer::~Buffer(void) {
|
||||
if (m_highlight == NULL) {
|
||||
appl::Highlight::release(m_highlight);
|
||||
}
|
||||
void appl::Buffer::init() {
|
||||
ewol::Object::init();
|
||||
}
|
||||
|
||||
bool appl::Buffer::loadFile(const std::string& _name) {
|
||||
APPL_DEBUG("Load file : '" << _name << "'");
|
||||
appl::Buffer::~Buffer() {
|
||||
APPL_ERROR("REAL remove buffer : '" << propertyName << "'");
|
||||
}
|
||||
|
||||
bool appl::Buffer::loadFile(const etk::Path& _name) {
|
||||
APPL_DEBUG("Convert filename :'" << _name << "'");
|
||||
m_fileName = _name;
|
||||
m_hasFileName = true;
|
||||
m_isModify = true;
|
||||
m_cursorPos = 0;
|
||||
setHighlightType("");
|
||||
etk::FSNode file(m_fileName);
|
||||
if (file.exist() == false) {
|
||||
APPL_INFO("File doesn not exist !!! " << file);
|
||||
return false;
|
||||
}
|
||||
m_nbLines = 0;
|
||||
if (true == m_data.dumpFrom(file) ) {
|
||||
if (m_data.dumpFrom(_name) == true ) {
|
||||
countNumberofLine();
|
||||
tryFindHighlightType();
|
||||
m_isModify = false;
|
||||
m_fileIsModify = false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void appl::Buffer::setFileName(const std::string& _name) {
|
||||
void appl::Buffer::setFileName(const etk::Path& _name) {
|
||||
APPL_DEBUG("Convert filename :'" << _name << "'");
|
||||
if (m_fileName == _name) {
|
||||
return;
|
||||
}
|
||||
m_fileName = _name;
|
||||
m_hasFileName = true;
|
||||
generateEventId(eventChangeName);
|
||||
signalChangeName.emit();
|
||||
setModification(true);
|
||||
}
|
||||
|
||||
bool appl::Buffer::storeFile(void) {
|
||||
etk::FSNode file(m_fileName);
|
||||
if (true == m_data.dumpIn(file) ) {
|
||||
APPL_INFO("saving file : " << file);
|
||||
bool appl::Buffer::storeFile() {
|
||||
if (m_data.dumpIn(m_fileName) == true) {
|
||||
APPL_INFO("saving file : " << m_fileName);
|
||||
etk::String extention = m_fileName.getExtention();
|
||||
if (etk::isIn(extention, etk::Vector<etk::String>{"cpp", "hpp", "h", "hpp"})) {
|
||||
etk::Path clangFile = etk::path::findInParent(m_fileName, ".clang-format");
|
||||
if (etk::path::isFile(clangFile) == true) {
|
||||
etk::String output = etk::exec("clang-format " + m_fileName.getAbsolute());// + " -assume-filename=" + clangFile.getAbsolute() + "
|
||||
etk::String tmp = m_data.getString();
|
||||
/*
|
||||
APPL_WARNING(" input = '" << tmp << "'");
|
||||
APPL_ERROR(" output = '" << output << "'");
|
||||
*/
|
||||
if (tmp != output) {
|
||||
/*
|
||||
etk::io::File file(m_fileName + "_tmp");
|
||||
file.open(etk::io::OpenMode::Write);
|
||||
file.write(&tmp[0], 1, tmp.size());
|
||||
file.close();
|
||||
*/
|
||||
APPL_ERROR(" ==> data is differents");
|
||||
m_fileIsModify = true;
|
||||
setModification(true);
|
||||
signalFileIsModify.emit();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
setModification(false);
|
||||
return true;
|
||||
}
|
||||
@@ -189,19 +208,19 @@ void appl::Buffer::setModification(bool _status) {
|
||||
}
|
||||
m_isModify = _status;
|
||||
if (m_isModify == true) {
|
||||
generateEventId(eventIsModify);
|
||||
signalIsModify.emit();
|
||||
} else {
|
||||
generateEventId(eventIsSave);
|
||||
signalIsSave.emit();
|
||||
}
|
||||
}
|
||||
|
||||
// TODO : Naming error
|
||||
void appl::Buffer::countNumberofLine(void) {
|
||||
void appl::Buffer::countNumberofLine() {
|
||||
m_nbLines = 1;
|
||||
for (Iterator it = begin();
|
||||
(bool)it == true;
|
||||
++it) {
|
||||
if (*it == etk::UChar::Return) {
|
||||
if (*it == u32char::Return) {
|
||||
++m_nbLines;
|
||||
}
|
||||
}
|
||||
@@ -210,7 +229,7 @@ void appl::Buffer::countNumberofLine(void) {
|
||||
|
||||
appl::Buffer::Iterator appl::Buffer::getStartLine(const appl::Buffer::Iterator& _pos) {
|
||||
appl::Buffer::Iterator startPos;
|
||||
if (false == searchBack(_pos, etk::UChar::Return, startPos)) {
|
||||
if (false == searchBack(_pos, u32char::Return, startPos)) {
|
||||
return begin();
|
||||
}
|
||||
// note search will return the position of \n ==> the lione start just after ...
|
||||
@@ -219,7 +238,7 @@ appl::Buffer::Iterator appl::Buffer::getStartLine(const appl::Buffer::Iterator&
|
||||
|
||||
appl::Buffer::Iterator appl::Buffer::getEndLine(const appl::Buffer::Iterator& _pos) {
|
||||
appl::Buffer::Iterator endPos;
|
||||
if (false == search(_pos, etk::UChar::Return, endPos)) {
|
||||
if (false == search(_pos, u32char::Return, endPos)) {
|
||||
endPos = end();
|
||||
}
|
||||
// Note the line end at the \n
|
||||
@@ -258,7 +277,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos, const char32_t
|
||||
}
|
||||
|
||||
bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
|
||||
const std::u32string& _search,
|
||||
const etk::UString& _search,
|
||||
appl::Buffer::Iterator& _result,
|
||||
bool _caseSensitive) {
|
||||
if (_search.size() <= 0 ) {
|
||||
@@ -293,17 +312,17 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
char32_t firstElement = tolower(_search[0]);
|
||||
char32_t firstElement = u32char::toLower(_search[0]);
|
||||
// move in the string
|
||||
for (Iterator it = _pos;
|
||||
(bool)it == true;
|
||||
++it) {
|
||||
if (tolower(*it) == firstElement) {
|
||||
if ((char32_t)u32char::toLower(*it) == firstElement) {
|
||||
// find the first char ==> check next...
|
||||
bool find = true;
|
||||
Iterator tmp = it;
|
||||
for (size_t iii=0; iii<_search.size(); ++iii) {
|
||||
if (tolower(*tmp) != tolower(_search[iii])) {
|
||||
if (u32char::toLower(*tmp) != u32char::toLower(_search[iii])) {
|
||||
find = false;
|
||||
break;
|
||||
}
|
||||
@@ -327,7 +346,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
|
||||
}
|
||||
|
||||
bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
|
||||
const std::u32string& _search,
|
||||
const etk::UString& _search,
|
||||
appl::Buffer::Iterator& _result,
|
||||
bool _caseSensitive) {
|
||||
if (_search.size() <= 0 ) {
|
||||
@@ -364,18 +383,18 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
lastElement = tolower(lastElement);
|
||||
lastElement = u32char::toLower(lastElement);
|
||||
// move in the string
|
||||
for (Iterator it = _pos - 1;
|
||||
(bool)it == true;
|
||||
--it) {
|
||||
//APPL_DEBUG("compare : " << *it << " ?= " << _search);
|
||||
if (tolower(*it) == lastElement) {
|
||||
if ((char32_t)u32char::toLower(*it) == lastElement) {
|
||||
// find the last char ==> check previous...
|
||||
bool find = true;
|
||||
_result = it;
|
||||
for (int64_t iii=_search.size()-1; iii>=0; --iii) {
|
||||
if (tolower(*_result) != tolower(_search[iii])) {
|
||||
if (u32char::toLower(*_result) != u32char::toLower(_search[iii])) {
|
||||
find = false;
|
||||
break;
|
||||
}
|
||||
@@ -414,13 +433,13 @@ void appl::Buffer::moveCursor(int64_t _pos) {
|
||||
if (m_cursorPos == m_cursorSelectPos) {
|
||||
m_cursorSelectPos = -1;
|
||||
}
|
||||
generateEventId(eventSelectChange);
|
||||
signalSelectChange.emit();
|
||||
return;
|
||||
}
|
||||
// move mode
|
||||
m_cursorPos = _pos;
|
||||
m_cursorSelectPos = -1;
|
||||
generateEventId(eventSelectChange);
|
||||
signalSelectChange.emit();
|
||||
}
|
||||
|
||||
bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
|
||||
@@ -429,16 +448,16 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
|
||||
char32_t currentValue = *position(_startPos);
|
||||
_beginPos = begin();
|
||||
_endPos = end();
|
||||
if ( currentValue == etk::UChar::Tabulation
|
||||
|| currentValue == etk::UChar::Space) {
|
||||
if ( currentValue == u32char::Tabulation
|
||||
|| currentValue == u32char::Space) {
|
||||
APPL_DEBUG("select spacer");
|
||||
// Search back
|
||||
for (Iterator it = --position(_startPos);
|
||||
(bool)it == true;
|
||||
--it) {
|
||||
currentValue = *it;
|
||||
if ( currentValue != etk::UChar::Tabulation
|
||||
&& currentValue != etk::UChar::Space) {
|
||||
if ( currentValue != u32char::Tabulation
|
||||
&& currentValue != u32char::Space) {
|
||||
_beginPos = ++it;
|
||||
break;
|
||||
}
|
||||
@@ -448,14 +467,14 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
|
||||
(bool)it == true;
|
||||
++it) {
|
||||
currentValue = *it;
|
||||
if ( currentValue != etk::UChar::Tabulation
|
||||
&& currentValue != etk::UChar::Space) {
|
||||
if ( currentValue != u32char::Tabulation
|
||||
&& currentValue != u32char::Space) {
|
||||
_endPos = it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else if( etk::isSpecialChar(currentValue) == false
|
||||
} else if( u32char::isSpecialChar(currentValue) == false
|
||||
|| currentValue == '_') {
|
||||
APPL_DEBUG("select normal Char");
|
||||
// Search back
|
||||
@@ -464,7 +483,7 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
|
||||
--it) {
|
||||
currentValue = *it;
|
||||
if ( currentValue != '_'
|
||||
&& true == etk::isSpecialChar(currentValue)) {
|
||||
&& u32char::isSpecialChar(currentValue) == true) {
|
||||
_beginPos = ++it;
|
||||
break;
|
||||
}
|
||||
@@ -475,7 +494,7 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
|
||||
++it) {
|
||||
currentValue = *it;
|
||||
if ( currentValue != '_'
|
||||
&& true == etk::isSpecialChar(currentValue)) {
|
||||
&& u32char::isSpecialChar(currentValue) == true) {
|
||||
_endPos = it;
|
||||
break;
|
||||
}
|
||||
@@ -513,36 +532,36 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
|
||||
|
||||
void appl::Buffer::setSelectionPos(const appl::Buffer::Iterator& _pos) {
|
||||
m_cursorSelectPos = _pos;
|
||||
generateEventId(eventSelectChange);
|
||||
signalSelectChange.emit();
|
||||
}
|
||||
|
||||
void appl::Buffer::unSelect(void) {
|
||||
void appl::Buffer::unSelect() {
|
||||
m_cursorSelectPos = -1;
|
||||
generateEventId(eventSelectChange);
|
||||
signalSelectChange.emit();
|
||||
}
|
||||
|
||||
static const char *ControlCodeTable[32] = {
|
||||
"NUL", "soh", "stx", "etx", "eot", "enq", "ack", "bel", "bs", "ht", "nl", "vt", "np", "cr", "so", "si",
|
||||
"dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb", "can", "em", "sub", "esc", "fs", "gs", "rs", "us"};
|
||||
|
||||
void appl::Buffer::expand(int32_t& _indent, const char32_t& _value, std::u32string& _out) const {
|
||||
void appl::Buffer::expand(int32_t& _indent, const char32_t& _value, etk::UString& _out) const {
|
||||
_out.clear();
|
||||
int32_t tabDist = 4;
|
||||
if (_value == etk::UChar::Tabulation) {
|
||||
if (_value == u32char::Tabulation) {
|
||||
int32_t nSpaces = tabDist - (_indent % tabDist);
|
||||
for (int32_t iii=0; iii<nSpaces; iii++) {
|
||||
_out += etk::UChar::Space;
|
||||
_out += u32char::Space;
|
||||
}
|
||||
return;
|
||||
}
|
||||
// convert ASCII control codes to readable character sequences
|
||||
if (_value == etk::UChar::Null) {
|
||||
if (_value == u32char::Null) {
|
||||
_out += U"<nul>";
|
||||
return;
|
||||
}
|
||||
if (_value == etk::UChar::Return) {
|
||||
if (_value == u32char::Return) {
|
||||
// nothing to display...
|
||||
_out += etk::UChar::Return;
|
||||
_out += u32char::Return;
|
||||
return;
|
||||
}
|
||||
if (_value <= 31) {
|
||||
@@ -555,7 +574,7 @@ void appl::Buffer::expand(int32_t& _indent, const char32_t& _value, std::u32stri
|
||||
_out += '>';
|
||||
return;
|
||||
}
|
||||
if (_value == etk::UChar::Delete) {
|
||||
if (_value == u32char::Delete) {
|
||||
_out += U"<del>";
|
||||
return;
|
||||
}
|
||||
@@ -572,7 +591,7 @@ appl::Buffer::Iterator appl::Buffer::countForwardNLines(const appl::Buffer::Iter
|
||||
(bool)it == true;
|
||||
++it) {
|
||||
value = *it;
|
||||
if (value == etk::UChar::Return) {
|
||||
if (value == u32char::Return) {
|
||||
lineCount++;
|
||||
if (lineCount == _nLines) {
|
||||
//APPL_INFO(" == > (1) at position=" << myPosIt.Position()+1 );
|
||||
@@ -592,7 +611,7 @@ appl::Buffer::Iterator appl::Buffer::countBackwardNLines(const appl::Buffer::Ite
|
||||
(bool)it == true;
|
||||
--it) {
|
||||
value = *it;
|
||||
if (value == etk::UChar::Return) {
|
||||
if (value == u32char::Return) {
|
||||
lineCount++;
|
||||
if (lineCount >= _nLines) {
|
||||
//APPL_INFO(" == > (1) at position=" << myPosIt.Position()+1 );
|
||||
@@ -606,7 +625,7 @@ appl::Buffer::Iterator appl::Buffer::countBackwardNLines(const appl::Buffer::Ite
|
||||
|
||||
|
||||
|
||||
bool appl::Buffer::copy(std::string& _data) {
|
||||
bool appl::Buffer::copy(etk::String& _data) {
|
||||
_data.clear();
|
||||
if (hasTextSelected() == true) {
|
||||
int32_t startPos = getStartSelectionPos();
|
||||
@@ -622,10 +641,8 @@ bool appl::Buffer::copy(std::string& _data) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void appl::Buffer::copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
|
||||
void appl::Buffer::copy(etk::String& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
|
||||
_data.clear();
|
||||
int64_t startPos = getStartSelectionPos();
|
||||
int64_t endPos = getStopSelectionPos();
|
||||
for (Iterator it = _pos;
|
||||
it != _posEnd &&
|
||||
(bool)it == true;
|
||||
@@ -634,16 +651,17 @@ void appl::Buffer::copy(std::string& _data, const appl::Buffer::Iterator& _pos,
|
||||
}
|
||||
}
|
||||
|
||||
bool appl::Buffer::write(const std::string& _data, const appl::Buffer::Iterator& _pos) {
|
||||
bool appl::Buffer::write(const etk::String& _data, const appl::Buffer::Iterator& _pos) {
|
||||
int64_t position = (int64_t)_pos;
|
||||
if (position < 0){
|
||||
position = 0;
|
||||
}
|
||||
APPL_ERROR("writye at pos: " << (int64_t)_pos << " ==> " << position);
|
||||
APPL_VERBOSE("write at pos: " << (int64_t)_pos << " ==> " << position << " data : " << _data);
|
||||
m_data.insert(position, (int8_t*)(_data.c_str()), _data.size());
|
||||
if (m_cursorPos < 0) {
|
||||
m_cursorPos = 0;
|
||||
}
|
||||
//APPL_VERBOSE("******* Regenerate after write");
|
||||
regenerateHighLightAt(position, 0, _data.size());
|
||||
m_selectMode = false;
|
||||
moveCursor(position+_data.size());
|
||||
@@ -652,12 +670,13 @@ bool appl::Buffer::write(const std::string& _data, const appl::Buffer::Iterator&
|
||||
return true;
|
||||
}
|
||||
|
||||
bool appl::Buffer::replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
|
||||
bool appl::Buffer::replace(const etk::String& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
|
||||
int64_t position = (int64_t)_pos;
|
||||
if (position < 0){
|
||||
position = 0;
|
||||
}
|
||||
m_data.replace(position, (int64_t)_posEnd-(int64_t)_pos, (int8_t*)(_data.c_str()), _data.size());
|
||||
//APPL_VERBOSE("******* Regenerate after replace pos=" << position << " size remove=" << (int64_t)_posEnd-(int64_t)_pos << " size add=" << _data.size());
|
||||
regenerateHighLightAt(position, (int64_t)_posEnd-(int64_t)_pos, _data.size());
|
||||
m_selectMode = false;
|
||||
moveCursor(position+_data.size());
|
||||
@@ -666,13 +685,14 @@ bool appl::Buffer::replace(const std::string& _data, const appl::Buffer::Iterato
|
||||
return true;
|
||||
}
|
||||
|
||||
void appl::Buffer::removeSelection(void) {
|
||||
void appl::Buffer::removeSelection() {
|
||||
if (hasTextSelected() == false) {
|
||||
return;
|
||||
}
|
||||
int64_t startPos = getStartSelectionPos();
|
||||
int64_t endPos = getStopSelectionPos();
|
||||
m_data.remove(startPos, endPos-startPos);
|
||||
//APPL_VERBOSE("******* Regenerate after remove");
|
||||
regenerateHighLightAt(startPos, endPos-startPos, 0);
|
||||
m_selectMode = false;
|
||||
moveCursor(startPos);
|
||||
@@ -680,9 +700,8 @@ void appl::Buffer::removeSelection(void) {
|
||||
setModification(true);
|
||||
}
|
||||
|
||||
void appl::Buffer::tryFindHighlightType(void) {
|
||||
etk::FSNode file(m_fileName);
|
||||
std::string type = appl::highlightManager::getTypeExtention(file.fileGetExtention());
|
||||
void appl::Buffer::tryFindHighlightType() {
|
||||
etk::String type = appl::highlightManager::getTypeFile(m_fileName.getFileName());
|
||||
if (type.size() == 0) {
|
||||
return;
|
||||
}
|
||||
@@ -690,24 +709,23 @@ void appl::Buffer::tryFindHighlightType(void) {
|
||||
setHighlightType(type);
|
||||
}
|
||||
|
||||
void appl::Buffer::setHighlightType(const std::string& _type) {
|
||||
void appl::Buffer::setHighlightType(const etk::String& _type) {
|
||||
m_highlightType = "";
|
||||
cleanHighLight();
|
||||
if (m_highlight == NULL) {
|
||||
appl::Highlight::release(m_highlight);
|
||||
}
|
||||
std::string resourceName = appl::highlightManager::getFileWithTypeType(_type);
|
||||
m_highlight.reset();
|
||||
etk::String resourceName = appl::highlightManager::getFileWithTypeType(_type);
|
||||
if (resourceName == "") {
|
||||
return;
|
||||
}
|
||||
m_highlightType = _type;
|
||||
m_highlight = appl::Highlight::keep(resourceName);
|
||||
m_highlight = appl::Highlight::create(resourceName);
|
||||
//APPL_VERBOSE("******* Regenerate after set type HL");
|
||||
generateHighLightAt(0, m_data.size());
|
||||
}
|
||||
|
||||
void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64_t _nbAdded) {
|
||||
// prevent ERROR...
|
||||
if (NULL == m_highlight) {
|
||||
if (m_highlight == null) {
|
||||
return;
|
||||
}
|
||||
// prevent No data Call
|
||||
@@ -716,11 +734,11 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
|
||||
return;
|
||||
}
|
||||
// normal case
|
||||
//APPL_INFO("(pos="<<pos<<", nbDeleted="<<nbDeleted<<", nbAdded=" << nbAdded << "\");");
|
||||
APPL_VERBOSE("(_pos="<<_pos<<", _nbDeleted="<<_nbDeleted<<", _nbAdded=" << _nbAdded << "\");");
|
||||
int64_t posEnd = _pos + _nbDeleted;
|
||||
// search position of the old element to reparse IT...
|
||||
int64_t startId;
|
||||
int64_t stopId;
|
||||
int64_t startId = -1;
|
||||
int64_t stopId = -1;
|
||||
// clean data if needed
|
||||
if (m_HLDataPass1.size() == 0) {
|
||||
// Parse the new element ...
|
||||
@@ -730,59 +748,80 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
|
||||
// find element previous
|
||||
findMainHighLightPosition(_pos, posEnd, startId, stopId, true);
|
||||
|
||||
APPL_VERBOSE(" list old parse:");
|
||||
for (auto &elem : m_HLDataPass1) {
|
||||
APPL_VERBOSE(" " << elem.start << "=>" << elem.stop);
|
||||
}
|
||||
// Remove previous element to prevent many errors like parsing of // for example
|
||||
startId--;
|
||||
APPL_VERBOSE("Find startId=" << startId << " stopId=" << stopId << " list size=" << m_HLDataPass1.size());
|
||||
|
||||
// remove deprecated element
|
||||
if ( startId == -1
|
||||
&& stopId == -1) {
|
||||
if ( startId <= -1
|
||||
&& stopId <= -1) {
|
||||
m_HLDataPass1.clear();
|
||||
} else if (startId == -1) {
|
||||
APPL_VERBOSE("1 * clear");
|
||||
} else if (startId <= -1) {
|
||||
if (stopId == 0){
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin());
|
||||
//APPL_DEBUG("1 * Erase 0");
|
||||
APPL_VERBOSE("1 * Erase 0");
|
||||
} else {
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin(), m_HLDataPass1.begin()+stopId);
|
||||
//APPL_DEBUG("2 * Erase 0->" << stopId);
|
||||
APPL_VERBOSE("2 * Erase 0->" << stopId);
|
||||
}
|
||||
} else if (stopId == -1) {
|
||||
//APPL_DEBUG("3 * Erase " << startId+1 << "-> end");
|
||||
} else if (stopId <= -1) {
|
||||
APPL_VERBOSE("3 * Erase " << startId+1 << "-> end");
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.end());
|
||||
stopId = -1;
|
||||
} else {
|
||||
int32_t currentSize = m_HLDataPass1.size();
|
||||
//APPL_DEBUG("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" );
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.begin()+stopId);
|
||||
APPL_VERBOSE("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" );
|
||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.begin()+stopId+1);
|
||||
if (stopId == currentSize-1) {
|
||||
stopId = -1;
|
||||
}
|
||||
}
|
||||
//APPL_DEBUG("new size=" << (int32_t)m_HLDataPass1.size()-1);
|
||||
// update position after the range position :
|
||||
APPL_VERBOSE(" list afterRemove:");
|
||||
if (m_HLDataPass1.size() != 0) {
|
||||
for (auto &elem : m_HLDataPass1) {
|
||||
APPL_VERBOSE(" " << elem.start << "=>" << elem.stop);
|
||||
}
|
||||
} else {
|
||||
APPL_VERBOSE(" EMPTY");
|
||||
}
|
||||
// Check Range guard
|
||||
if (startId >= m_HLDataPass1.size()) {
|
||||
startId = int64_t(m_HLDataPass1.size())-1;
|
||||
}
|
||||
if (stopId >= m_HLDataPass1.size()) {
|
||||
stopId = -1;
|
||||
}
|
||||
// update position after the range position:
|
||||
int64_t elemStart;
|
||||
if (startId == -1) {
|
||||
if (startId <= -1) {
|
||||
elemStart = 0;
|
||||
} else {
|
||||
elemStart = startId+1;
|
||||
}
|
||||
for (int64_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) {
|
||||
for (auto it(m_HLDataPass1.begin()+elemStart); it != m_HLDataPass1.end(); ++it) {
|
||||
//APPL_DEBUG("move element=" << i);
|
||||
m_HLDataPass1[iii].beginStart += _nbAdded - _nbDeleted;
|
||||
m_HLDataPass1[iii].beginStop += _nbAdded - _nbDeleted;
|
||||
m_HLDataPass1[iii].endStart += _nbAdded - _nbDeleted;
|
||||
m_HLDataPass1[iii].endStop += _nbAdded - _nbDeleted;
|
||||
it->start += _nbAdded - _nbDeleted;
|
||||
it->stop += _nbAdded - _nbDeleted;
|
||||
}
|
||||
//Regenerate Element inside range
|
||||
if ( startId == -1
|
||||
&& stopId == -1) {
|
||||
//APPL_DEBUG("******* Regenerate ALL");
|
||||
if ( startId <= -1
|
||||
&& stopId <= -1) {
|
||||
APPL_VERBOSE("******* Regenerate ALL");
|
||||
generateHighLightAt(0, m_data.size());
|
||||
} else if(-1 == startId) {
|
||||
//APPL_DEBUG("******* Regenerate START");
|
||||
generateHighLightAt(0, m_HLDataPass1[0].beginStart, 0);
|
||||
} else if(-1 == stopId) {
|
||||
//APPL_DEBUG("******* Regenerate STOP");
|
||||
generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].endStop, m_data.size(), m_HLDataPass1.size());
|
||||
} else if(startId <= -1) {
|
||||
APPL_VERBOSE("******* Regenerate START");
|
||||
generateHighLightAt(0, m_HLDataPass1[0].start, 0);
|
||||
} else if(stopId <= -1) {
|
||||
APPL_VERBOSE("******* Regenerate STOP");
|
||||
generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].stop, m_data.size(), m_HLDataPass1.size());
|
||||
} else {
|
||||
//APPL_DEBUG("******* Regenerate RANGE");
|
||||
generateHighLightAt(m_HLDataPass1[startId].endStop, m_HLDataPass1[startId+1].beginStart, startId+1);
|
||||
APPL_VERBOSE("******* Regenerate RANGE");
|
||||
generateHighLightAt(m_HLDataPass1[startId].stop, m_HLDataPass1[startId+1].start, startId+1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -830,8 +869,8 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
|
||||
------------ ------------- ----------
|
||||
S=-1 *************** E
|
||||
*/
|
||||
for (int32_t iii = 0; iii < m_HLDataPass1.size(); ++iii) {
|
||||
if (m_HLDataPass1[iii].endStop > _startPos) {
|
||||
for (size_t iii = 0; iii < m_HLDataPass1.size(); ++iii) {
|
||||
if (m_HLDataPass1[iii].stop > _startPos) {
|
||||
break;
|
||||
}
|
||||
_startId = iii;
|
||||
@@ -851,8 +890,8 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
|
||||
} else {
|
||||
elemStart = _startId+1;
|
||||
}
|
||||
for (int32_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) {
|
||||
if (m_HLDataPass1[iii].beginStart > _endPos) {
|
||||
for (size_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) {
|
||||
if (m_HLDataPass1[iii].start > _endPos) {
|
||||
_stopId = iii;
|
||||
break;
|
||||
}
|
||||
@@ -860,118 +899,128 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
|
||||
}
|
||||
|
||||
void appl::Buffer::generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos) {
|
||||
if (NULL == m_highlight) {
|
||||
if (m_highlight == null) {
|
||||
return;
|
||||
}
|
||||
//APPL_DEBUG("area : ("<<pos<<","<<endPos<<") insert at : " << addingPos);
|
||||
//APPL_DEBUG("area : (" << _pos << "," << _endPos << ") insert at : " << _addingPos);
|
||||
m_highlight->parse(_pos, _endPos, m_HLDataPass1, _addingPos, m_data);
|
||||
}
|
||||
|
||||
void appl::Buffer::cleanHighLight(void) {
|
||||
void appl::Buffer::cleanHighLight() {
|
||||
// remove all element in the list...
|
||||
m_HLDataPass1.clear();
|
||||
}
|
||||
|
||||
|
||||
appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64_t &_starPos) {
|
||||
int32_t start = etk_max(0, _starPos-1);
|
||||
for (int32_t iii = start; iii < m_HLDataPass1.size(); ++iii) {
|
||||
int32_t start = etk::max((int64_t)0, _starPos-1);
|
||||
for (size_t iii = start; iii < m_HLDataPass1.size(); ++iii) {
|
||||
_starPos = iii;
|
||||
if ( m_HLDataPass1[iii].beginStart <= _pos
|
||||
&& m_HLDataPass1[iii].endStop > _pos) {
|
||||
if ( m_HLDataPass1[iii].start <= _pos
|
||||
&& m_HLDataPass1[iii].stop > _pos) {
|
||||
return &m_HLDataPass1[iii];
|
||||
}
|
||||
if(m_HLDataPass1[iii].beginStart > _pos) {
|
||||
return NULL;
|
||||
if(m_HLDataPass1[iii].start > _pos) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, int64_t _HLStart, int64_t _nbLines) {
|
||||
void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines) {
|
||||
_MData.posHLPass1 = 0;
|
||||
_MData.posHLPass2 = 0;
|
||||
if (NULL == m_highlight) {
|
||||
if (m_highlight == null) {
|
||||
return;
|
||||
}
|
||||
//GTimeVal timeStart;
|
||||
//g_get_current_time(&timeStart);
|
||||
_HLStart = (int32_t)getStartLine(position(_HLStart));
|
||||
//int64_t timeStart = ewol::getTime();
|
||||
|
||||
appl::Buffer::Iterator HLStartLine = getStartLine(_HLStart);
|
||||
int64_t HLStartPos = (int64_t)HLStartLine;
|
||||
_MData.HLData.clear();
|
||||
int64_t HLStop = countForwardNLines(position(_HLStart), _nbLines);
|
||||
int64_t HLStop = (int64_t)countForwardNLines(HLStartLine, _nbLines);
|
||||
int64_t startId = 0;
|
||||
int64_t stopId = 0;
|
||||
// find element previous
|
||||
findMainHighLightPosition(_HLStart, HLStop, startId, stopId, true);
|
||||
|
||||
//APPL_DEBUG("List of section between : "<< startId << " & " << stopId);
|
||||
//APPL_DEBUG("List of section between : "<< startId << " & " << stopId << " pass1 store size=" << m_HLDataPass1.size());
|
||||
int64_t endSearch = stopId+1;
|
||||
if (stopId == -1) {
|
||||
endSearch = m_HLDataPass1.size();
|
||||
}
|
||||
int64_t kkk;
|
||||
for (kkk = etk_max(startId, 0); kkk < endSearch; ++kkk) {
|
||||
for (kkk = etk::max(startId, (int64_t)0); kkk < endSearch; ++kkk) {
|
||||
// empty section :
|
||||
if (kkk == 0) {
|
||||
if (_HLStart < m_HLDataPass1[kkk].beginStart) {
|
||||
//APPL_DEBUG(" == > (empty section 1 ) k="<<k<<" start="<<HLStart<<" stop="<<m_HLDataPass1[k].beginStart );
|
||||
m_highlight->parse2(_HLStart,
|
||||
m_HLDataPass1[kkk].beginStart,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
if (HLStartPos < m_HLDataPass1[kkk].start) {
|
||||
APPL_VERBOSE(" == > (empty section 1 ) kkk=" << kkk <<
|
||||
" start=" << HLStartPos <<
|
||||
" stop=" << m_HLDataPass1[kkk].start );
|
||||
m_highlight->parse2(HLStartPos,
|
||||
m_HLDataPass1[kkk].start,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
} // else : nothing to do ...
|
||||
} else {
|
||||
//APPL_DEBUG(" == > (empty section 2 ) k="<<k<<" start="<<m_HLDataPass1[k-1].endStop<<" stop="<<m_HLDataPass1[k].beginStart );
|
||||
m_highlight->parse2(m_HLDataPass1[kkk-1].endStop,
|
||||
m_HLDataPass1[kkk].beginStart,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
APPL_VERBOSE(" == > (empty section 2 ) kkk=" << kkk <<
|
||||
" start=" << m_HLDataPass1[kkk-1].stop <<
|
||||
" stop=" << m_HLDataPass1[kkk].start );
|
||||
m_highlight->parse2(m_HLDataPass1[kkk-1].stop,
|
||||
m_HLDataPass1[kkk].start,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
}
|
||||
// under section :
|
||||
//APPL_DEBUG(" == > (under section ) k="<<k<<" start="<<m_HLDataPass1[k].beginStart<<" stop="<<m_HLDataPass1[k].endStop << " subSectionOfID=" << 99999999);
|
||||
// TODO : ...
|
||||
APPL_VERBOSE(" == > (under section ) kkk="<<kkk<<" start="<<m_HLDataPass1[kkk].start<<" stop="<<m_HLDataPass1[kkk].stop << " subSectionOfID=" << 99999999);
|
||||
m_highlight->parseSubElement(m_HLDataPass1[kkk],
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
}
|
||||
if (endSearch == (int32_t)m_HLDataPass1.size() ){
|
||||
//if( k < (int32_t)m_HLDataPass1.size()) {
|
||||
if (m_HLDataPass1.size() != 0) {
|
||||
//APPL_DEBUG(" == > (empty section 3 ) k="<<k<<" start="<<m_HLDataPass1[k-1].endStop<<" stop="<<HLStop );
|
||||
m_highlight->parse2(m_HLDataPass1[kkk-1].endStop,
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
APPL_VERBOSE(" == > (empty section 3 ) kkk=" << kkk <<
|
||||
" start=" << m_HLDataPass1[kkk-1].stop <<
|
||||
" stop=" << HLStop );
|
||||
m_highlight->parse2(m_HLDataPass1[kkk-1].stop,
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
} else {
|
||||
//APPL_DEBUG(" == > (empty section 4 ) k="<<k<<" start=0 stop="<<HLStop );
|
||||
APPL_VERBOSE(" == > (empty section 4 ) kkk=" << kkk <<
|
||||
" start=0 stop=" << HLStop );
|
||||
m_highlight->parse2(0,
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
HLStop,
|
||||
_MData.HLData,
|
||||
m_data);
|
||||
}
|
||||
}
|
||||
|
||||
//GTimeVal timeStop;
|
||||
//g_get_current_time(&timeStop);
|
||||
//APPL_DEBUG("Display reAnnalyse = " << timeStop.tv_usec - timeStart.tv_usec << " micro-s");
|
||||
/*
|
||||
int64_t timeStop = ewol::getTime();
|
||||
APPL_DEBUG("Display 2nd pass = " << (timeStop-timeStart)/1000.0f << " milli-second");
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos) {
|
||||
int64_t start = etk_max(0, _MData.posHLPass2-1);
|
||||
int64_t start = etk::max((int64_t)0, _MData.posHLPass2-1);
|
||||
for (int64_t iii=start; iii<(int32_t)_MData.HLData.size(); iii++) {
|
||||
_MData.posHLPass2 = iii;
|
||||
if( _MData.HLData[iii].beginStart <= _pos
|
||||
&& _MData.HLData[iii].endStop > _pos)
|
||||
if( _MData.HLData[iii].start <= _pos
|
||||
&& _MData.HLData[iii].stop > _pos)
|
||||
{
|
||||
return &_MData.HLData[iii];
|
||||
}
|
||||
if(_MData.HLData[iii].beginStart > _pos) {
|
||||
if(_MData.HLData[iii].start > _pos) {
|
||||
return getElementColorAtPosition(_pos, _MData.posHLPass1);
|
||||
}
|
||||
}
|
||||
return getElementColorAtPosition(_pos, _MData.posHLPass1);
|
||||
}
|
||||
|
||||
uint32_t appl::Buffer::getCursorLinesId(void) {
|
||||
uint32_t appl::Buffer::getCursorLinesId() {
|
||||
if (m_data.size() == 0) {
|
||||
return 0;
|
||||
}
|
||||
@@ -979,9 +1028,52 @@ uint32_t appl::Buffer::getCursorLinesId(void) {
|
||||
for (Iterator it = begin();
|
||||
(bool)it == true && it <= cursor();
|
||||
++it) {
|
||||
if (*it == etk::UChar::Return) {
|
||||
if (*it == u32char::Return) {
|
||||
++line;
|
||||
}
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
||||
namespace etk {
|
||||
template<> etk::String toString<ememory::SharedPtr<appl::Buffer>>(const ememory::SharedPtr<appl::Buffer>& _obj) {
|
||||
if (_obj != null) {
|
||||
return _obj->getFileName().getString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
template<> etk::UString toUString<ememory::SharedPtr<appl::Buffer>>(const ememory::SharedPtr<appl::Buffer>& _obj) {
|
||||
return etk::toUString(etk::toString(_obj));
|
||||
}
|
||||
|
||||
template<> bool from_string<ememory::SharedPtr<appl::Buffer>>(ememory::SharedPtr<appl::Buffer>& _variableRet, const etk::String& _value) {
|
||||
if (_variableRet != null) {
|
||||
_variableRet->loadFile(_value);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
template<> bool from_string<ememory::SharedPtr<appl::Buffer>>(ememory::SharedPtr<appl::Buffer>& _variableRet, const etk::UString& _value) {
|
||||
return from_string(_variableRet, etk::toString(_value));
|
||||
}
|
||||
template<> etk::String toString<appl::Buffer>(const appl::Buffer& _obj) {
|
||||
return _obj.getFileName().getString();
|
||||
}
|
||||
template<> etk::UString toUString<appl::Buffer>(const appl::Buffer& _obj) {
|
||||
return etk::toUString(etk::toString(_obj));
|
||||
}
|
||||
|
||||
template<> bool from_string<appl::Buffer>(appl::Buffer& _variableRet, const etk::String& _value) {
|
||||
_variableRet.loadFile(_value);
|
||||
return true;
|
||||
}
|
||||
template<> bool from_string<appl::Buffer>(appl::Buffer& _variableRet, const etk::UString& _value) {
|
||||
return from_string(_variableRet, etk::toString(_value));
|
||||
}
|
||||
};
|
||||
|
||||
#include <esignal/details/Signal.hxx>
|
||||
// declare for signal event
|
||||
ESIGNAL_DECLARE_SIGNAL(ememory::SharedPtr<appl::Buffer>);
|
||||
|
||||
|
||||
|
@@ -1,33 +1,31 @@
|
||||
/**
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#ifndef __APPL_BUFFER_H__
|
||||
#define __APPL_BUFFER_H__
|
||||
|
||||
#include <etk/UString.h>
|
||||
#include <etk/os/FSNode.h>
|
||||
#include <etk/unicode.h>
|
||||
#include <ewol/ewol.h>
|
||||
#include <etk/Buffer.h>
|
||||
#include <ewol/renderer/EObject.h>
|
||||
#include <ewol/widget/Widget.h>
|
||||
#include <ewol/compositing/Text.h>
|
||||
#include <appl/Highlight.h>
|
||||
#include <etk/types.hpp>
|
||||
#include <ewol/ewol.hpp>
|
||||
#include <etk/Buffer.hpp>
|
||||
#include <ewol/object/Object.hpp>
|
||||
#include <ewol/widget/Widget.hpp>
|
||||
#include <ewol/compositing/Text.hpp>
|
||||
#include <appl/Highlight.hpp>
|
||||
#include <esignal/Signal.hpp>
|
||||
|
||||
namespace appl {
|
||||
|
||||
class DisplayHLData {
|
||||
public:
|
||||
std::vector<appl::HighlightInfo> HLData;
|
||||
etk::Vector<appl::HighlightInfo> HLData;
|
||||
int64_t posHLPass1;
|
||||
int64_t posHLPass2;
|
||||
};
|
||||
class Buffer : public ewol::EObject {
|
||||
class Buffer;
|
||||
using BufferShared = ememory::SharedPtr<appl::Buffer>;
|
||||
using BufferWeak = ememory::WeakPtr<appl::Buffer>;
|
||||
class Buffer : public ewol::Object {
|
||||
public:
|
||||
class Iterator {
|
||||
// Private data :
|
||||
@@ -39,10 +37,10 @@ namespace appl {
|
||||
/**
|
||||
* @brief Basic itarator constructor with no link.
|
||||
*/
|
||||
Iterator(void):
|
||||
Iterator():
|
||||
m_current(0),
|
||||
m_data(NULL),
|
||||
m_value(etk::UChar::Null) {
|
||||
m_data(null),
|
||||
m_value(u32char::Null) {
|
||||
// nothing to do ...
|
||||
};
|
||||
/**
|
||||
@@ -52,7 +50,7 @@ namespace appl {
|
||||
Iterator(const Iterator & _obj):
|
||||
m_current(_obj.m_current),
|
||||
m_data(_obj.m_data),
|
||||
m_value(etk::UChar::Null) {
|
||||
m_value(u32char::Null) {
|
||||
// nothing to do ...
|
||||
};
|
||||
/**
|
||||
@@ -63,26 +61,26 @@ namespace appl {
|
||||
Iterator& operator=(const Iterator & _obj) {
|
||||
m_current = _obj.m_current;
|
||||
m_data = _obj.m_data;
|
||||
m_value = etk::UChar::Null;
|
||||
m_value = u32char::Null;
|
||||
return *this;
|
||||
};
|
||||
/**
|
||||
* @brief Basic destructor
|
||||
*/
|
||||
~Iterator(void) {
|
||||
virtual ~Iterator() {
|
||||
m_current = 0;
|
||||
m_data = NULL;
|
||||
m_value = etk::UChar::Null;
|
||||
m_data = null;
|
||||
m_value = u32char::Null;
|
||||
};
|
||||
/**
|
||||
* @brief basic boolean cast
|
||||
* @return true if the element is present in buffer
|
||||
*/
|
||||
operator bool (void) const {
|
||||
if (m_data == NULL) {
|
||||
operator bool () const {
|
||||
if (m_data == null) {
|
||||
return false;
|
||||
}
|
||||
if (m_current >= m_data->m_data.size()) {
|
||||
if (m_current >= (int64_t)m_data->m_data.size()) {
|
||||
return false;
|
||||
}
|
||||
if (m_current < 0) {
|
||||
@@ -94,15 +92,15 @@ namespace appl {
|
||||
* @brief basic boolean cast
|
||||
* @return true if the element is present in buffer
|
||||
*/
|
||||
operator int64_t (void) const {
|
||||
if (m_data == NULL) {
|
||||
operator int64_t () const {
|
||||
if (m_data == null) {
|
||||
return 0;
|
||||
}
|
||||
if (m_current < 0) {
|
||||
return 0;
|
||||
}
|
||||
if (m_current > m_data->m_data.size()) {
|
||||
return m_data->m_data.size();
|
||||
if (m_current > (int64_t)m_data->m_data.size()) {
|
||||
return (int64_t)m_data->m_data.size();
|
||||
}
|
||||
return m_current;
|
||||
};
|
||||
@@ -110,12 +108,12 @@ namespace appl {
|
||||
* @brief Incremental operator
|
||||
* @return Reference on the current iterator incremented
|
||||
*/
|
||||
Iterator& operator++ (void);
|
||||
Iterator& operator++ ();
|
||||
/**
|
||||
* @brief Decremental operator
|
||||
* @return Reference on the current iterator decremented
|
||||
*/
|
||||
Iterator& operator-- (void);
|
||||
Iterator& operator-- ();
|
||||
/**
|
||||
* @brief Incremental operator
|
||||
* @return Reference on a new iterator and increment the other one
|
||||
@@ -212,19 +210,19 @@ namespace appl {
|
||||
* @brief Get the value on the current element
|
||||
* @return The request element value
|
||||
*/
|
||||
char32_t operator* (void);
|
||||
char32_t operator* ();
|
||||
/**
|
||||
* @brief Get the position in the buffer
|
||||
* @return The requested position.
|
||||
*/
|
||||
int64_t getPos(void) const {
|
||||
if (m_data == NULL) {
|
||||
int64_t getPos() const {
|
||||
if (m_data == null) {
|
||||
return 0;
|
||||
}
|
||||
if (m_current < 0) {
|
||||
return 0;
|
||||
}
|
||||
if (m_current >= m_data->m_data.size()) {
|
||||
if (m_current >= (int64_t)m_data->m_data.size()) {
|
||||
return m_data->m_data.size()-1;
|
||||
}
|
||||
return m_current;
|
||||
@@ -249,7 +247,7 @@ namespace appl {
|
||||
};
|
||||
Iterator operator+ (const size_t _val) const {
|
||||
Iterator tmpp(*this);
|
||||
for (int64_t iii=0; iii<_val; ++iii) {
|
||||
for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
|
||||
++tmpp;
|
||||
}
|
||||
return tmpp;
|
||||
@@ -274,7 +272,7 @@ namespace appl {
|
||||
};
|
||||
Iterator operator- (const size_t _val) const {
|
||||
Iterator tmpp(*this);
|
||||
for (int64_t iii=0; iii<_val; ++iii) {
|
||||
for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
|
||||
--tmpp;
|
||||
}
|
||||
return tmpp;
|
||||
@@ -283,34 +281,47 @@ namespace appl {
|
||||
Iterator(Buffer* _obj, int64_t _pos) :
|
||||
m_current(_pos),
|
||||
m_data(_obj),
|
||||
m_value(etk::UChar::Null) {
|
||||
m_value(u32char::Null) {
|
||||
// nothing to do ...
|
||||
};
|
||||
friend class Buffer;
|
||||
};
|
||||
public: // signals
|
||||
esignal::Signal<> signalFileIsModify;
|
||||
esignal::Signal<> signalIsModify;
|
||||
esignal::Signal<> signalIsSave;
|
||||
esignal::Signal<> signalSelectChange;
|
||||
esignal::Signal<> signalChangeName;
|
||||
protected:
|
||||
Buffer();
|
||||
void init();
|
||||
public:
|
||||
static const char* const eventIsModify;
|
||||
static const char* const eventIsSave;
|
||||
static const char* const eventSelectChange;
|
||||
static const char* const eventChangeName;
|
||||
public:
|
||||
Buffer(void);
|
||||
~Buffer(void);
|
||||
DECLARE_FACTORY(Buffer);
|
||||
virtual ~Buffer();
|
||||
private:
|
||||
bool m_hasFileName; //!< when new file, the buffer has no name ==> but it might be reference with a single name ...
|
||||
std::string m_fileName; //!< name of the file (with his path)
|
||||
bool m_fileIsModify = false; //!< The file has been modify and the buffer is not synchronous
|
||||
public:
|
||||
/**
|
||||
* @brief get the curent filename of the Buffer
|
||||
*/
|
||||
const std::string& getFileName(void) {
|
||||
bool getFileModify() const {
|
||||
return m_fileIsModify;
|
||||
}
|
||||
private:
|
||||
bool m_hasFileName; //!< When new file, the buffer has no name ==> but it might be reference with a single name ...
|
||||
etk::Path m_fileName; //!< name of the file (with his path)
|
||||
public:
|
||||
/**
|
||||
* @brief get the curent filename of the Buffer
|
||||
*/
|
||||
const etk::Path& getFileName() const {
|
||||
return m_fileName;
|
||||
}
|
||||
/**
|
||||
* @brief Check if the buffer has a real filename.
|
||||
* @return the status of the existance of a name.
|
||||
*/
|
||||
bool hasFileName(void) {
|
||||
bool hasFileName() const {
|
||||
return m_hasFileName;
|
||||
}
|
||||
/**
|
||||
@@ -318,17 +329,17 @@ namespace appl {
|
||||
* @param[in] _name name of the file.
|
||||
* @return true if file corectly opened.
|
||||
*/
|
||||
bool loadFile(const std::string& _name);
|
||||
bool loadFile(const etk::Path& _name);
|
||||
/**
|
||||
* @brief Set a file name at this buffer (no saving ...)
|
||||
* @param[in] _name name of the file.
|
||||
*/
|
||||
void setFileName(const std::string& _name);
|
||||
void setFileName(const etk::Path& _name);
|
||||
/**
|
||||
* @brief save the file in the specify path.
|
||||
* @return true is saving well done
|
||||
*/
|
||||
bool storeFile(void);
|
||||
bool storeFile();
|
||||
protected:
|
||||
bool m_isModify; //!< true if the file is modify
|
||||
public:
|
||||
@@ -336,7 +347,7 @@ namespace appl {
|
||||
* @breif get the status of file modification.
|
||||
* @return true if file is modify.
|
||||
*/
|
||||
bool isModify(void) {
|
||||
bool isModify() const {
|
||||
return m_isModify;
|
||||
}
|
||||
/**
|
||||
@@ -347,7 +358,7 @@ namespace appl {
|
||||
protected:
|
||||
etk::Buffer m_data; //!< copy of the file buffer
|
||||
public:
|
||||
etk::Buffer& getData(void) {
|
||||
etk::Buffer& getData() {
|
||||
return m_data;
|
||||
};
|
||||
protected:
|
||||
@@ -365,31 +376,31 @@ namespace appl {
|
||||
/**
|
||||
* @brief Remove Selection of the buffer.
|
||||
*/
|
||||
void unSelect(void);
|
||||
void unSelect();
|
||||
/**
|
||||
* @brief Remove the selection of the buffer. (do nothing if no secection)
|
||||
*/
|
||||
void removeSelection(void);
|
||||
void removeSelection();
|
||||
/**
|
||||
* @brief Get the status of selection.
|
||||
* @return true if we have a curent selection, false otherwise.
|
||||
*/
|
||||
bool hasTextSelected(void) {
|
||||
bool hasTextSelected() {
|
||||
return m_cursorSelectPos >= 0;
|
||||
}
|
||||
/**
|
||||
* @brief Get the Start position of the selection.
|
||||
* @return position of the start selection.
|
||||
*/
|
||||
int64_t getStartSelectionPos(void) {
|
||||
return etk_min(m_cursorPos, m_cursorSelectPos);
|
||||
int64_t getStartSelectionPos() {
|
||||
return etk::min(m_cursorPos, m_cursorSelectPos);
|
||||
}
|
||||
/**
|
||||
* @brief Get the Stop position of the selection.
|
||||
* @return position of the stop selection.
|
||||
*/
|
||||
int64_t getStopSelectionPos(void) {
|
||||
return etk_max(m_cursorPos, m_cursorSelectPos);
|
||||
int64_t getStopSelectionPos() {
|
||||
return etk::max(m_cursorPos, m_cursorSelectPos);
|
||||
}
|
||||
protected:
|
||||
float m_cursorPreferredCol; //!< position of the cursor when up and down is done.
|
||||
@@ -405,7 +416,7 @@ namespace appl {
|
||||
* @brief Get the favorite distance from the left screen (For up and down moving).
|
||||
* @return The distance in pixels.
|
||||
*/
|
||||
float getFavoriteUpDownPos(void) {
|
||||
float getFavoriteUpDownPos() {
|
||||
return m_cursorPreferredCol;
|
||||
}
|
||||
protected:
|
||||
@@ -422,7 +433,7 @@ namespace appl {
|
||||
* @brief Get the selection mode (if true, the move event creata a selection)
|
||||
* @return The selecting mode.
|
||||
*/
|
||||
bool getSelectMode(void) {
|
||||
bool getSelectMode() {
|
||||
return m_selectMode;
|
||||
}
|
||||
public:
|
||||
@@ -440,7 +451,7 @@ namespace appl {
|
||||
* @param[in] _value Current value to transform
|
||||
* @param[out] _out String that represent the curent value to display
|
||||
*/
|
||||
void expand(int32_t& _indent, const char32_t& _value, std::u32string& _out) const;
|
||||
void expand(int32_t& _indent, const char32_t& _value, etk::UString& _out) const;
|
||||
/**
|
||||
* @brief get the start of a line with the position in the buffer.
|
||||
* @param[in] _pos position in the buffer.
|
||||
@@ -480,7 +491,7 @@ namespace appl {
|
||||
* @return true if pos if fined.
|
||||
*/
|
||||
// TODO : rename find
|
||||
bool search(const Iterator& _pos, const std::u32string& _search, Iterator& _result, bool _caseSensitive = true);
|
||||
bool search(const Iterator& _pos, const etk::UString& _search, Iterator& _result, bool _caseSensitive = true);
|
||||
/**
|
||||
* @brief Search a string in the buffer in back mode.
|
||||
* @param[in] _pos Position to start the search of the element.
|
||||
@@ -490,7 +501,7 @@ namespace appl {
|
||||
* @return true if pos if fined.
|
||||
*/
|
||||
// TODO : rename rfind
|
||||
bool searchBack(const Iterator& _pos, const std::u32string& _search, Iterator& _result, bool _caseSensitive = true);
|
||||
bool searchBack(const Iterator& _pos, const etk::UString& _search, Iterator& _result, bool _caseSensitive = true);
|
||||
/**
|
||||
* @brief find the first character of the line "nLines" forward
|
||||
* @param[in] _startPos Start position.
|
||||
@@ -511,21 +522,21 @@ namespace appl {
|
||||
* @param[out] _data Output stream to copy.
|
||||
* @return true of no error occured.
|
||||
*/
|
||||
bool copy(std::string& _data);
|
||||
bool copy(etk::String& _data);
|
||||
/**
|
||||
* @brief copy data in the _data ref value.
|
||||
* @param[out] _data Output stream to copy.
|
||||
* @param[in] _pos Position to add the data.
|
||||
* @param[in] _posEnd End position to end replace the data.
|
||||
*/
|
||||
void copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd);
|
||||
void copy(etk::String& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd);
|
||||
/**
|
||||
* @brief Write data at a specific position
|
||||
* @param[in] _data Data to insert in the buffer
|
||||
* @param[in] _pos Position to add the data.
|
||||
* @return true if the write is done corectly
|
||||
*/
|
||||
bool write(const std::string& _data, const appl::Buffer::Iterator& _pos);
|
||||
bool write(const etk::String& _data, const appl::Buffer::Iterator& _pos);
|
||||
/**
|
||||
* @brief Write data at a specific position
|
||||
* @param[in] _data Data to insert in the buffer
|
||||
@@ -533,7 +544,7 @@ namespace appl {
|
||||
* @param[in] _posEnd End position to end replace the data.
|
||||
* @return true if the write is done corectly
|
||||
*/
|
||||
bool replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd);
|
||||
bool replace(const etk::String& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd);
|
||||
public: // iterator section :
|
||||
/**
|
||||
* @brief Get an iterator an an specific position
|
||||
@@ -545,27 +556,27 @@ namespace appl {
|
||||
* @brief Get an Iterator on the start position.
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator begin(void);
|
||||
Iterator begin();
|
||||
/**
|
||||
* @brief Get an Iterator on the end position.
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator end(void);
|
||||
Iterator end();
|
||||
/**
|
||||
* @brief Get an Iterator on the cursor position.
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator cursor(void);
|
||||
Iterator cursor();
|
||||
/**
|
||||
* @brief Get an Iterator on the start selection.
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator selectStart(void);
|
||||
Iterator selectStart();
|
||||
/**
|
||||
* @brief Get an Iterator on the stop selection.
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator selectStop(void);
|
||||
Iterator selectStop();
|
||||
protected:
|
||||
int32_t m_nbLines; //!< number of line in the buffer
|
||||
public:
|
||||
@@ -573,39 +584,39 @@ namespace appl {
|
||||
* @brief Get the number of line in the buffer.
|
||||
* @return number of line in the Buffer.
|
||||
*/
|
||||
int32_t getNumberOfLines(void) {
|
||||
int32_t getNumberOfLines() {
|
||||
return m_nbLines;
|
||||
}
|
||||
/**
|
||||
* @brief Get the cursor line numberin the buffer.
|
||||
* @return the line id in the Buffer.
|
||||
*/
|
||||
uint32_t getCursorLinesId(void);
|
||||
uint32_t getCursorLinesId();
|
||||
protected:
|
||||
/**
|
||||
* @brief Count the number of line in the buffer
|
||||
*/
|
||||
void countNumberofLine(void);
|
||||
void countNumberofLine();
|
||||
protected:
|
||||
std::string m_highlightType; //!< Name of the highlight type
|
||||
etk::String m_highlightType; //!< Name of the highlight type
|
||||
|
||||
appl::Highlight* m_highlight; //!< internal link with the Highlight system
|
||||
std::vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1
|
||||
ememory::SharedPtr<appl::Highlight> m_highlight; //!< internal link with the Highlight system
|
||||
etk::Vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1
|
||||
public:
|
||||
/**
|
||||
* @brief Find the Highligh capability
|
||||
*/
|
||||
void tryFindHighlightType(void);
|
||||
void tryFindHighlightType();
|
||||
/**
|
||||
* @brief Set type of highlight
|
||||
* @param[in] _type type of the highlight
|
||||
*/
|
||||
void setHighlightType(const std::string& _type);
|
||||
void setHighlightType(const etk::String& _type);
|
||||
/**
|
||||
* @brief Get type of highlight
|
||||
* @return Type of the highlight
|
||||
*/
|
||||
const std::string& setHighlightType(void) {
|
||||
const etk::String& setHighlightType() {
|
||||
return m_highlightType;
|
||||
};
|
||||
|
||||
@@ -616,12 +627,9 @@ namespace appl {
|
||||
int64_t& _stopId,
|
||||
bool _backPreviousNotEnded);
|
||||
void generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos=0);
|
||||
void cleanHighLight(void);
|
||||
void cleanHighLight();
|
||||
appl::HighlightInfo* getElementColorAtPosition(int64_t _pos, int64_t &_starPos);
|
||||
void hightlightGenerateLines(appl::DisplayHLData& _MData, int64_t _HLStart, int64_t _nbLines);
|
||||
void hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines);
|
||||
appl::HighlightInfo* getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos);
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
}
|
@@ -1,145 +1,177 @@
|
||||
/**
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#include <etk/types.hpp>
|
||||
#include <etk/path/fileSystem.hpp>
|
||||
#include <appl/debug.hpp>
|
||||
#include <appl/global.hpp>
|
||||
#include <appl/BufferManager.hpp>
|
||||
#include <ewol/object/Object.hpp>
|
||||
#include <ewol/object/Manager.hpp>
|
||||
#include <esignal/Signal.hpp>
|
||||
#include <gale/resource/Manager.hpp>
|
||||
|
||||
#include <appl/debug.h>
|
||||
#include <appl/global.h>
|
||||
#include <appl/BufferManager.h>
|
||||
#include <ewol/renderer/EObject.h>
|
||||
#include <ewol/renderer/EObjectManager.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "BufferManager"
|
||||
|
||||
appl::BufferManager::BufferManager(void) :
|
||||
ewol::Resource("???BufferManager???"),
|
||||
m_bufferSelected(NULL) {
|
||||
appl::BufferManager::BufferManager() :
|
||||
signalNewBuffer(this, "new-buffer", ""),
|
||||
signalSelectFile(this, "select-buffer", ""),
|
||||
signalTextSelectionChange(this, "text-selection-change", ""),
|
||||
signalRemoveBuffer(this, "remove-buffer", "") {
|
||||
addObjectType("appl::BufferManager");
|
||||
}
|
||||
|
||||
appl::BufferManager::~BufferManager(void) {
|
||||
int32_t previousCount = m_list.size();
|
||||
for (int32_t iii = m_list.size()-1; iii >= 0 ; --iii) {
|
||||
if (m_list[iii] == NULL) {
|
||||
continue;
|
||||
}
|
||||
delete(m_list[iii]);
|
||||
if (previousCount == m_list.size()) {
|
||||
APPL_ERROR("Error in removing buffer !! ");
|
||||
}
|
||||
previousCount = m_list.size();
|
||||
}
|
||||
appl::BufferManager::~BufferManager() {
|
||||
m_list.clear();
|
||||
}
|
||||
|
||||
|
||||
appl::Buffer* appl::BufferManager::createNewBuffer(void) {
|
||||
appl::Buffer* tmp = new appl::Buffer();
|
||||
if (tmp == NULL) {
|
||||
ememory::SharedPtr<appl::Buffer> appl::BufferManager::createNewBuffer() {
|
||||
ememory::SharedPtr<appl::Buffer> tmp = appl::Buffer::create();
|
||||
if (tmp == null) {
|
||||
APPL_ERROR("Can not allocate the Buffer (empty).");
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
m_list.push_back(tmp);
|
||||
sendMultiCast(appl::MsgSelectNewFile, tmp->getFileName());
|
||||
tmp->setParent(ewol::Object::sharedFromThis());
|
||||
m_list.pushBack(tmp);
|
||||
APPL_INFO("Create a new Buffer");
|
||||
signalNewBuffer.emit(tmp);
|
||||
APPL_INFO("Create a new Buffer (done)");
|
||||
APPL_INFO("select Buffer");
|
||||
signalSelectFile.emit(tmp);
|
||||
APPL_INFO("select Buffer (done)");
|
||||
return tmp;
|
||||
}
|
||||
|
||||
appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) {
|
||||
for (int32_t iii = 0; iii < m_list.size(); ++iii) {
|
||||
if (m_list[iii] == NULL) {
|
||||
ememory::SharedPtr<appl::Buffer> appl::BufferManager::get(const etk::Path& _fileName, bool _createIfNeeded) {
|
||||
APPL_INFO("get('" << _fileName << "'," << _createIfNeeded << ")");
|
||||
for (auto &it : m_list) {
|
||||
if (it == null) {
|
||||
continue;
|
||||
}
|
||||
if (m_list[iii]->getFileName() == _fileName) {
|
||||
return m_list[iii];
|
||||
if (it->getFileName() == _fileName) {
|
||||
return it;
|
||||
}
|
||||
}
|
||||
if (_createIfNeeded == true) {
|
||||
if (etk::FSNodeGetType(_fileName) == etk::FSN_FOLDER) {
|
||||
APPL_INFO("try open a folder : " << _fileName);
|
||||
return NULL;
|
||||
if (etk::path::isDirectory(_fileName) == true) {
|
||||
APPL_WARNING("try open a folder : " << _fileName);
|
||||
APPL_CRITICAL("plop");
|
||||
return null;
|
||||
}
|
||||
appl::Buffer* tmp = new appl::Buffer();
|
||||
if (tmp == NULL) {
|
||||
ememory::SharedPtr<appl::Buffer> tmp = appl::Buffer::create();
|
||||
if (tmp == null) {
|
||||
APPL_ERROR("Can not allocate the Buffer class : " << _fileName);
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
tmp->setParent(ewol::Object::sharedFromThis());
|
||||
tmp->loadFile(_fileName);
|
||||
m_list.push_back(tmp);
|
||||
m_list.pushBack(tmp);
|
||||
APPL_INFO("Creata a open Buffer");
|
||||
signalNewBuffer.emit(tmp);
|
||||
APPL_INFO("Creata a open Buffer (done)");
|
||||
return tmp;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
void appl::BufferManager::setBufferSelected(appl::Buffer* _bufferSelected) {
|
||||
m_bufferSelected = _bufferSelected;
|
||||
sendMultiCast(appl::MsgSelectChange, "");
|
||||
return null;
|
||||
}
|
||||
|
||||
void appl::BufferManager::onObjectRemove(ewol::EObject * _removeObject) {
|
||||
if (m_bufferSelected == _removeObject) {
|
||||
setBufferSelected(NULL);
|
||||
}
|
||||
for (int32_t iii = 0; iii < m_list.size(); ++iii) {
|
||||
if (m_list[iii] != _removeObject) {
|
||||
continue;
|
||||
}
|
||||
m_list[iii] = NULL;
|
||||
m_list.erase(m_list.begin()+iii);
|
||||
void appl::BufferManager::setBufferSelected(ememory::SharedPtr<appl::Buffer> _bufferSelected) {
|
||||
m_bufferSelected = _bufferSelected;
|
||||
if (m_bufferSelected == null) {
|
||||
APPL_ERROR("select a NULL buffer ...");
|
||||
propertySetOnWidgetNamed("appl-widget-display-name", "value", "---");
|
||||
return;
|
||||
}
|
||||
APPL_INFO("Set buffer selected");
|
||||
//signalSelectFile.emit(m_bufferSelected->getName());
|
||||
//propertySetOnWidgetNamed("appl-widget-display-name", "value", m_bufferSelected->getName());
|
||||
APPL_INFO("Set buffer selected (done)");
|
||||
}
|
||||
|
||||
bool appl::BufferManager::exist(const std::string& _fileName) {
|
||||
for (int32_t iii = 0; iii < m_list.size(); ++iii) {
|
||||
if (m_list[iii] == NULL) {
|
||||
ememory::SharedPtr<appl::Buffer> appl::BufferManager::get(int32_t _id) {
|
||||
int32_t id = 0;
|
||||
for (auto &it : m_list) {
|
||||
if (id == _id) {
|
||||
return it;
|
||||
}
|
||||
id++;
|
||||
}
|
||||
return m_list.back();
|
||||
}
|
||||
|
||||
bool appl::BufferManager::exist(const etk::Path& _fileName) {
|
||||
for (auto &it : m_list) {
|
||||
if (it == null) {
|
||||
continue;
|
||||
}
|
||||
if (m_list[iii]->getFileName() == _fileName) {
|
||||
APPL_WARNING(" =?= '" << it->getFileName() << "'");
|
||||
if (it->getFileName() == _fileName) {
|
||||
APPL_WARNING(" ==> FIND...");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
APPL_WARNING(" ==> NOT FOUND...");
|
||||
return false;
|
||||
}
|
||||
|
||||
void appl::BufferManager::open(const std::string& _fileName) {
|
||||
if (exist(_fileName) == true) {
|
||||
void appl::BufferManager::open(const etk::Path& _fileName) {
|
||||
etk::Path fileName = _fileName.getAbsolute();
|
||||
if (exist(fileName) == true) {
|
||||
APPL_WARNING(" the element '" << fileName << "' already exist ... just reselect it ...");
|
||||
signalSelectFile.emit(get(fileName));
|
||||
propertySetOnWidgetNamed("appl-widget-display-name", "value", fileName.getString());
|
||||
return;
|
||||
}
|
||||
if (get(_fileName, true) == NULL) {
|
||||
auto value = get(fileName, true);
|
||||
if (value == null) {
|
||||
APPL_ERROR("Error get '" << fileName << "' ... ");
|
||||
return;
|
||||
}
|
||||
sendMultiCast(appl::MsgSelectNewFile, _fileName);
|
||||
signalSelectFile.emit(value);
|
||||
propertySetOnWidgetNamed("appl-widget-display-name", "value", fileName.getString());
|
||||
}
|
||||
|
||||
void appl::BufferManager::onReceiveMessage(const ewol::EMessage& _msg) {
|
||||
APPL_DEBUG("receive message !!! " << _msg);
|
||||
void appl::BufferManager::requestDestroyFromChild(const ememory::SharedPtr<Object>& _child) {
|
||||
APPL_WARNING("Buffer request a close...");
|
||||
bool find = false;
|
||||
int32_t newValue = -1;
|
||||
auto it = m_list.begin();
|
||||
while(it != m_list.end()) {
|
||||
if (*it == null) {
|
||||
it = m_list.erase(it);
|
||||
continue;
|
||||
}
|
||||
if (*it == _child) {
|
||||
it = m_list.erase(it);
|
||||
find = true;
|
||||
break;
|
||||
}
|
||||
newValue++;
|
||||
++it;
|
||||
}
|
||||
if (find == true) {
|
||||
signalRemoveBuffer.emit(ememory::dynamicPointerCast<appl::Buffer>(_child));
|
||||
}
|
||||
if (m_bufferSelected == _child) {
|
||||
if ( it != m_list.end()
|
||||
&& *it != null) {
|
||||
APPL_VERBOSE("Remove buffer select new one");
|
||||
signalSelectFile.emit(*it);
|
||||
propertySetOnWidgetNamed("appl-widget-display-name", "value", (*it)->getFileName().getString());
|
||||
APPL_VERBOSE("Remove buffer select new one (done)");
|
||||
return;
|
||||
}
|
||||
if ( m_list.size() != 0
|
||||
&& m_list.back() != null) {
|
||||
APPL_VERBOSE("Remove buffer select new one (last)");
|
||||
signalSelectFile.emit(m_list.back());
|
||||
propertySetOnWidgetNamed("appl-widget-display-name", "value", m_list.back()->getFileName().getString());
|
||||
APPL_VERBOSE("Remove buffer select new one (done)");
|
||||
return;
|
||||
}
|
||||
signalSelectFile.emit(null);
|
||||
propertySetOnWidgetNamed("appl-widget-display-name", "value", "---");
|
||||
m_bufferSelected = null;
|
||||
}
|
||||
}
|
||||
|
||||
appl::BufferManager* appl::BufferManager::keep(void) {
|
||||
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
|
||||
appl::BufferManager* object = static_cast<appl::BufferManager*>(getManager().localKeep("???BufferManager???"));
|
||||
if (NULL != object) {
|
||||
return object;
|
||||
}
|
||||
// this element create a new one every time ....
|
||||
EWOL_INFO("CREATE : appl::BufferManager: ???BufferManager???");
|
||||
object = new appl::BufferManager();
|
||||
if (NULL == object) {
|
||||
EWOL_ERROR("allocation error of a resource : ???BufferManager???");
|
||||
return NULL;
|
||||
}
|
||||
getManager().localAdd(object);
|
||||
return object;
|
||||
}
|
||||
|
||||
void appl::BufferManager::release(appl::BufferManager*& _object) {
|
||||
if (NULL == _object) {
|
||||
return;
|
||||
}
|
||||
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
|
||||
getManager().release(object2);
|
||||
_object = NULL;
|
||||
}
|
||||
|
@@ -1,98 +0,0 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
|
||||
#ifndef __BUFFER_MANAGER_H__
|
||||
#define __BUFFER_MANAGER_H__
|
||||
|
||||
#include <appl/Buffer.h>
|
||||
#include <appl/globalMsg.h>
|
||||
#include <ewol/widget/Widget.h>
|
||||
#include <ewol/resources/Resource.h>
|
||||
|
||||
namespace appl {
|
||||
class BufferManager : public ewol::Resource {
|
||||
protected:
|
||||
BufferManager(void);
|
||||
~BufferManager(void);
|
||||
private:
|
||||
std::vector<appl::Buffer*> m_list; // list of all buffer curently open
|
||||
public:
|
||||
/**
|
||||
* @brief Get a specific buffer with his name (can create a new buffer).
|
||||
* @param[in] _fileName Name of the file to open.
|
||||
* @param[in] _createIfNeeded Create the buffer if not existed.
|
||||
* @return a pointer on the buffer
|
||||
*/
|
||||
appl::Buffer* get(const std::string& _fileName, bool _createIfNeeded=false);
|
||||
/**
|
||||
* @brief Load a specific file, event if it not existed:
|
||||
* @param[in] _fileName Name of the file to open or create.
|
||||
*/
|
||||
void open(const std::string& _fileName);
|
||||
/**
|
||||
* @brief Check if a buffer is already open.
|
||||
* @param[in] _fileName name of the file.
|
||||
* @return true if the buffer is already open.
|
||||
*/
|
||||
bool exist(const std::string& _fileName);
|
||||
/**
|
||||
* @brief Get count of all buffer availlable.
|
||||
* @return Number of buffer
|
||||
*/
|
||||
int32_t size(void) const {
|
||||
return m_list.size();
|
||||
}
|
||||
/**
|
||||
* @brief Get a pointer on a buffer Id (never remember this ID!!!).
|
||||
* @param[in] _id Number of buffer
|
||||
* @return pointer on the buffer
|
||||
*/
|
||||
appl::Buffer* get(int32_t _id) {
|
||||
return m_list[_id];
|
||||
}
|
||||
/**
|
||||
* @brief Create a new buffer empty.
|
||||
* @return Created buffer or NULL.
|
||||
*/
|
||||
appl::Buffer* createNewBuffer(void);
|
||||
private:
|
||||
appl::Buffer* m_bufferSelected;
|
||||
public:
|
||||
/**
|
||||
* @brief Set the current buffer selected
|
||||
* @param[in] _bufferSelected Pointer on the buffer selected
|
||||
*/
|
||||
void setBufferSelected(appl::Buffer* _bufferSelected);
|
||||
/**
|
||||
* @brief Get the current buffer selected
|
||||
* @return Pointer on the buffer selected
|
||||
*/
|
||||
appl::Buffer* getBufferSelected(void) {
|
||||
return m_bufferSelected;
|
||||
};
|
||||
public: // herited function
|
||||
void onReceiveMessage(const ewol::EMessage& _msg);
|
||||
void onObjectRemove(ewol::EObject * _removeObject);
|
||||
public: // resource manager
|
||||
/**
|
||||
* @brief keep the resource pointer.
|
||||
* @note Never free this pointer by your own...
|
||||
* @param[in] _filename Name of the configuration file.
|
||||
* @return pointer on the resource or NULL if an error occured.
|
||||
*/
|
||||
static appl::BufferManager* keep(void);
|
||||
/**
|
||||
* @brief release the keeped resources
|
||||
* @param[in,out] reference on the object pointer
|
||||
*/
|
||||
static void release(appl::BufferManager*& _object);
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
102
sources/appl/BufferManager.hpp
Normal file
@@ -0,0 +1,102 @@
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <appl/Buffer.hpp>
|
||||
#include <appl/globalMsg.hpp>
|
||||
#include <ewol/widget/Widget.hpp>
|
||||
#include <gale/resource/Resource.hpp>
|
||||
|
||||
namespace appl {
|
||||
class BufferManager;
|
||||
using BufferManagerShared = ememory::SharedPtr<appl::BufferManager>;
|
||||
using BufferManagerWeak = ememory::WeakPtr<appl::BufferManager>;
|
||||
// TODO: This is a service ...
|
||||
class BufferManager : public ewol::Object {
|
||||
public:
|
||||
esignal::Signal<ememory::SharedPtr<appl::Buffer>> signalNewBuffer;
|
||||
esignal::Signal<ememory::SharedPtr<appl::Buffer>> signalSelectFile;
|
||||
esignal::Signal<> signalTextSelectionChange;
|
||||
esignal::Signal<ememory::SharedPtr<appl::Buffer>> signalRemoveBuffer;
|
||||
protected:
|
||||
BufferManager();
|
||||
public:
|
||||
DECLARE_SINGLE_FACTORY(BufferManager, "???BufferManager???");
|
||||
virtual ~BufferManager();
|
||||
private:
|
||||
etk::Vector<ememory::SharedPtr<appl::Buffer>> m_list; // list of all buffer curently open
|
||||
public:
|
||||
/**
|
||||
* @brief Get a specific buffer with his name (can create a new buffer).
|
||||
* @param[in] _fileName Name of the file to open.
|
||||
* @param[in] _createIfNeeded Create the buffer if not existed.
|
||||
* @return a pointer on the buffer
|
||||
*/
|
||||
ememory::SharedPtr<appl::Buffer> get(const etk::Path& _fileName, bool _createIfNeeded=false);
|
||||
/**
|
||||
* @brief Load a specific file, event if it not existed:
|
||||
* @param[in] _fileName Name of the file to open or create.
|
||||
*/
|
||||
void open(const etk::Path& _fileName);
|
||||
/**
|
||||
* @brief Check if a buffer is already open.
|
||||
* @param[in] _fileName name of the file.
|
||||
* @return true if the buffer is already open.
|
||||
*/
|
||||
bool exist(const etk::Path& _fileName);
|
||||
/**
|
||||
* @brief Get count of all buffer availlable.
|
||||
* @return Number of buffer
|
||||
*/
|
||||
int32_t size() const {
|
||||
return m_list.size();
|
||||
}
|
||||
/**
|
||||
* @brief Get a pointer on a buffer Id (never remember this ID!!!).
|
||||
* @param[in] _id Number of buffer
|
||||
* @return pointer on the buffer
|
||||
*/
|
||||
ememory::SharedPtr<appl::Buffer> get(int32_t _id);
|
||||
/**
|
||||
* @brief Create a new buffer empty.
|
||||
* @return Created buffer or null.
|
||||
*/
|
||||
ememory::SharedPtr<appl::Buffer> createNewBuffer();
|
||||
private:
|
||||
ememory::SharedPtr<appl::Buffer> m_bufferSelected;
|
||||
public:
|
||||
/**
|
||||
* @brief Set the current buffer selected
|
||||
* @param[in] _bufferSelected Pointer on the buffer selected
|
||||
*/
|
||||
void setBufferSelected(ememory::SharedPtr<appl::Buffer> _bufferSelected);
|
||||
/**
|
||||
* @brief Get the current buffer selected
|
||||
* @return Pointer on the buffer selected
|
||||
*/
|
||||
ememory::SharedPtr<appl::Buffer> getBufferSelected() {
|
||||
return m_bufferSelected;
|
||||
};
|
||||
private:
|
||||
void requestDestroyFromChild(const ememory::SharedPtr<Object>& _child);
|
||||
public:
|
||||
// generic iterators:
|
||||
const etk::Vector<ememory::SharedPtr<appl::Buffer>>::Iterator begin() const {
|
||||
return m_list.begin();
|
||||
}
|
||||
const etk::Vector<ememory::SharedPtr<appl::Buffer>>::Iterator end() const {
|
||||
return m_list.end();
|
||||
}
|
||||
etk::Vector<ememory::SharedPtr<appl::Buffer>>::Iterator begin() {
|
||||
return m_list.begin();
|
||||
}
|
||||
etk::Vector<ememory::SharedPtr<appl::Buffer>>::Iterator end() {
|
||||
return m_list.end();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@@ -1,51 +1,40 @@
|
||||
/**
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#include <appl/debug.hpp>
|
||||
#include <appl/global.hpp>
|
||||
#include <appl/GlyphDecoration.hpp>
|
||||
|
||||
#include <appl/debug.h>
|
||||
#include <appl/global.h>
|
||||
#include <appl/GlyphDecoration.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "GlyphDecoration"
|
||||
|
||||
|
||||
appl::GlyphDecoration::GlyphDecoration(const std::string &_newColorName) :
|
||||
m_colorName(_newColorName),
|
||||
m_colorFG(etk::color::black),
|
||||
m_colorBG(etk::color::none),
|
||||
m_italic(false),
|
||||
m_bold(false)
|
||||
{
|
||||
APPL_VERBOSE("New(" << __class__ << ")");
|
||||
appl::GlyphDecoration::GlyphDecoration(const etk::String &_newColorName) :
|
||||
m_colorName(_newColorName),
|
||||
m_colorFG(etk::color::black),
|
||||
m_colorBG(etk::color::none),
|
||||
m_italic(false),
|
||||
m_bold(false) {
|
||||
APPL_VERBOSE("create");
|
||||
}
|
||||
|
||||
void appl::GlyphDecoration::setItalic(bool _enable)
|
||||
{
|
||||
void appl::GlyphDecoration::setItalic(bool _enable) {
|
||||
m_italic = _enable;
|
||||
if (true == _enable) {
|
||||
if (_enable == true) {
|
||||
APPL_VERBOSE("color : \"" << m_colorName << "\" enable italic");
|
||||
} else {
|
||||
APPL_VERBOSE("color : \"" << m_colorName << "\" disable italic");
|
||||
}
|
||||
}
|
||||
|
||||
void appl::GlyphDecoration::setBold(bool _enable)
|
||||
{
|
||||
void appl::GlyphDecoration::setBold(bool _enable) {
|
||||
m_bold = _enable;
|
||||
if (true == _enable) {
|
||||
if (_enable == true) {
|
||||
APPL_VERBOSE("color : \"" << m_colorName << "\" enable bold");
|
||||
} else {
|
||||
APPL_VERBOSE("color : \"" << m_colorName << "\" disable bold");
|
||||
}
|
||||
}
|
||||
|
||||
etk::CCout& appl::operator <<(etk::CCout& _os, const appl::GlyphDecoration& _obj)
|
||||
{
|
||||
etk::Stream& appl::operator <<(etk::Stream& _os, const appl::GlyphDecoration& _obj) {
|
||||
_os << "{fg=" << _obj.getForeground();
|
||||
_os << ",bg=" << _obj.getBackground();
|
||||
_os << ",italic=" << _obj.getItalic();
|
||||
|
@@ -1,40 +1,36 @@
|
||||
/**
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#ifndef __GLYPH_DECORATION_H__
|
||||
#define __GLYPH_DECORATION_H__
|
||||
|
||||
#include <etk/Color.h>
|
||||
#include <etk/UString.h>
|
||||
#include <etk/Color.hpp>
|
||||
#include <etk/types.hpp>
|
||||
|
||||
namespace appl {
|
||||
class GlyphDecoration {
|
||||
public:
|
||||
// Constructeur
|
||||
GlyphDecoration(const std::string& _newColorName = "no_name");
|
||||
~GlyphDecoration(void) {
|
||||
GlyphDecoration(const etk::String& _newColorName = "no_name");
|
||||
virtual ~GlyphDecoration() {
|
||||
// nothing to do ...
|
||||
};
|
||||
private:
|
||||
std::string m_colorName; //!< curent color Name
|
||||
etk::String m_colorName; //!< curent color Name
|
||||
public:
|
||||
/**
|
||||
* @brief Set color name of the element.
|
||||
* @param[in] _newColorName new color name.
|
||||
*/
|
||||
void setName(const std::string& _newColorName) {
|
||||
void setName(const etk::String& _newColorName) {
|
||||
m_colorName = _newColorName;
|
||||
};
|
||||
/**
|
||||
* @brief Get the color name.
|
||||
* @return The name of the color.
|
||||
*/
|
||||
const std::string& getName(void) const {
|
||||
const etk::String& getName() const {
|
||||
return m_colorName;
|
||||
};
|
||||
private:
|
||||
@@ -44,21 +40,21 @@ namespace appl {
|
||||
* @brief Set foreground color.
|
||||
* @param[in] _myColor new color description.
|
||||
*/
|
||||
void setForeground(const std::string& _myColor) {
|
||||
void setForeground(const etk::String& _myColor) {
|
||||
m_colorFG = _myColor;
|
||||
};
|
||||
/**
|
||||
* @brief Get the foreground color.
|
||||
* @return The color.
|
||||
*/
|
||||
const etk::Color<>& getForeground(void) const {
|
||||
const etk::Color<>& getForeground() const {
|
||||
return m_colorFG;
|
||||
};
|
||||
/**
|
||||
* @brief Get the foreground color status.
|
||||
* @return true if the color is visible.
|
||||
*/
|
||||
bool haveFg(void) const {
|
||||
bool haveFg() const {
|
||||
return m_colorFG.a() != 0;
|
||||
};
|
||||
private:
|
||||
@@ -68,21 +64,21 @@ namespace appl {
|
||||
* @brief Set background color.
|
||||
* @param[in] _myColor new color description.
|
||||
*/
|
||||
void setBackground(const std::string& _myColor) {
|
||||
void setBackground(const etk::String& _myColor) {
|
||||
m_colorBG = _myColor;
|
||||
};
|
||||
/**
|
||||
* @brief Get the background color.
|
||||
* @return The color.
|
||||
*/
|
||||
const etk::Color<>& getBackground(void) const {
|
||||
const etk::Color<>& getBackground() const {
|
||||
return m_colorBG;
|
||||
};
|
||||
/**
|
||||
* @brief Get the background color status.
|
||||
* @return true if the color is visible.
|
||||
*/
|
||||
bool haveBackground(void) const {
|
||||
bool haveBackground() const {
|
||||
return m_colorBG.a()!=0;
|
||||
};
|
||||
private:
|
||||
@@ -97,7 +93,7 @@ namespace appl {
|
||||
* @brief Get the italic status.
|
||||
* @return true if the glyph might be display in italic.
|
||||
*/
|
||||
bool getItalic(void) const {
|
||||
bool getItalic() const {
|
||||
return m_italic;
|
||||
};
|
||||
private:
|
||||
@@ -112,13 +108,11 @@ namespace appl {
|
||||
* @brief Get the bold status.
|
||||
* @return true if the glyph might be display in bold.
|
||||
*/
|
||||
bool getBold(void) const {
|
||||
bool getBold() const {
|
||||
return m_bold;
|
||||
};
|
||||
};
|
||||
etk::CCout& operator <<(etk::CCout& _os, const appl::GlyphDecoration& _obj);
|
||||
etk::Stream& operator <<(etk::Stream& _os, const appl::GlyphDecoration& _obj);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -1,66 +1,61 @@
|
||||
/**
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
|
||||
#include <appl/debug.h>
|
||||
#include <appl/global.h>
|
||||
#include <appl/GlyphPainting.h>
|
||||
#include <ejson/ejson.h>
|
||||
#include <etk/os/FSNode.h>
|
||||
#include <ewol/resources/ResourceManager.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "GlyphPainting"
|
||||
#include <appl/debug.hpp>
|
||||
#include <appl/global.hpp>
|
||||
#include <appl/GlyphPainting.hpp>
|
||||
#include <ejson/ejson.hpp>
|
||||
#include <gale/resource/Manager.hpp>
|
||||
|
||||
|
||||
appl::GlyphPainting::GlyphPainting() {
|
||||
addResourceType("appl::GlyphPainting");
|
||||
}
|
||||
|
||||
appl::GlyphPainting::GlyphPainting(const std::string& _filename) :
|
||||
ewol::Resource(_filename) {
|
||||
addObjectType("appl::GlyphPainting");
|
||||
EWOL_DEBUG("SFP : load \"" << _filename << "\"");
|
||||
void appl::GlyphPainting::init(const etk::Uri& _uri) {
|
||||
gale::Resource::init(_uri);
|
||||
APPL_DEBUG("SFP : load \"" << _uri << "\"");
|
||||
reload();
|
||||
}
|
||||
|
||||
appl::GlyphPainting::~GlyphPainting(void) {
|
||||
appl::GlyphPainting::~GlyphPainting() {
|
||||
|
||||
}
|
||||
|
||||
void appl::GlyphPainting::reload(void) {
|
||||
void appl::GlyphPainting::reload() {
|
||||
ejson::Document doc;
|
||||
if (false == doc.load(m_name)) {
|
||||
APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName());
|
||||
if (doc.load(etk::Uri(m_name)) == false) {
|
||||
APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::Uri(m_name));
|
||||
return;
|
||||
}
|
||||
// for debug only :
|
||||
/*
|
||||
APPL_WARNING("Load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName());
|
||||
std::string tmppppp;
|
||||
etk::String tmppppp;
|
||||
doc.generate(tmppppp);
|
||||
APPL_DEBUG(tmppppp);
|
||||
*/
|
||||
ejson::Array* baseArray = doc.getArray("ednColor");
|
||||
if (baseArray == NULL) {
|
||||
ejson::Array baseArray = doc["ednColor"].toArray();
|
||||
if (baseArray.exist() == false) {
|
||||
APPL_ERROR("Can not get basic array : 'ednColor'");
|
||||
return;
|
||||
}
|
||||
for (int32_t iii = 0; iii < baseArray->size(); ++iii) {
|
||||
ejson::Object* tmpObj = baseArray->getObject(iii);
|
||||
if (tmpObj == NULL) {
|
||||
APPL_DEBUG(" can not get object in 'ednColor' id=" << iii);
|
||||
for (const auto it : baseArray) {
|
||||
ejson::Object tmpObj = it.toObject();
|
||||
if (tmpObj.exist() == false) {
|
||||
APPL_DEBUG(" can not get object in 'ednColor' it=" << it);
|
||||
continue;
|
||||
}
|
||||
std::string name = tmpObj->getStringValue("name", "");
|
||||
std::string background = tmpObj->getStringValue("background", "#FFF0");
|
||||
std::string foreground = tmpObj->getStringValue("foreground", "#000F");
|
||||
bool italic = tmpObj->getBooleanValue("italic", false);
|
||||
bool bold = tmpObj->getBooleanValue("bold", false);
|
||||
etk::String name = tmpObj["name"].toString().get();
|
||||
etk::String background = tmpObj["background"].toString().get("#FFF0");
|
||||
etk::String foreground = tmpObj["foreground"].toString().get("#000F");
|
||||
bool italic = tmpObj["italic"].toBoolean().get(false);
|
||||
bool bold = tmpObj["bold"].toBoolean().get(false);
|
||||
APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'");
|
||||
bool findElement = false;
|
||||
for (int32_t jjj=0; jjj<m_list.size(); ++jjj) {
|
||||
for (size_t jjj=0; jjj<m_list.size(); ++jjj) {
|
||||
if (m_list[jjj].getName() != name) {
|
||||
continue;
|
||||
}
|
||||
@@ -78,46 +73,19 @@ void appl::GlyphPainting::reload(void) {
|
||||
tmpDeco.setBackground(background);
|
||||
tmpDeco.setItalic(italic);
|
||||
tmpDeco.setBold(bold);
|
||||
m_list.push_back(tmpDeco);
|
||||
m_list.pushBack(tmpDeco);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int32_t appl::GlyphPainting::request(const std::string& _name) {
|
||||
for (int32_t iii=0; iii<m_list.size(); ++iii) {
|
||||
int32_t appl::GlyphPainting::request(const etk::String& _name) {
|
||||
for (size_t iii=0; iii<m_list.size(); ++iii) {
|
||||
if (m_list[iii].getName() == _name) {
|
||||
return iii;
|
||||
}
|
||||
}
|
||||
// create an empty deco ...
|
||||
appl::GlyphDecoration tmpDeco(_name);
|
||||
m_list.push_back(tmpDeco);
|
||||
m_list.pushBack(tmpDeco);
|
||||
return m_list.size()-1;
|
||||
}
|
||||
|
||||
appl::GlyphPainting* appl::GlyphPainting::keep(const std::string& _filename) {
|
||||
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
|
||||
appl::GlyphPainting* object = static_cast<appl::GlyphPainting*>(getManager().localKeep(_filename));
|
||||
if (NULL != object) {
|
||||
return object;
|
||||
}
|
||||
// this element create a new one every time ....
|
||||
EWOL_INFO("CREATE : appl::GlyphPainting : file : \"" << _filename << "\"");
|
||||
object = new appl::GlyphPainting(_filename);
|
||||
if (NULL == object) {
|
||||
EWOL_ERROR("allocation error of a resource : ??GlyphPainting??");
|
||||
return NULL;
|
||||
}
|
||||
getManager().localAdd(object);
|
||||
return object;
|
||||
}
|
||||
|
||||
void appl::GlyphPainting::release(appl::GlyphPainting*& _object) {
|
||||
if (NULL == _object) {
|
||||
return;
|
||||
}
|
||||
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
|
||||
getManager().release(object2);
|
||||
_object = NULL;
|
||||
}
|
||||
|
||||
|
@@ -1,68 +0,0 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
|
||||
#ifndef __APPL_GLYPH_PAINTING_H__
|
||||
#define __APPL_GLYPH_PAINTING_H__
|
||||
|
||||
#include <etk/types.h>
|
||||
#include <ewol/debug.h>
|
||||
#include <ewol/resources/Resource.h>
|
||||
#include <appl/GlyphDecoration.h>
|
||||
|
||||
namespace appl {
|
||||
class GlyphPainting : public ewol::Resource {
|
||||
private:
|
||||
std::vector<appl::GlyphDecoration> m_list;
|
||||
protected:
|
||||
GlyphPainting(const std::string& _filename);
|
||||
virtual ~GlyphPainting(void);
|
||||
public:
|
||||
/**
|
||||
* @brief Load or reload data from config
|
||||
*/
|
||||
void reload(void);
|
||||
/**
|
||||
* @brief Register a decoration with his name and get the ref id.
|
||||
* @param[in] _name Name of the deco.
|
||||
* @return id of the deco.
|
||||
*/
|
||||
int32_t request(const std::string& _name);
|
||||
/**
|
||||
* @brief Get Decoration handle.
|
||||
* @param[in] _id Id of the decoration.
|
||||
* @return reference on deco.
|
||||
*/
|
||||
const appl::GlyphDecoration& get(int32_t _id) const {
|
||||
return m_list[_id];
|
||||
};
|
||||
/**
|
||||
* @brief Operator to get decoration handle.
|
||||
* @param[in] _pos Id of the decoration.
|
||||
* @return reference on deco.
|
||||
*/
|
||||
const appl::GlyphDecoration& operator[] (int32_t _pos) const {
|
||||
return m_list[_pos];
|
||||
}
|
||||
public:
|
||||
/**
|
||||
* @brief keep the resource pointer.
|
||||
* @note Never free this pointer by your own...
|
||||
* @param[in] _filename Name of the configuration file.
|
||||
* @return pointer on the resource or NULL if an error occured.
|
||||
*/
|
||||
static appl::GlyphPainting* keep(const std::string& _filename);
|
||||
/**
|
||||
* @brief release the keeped resources
|
||||
* @param[in,out] reference on the object pointer
|
||||
*/
|
||||
static void release(appl::GlyphPainting*& _object);
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
53
sources/appl/GlyphPainting.hpp
Normal file
@@ -0,0 +1,53 @@
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <etk/types.hpp>
|
||||
#include <ewol/debug.hpp>
|
||||
#include <gale/resource/Resource.hpp>
|
||||
#include <appl/GlyphDecoration.hpp>
|
||||
|
||||
namespace appl {
|
||||
class GlyphPainting : public gale::Resource {
|
||||
private:
|
||||
etk::Vector<appl::GlyphDecoration> m_list;
|
||||
protected:
|
||||
GlyphPainting();
|
||||
void init(const etk::Uri& _uri);
|
||||
public:
|
||||
DECLARE_RESOURCE_URI_FACTORY(GlyphPainting);
|
||||
virtual ~GlyphPainting();
|
||||
public:
|
||||
/**
|
||||
* @brief Load or reload data from config
|
||||
*/
|
||||
void reload();
|
||||
/**
|
||||
* @brief Register a decoration with his name and get the ref id.
|
||||
* @param[in] _name Name of the deco.
|
||||
* @return id of the deco.
|
||||
*/
|
||||
int32_t request(const etk::String& _name);
|
||||
/**
|
||||
* @brief Get Decoration handle.
|
||||
* @param[in] _id Id of the decoration.
|
||||
* @return reference on deco.
|
||||
*/
|
||||
const appl::GlyphDecoration& get(int32_t _id) const {
|
||||
return m_list[_id];
|
||||
};
|
||||
/**
|
||||
* @brief Operator to get decoration handle.
|
||||
* @param[in] _pos Id of the decoration.
|
||||
* @return reference on deco.
|
||||
*/
|
||||
const appl::GlyphDecoration& operator[] (int32_t _pos) const {
|
||||
return m_list[_pos];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@@ -1,302 +0,0 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
|
||||
#include <appl/debug.h>
|
||||
#include <appl/global.h>
|
||||
#include <appl/Gui/BufferView.h>
|
||||
#include <appl/BufferManager.h>
|
||||
//#include <ColorizeManager.h>
|
||||
#include <appl/Gui/MainWindows.h>
|
||||
#include <ewol/renderer/EObject.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "BufferView"
|
||||
|
||||
static void SortElementList(std::vector<appl::dataBufferStruct*>& _list) {
|
||||
std::vector<appl::dataBufferStruct *> tmpList = _list;
|
||||
_list.clear();
|
||||
for(int32_t iii=0; iii<tmpList.size(); iii++) {
|
||||
if (NULL == tmpList[iii]) {
|
||||
continue;
|
||||
}
|
||||
int32_t findPos = 0;
|
||||
for(int32_t jjj=0; jjj<_list.size(); jjj++) {
|
||||
//EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\"");
|
||||
if (_list[jjj] == NULL) {
|
||||
continue;
|
||||
}
|
||||
if (tmpList[iii]->m_bufferName.getNameFile() > _list[jjj]->m_bufferName.getNameFile()) {
|
||||
findPos = jjj+1;
|
||||
}
|
||||
}
|
||||
//EWOL_DEBUG("position="<<findPos);
|
||||
_list.insert(_list.begin()+findPos, tmpList[iii]);
|
||||
}
|
||||
}
|
||||
|
||||
BufferView::BufferView(void) :
|
||||
m_openOrderMode(false) {
|
||||
addObjectType("appl::BufferView");
|
||||
setCanHaveFocus(true);
|
||||
registerMultiCast(ednMsgBufferListChange);
|
||||
registerMultiCast(ednMsgBufferState);
|
||||
registerMultiCast(ednMsgBufferId);
|
||||
registerMultiCast(appl::MsgSelectNewFile);
|
||||
registerMultiCast(appl::MsgSelectChange);
|
||||
registerMultiCast(appl::MsgNameChange);
|
||||
m_selectedID = -1;
|
||||
m_selectedIdRequested = -1;
|
||||
// load buffer manager:
|
||||
m_bufferManager = appl::BufferManager::keep();
|
||||
// load color properties
|
||||
m_paintingProperties = appl::GlyphPainting::keep("THEME:COLOR:bufferList.json");
|
||||
// get all id properties ...
|
||||
m_colorBackground1 = m_paintingProperties->request("backgroung1");
|
||||
m_colorBackground2 = m_paintingProperties->request("backgroung2");
|
||||
m_colorBackgroundSelect = m_paintingProperties->request("backgroungSelected");
|
||||
m_colorTextNormal = m_paintingProperties->request("textNormal");
|
||||
m_colorTextModify = m_paintingProperties->request("textModify");
|
||||
}
|
||||
|
||||
BufferView::~BufferView(void) {
|
||||
removeAllElement();
|
||||
}
|
||||
|
||||
void BufferView::removeAllElement(void) {
|
||||
for(int32_t iii=0; iii<m_list.size(); iii++) {
|
||||
if (NULL!=m_list[iii]) {
|
||||
delete(m_list[iii]);
|
||||
m_list[iii] = NULL;
|
||||
}
|
||||
}
|
||||
m_list.clear();
|
||||
if (m_bufferManager != NULL) {
|
||||
appl::BufferManager::release(m_bufferManager);
|
||||
}
|
||||
}
|
||||
|
||||
void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition) {
|
||||
if (_dataStruct == NULL) {
|
||||
return;
|
||||
}
|
||||
// alphabetical order:
|
||||
for (size_t iii = 0; iii < m_list.size(); ++iii) {
|
||||
if (m_list[iii] == NULL) {
|
||||
continue;
|
||||
}
|
||||
if (to_lower(m_list[iii]->m_bufferName.getNameFile()) > to_lower(_dataStruct->m_bufferName.getNameFile())) {
|
||||
m_list.insert(m_list.begin() + iii, _dataStruct);
|
||||
_dataStruct = NULL;
|
||||
if (_selectNewPosition == true) {
|
||||
m_selectedID = iii;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (_dataStruct != NULL) {
|
||||
m_list.push_back(_dataStruct);
|
||||
if (_selectNewPosition == true) {
|
||||
m_selectedID = m_list.size()-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BufferView::onReceiveMessage(const ewol::EMessage& _msg) {
|
||||
widget::List::onReceiveMessage(_msg);
|
||||
if (_msg.getMessage() == appl::MsgSelectNewFile) {
|
||||
appl::Buffer* buffer = m_bufferManager->get(_msg.getData());
|
||||
if (buffer == NULL) {
|
||||
APPL_ERROR("event on element nor exist : " << _msg.getData());
|
||||
return;
|
||||
}
|
||||
buffer->registerOnEvent(this, appl::Buffer::eventIsSave);
|
||||
buffer->registerOnEvent(this, appl::Buffer::eventIsModify);
|
||||
buffer->registerOnEvent(this, appl::Buffer::eventChangeName);
|
||||
appl::dataBufferStruct* tmp = new appl::dataBufferStruct(_msg.getData(), buffer);
|
||||
if (tmp == NULL) {
|
||||
APPL_ERROR("Allocation error of the tmp buffer list element");
|
||||
return;
|
||||
}
|
||||
if (m_openOrderMode == true) {
|
||||
m_list.push_back(tmp);
|
||||
} else {
|
||||
insertAlphabetic(tmp);
|
||||
}
|
||||
markToRedraw();
|
||||
return;
|
||||
}
|
||||
if (_msg.getMessage() == appl::Buffer::eventChangeName) {
|
||||
for (size_t iii = 0; iii < m_list.size(); ++iii) {
|
||||
if (m_list[iii] == NULL) {
|
||||
continue;
|
||||
}
|
||||
if (m_list[iii]->m_bufferName != m_list[iii]->m_buffer->getFileName()) {
|
||||
m_list[iii]->m_bufferName = m_list[iii]->m_buffer->getFileName();
|
||||
if (m_openOrderMode == false) {
|
||||
// re-order the fine in the correct position
|
||||
appl::dataBufferStruct* tmp = m_list[iii];
|
||||
m_list[iii] = NULL;
|
||||
m_list.erase(m_list.begin() + iii);
|
||||
insertAlphabetic(tmp, (iii == m_selectedID));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
markToRedraw();
|
||||
return;
|
||||
}
|
||||
if (_msg.getMessage() == appl::Buffer::eventIsSave) {
|
||||
markToRedraw();
|
||||
return;
|
||||
}
|
||||
if (_msg.getMessage() == appl::Buffer::eventIsModify) {
|
||||
markToRedraw();
|
||||
return;
|
||||
}
|
||||
APPL_DEBUG("message : " << _msg);
|
||||
if (_msg.getMessage() == appl::MsgSelectChange) {
|
||||
m_selectedID = -1;
|
||||
appl::Buffer* tmpBuffer = NULL;
|
||||
if (m_bufferManager != NULL) {
|
||||
tmpBuffer = m_bufferManager->getBufferSelected();
|
||||
}
|
||||
if (tmpBuffer != NULL) {
|
||||
for (int32_t iii=0; iii<m_list.size(); iii++) {
|
||||
if (m_list[iii] == NULL) {
|
||||
continue;
|
||||
}
|
||||
if (m_list[iii]->m_buffer != tmpBuffer) {
|
||||
continue;
|
||||
}
|
||||
m_selectedID = iii;
|
||||
break;
|
||||
}
|
||||
}
|
||||
markToRedraw();
|
||||
return;
|
||||
}
|
||||
if (_msg.getMessage() == ednMsgBufferListChange) {
|
||||
// clean The list
|
||||
removeAllElement();
|
||||
// get all the buffer name and properties:
|
||||
int32_t nbBufferOpen = 0; // BufferManager::size();
|
||||
for (int32_t iii=0; iii<nbBufferOpen; iii++) {
|
||||
/*
|
||||
if (BufferManager::exist(iii)) {
|
||||
BufferText* tmpBuffer = BufferManager::get(iii);
|
||||
if (NULL != tmpBuffer) {
|
||||
bool isModify = tmpBuffer->isModify();
|
||||
etk::FSNode name = tmpBuffer->getFileName();
|
||||
appl::dataBufferStruct* tmpElement = new appl::dataBufferStruct(name, iii, isModify);
|
||||
if (NULL != tmpElement) {
|
||||
m_list.push_back(tmpElement);
|
||||
} else {
|
||||
APPL_ERROR("Allocation error of the tmp buffer list element");
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
if (true == globals::OrderTheBufferList() ) {
|
||||
SortElementList(m_list);
|
||||
}
|
||||
markToRedraw();
|
||||
}else if (_msg.getMessage() == ednMsgBufferId) {
|
||||
m_selectedIdRequested = 0; //BufferManager::getSelected();
|
||||
markToRedraw();
|
||||
}else if (_msg.getMessage() == ednMsgBufferState) {
|
||||
// update list of modify section ...
|
||||
for (int32_t iii=0; iii<m_list.size(); iii++) {
|
||||
if (NULL!=m_list[iii]) {
|
||||
//m_list[iii]->m_isModify = BufferManager::get(m_list[iii]->m_bufferID)->isModify();
|
||||
}
|
||||
}
|
||||
markToRedraw();
|
||||
}
|
||||
}
|
||||
|
||||
void BufferView::onObjectRemove(ewol::EObject* _removeObject) {
|
||||
widget::List::onObjectRemove(_removeObject);
|
||||
for (int32_t iii=0; iii<m_list.size(); iii++) {
|
||||
if (m_list[iii] == NULL) {
|
||||
continue;
|
||||
}
|
||||
if (m_list[iii]->m_buffer != _removeObject) {
|
||||
continue;
|
||||
}
|
||||
m_list.erase(m_list.begin()+iii);
|
||||
markToRedraw();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
etk::Color<> BufferView::getBasicBG(void) {
|
||||
return (*m_paintingProperties)[m_colorBackground1].getForeground();
|
||||
}
|
||||
|
||||
uint32_t BufferView::getNuberOfColomn(void) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool BufferView::getTitle(int32_t _colomn, std::string &_myTitle, etk::Color<> &_fg, etk::Color<> &_bg) {
|
||||
_myTitle = "Buffers : ";
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32_t BufferView::getNuberOfRaw(void) {
|
||||
return m_list.size();
|
||||
}
|
||||
|
||||
bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) {
|
||||
if( _raw >= 0
|
||||
&& _raw<m_list.size()
|
||||
&& NULL != m_list[_raw]) {
|
||||
_myTextToWrite = m_list[_raw]->m_bufferName.getNameFile();
|
||||
|
||||
if ( m_list[_raw]->m_buffer != NULL
|
||||
&& m_list[_raw]->m_buffer->isModify() == false) {
|
||||
_fg = (*m_paintingProperties)[m_colorTextNormal].getForeground();
|
||||
} else {
|
||||
_fg = (*m_paintingProperties)[m_colorTextModify].getForeground();
|
||||
}
|
||||
if (_raw%2 == 0) {
|
||||
_bg = (*m_paintingProperties)[m_colorBackground1].getForeground();
|
||||
} else {
|
||||
_bg = (*m_paintingProperties)[m_colorBackground2].getForeground();
|
||||
}
|
||||
// the buffer change of selection ...
|
||||
if (m_selectedID == _raw) {
|
||||
_bg = (*m_paintingProperties)[m_colorBackgroundSelect].getForeground();
|
||||
}
|
||||
} else {
|
||||
_myTextToWrite = "ERROR";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BufferView::onItemEvent(int32_t _IdInput, enum ewol::keyEvent::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y)
|
||||
{
|
||||
if (1 == _IdInput && _typeEvent == ewol::keyEvent::statusSingle) {
|
||||
APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw );
|
||||
if( _raw >= 0
|
||||
&& _raw<m_list.size()
|
||||
&& NULL != m_list[_raw]) {
|
||||
if (m_list[_raw]->m_buffer != NULL) {
|
||||
sendMultiCast(appl::MsgSelectNewFile, m_list[_raw]->m_buffer->getFileName());
|
||||
m_selectedID = _raw;
|
||||
markToRedraw();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -1,78 +0,0 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
|
||||
#ifndef __BUFFER_VIEW_H__
|
||||
#define __BUFFER_VIEW_H__
|
||||
|
||||
#include <appl/debug.h>
|
||||
#include <appl/BufferManager.h>
|
||||
#include <appl/globalMsg.h>
|
||||
#include <ewol/widget/List.h>
|
||||
#include <ewol/widget/Windows.h>
|
||||
|
||||
namespace appl
|
||||
{
|
||||
class dataBufferStruct
|
||||
{
|
||||
public:
|
||||
etk::FSNode m_bufferName;
|
||||
appl::Buffer* m_buffer;
|
||||
dataBufferStruct(const std::string& _bufferName, appl::Buffer* _buffer) :
|
||||
m_bufferName(_bufferName),
|
||||
m_buffer(_buffer) {
|
||||
|
||||
};
|
||||
~dataBufferStruct(void) { };
|
||||
};
|
||||
};
|
||||
|
||||
class BufferView : public widget::List
|
||||
{
|
||||
private:
|
||||
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager
|
||||
private:
|
||||
appl::GlyphPainting* m_paintingProperties; //!< element painting property
|
||||
int32_t m_colorBackground1;
|
||||
int32_t m_colorBackground2;
|
||||
int32_t m_colorBackgroundSelect;
|
||||
int32_t m_colorTextNormal;
|
||||
int32_t m_colorTextModify;
|
||||
private:
|
||||
int32_t m_selectedIdRequested;
|
||||
int32_t m_selectedID;
|
||||
std::vector<appl::dataBufferStruct*> m_list;
|
||||
/**
|
||||
* @brief Insert the element in the alphabetic order.
|
||||
* @param[in] _dataStruct element to add.
|
||||
*/
|
||||
void insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition = false);
|
||||
public:
|
||||
// Constructeur
|
||||
BufferView(void);
|
||||
~BufferView(void);
|
||||
// Derived function
|
||||
virtual void onReceiveMessage(const ewol::EMessage& _msg);
|
||||
virtual void onObjectRemove(ewol::EObject* _removeObject);
|
||||
private:
|
||||
bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order
|
||||
protected:
|
||||
// function call to display the list :
|
||||
virtual etk::Color<> getBasicBG(void);
|
||||
void removeAllElement(void);
|
||||
// Derived function
|
||||
virtual uint32_t getNuberOfColomn(void);
|
||||
virtual bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg);
|
||||
virtual uint32_t getNuberOfRaw(void);
|
||||
virtual bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg);
|
||||
virtual bool onItemEvent(int32_t _IdInput, enum ewol::keyEvent::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -1,90 +1,69 @@
|
||||
/**
|
||||
/** @file
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
#include <appl/debug.hpp>
|
||||
#include <appl/global.hpp>
|
||||
#include <appl/Gui/MainWindows.hpp>
|
||||
#include <appl/widget/BufferList.hpp>
|
||||
#include <appl/widget/BufferTree.hpp>
|
||||
#include <appl/Gui/TextViewer.hpp>
|
||||
#include <appl/Gui/Search.hpp>
|
||||
|
||||
|
||||
#include <appl/debug.h>
|
||||
#include <appl/global.h>
|
||||
#include <appl/Gui/MainWindows.h>
|
||||
#include <appl/Gui/BufferView.h>
|
||||
#include <appl/Gui/TextViewer.h>
|
||||
#include <appl/Gui/Search.h>
|
||||
|
||||
#include <ewol/widget/Button.h>
|
||||
#include <ewol/widget/CheckBox.h>
|
||||
#include <ewol/widget/Sizer.h>
|
||||
#include <ewol/widget/Label.h>
|
||||
#include <ewol/widget/Entry.h>
|
||||
#include <ewol/widget/List.h>
|
||||
#include <ewol/widget/ContextMenu.h>
|
||||
#include <ewol/widget/PopUp.h>
|
||||
#include <ewol/widget/Spacer.h>
|
||||
#include <ewol/widget/Slider.h>
|
||||
#include <ewol/widget/Menu.h>
|
||||
#include <ewol/widget/meta/FileChooser.h>
|
||||
#include <ewol/widget/meta/Parameter.h>
|
||||
#include <ewol/widget/WidgetManager.h>
|
||||
#include <ewol/renderer/EObject.h>
|
||||
#include <ewol/renderer/eContext.h>
|
||||
#include <date/date.h>
|
||||
#include <ewol/widget/meta/StdPopUp.h>
|
||||
#include <appl/Gui/WorkerSaveFile.h>
|
||||
#include <appl/Gui/WorkerSaveAllFile.h>
|
||||
#include <appl/Gui/WorkerCloseFile.h>
|
||||
#include <appl/Gui/WorkerCloseAllFile.h>
|
||||
#include <ewol/widget/Button.hpp>
|
||||
#include <ewol/widget/CheckBox.hpp>
|
||||
#include <ewol/widget/Sizer.hpp>
|
||||
#include <ewol/widget/Label.hpp>
|
||||
#include <ewol/widget/Entry.hpp>
|
||||
#include <ewol/widget/List.hpp>
|
||||
#include <ewol/widget/ContextMenu.hpp>
|
||||
#include <ewol/widget/PopUp.hpp>
|
||||
#include <ewol/widget/Spacer.hpp>
|
||||
#include <ewol/widget/Slider.hpp>
|
||||
#include <ewol/widget/Menu.hpp>
|
||||
#include <ewol/widget/meta/FileChooser.hpp>
|
||||
#include <ewol/widget/meta/Parameter.hpp>
|
||||
#include <ewol/widget/Manager.hpp>
|
||||
#include <ewol/object/Object.hpp>
|
||||
#include <ewol/context/Context.hpp>
|
||||
#include <ewol/widget/meta/StdPopUp.hpp>
|
||||
#include <appl/Gui/WorkerSaveFile.hpp>
|
||||
#include <appl/Gui/WorkerSaveAllFile.hpp>
|
||||
#include <appl/Gui/WorkerCloseFile.hpp>
|
||||
#include <appl/Gui/WorkerCloseAllFile.hpp>
|
||||
|
||||
namespace appl {
|
||||
std::string getVersion(void) {
|
||||
#define FIRST_YEAR (2010)
|
||||
std::string tmpOutput = std::to_string(date::getYear()-FIRST_YEAR);
|
||||
tmpOutput += ".";
|
||||
tmpOutput += std::to_string(date::getMonth());
|
||||
tmpOutput += ".";
|
||||
tmpOutput += std::to_string(date::getDay());
|
||||
return tmpOutput;
|
||||
etk::String getVersion() {
|
||||
return APPL_VERSION;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#include <ewol/widget/Label.hpp>
|
||||
#include <ewol/widget/Spacer.hpp>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "AboutGui"
|
||||
|
||||
#include <ewol/widget/Label.h>
|
||||
#include <ewol/widget/Spacer.h>
|
||||
|
||||
class ParameterAboutGui : public widget::Sizer {
|
||||
class ParameterAboutGui : public ewol::widget::Sizer {
|
||||
public :
|
||||
ParameterAboutGui(void) :
|
||||
widget::Sizer(widget::Sizer::modeVert) {
|
||||
widget::Spacer* mySpacer = NULL;
|
||||
ParameterAboutGui() {
|
||||
addObjectType("appl::ParameterAboutGui");
|
||||
}
|
||||
void init() {
|
||||
propertyMode.setDirectCheck(ewol::widget::Sizer::modeVert);
|
||||
ewol::widget::Sizer::init();
|
||||
ememory::SharedPtr<ewol::widget::Spacer> mySpacer;
|
||||
|
||||
mySpacer = new widget::Spacer();
|
||||
if (NULL == mySpacer) {
|
||||
mySpacer = ewol::widget::Spacer::create();
|
||||
if (mySpacer == null) {
|
||||
APPL_ERROR("Can not allocate widget == > display might be in error");
|
||||
} else {
|
||||
mySpacer->setExpand(bvec2(true,true));
|
||||
mySpacer->propertyExpand.set(bvec2(true,true));
|
||||
subWidgetAdd(mySpacer);
|
||||
}
|
||||
std::string tmpLabel = "<left>";
|
||||
etk::String tmpLabel = "<left>";
|
||||
tmpLabel += " <b>Editeur De N'ours</b> : v:";
|
||||
tmpLabel += appl::getVersion();
|
||||
tmpLabel += "<br/>";
|
||||
tmpLabel += " <b>Build Time</b> : ";
|
||||
tmpLabel += date::getYear();
|
||||
tmpLabel += "/";
|
||||
tmpLabel += date::getMonth();
|
||||
tmpLabel += "/";
|
||||
tmpLabel += date::getDay();
|
||||
tmpLabel += " ";
|
||||
tmpLabel += date::getHour();
|
||||
tmpLabel += "h";
|
||||
tmpLabel += date::getMinute();
|
||||
tmpLabel += "<br/>";
|
||||
tmpLabel += " <b>Website</b> : https://github.com/HeeroYui/edn<br/>";
|
||||
tmpLabel += " <b>License</b> : GPL v3<br/>";
|
||||
tmpLabel += " <b>Copyright</b> : 2010 Edouard DUPIN<br/>";
|
||||
@@ -93,320 +72,325 @@ class ParameterAboutGui : public widget::Sizer {
|
||||
tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>";
|
||||
tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>";
|
||||
tmpLabel += "</left>";
|
||||
widget::Label* myLabel = new widget::Label(tmpLabel);
|
||||
if (NULL == myLabel) {
|
||||
ememory::SharedPtr<ewol::widget::Label> myLabel = ewol::widget::Label::create();
|
||||
if (myLabel == null) {
|
||||
APPL_ERROR("Can not allocate widget == > display might be in error");
|
||||
} else {
|
||||
myLabel->setExpand(bvec2(true,false));
|
||||
myLabel->propertyValue.set(tmpLabel);
|
||||
myLabel->propertyExpand.set(bvec2(true,false));
|
||||
subWidgetAdd(myLabel);
|
||||
}
|
||||
};
|
||||
|
||||
~ParameterAboutGui(void) {
|
||||
~ParameterAboutGui() {
|
||||
|
||||
};
|
||||
};
|
||||
// Local main windows event :
|
||||
static const char* mainWindowsRequestSaveFile = "appl-event-main-windows-save-file";
|
||||
static const char* mainWindowsRequestSaveFileAs = "appl-event-main-windows-save-file-as";
|
||||
static const char* mainWindowsRequestcloseFileNoCheck = "appl-event-main-windows-close-file-no-check";
|
||||
|
||||
const char* l_smoothChick = "tmpEvent_smooth";
|
||||
const char* l_smoothMin = "tmpEvent_minChange";
|
||||
const char* l_smoothMax = "tmpEvent_maxChange";
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "MainWindows"
|
||||
|
||||
MainWindows::MainWindows(void) {
|
||||
MainWindows::MainWindows() {
|
||||
addObjectType("appl::MainWindows");
|
||||
}
|
||||
|
||||
void MainWindows::init() {
|
||||
ewol::widget::Windows::init();
|
||||
APPL_DEBUG("CREATE WINDOWS ... ");
|
||||
widget::Sizer * mySizerVert = NULL;
|
||||
widget::Sizer * mySizerVert2 = NULL;
|
||||
widget::Sizer * mySizerHori = NULL;
|
||||
//ewol::Button * myButton = NULL;
|
||||
appl::TextViewer * myTextView = NULL;
|
||||
BufferView * myBufferView = NULL;
|
||||
widget::Menu * myMenu = NULL;
|
||||
ewol::widget::SizerShared mySizerVert;
|
||||
ewol::widget::SizerShared mySizerVert2;
|
||||
ewol::widget::SizerShared mySizerHori;
|
||||
ememory::SharedPtr<appl::TextViewer> myTextView;
|
||||
ememory::SharedPtr<appl::TextViewer> myTextView2;
|
||||
ewol::widget::MenuShared myMenu;
|
||||
|
||||
// load buffer manager:
|
||||
m_bufferManager = appl::BufferManager::keep();
|
||||
m_bufferManager = appl::BufferManager::create();
|
||||
m_viewerManager = appl::ViewerManager::create();
|
||||
|
||||
mySizerVert = new widget::Sizer(widget::Sizer::modeVert);
|
||||
mySizerVert = ewol::widget::Sizer::create();
|
||||
mySizerVert->propertyName.set("plop 1111111");
|
||||
mySizerVert->propertyMode.set(ewol::widget::Sizer::modeVert);
|
||||
setSubWidget(mySizerVert);
|
||||
|
||||
mySizerHori = new widget::Sizer(widget::Sizer::modeHori);
|
||||
mySizerHori = ewol::widget::Sizer::create();
|
||||
mySizerHori->propertyName.set("plop 222222222");
|
||||
mySizerHori->propertyMode.set(ewol::widget::Sizer::modeHori);
|
||||
mySizerVert->subWidgetAdd(mySizerHori);
|
||||
myBufferView = new BufferView();
|
||||
myBufferView->setExpand(bvec2(false,true));
|
||||
myBufferView->setFill(bvec2(true,true));
|
||||
mySizerHori->subWidgetAdd(myBufferView);
|
||||
|
||||
mySizerVert2 = new widget::Sizer(widget::Sizer::modeVert);
|
||||
m_viewBuffer = appl::widget::BufferList::create();
|
||||
m_viewBuffer->propertyHide.set(true);
|
||||
m_viewBuffer->propertyName.set("appl-buffer-view");
|
||||
m_viewBuffer->propertyExpand.set(bvec2(false,true));
|
||||
m_viewBuffer->propertyFill.set(bvec2(true,true));
|
||||
//m_viewBuffer->propertyMinSize.set(gale::Dimension(vec2(300,2), gale::distance::pixel));
|
||||
mySizerHori->subWidgetAdd(m_viewBuffer);
|
||||
|
||||
m_viewTree = appl::widget::BufferTree::create();
|
||||
m_viewTree->propertyName.set("appl-tree-view");
|
||||
//m_viewTree->propertyHide.set(true);
|
||||
m_viewTree->propertyExpand.set(bvec2(false,true));
|
||||
m_viewTree->propertyFill.set(bvec2(true,true));
|
||||
m_viewTree->propertyMinSize.set(gale::Dimension(vec2(300,2), gale::distance::pixel));
|
||||
mySizerHori->subWidgetAdd(m_viewTree);
|
||||
|
||||
ewol::widget::SpacerShared mySpacer = ewol::widget::Spacer::create();
|
||||
mySpacer->propertyName.set("appl-Buffer-viewer-separator");
|
||||
mySpacer->propertyColor.set(etk::color::black);
|
||||
mySpacer->propertyMinSize.set(gale::Dimension(vec2(2,2), gale::distance::pixel));
|
||||
mySpacer->propertyExpand.set(bvec2(false,true));
|
||||
mySpacer->propertyFill.set(bvec2(true,true));
|
||||
//mySpacer->propertyHide.set(true);
|
||||
mySizerHori->subWidgetAdd(mySpacer);
|
||||
|
||||
mySizerVert2 = ewol::widget::Sizer::create();
|
||||
mySizerVert2->propertyMode.set(ewol::widget::Sizer::modeVert);
|
||||
mySizerHori->subWidgetAdd(mySizerVert2);
|
||||
|
||||
mySizerVert2->propertyName.set("appl-view-code-sizer");
|
||||
// main buffer Area :
|
||||
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11);
|
||||
myTextView->setExpand(bvec2(true,true));
|
||||
myTextView->setFill(bvec2(true,true));
|
||||
mySizerVert2->subWidgetAdd(myTextView);
|
||||
/*
|
||||
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11);
|
||||
myTextView->setExpand(bvec2(true,true));
|
||||
myTextView->setFill(bvec2(true,true));
|
||||
mySizerVert2->subWidgetAdd(myTextView);
|
||||
*/
|
||||
// search area :
|
||||
Search * mySearch = new Search();
|
||||
mySizerVert2->subWidgetAdd(mySearch);
|
||||
#ifdef APPL_BUFFER_FONT_DISTANCE_FIELD
|
||||
{
|
||||
widget::Sizer * mySizerHori2 = new widget::Sizer(widget::Sizer::modeHori);
|
||||
mySizerVert2->subWidgetAdd(mySizerHori2);
|
||||
|
||||
widget::CheckBox* tmpCheck = new widget::CheckBox("smooth");
|
||||
mySizerHori2->subWidgetAdd(tmpCheck);
|
||||
tmpCheck->registerOnEvent(this, ewolEventCheckBoxClicked, l_smoothChick);
|
||||
|
||||
widget::Slider* tmpSlider = new widget::Slider();
|
||||
mySizerHori2->subWidgetAdd(tmpSlider);
|
||||
tmpSlider->registerOnEvent(this, ewolEventSliderChange, l_smoothMin);
|
||||
tmpSlider->setExpand(bvec2(true,false));
|
||||
tmpSlider->setMin(0);
|
||||
tmpSlider->setMax(1000);
|
||||
tmpSlider->setValue(0450);
|
||||
tmpSliderMin = tmpSlider;
|
||||
|
||||
tmpSlider = new widget::Slider();
|
||||
mySizerHori2->subWidgetAdd(tmpSlider);
|
||||
tmpSlider->registerOnEvent(this, ewolEventSliderChange, l_smoothMax);
|
||||
tmpSlider->setExpand(bvec2(true,false));
|
||||
tmpSlider->setMin(0);
|
||||
tmpSlider->setMax(1000);
|
||||
tmpSlider->setValue(0550);
|
||||
tmpSliderMax = tmpSlider;
|
||||
}
|
||||
#if defined(__TARGET_OS__Android)
|
||||
int32_t sizeText = 16;
|
||||
#else
|
||||
int32_t sizeText = 11;
|
||||
#endif
|
||||
myTextView2 = appl::TextViewer::create("font-size", sizeText);
|
||||
myTextView2->propertyName.set("appl-text-viewer2");
|
||||
myTextView2->propertyExpand.set(bvec2(true,true));
|
||||
myTextView2->propertyFill.set(bvec2(true,true));
|
||||
myTextView2->propertyHide.set(true);
|
||||
mySizerVert2->subWidgetAdd(myTextView2);
|
||||
|
||||
mySizerHori = new widget::Sizer(widget::Sizer::modeHori);
|
||||
mySpacer = ewol::widget::Spacer::create();
|
||||
mySpacer->propertyName.set("appl-text-separator");
|
||||
mySpacer->propertyColor.set(etk::color::black);
|
||||
mySpacer->propertyMinSize.set(gale::Dimension(vec2(2,2), gale::distance::pixel));
|
||||
mySpacer->propertyExpand.set(bvec2(true,false));
|
||||
mySpacer->propertyFill.set(bvec2(true,true));
|
||||
mySpacer->propertyHide.set(true);
|
||||
mySizerVert2->subWidgetAdd(mySpacer);
|
||||
|
||||
myTextView = appl::TextViewer::create("font-size", sizeText);
|
||||
myTextView->propertyName.set("appl-text-viewer1");
|
||||
myTextView->propertyExpand.set(bvec2(true,true));
|
||||
myTextView->propertyFill.set(bvec2(true,true));
|
||||
mySizerVert2->subWidgetAdd(myTextView);
|
||||
|
||||
// search area:
|
||||
m_widgetSearch = appl::widget::Search::create();
|
||||
m_widgetSearch->propertyExpand.set(bvec2(true,false));
|
||||
m_widgetSearch->propertyFill.set(bvec2(true,true));
|
||||
mySizerVert2->subWidgetAdd(m_widgetSearch);
|
||||
|
||||
mySizerHori = ewol::widget::Sizer::create();
|
||||
mySizerHori->propertyName.set("plop 555555");
|
||||
mySizerHori->propertyMode.set(ewol::widget::Sizer::modeHori);
|
||||
mySizerVert->subWidgetAdd(mySizerHori);
|
||||
|
||||
myMenu = new widget::Menu();
|
||||
myMenu = ewol::widget::Menu::create();
|
||||
myMenu->propertyName.set("appl-menu-interface");
|
||||
mySizerHori->subWidgetAdd(myMenu);
|
||||
int32_t idMenuFile = myMenu->addTitle("File");
|
||||
(void)myMenu->add(idMenuFile, "New", "", ednMsgGuiNew);
|
||||
(void)myMenu->addSpacer();
|
||||
(void)myMenu->add(idMenuFile, "Open", "THEME:GUI:Load.svg", ednMsgGuiOpen);
|
||||
(void)myMenu->add(idMenuFile, "Close", "THEME:GUI:Close.svg", ednMsgGuiClose, "current");
|
||||
(void)myMenu->add(idMenuFile, "Close (all)", "", ednMsgGuiClose, "All");
|
||||
(void)myMenu->add(idMenuFile, "Save", "THEME:GUI:Save.svg", ednMsgGuiSave, "current");
|
||||
(void)myMenu->add(idMenuFile, "Save As ...", "", ednMsgGuiSaveAs);
|
||||
(void)myMenu->addSpacer();
|
||||
//(void)myMenu->add(idMenuFile, "Exit", "", ednMsgGuiExit);
|
||||
(void)myMenu->addSpacer();
|
||||
(void)myMenu->add(idMenuFile, "Properties", "THEME:GUI:Parameter.svg", ednMsgProperties);
|
||||
int32_t idMenuEdit = myMenu->addTitle("Edit");
|
||||
(void)myMenu->add(idMenuEdit, "Undo", "THEME:GUI:Undo.svg", ednMsgGuiUndo);
|
||||
(void)myMenu->add(idMenuEdit, "Redo", "THEME:GUI:Redo.svg", ednMsgGuiRedo);
|
||||
(void)myMenu->addSpacer();
|
||||
(void)myMenu->add(idMenuEdit, "Copy", "", ednMsgGuiCopy, "STD");
|
||||
(void)myMenu->add(idMenuEdit, "Cut", "", ednMsgGuiCut, "STD");
|
||||
(void)myMenu->add(idMenuEdit, "Paste", "", ednMsgGuiPaste, "STD");
|
||||
(void)myMenu->add(idMenuEdit, "Remove", "", ednMsgGuiRm);
|
||||
(void)myMenu->addSpacer();
|
||||
(void)myMenu->add(idMenuEdit, "Select All","", ednMsgGuiSelect, "ALL");
|
||||
(void)myMenu->add(idMenuEdit, "Un-Select","", ednMsgGuiSelect, "NONE");
|
||||
(void)myMenu->add(idMenuEdit, "Goto line ...","", ednMsgGuiGotoLine, "???");
|
||||
int32_t idMenuSearch = myMenu->addTitle("Search");
|
||||
(void)myMenu->add(idMenuSearch, "Search", "THEME:GUI:Search.svg", ednMsgGuiSearch);
|
||||
(void)myMenu->add(idMenuSearch, "Replace", "THEME:GUI:Replace.svg", ednMsgGuiReplace);
|
||||
(void)myMenu->addSpacer();
|
||||
(void)myMenu->add(idMenuSearch, "Find (previous)","", ednMsgGuiFind, "Previous");
|
||||
(void)myMenu->add(idMenuSearch, "Find (next)", "", ednMsgGuiFind, "Next");
|
||||
(void)myMenu->add(idMenuSearch, "Find (all)", "", ednMsgGuiFind, "All");
|
||||
(void)myMenu->add(idMenuSearch, "Un-Select", "", ednMsgGuiFind, "None");
|
||||
/* ==> must be in the pluggin list control ...
|
||||
int32_t idMenuCTags = myMenu->addTitle("C-tags");
|
||||
(void)myMenu->add(idMenuCTags, "Load", "", ednMsgGuiCtags, "Load");
|
||||
(void)myMenu->add(idMenuCTags, "ReLoad", "", ednMsgGuiCtags, "ReLoad");
|
||||
(void)myMenu->add(idMenuCTags, "Jump", "", ednMsgGuiCtags, "Jump");
|
||||
(void)myMenu->add(idMenuCTags, "Back", "", ednMsgGuiCtags, "Back");
|
||||
*/
|
||||
int32_t idMenugDisplay = myMenu->addTitle("Display");
|
||||
(void)myMenu->add(idMenugDisplay, "Color Black", "", appl::MsgNameGuiChangeColor, "colorBlack/");
|
||||
(void)myMenu->add(idMenugDisplay, "Color White", "", appl::MsgNameGuiChangeColor, "colorWhite/");
|
||||
(void)myMenu->addSpacer();
|
||||
(void)myMenu->add(idMenugDisplay, "Reload openGl Shader", "", ednMsgGuiReloadShader);
|
||||
|
||||
m_widgetLabelFileName = new widget::Label("FileName");
|
||||
m_widgetLabelFileName->setExpand(bvec2(true,false));
|
||||
m_widgetLabelFileName->setFill(bvec2(true,false));;
|
||||
int32_t idMenuFile = myMenu->addTitle("_T{File}");
|
||||
myMenu->add(idMenuFile, "_T{New}", "", "menu:new");
|
||||
myMenu->addSpacer(idMenuFile);
|
||||
myMenu->add(idMenuFile, "_T{Open}", "THEME_GUI:///Load.svg", "menu:open");
|
||||
myMenu->add(idMenuFile, "_T{Close}", "THEME_GUI:///Close.svg", "menu:close");
|
||||
myMenu->add(idMenuFile, "_T{Close (all)}", "", "menu:close-all");
|
||||
myMenu->add(idMenuFile, "_T{Save}", "THEME_GUI:///Save.svg", "menu:save");
|
||||
myMenu->add(idMenuFile, "_T{Save As ...}", "", "menu:save-as");
|
||||
myMenu->addSpacer(idMenuFile);
|
||||
myMenu->add(idMenuFile, "_T{Properties}", "THEME_GUI:///Parameter.svg", "menu:property");
|
||||
myMenu->addSpacer(idMenuFile);
|
||||
myMenu->add(idMenuFile, "_T{Exit}", "", "menu:exit");
|
||||
int32_t idMenuEdit = myMenu->addTitle("_T{Edit}");
|
||||
myMenu->add(idMenuEdit, "_T{Goto line ...}","", "menu:goto-line");
|
||||
myMenu->addSpacer();
|
||||
int32_t idMenuSearch = myMenu->addTitle("_T{Search}");
|
||||
myMenu->add(idMenuSearch, "_T{Search}", "THEME_GUI:///Search.svg", "menu:search");
|
||||
myMenu->add(idMenuSearch, "_T{Replace}", "THEME_GUI:///Replace.svg", "menu:replace");
|
||||
myMenu->addSpacer(idMenuSearch);
|
||||
myMenu->add(idMenuSearch, "_T{Find (previous)}","", "menu:find:previous");
|
||||
myMenu->add(idMenuSearch, "_T{Find (next)}", "", "menu:find:next");
|
||||
myMenu->add(idMenuSearch, "_T{Find (all)}", "", "menu:find:all");
|
||||
myMenu->add(idMenuSearch, "_T{Un-Select}", "", "menu:find:none");
|
||||
int32_t idMenugDisplay = myMenu->addTitle("_T{Display}");
|
||||
myMenu->add(idMenugDisplay, "_T{Tree view}", "", "menu:view:tree");
|
||||
myMenu->add(idMenugDisplay, "_T{Buffer view}", "", "menu:view:buffer");
|
||||
myMenu->add(idMenugDisplay, "_T{Tree view: Show un-needed}", "", "menu:view:tree:ShowUnneeded");
|
||||
myMenu->add(idMenugDisplay, "_T{Tree view: Hide un-needed}", "", "menu:view:tree:HideUnneeded");
|
||||
myMenu->addSpacer(idMenugDisplay);
|
||||
myMenu->add(idMenugDisplay, "_T{Color Black}", "", "menu:color:color/black/");
|
||||
myMenu->add(idMenugDisplay, "_T{Color White}", "", "menu:color:color/white/");
|
||||
myMenu->add(idMenugDisplay, "_T{Shape square}", "", "menu:shape:shape/square/");
|
||||
myMenu->add(idMenugDisplay, "_T{Shape round}", "", "menu:shape:shape/round/");
|
||||
myMenu->addSpacer(idMenugDisplay);
|
||||
myMenu->add(idMenugDisplay, "_T{Reload openGl Shader}", "", "menu:reloadShape");
|
||||
myMenu->addSpacer(idMenugDisplay);
|
||||
myMenu->add(idMenugDisplay, "_T{Split}", "", "menu:split:enable");
|
||||
myMenu->add(idMenugDisplay, "_T{Unsplit}", "", "menu:split:disable");
|
||||
myMenu->add(idMenugDisplay, "_T{Vertical}", "", "menu:split:vert");
|
||||
myMenu->add(idMenugDisplay, "_T{Horizontal}", "", "menu:split:hori");
|
||||
myMenu->signalSelect.connect(sharedFromThis(), &MainWindows::onCallbackMenuEvent);
|
||||
m_widgetLabelFileName = ewol::widget::Label::create();
|
||||
m_widgetLabelFileName->propertyValue.set("FileName");
|
||||
m_widgetLabelFileName->propertyName.set("appl-widget-display-name");
|
||||
m_widgetLabelFileName->propertyExpand.set(bvec2(true,false));
|
||||
m_widgetLabelFileName->propertyFill.set(bvec2(true,false));;
|
||||
mySizerHori->subWidgetAdd(m_widgetLabelFileName);
|
||||
|
||||
|
||||
// add generic shortcut ...
|
||||
// (shift, control, alt, meta, char32_t unicodeValue, const char * generateEventId, std::string& data)
|
||||
shortCutAdd("ctrl+o", ednMsgGuiOpen, "", true);
|
||||
shortCutAdd("ctrl+n", ednMsgGuiNew, "", true);
|
||||
shortCutAdd("ctrl+b", "menu:view:toggle");
|
||||
|
||||
shortCutAdd("ctrl+s", ednMsgGuiSave, "current", true);
|
||||
shortCutAdd("ctrl+shift+s", ednMsgGuiSave, "All", true);
|
||||
shortCutAdd("ctrl+o", "menu:open");
|
||||
shortCutAdd("ctrl+n", "menu:new");
|
||||
|
||||
shortCutAdd("ctrl+q", ednMsgGuiClose, "current", true);
|
||||
shortCutAdd("ctrl+shift+q", ednMsgGuiClose, "All", true);
|
||||
shortCutAdd("ctrl+s", "menu:save");
|
||||
shortCutAdd("ctrl+shift+s", "menu:save-all");
|
||||
|
||||
shortCutAdd("ctrl+z", ednMsgGuiUndo, "", true);
|
||||
shortCutAdd("ctrl+shift+z", ednMsgGuiRedo, "", true);
|
||||
shortCutAdd("ctrl+q", "menu:close");
|
||||
shortCutAdd("ctrl+shift+q", "menu:close-all");
|
||||
|
||||
shortCutAdd("ctrl+l", ednMsgGuiGotoLine, "???", true);
|
||||
shortCutAdd("ctrl+l", "menu:goto-line");
|
||||
|
||||
shortCutAdd("ctrl+f", ednMsgGuiSearch, "", true);
|
||||
shortCutAdd("F12", ednMsgGuiReloadShader, "", true);
|
||||
|
||||
//shortCutAdd("ctrl+d", ednMsgGuiCtags, "Jump", true);
|
||||
|
||||
|
||||
|
||||
// Generic event ...
|
||||
registerMultiCast(ednMsgGuiSave);
|
||||
registerMultiCast(ednMsgGuiSaveAs);
|
||||
registerMultiCast(ednMsgProperties);
|
||||
registerMultiCast(ednMsgGuiNew);
|
||||
registerMultiCast(ednMsgGuiOpen);
|
||||
registerMultiCast(ednMsgGuiClose);
|
||||
// to update the title ...
|
||||
registerMultiCast(ednMsgBufferState);
|
||||
registerMultiCast(ednMsgBufferId);
|
||||
registerMultiCast(ednMsgGuiReloadShader);
|
||||
registerMultiCast(appl::MsgNameGuiChangeColor);
|
||||
registerMultiCast(appl::MsgSelectNewFile);
|
||||
shortCutAdd("ctrl+f", "menu:search");
|
||||
shortCutAdd("alt+F12", "menu:reloade-shader");
|
||||
shortCutAdd("alt+F4", "menu:exit");
|
||||
// TODO : auto-connect on shortcut event ==> maybe do beter later ...
|
||||
signalShortcut.connect(sharedFromThis(), &MainWindows::onCallbackShortCut);
|
||||
m_bufferManager->signalSelectFile.connect(sharedFromThis(), &MainWindows::onCallbackselectNewFile);
|
||||
}
|
||||
|
||||
|
||||
MainWindows::~MainWindows(void) {
|
||||
appl::BufferManager::release(m_bufferManager);
|
||||
MainWindows::~MainWindows() {
|
||||
|
||||
}
|
||||
|
||||
void MainWindows::onCallbackShortCut(const etk::String& _value) {
|
||||
APPL_WARNING("Event from ShortCut : " << _value);
|
||||
onCallbackMenuEvent(_value);
|
||||
}
|
||||
|
||||
const char *const ednEventPopUpFileSelected = "edn-mainWindows-openSelected";
|
||||
const char *const ednEventPopUpFileSaveAs = "edn-mainWindows-saveAsSelected";
|
||||
|
||||
|
||||
void MainWindows::onReceiveMessage(const ewol::EMessage& _msg) {
|
||||
ewol::Windows::onReceiveMessage(_msg);
|
||||
|
||||
APPL_VERBOSE("Receive Event from the main windows: " << _msg );
|
||||
// open file Section ...
|
||||
if (_msg.getMessage() == ednMsgGuiOpen) {
|
||||
widget::FileChooser* tmpWidget = new widget::FileChooser();
|
||||
if (tmpWidget == NULL) {
|
||||
APPL_ERROR("Can not open File chooser !!! ");
|
||||
void MainWindows::onCallbackMenuEvent(const etk::String& _value) {
|
||||
APPL_WARNING("Event from Menu : " << _value);
|
||||
if (_value == "menu:new") {
|
||||
if (m_bufferManager != null) {
|
||||
m_bufferManager->createNewBuffer();
|
||||
}
|
||||
} else if (_value == "menu:exit") {
|
||||
gale::getContext().stop();
|
||||
} else if (_value == "menu:open") {
|
||||
displayOpen();
|
||||
} else if (_value == "menu:close") {
|
||||
ememory::SharedPtr<appl::WorkerCloseFile> worker = appl::WorkerCloseFile::create();
|
||||
worker->startAction("");
|
||||
} else if (_value == "menu:close-all") {
|
||||
appl::WorkerCloseAllFile::create();
|
||||
} else if (_value == "menu:save") {
|
||||
appl::WorkerSaveFile::create("", false);
|
||||
} else if (_value == "menu:save-all") {
|
||||
appl::WorkerSaveAllFile::create();
|
||||
} else if (_value == "menu:save-as") {
|
||||
appl::WorkerSaveFile::create("", true);
|
||||
} else if (_value == "menu:property") {
|
||||
displayProperty();
|
||||
} else if (_value == "menu:search") {
|
||||
if (m_widgetSearch == null) {
|
||||
return;
|
||||
}
|
||||
tmpWidget->setTitle("Open files ...");
|
||||
tmpWidget->setValidateLabel("Open");
|
||||
if (m_bufferManager == NULL) {
|
||||
APPL_ERROR("can not call unexistant buffer manager ... ");
|
||||
return;
|
||||
}
|
||||
// Get a ref on the buffer selected (if null, no buffer was selected ...)
|
||||
appl::Buffer* tmpBuffer = m_bufferManager->getBufferSelected();
|
||||
if (tmpBuffer != NULL) {
|
||||
etk::FSNode tmpFile = tmpBuffer->getFileName();
|
||||
tmpWidget->setFolder(tmpFile.getNameFolder());
|
||||
}
|
||||
// apply widget pop-up ...
|
||||
popUpWidgetPush(tmpWidget);
|
||||
tmpWidget->registerOnEvent(this, widget::FileChooser::eventValidate, ednEventPopUpFileSelected);
|
||||
} else if (_msg.getMessage() == ednMsgProperties) {
|
||||
// Request the parameter GUI
|
||||
widget::Parameter* tmpWidget = new widget::Parameter();
|
||||
if (NULL == tmpWidget) {
|
||||
APPL_ERROR("Can not allocate widget == > display might be in error");
|
||||
if (m_widgetSearch->propertyHide.get() == true) {
|
||||
m_widgetSearch->propertyHide.set(false);
|
||||
m_widgetSearch->selectSearch();
|
||||
} else {
|
||||
tmpWidget->setTitle("Properties");
|
||||
popUpWidgetPush(tmpWidget);
|
||||
tmpWidget->menuAddGroup("Editor");
|
||||
ewol::Widget* tmpSubWidget = new globals::ParameterGlobalsGui();
|
||||
tmpWidget->menuAdd("Editor", "", tmpSubWidget);
|
||||
tmpWidget->menuAdd("Font & Color", "", NULL);
|
||||
tmpWidget->menuAdd("Highlight", "", NULL);
|
||||
tmpWidget->menuAddGroup("General");
|
||||
tmpWidget->menuAdd("Display", "", NULL);
|
||||
tmpSubWidget = new ParameterAboutGui();
|
||||
tmpWidget->menuAdd("About", "", tmpSubWidget);
|
||||
if (m_widgetSearch->isSelectSearch()) {
|
||||
m_widgetSearch->propertyHide.set(true);
|
||||
if (m_viewerManager != null) {
|
||||
ememory::SharedPtr<appl::TextViewer> tmp = m_viewerManager->getViewerSelected();
|
||||
if (tmp != null) {
|
||||
tmp->keepFocus();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
m_widgetSearch->selectSearch();
|
||||
}
|
||||
}
|
||||
} else if (_msg.getMessage() == appl::MsgNameGuiChangeColor) {
|
||||
etk::theme::setName("COLOR", _msg.getData());
|
||||
} else if (_value == "menu:replace") {
|
||||
if (m_widgetSearch == null) {
|
||||
return;
|
||||
}
|
||||
if (m_widgetSearch->propertyHide.get() == true) {
|
||||
m_widgetSearch->propertyHide.set(false);
|
||||
m_widgetSearch->selectReplace();
|
||||
} else {
|
||||
if (m_widgetSearch->isSelectReplace()) {
|
||||
m_widgetSearch->propertyHide.set(true);
|
||||
if (m_viewerManager != null) {
|
||||
ememory::SharedPtr<appl::TextViewer> tmp = m_viewerManager->getViewerSelected();
|
||||
if (tmp != null) {
|
||||
tmp->keepFocus();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
m_widgetSearch->selectReplace();
|
||||
}
|
||||
}
|
||||
} else if (_value == "menu:view:buffer") {
|
||||
m_viewTree->propertyHide.set(true);
|
||||
m_viewBuffer->propertyHide.set(false);
|
||||
} else if (_value == "menu:view:tree") {
|
||||
m_viewTree->propertyHide.set(false);
|
||||
m_viewBuffer->propertyHide.set(true);
|
||||
} else if (_value == "menu:view:toggle") {
|
||||
m_viewTree->propertyHide.set(m_viewTree->propertyHide.get() == false);
|
||||
m_viewBuffer->propertyHide.set(m_viewBuffer->propertyHide.get() == false);
|
||||
} else if (_value == "menu:view:tree:ShowUnneeded") {
|
||||
propertySetOnWidgetNamed("appl-tree-view", "show-un-needed", "true");
|
||||
} else if (_value == "menu:view:tree:HideUnneeded") {
|
||||
propertySetOnWidgetNamed("appl-tree-view", "show-un-needed", "false");
|
||||
} else if (_value == "menu:find:previous") {
|
||||
APPL_TODO("Event from Menu : " << _value);
|
||||
} else if (_value == "menu:find:next") {
|
||||
APPL_TODO("Event from Menu : " << _value);
|
||||
} else if (_value == "menu:find:all") {
|
||||
APPL_TODO("Event from Menu : " << _value);
|
||||
} else if (_value == "menu:find:none") {
|
||||
APPL_TODO("Event from Menu : " << _value);
|
||||
} else if ( _value == "menu:color:color/black/"
|
||||
|| _value == "menu:color:color/white/") {
|
||||
EWOL_TODO("etk::theme::setName(\"COLOR\", etk::String(_value, 11));");
|
||||
EWOL_ERROR("Select Shape or Color : 'COLOR'='" << etk::String(_value, 11) << "'");
|
||||
ewol::getContext().getResourcesManager().reLoadResources();
|
||||
ewol::getContext().forceRedrawAll();
|
||||
} else if (_msg.getMessage() == ednMsgGuiReloadShader) {
|
||||
} else if ( _value == "menu:shape:shape/square/"
|
||||
|| _value == "menu:shape:shape/round/") {
|
||||
EWOL_ERROR("Select Shape or Color : 'GUI'='" << etk::String(_value, 11) << "'");
|
||||
EWOL_TODO("etk::theme::setName(\"GUI\", etk::String(_value, 11));");
|
||||
ewol::getContext().getResourcesManager().reLoadResources();
|
||||
ewol::getContext().forceRedrawAll();
|
||||
} else if (_msg.getMessage() == ednMsgGuiExit) {
|
||||
// TODO : ...
|
||||
} else if (_value == "menu:reloadShape") {
|
||||
ewol::getContext().getResourcesManager().reLoadResources();
|
||||
ewol::getContext().forceRedrawAll();
|
||||
} else if (_value == "menu:split:enable") {
|
||||
propertySetOnWidgetNamed("appl-text-viewer2", "hide", "false");
|
||||
propertySetOnWidgetNamed("appl-text-separator", "hide", "false");
|
||||
} else if (_value == "menu:split:disable") {
|
||||
propertySetOnWidgetNamed("appl-text-viewer2", "hide", "true");
|
||||
propertySetOnWidgetNamed("appl-text-separator", "hide", "true");
|
||||
} else if (_value == "menu:split:vert") {
|
||||
propertySetOnWidgetNamed("appl-view-code-sizer", "mode", "vert");
|
||||
propertySetOnWidgetNamed("appl-text-separator", "expand", "true,false");
|
||||
} else if (_value == "menu:split:hori") {
|
||||
propertySetOnWidgetNamed("appl-view-code-sizer", "mode", "hori");
|
||||
propertySetOnWidgetNamed("appl-text-separator", "expand", "false,true");
|
||||
} else if (_value == "menu:reloade-shader") {
|
||||
ewol::getContext().getResourcesManager().reLoadResources();
|
||||
ewol::getContext().forceRedrawAll();
|
||||
} else {
|
||||
APPL_ERROR("Event from Menu UNKNOW : '" << _value << "'");
|
||||
}
|
||||
// Note : Fore all next message we need to acces to the buffer manager ==> just check one time ...
|
||||
if (m_bufferManager == NULL) {
|
||||
APPL_ERROR("can not call unexistant buffer manager ... ");
|
||||
return;
|
||||
}
|
||||
if ( _msg.getMessage() == appl::MsgSelectNewFile
|
||||
|| _msg.getMessage() == appl::Buffer::eventIsModify
|
||||
|| _msg.getMessage() == appl::Buffer::eventIsSave
|
||||
|| _msg.getMessage() == appl::Buffer::eventChangeName) {
|
||||
// select a new Buffer ==> change title:
|
||||
appl::Buffer* tmpp = m_bufferManager->getBufferSelected();
|
||||
if (tmpp == NULL) {
|
||||
setTitle("Edn");
|
||||
if (m_widgetLabelFileName != NULL) {
|
||||
m_widgetLabelFileName->setLabel("");
|
||||
}
|
||||
} else {
|
||||
if (_msg.getMessage() == appl::MsgSelectNewFile) {
|
||||
tmpp->registerOnEvent(this, appl::Buffer::eventIsModify);
|
||||
tmpp->registerOnEvent(this, appl::Buffer::eventIsSave);
|
||||
tmpp->registerOnEvent(this, appl::Buffer::eventChangeName);
|
||||
}
|
||||
setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + tmpp->getFileName());
|
||||
if (m_widgetLabelFileName != NULL) {
|
||||
m_widgetLabelFileName->setLabel(tmpp->getFileName() + (tmpp->isModify()==true?" *":""));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else if (_msg.getMessage() == ednMsgGuiNew) {
|
||||
(void)m_bufferManager->createNewBuffer();
|
||||
} else if (_msg.getMessage() == ednEventPopUpFileSelected) {
|
||||
APPL_DEBUG("Request opening the file : " << _msg.getData());
|
||||
m_bufferManager->open(_msg.getData());
|
||||
} else if (_msg.getMessage() == ednMsgGuiSave) {
|
||||
APPL_DEBUG("Request saving the file : " << _msg.getData());
|
||||
if (to_lower(_msg.getData()) == "current") {
|
||||
appl::WorkerSaveFile* tmpWorker = new appl::WorkerSaveFile("", false);
|
||||
return;
|
||||
} else if (to_lower(_msg.getData()) == "all") {
|
||||
appl::WorkerSaveAllFile* tmpWorker = new appl::WorkerSaveAllFile();
|
||||
return;
|
||||
} else {
|
||||
APPL_ERROR("UNKNOW request : " << _msg);
|
||||
}
|
||||
} else if (_msg.getMessage() == ednMsgGuiSaveAs) {
|
||||
appl::WorkerSaveFile* tmpWorker = new appl::WorkerSaveFile("", true);
|
||||
} else if (_msg.getMessage() == ednMsgGuiClose) {
|
||||
// Get a ref on the buffer selected (if null, no buffer was selected ...)
|
||||
if (_msg.getData() == "current") {
|
||||
appl::WorkerCloseFile* tmpWorker = new appl::WorkerCloseFile("");
|
||||
} else {
|
||||
appl::WorkerCloseAllFile* tmpWorker = new appl::WorkerCloseAllFile();
|
||||
}
|
||||
}
|
||||
/* TODO :
|
||||
} else if (_msg.getMessage() == mainWindowsRequestSaveFile) { // return after a choice of close...
|
||||
if (m_bufferManager->exist(_msg.getData()) == false) {
|
||||
APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
|
||||
return;
|
||||
}
|
||||
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData());
|
||||
if (tmpBuffer == NULL) {
|
||||
ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
|
||||
if (tmpBuffer == null) {
|
||||
APPL_ERROR("Error to get the buffer : " << _msg.getData());
|
||||
return;
|
||||
}
|
||||
@@ -424,8 +408,8 @@ void MainWindows::onReceiveMessage(const ewol::EMessage& _msg) {
|
||||
APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
|
||||
return;
|
||||
}
|
||||
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData());
|
||||
if (tmpBuffer == NULL) {
|
||||
ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
|
||||
if (tmpBuffer == null) {
|
||||
APPL_ERROR("Error to get the buffer : " << _msg.getData());
|
||||
return;
|
||||
}
|
||||
@@ -435,64 +419,158 @@ void MainWindows::onReceiveMessage(const ewol::EMessage& _msg) {
|
||||
APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
|
||||
return;
|
||||
}
|
||||
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData());
|
||||
if (tmpBuffer == NULL) {
|
||||
ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
|
||||
if (tmpBuffer == null) {
|
||||
APPL_ERROR("Error to get the buffer : " << _msg.getData());
|
||||
return;
|
||||
}
|
||||
// note: just remove ==> no check : normal case ...
|
||||
tmpBuffer->removeObject();
|
||||
//tmpBuffer->removeObject();
|
||||
EWOL_TODO("call remove buffer ...");
|
||||
}
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
void MainWindows::saveAsPopUp(appl::Buffer* _buffer) {
|
||||
if (_buffer == NULL) {
|
||||
APPL_ERROR("Call With NULL input...");
|
||||
void MainWindows::displayOpen() {
|
||||
ememory::SharedPtr<ewol::widget::FileChooser> tmpWidget = ewol::widget::FileChooser::create();
|
||||
if (tmpWidget == null) {
|
||||
APPL_ERROR("Can not open File chooser !!! ");
|
||||
return;
|
||||
}
|
||||
appl::WorkerSaveFile* tmpObject = new appl::WorkerSaveFile(_buffer->getFileName());
|
||||
}
|
||||
|
||||
void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) {
|
||||
if (_buffer == NULL) {
|
||||
APPL_ERROR("Call With NULL input...");
|
||||
tmpWidget->propertyLabelTitle.set("_T{Open files ...}");
|
||||
tmpWidget->propertyLabelValidate.set("_T{Open}");
|
||||
if (m_bufferManager == null) {
|
||||
APPL_ERROR("can not call unexistant buffer manager ... ");
|
||||
return;
|
||||
}
|
||||
widget::StdPopUp* tmpPopUp = new widget::StdPopUp();
|
||||
if (tmpPopUp == NULL) {
|
||||
// Get a ref on the buffer selected (if null, no buffer was selected ...)
|
||||
ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->getBufferSelected();
|
||||
if (tmpBuffer != null) {
|
||||
tmpWidget->propertyPath.set(tmpBuffer->getFileName().getParent());
|
||||
}
|
||||
// apply widget pop-up ...
|
||||
popUpWidgetPush(tmpWidget);
|
||||
tmpWidget->signalValidate.connect(sharedFromThis(), &MainWindows::onCallbackPopUpFileSelected);
|
||||
}
|
||||
|
||||
void MainWindows::displayProperty() {
|
||||
// Request the parameter GUI
|
||||
ememory::SharedPtr<ewol::widget::Parameter> tmpWidget = ewol::widget::Parameter::create();
|
||||
if (tmpWidget == null) {
|
||||
APPL_ERROR("Can not allocate widget == > display might be in error");
|
||||
return;
|
||||
}
|
||||
#if 0
|
||||
etk::String menuDescription = "<title>Properties</title>\n";
|
||||
menuDescription += "<group title='_T{Editor}'>\n";
|
||||
menuDescription += " <menu title='_T{Editor Interface}' short-title='Editor' widget='appl-text-viewer'>\n";
|
||||
menuDescription += "</group>\n";
|
||||
menuDescription += "<group title='_T{Gui}'>\n";
|
||||
menuDescription += " <menu title='Font selection' short-title='Font' widget=''>\n";
|
||||
menuDescription += " <menu title='Color selection' short-title='Color' widget=''>\n";
|
||||
menuDescription += " <menu title='Theme selection' short-title='Theme' widget=''>\n";
|
||||
menuDescription += "</group>\n";
|
||||
|
||||
tmpWidget->setMenu(menuDescription);
|
||||
#else
|
||||
tmpWidget->propertyLabelTitle.set("_T{Properties}");
|
||||
popUpWidgetPush(tmpWidget);
|
||||
tmpWidget->menuAddGroup("_T{Editor}");
|
||||
ememory::SharedPtr<ewol::Widget> tmpSubWidget = globals::ParameterGlobalsGui::create();
|
||||
tmpWidget->menuAdd("_T{Editor}", "", tmpSubWidget);
|
||||
tmpWidget->menuAdd("_T{Font & Color}", "", null);
|
||||
tmpWidget->menuAdd("_T{Highlight}", "", null);
|
||||
tmpWidget->menuAddGroup("_T{General}");
|
||||
tmpWidget->menuAdd("_T{Display}", "", null);
|
||||
tmpSubWidget = ParameterAboutGui::create();
|
||||
tmpWidget->menuAdd("_T{About}", "", tmpSubWidget);
|
||||
#endif
|
||||
}
|
||||
|
||||
void MainWindows::onCallbackselectNewFile(const ememory::SharedPtr<appl::Buffer>& _value) {
|
||||
APPL_INFO("onCallbackselectNewFile( ... )");
|
||||
if (m_bufferManager == null) {
|
||||
APPL_ERROR("can not call unexistant buffer manager ... ");
|
||||
return;
|
||||
}
|
||||
m_connectionSave.disconnect();
|
||||
m_connectionModify.disconnect();
|
||||
m_connectionSaveName.disconnect();
|
||||
onCallbackTitleUpdate();
|
||||
if (_value != null) {
|
||||
ememory::SharedPtr<appl::Buffer> tmp = _value;
|
||||
m_connectionSave = tmp->signalIsSave.connect(this, &MainWindows::onCallbackTitleUpdate);
|
||||
m_connectionModify = tmp->signalIsModify.connect(this, &MainWindows::onCallbackTitleUpdate);
|
||||
m_connectionSaveName = tmp->signalChangeName.connect(this, &MainWindows::onCallbackTitleUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindows::onCallbackPopUpFileSelected(const etk::Path& _value) {
|
||||
APPL_INFO("onCallbackPopUpFileSelected(" << _value << ")");
|
||||
APPL_DEBUG("Request opening the file : " << _value);
|
||||
m_bufferManager->open(_value);
|
||||
}
|
||||
|
||||
void MainWindows::onCallbackTitleUpdate() {
|
||||
APPL_INFO("onCallbackTitleUpdate()");
|
||||
if (m_bufferManager == null) {
|
||||
APPL_ERROR("can not call unexistant buffer manager ... ");
|
||||
return;
|
||||
}
|
||||
// select a new Buffer ==> change title:
|
||||
ememory::SharedPtr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
|
||||
if (tmpp == null) {
|
||||
propertyTitle.set("Edn");
|
||||
if (m_widgetLabelFileName != null) {
|
||||
m_widgetLabelFileName->propertyValue.set("");
|
||||
}
|
||||
} else {
|
||||
propertyTitle.set(etk::String("Edn : ") + (tmpp->isModify()==true?" *":"") + tmpp->getFileName().getString());
|
||||
if (m_widgetLabelFileName != null) {
|
||||
m_widgetLabelFileName->propertyValue.set(tmpp->getFileName().getString() + (tmpp->isModify()==true?" *":""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindows::saveAsPopUp(const ememory::SharedPtr<appl::Buffer>& _buffer) {
|
||||
if (_buffer == null) {
|
||||
APPL_ERROR("Call With null input...");
|
||||
return;
|
||||
}
|
||||
ememory::SharedPtr<appl::WorkerSaveFile> tmpObject = appl::WorkerSaveFile::create("buffer-name", _buffer->getFileName());
|
||||
}
|
||||
|
||||
void MainWindows::closeNotSavedFile(const ememory::SharedPtr<appl::Buffer>& _buffer) {
|
||||
if (_buffer == null) {
|
||||
APPL_ERROR("Call With null input...");
|
||||
return;
|
||||
}
|
||||
ememory::SharedPtr<ewol::widget::StdPopUp> tmpPopUp = ewol::widget::StdPopUp::create();
|
||||
if (tmpPopUp == null) {
|
||||
APPL_ERROR("Can not create a simple pop-up");
|
||||
return;
|
||||
}
|
||||
tmpPopUp->setTitle("<bold>Close un-saved file:</bold>");
|
||||
tmpPopUp->setComment("The file named : <i>\"" + _buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost...");
|
||||
ewol::Widget* bt = NULL;
|
||||
tmpPopUp->propertyTitle.set("<bold>_T{Close un-saved file:}</bold>");
|
||||
tmpPopUp->propertyComment.set("_T{The file named:} <i>\"" + _buffer->getFileName().getString() + "\"</i> _T{is curently modify.} <br/>_T{If you don't saves these modifications,<br/>they will be definitly lost...}");
|
||||
ememory::SharedPtr<ewol::widget::Button> bt = null;
|
||||
if (_buffer->hasFileName() == true) {
|
||||
bt = tmpPopUp->addButton("Save", true);
|
||||
if (bt != NULL) {
|
||||
bt = tmpPopUp->addButton("_T{Save}", true);
|
||||
if (bt != null) {
|
||||
// TODO : The element is removed before beeing pressed
|
||||
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestSaveFile, _buffer->getFileName());
|
||||
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
|
||||
// TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestSaveFile, _buffer->getFileName());
|
||||
// TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
|
||||
}
|
||||
}
|
||||
bt = tmpPopUp->addButton("Save As", true);
|
||||
if (bt != NULL) {
|
||||
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestSaveFileAs, _buffer->getFileName());
|
||||
//bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
|
||||
bt = tmpPopUp->addButton("_T{Save As}", true);
|
||||
if (bt != null) {
|
||||
// TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestSaveFileAs, _buffer->getFileName());
|
||||
//bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
|
||||
// TODO : Request the close when saved ...
|
||||
}
|
||||
bt = tmpPopUp->addButton("Close", true);
|
||||
if (bt != NULL) {
|
||||
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
|
||||
bt = tmpPopUp->addButton("_T{Close}", true);
|
||||
if (bt != null) {
|
||||
// TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
|
||||
}
|
||||
tmpPopUp->addButton("Cancel", true);
|
||||
tmpPopUp->setRemoveOnExternClick(true);
|
||||
tmpPopUp->addButton("_T{Cancel}", true);
|
||||
tmpPopUp->propertyCloseOutEvent.set(true);
|
||||
popUpWidgetPush(tmpPopUp);
|
||||
}
|
||||
|
||||
void MainWindows::onObjectRemove(ewol::EObject* _removeObject) {
|
||||
ewol::Windows::onObjectRemove(_removeObject);
|
||||
if (m_widgetLabelFileName == _removeObject) {
|
||||
m_widgetLabelFileName = NULL;
|
||||
}
|
||||
}
|
||||
|
@@ -1,48 +0,0 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2010, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license GPL v3 (see license file)
|
||||
*/
|
||||
|
||||
#ifndef __MAIN_WINDOWS_H__
|
||||
#define __MAIN_WINDOWS_H__
|
||||
|
||||
#include <appl/debug.h>
|
||||
#include <appl/globalMsg.h>
|
||||
|
||||
#include <appl/Gui/BufferView.h>
|
||||
#include <appl/BufferManager.h>
|
||||
#include <ewol/widget/Label.h>
|
||||
#include <appl/BufferManager.h>
|
||||
|
||||
class MainWindows : public ewol::Windows {
|
||||
private:
|
||||
int32_t m_currentSavingAsIdBuffer;
|
||||
widget::Label* m_widgetLabelFileName;
|
||||
public:
|
||||
// Constructeur
|
||||
MainWindows(void);
|
||||
~MainWindows(void);
|
||||
private:
|
||||
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager
|
||||
/**
|
||||
* @brief Display a pop-up to the select the name of the file.
|
||||
* @param[in] _buffer Buffer that might be saved with a new name.
|
||||
*/
|
||||
void saveAsPopUp(appl::Buffer* _buffer);
|
||||
/**
|
||||
* @brief Display a pop-up to the user to confirm wat he want to do when he close a file not saved.
|
||||
* @param[in] _buffer Buffer that might be close.
|
||||
*/
|
||||
void closeNotSavedFile(appl::Buffer* _buffer);
|
||||
public: // Derived function
|
||||
virtual void onReceiveMessage(const ewol::EMessage& _msg);
|
||||
virtual void onObjectRemove(ewol::EObject * _removeObject);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|