67 Commits

Author SHA1 Message Date
f10f23219b Update README.md 2016-09-01 08:25:36 +02:00
6a937ebb8c [RELEASE] create release 1.3.0 2016-08-31 23:55:01 +02:00
da184c6767 [DEV] update esignal removing ISignal 2016-08-04 22:23:19 +02:00
4667e78aa6 [DEBUG] correct some un-understanding not parse file type like hxx 2016-07-24 14:42:50 +02:00
c7de44171d [DEBUG] remove a error warning (bad patch but it work) 2016-07-24 14:29:27 +02:00
8d22c48dc3 [DEBUG] correct all xml config language 2016-07-21 15:57:06 +02:00
8094d7c5ab [DEBUG] correct the regex error in the super size regex pattern (.|\n|\r)*? ==> bad patern 2016-07-21 15:29:56 +02:00
64b9f31a53 [DEV] update new ememory::SharedPtr 2016-07-19 22:03:39 +02:00
c284ad0b3a [DEV] clean header file 2016-05-02 22:01:55 +02:00
8eb7fe9839 [DEV] remove __class__ 2016-05-02 21:29:34 +02:00
0b84458985 [DEV] update the change on 'enum' to 'enum class' 2016-04-29 23:16:07 +02:00
c0de59ac9a [DEV] update las t ejson 2016-04-29 21:47:54 +02:00
dbc6b3439d [DEV] update new ejson interface 2016-04-20 21:19:11 +02:00
c7efaf95ab [DEV] corrrect internal bug link with exml portage 2016-04-19 22:05:42 +02:00
ac0ab974f6 [DEV] Update with the new exml API 2016-04-18 21:01:17 +02:00
1a2f0b6d91 [DEV] update etk::FSNode 2016-04-08 22:10:37 +02:00
235847a1c6 [DEV] not-in-doc ==> not_in_doc and add parsing in c++ 2016-04-01 21:30:23 +02:00
948e672eb1 [DEV] try to find reg-ex bug 2016-03-20 22:46:45 +01:00
bc7ed8f729 [DEV] remove dependency of date 2016-03-17 22:52:51 +01:00
0d47ff22e2 [DEV] update new ewol 2016-03-16 23:09:36 +01:00
c251a419ad [DEBUG] correct the bug of close file and open again ar seg-fault when write 2016-03-15 22:33:06 +01:00
a265735cd1 [DEBUG] correct many bugs 2016-03-10 23:48:07 +01:00
1821f2927b [DEBUG] correct some super integration bug 2016-03-10 22:37:37 +01:00
badb11d80d [DEV] update new property interface 2016-03-02 09:32:23 +01:00
499dfcffe6 [DEV] update new e-property 2016-02-24 22:31:46 +01:00
3f5d2abc41 [DEV] update new esignal (not build) 2016-02-19 23:33:00 +01:00
3e3c47cfa9 [DEV] update new ewol interface 2016-02-15 22:04:10 +01:00
c0705be42c [DEV] add personnal parameter 2016-02-12 23:50:20 +01:00
9f96beced2 [DEV] update to the hide implementation of esignal implementation 2016-02-11 22:39:40 +01:00
aed62ff58b [DEV] update externalisation of signal and property 2016-02-11 21:45:21 +01:00
2d4aac44fb [DEV] change build position 2016-01-15 21:18:24 +01:00
d3d4650d62 [DEV] correct the regex parsing error in the second highlight pass 2016-01-15 00:01:58 +01:00
c9b86afea0 [DEBUG] set correct name of buffer 2015-10-21 22:12:01 +02:00
d1f0caf386 [DEBUG] set back the close buffer 2015-10-21 22:12:01 +02:00
6980c78684 [DEV] update Doc 2015-10-15 08:36:21 +02:00
b5ef639438 [DEV] update new lutin 0.8.0 2015-10-14 21:21:03 +02:00
590e84e486 [DEV] change package in library ==> change idea of a package 2015-09-11 22:26:32 +02:00
cca05c01c0 [DEV] update new lutin 2015-09-10 21:32:50 +02:00
dbac89199f [DEV] correct application interface (update) 2015-09-07 22:15:33 +02:00
52ee889ee5 [DEV] update error of parsing c++ 2015-08-28 22:39:32 +02:00
893213c6c9 Update README.md 2015-08-26 14:04:42 +02:00
b5ff73e030 [DEV] add gcov parsing 2015-08-25 21:21:41 +02:00
82836ac045 [CI] update travis with new interface (no sudo) 2015-08-24 23:55:27 +02:00
0db5f0c528 [DEV] better parsing python, php and cpp 2015-08-24 22:03:07 +02:00
f6c4f4f9b3 [DEV] better parsing python, php and cpp 2015-08-24 22:03:07 +02:00
2028030df6 [DEV] better parsing python, php and cpp 2015-08-24 22:03:07 +02:00
c6269cbfd6 [DEV] update language xml and php 2015-08-22 10:15:58 +02:00
d2a7464341 [DEV] typo error 2015-08-21 23:56:17 +02:00
1fcf8b8a74 [DEV] update at the new low level gale interface 2015-08-11 23:21:41 +02:00
ad32734537 [DEV] update the parsing of java an python 2015-07-01 21:40:47 +02:00
89afc13dce [CI] pip for lutin error binary name 2015-05-21 22:30:58 +02:00
32b0b76fb9 [DEV] update search access and unaccess 2015-05-21 21:21:01 +02:00
4e527931c7 [CI] travis update for lutin pip & ewol repo interface 2015-05-20 21:13:48 +02:00
e0bf7c77c2 [DEV] help command line 2015-05-12 21:16:32 +02:00
2a467a7a5d [BUILD] update new lutin 0.5.3 2015-05-08 22:47:23 +02:00
386f5ed011 [CI] update travis build 2015-04-22 21:29:53 +02:00
1359193a63 [DEV] update to etk buffer remove 2015-04-06 21:06:01 +02:00
192bd045fa [DEV] update new exml interface 2015-01-14 21:10:23 +01:00
0f64bad930 [DEV] update new ejson interface 2015-01-12 23:20:23 +01:00
d2e9ab8b1a [DEV] add split of view ==> integration not ended, but it work 2014-11-14 23:57:29 +01:00
e17c9f9cf7 [API] update new Parameter API 2014-10-29 22:54:43 +01:00
7340844d12 [API] update new signal interface 2014-10-29 21:16:56 +01:00
bd9e5f03f4 [DEV] feature hide buffer list when number of buffer <= 1 2014-10-27 21:24:48 +01:00
2330788ace [VALGRING] error in some system access 2014-10-23 23:52:19 +02:00
e3dc686ec9 [DEBUG] C syntax error display in c++ 2014-10-21 23:19:02 +02:00
3f4a71065d [DEV] separate c++ & C and add filename in title 2014-10-21 21:18:50 +02:00
cefe0aacdb [INTEGRATION] update travis compilation 2014-10-17 22:12:43 +02:00
80 changed files with 1901 additions and 1776 deletions

View File

@@ -1,41 +1,70 @@
# language type: language:
language: cpp - cpp
sudo: false
# compilator system:
compiler: compiler:
- clang - clang
- gcc - gcc
os:
- linux
- osx
# build branch requested
branches: branches:
only: only:
- master - master
- dev - dev
# previous actions: addons:
before_script: apt:
- git clone https://github.com/HeeroYui/ewol.git sources:
- cd ewol; git checkout origin/dev -b dev; cd .. - ubuntu-toolchain-r-test
- cd ewol; git submodule init; cd .. packages:
- cd ewol; git submodule update; cd .. - g++-4.9
install: install:
- if [ "$CXX" == "g++" ]; then sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y; fi - echo "BUILDER = $BUILDER"
- if [ "$CXX" == "g++" ]; then sudo apt-get update -qq; fi - echo "BOARD = $BOARD"
- if [ "$CXX" == "g++" ]; then sudo apt-get install -qq g++-4.8; fi - echo "CONF = $CONF"
- if [ "$CXX" == "g++" ]; then sudo rm /usr/bin/gcc /usr/bin/g++; fi - pip install --user lutin
- if [ "$CXX" == "g++" ]; then sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc; fi
- if [ "$CXX" == "g++" ]; then sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++; fi env:
- if [ "$CXX" == "clang++" ]; then wget http://llvm.org/releases/3.4.1/clang+llvm-3.4.1-x86_64-unknown-ubuntu12.04.tar.xz; fi matrix:
- if [ "$CXX" == "clang++" ]; then tar xJf clang+llvm-3.4.1-x86_64-unknown-ubuntu12.04.tar.xz; fi - CONF=debug BOARD=Linux
- if [ "$CXX" == "clang++" ]; then export PATH=$PWD/clang+llvm-3.4.1-x86_64-unknown-ubuntu12.04/bin:$PATH; fi #- 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
# build sequence with Lutin :
script: script:
- if [ "$CXX" == "clang++" ]; then ./ewol/build/lutin.py -C -cclang -mdebug -p edn; fi - lutin -C -P -t $BOARD -c $BUILDER $COMPILATOR_OPTION -m $CONF -p edn
- if [ "$CXX" == "g++" ]; then ./ewol/build/lutin.py -C -cgcc -mdebug -p edn; fi
#send e-mail on compilation result:
notifications: notifications:
email: email:
- yui.heero@gmail.com - yui.heero@gmail.com

View File

@@ -5,41 +5,69 @@ Edn
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
[![Build Status](https://travis-ci.org/HeeroYui/edn.svg?branch=dev)](https://travis-ci.org/HeeroYui/edn)
Instructions Instructions
============ ============
download the software : need google repo:
-----------------
mkdir yourDevFolder see: http://source.android.com/source/downloading.html#installing-repo
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
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: (debug) Compile software & Run debug version:
../ewol/build/lutin.py --color --mode=debug lutin -C -P -m debug edn
or # or
../ewol/build/lutin.py --color --compilator=clang --mode=debug lutin -C -P -c clang -m debug edn
./out/Linux/debug/staging/edn//usr/bin/edn -l6 yourFile.txt # full compile and run:
Note : -l6 corespond at the LOG level to display. lutin -C -P -m debug edn?build?run:--elog-level=5
(release) Compile software & install & run: (release) Compile software & install:
# generate binary, tree, package and install it ... # generate binary, tree, package and install it ...
../ewol/build/lutin.py -c edn-install lutin -C -P edn?install
edn exemple.txt
(Android) Compile software & install (Android) Compile software & install
cd yourDevFolder
mkdir andoid mkdir andoid
cd android cd android
download here in "sdk" and "ndk" the coresponding SDK and NDK of Android: download here in "sdk" and "ndk" the coresponding SDK and NDK of Android:
@@ -48,18 +76,14 @@ download the software :
==> you need to download sub package of the NDK (refer to the NDK doccumentation) but only supported android version >4.0 ==> you need to download sub package of the NDK (refer to the NDK doccumentation) but only supported android version >4.0
cd .. cd ..
# Generate package and install on Android device (in debug mode a generic key is set) # Generate package and install on Android device (in debug mode a generic key is set)
../ewol/build/lutin.py --color --target=Android --mode=debug edn-install lutin -C -P -t Android -m debug edn?install
# to show the log : # to show the log :
../ewol/build/lutin.py --target=Android edn-log lutin -C -P -t Android edn?log
(Windows) Compile software & install (Windows) Compile software
cd yourDevFolder lutin -C -P -t Windows -m debug edn
../ewol/build/lutin.py --color --target=Windows --mode=debug edn
#we have many problem for windows compilation now...
(MAC) All needed and some useful packages (MAC) All needed and some useful packages
@@ -68,8 +92,7 @@ download the software :
- Xcode ==> for all developement packages - Xcode ==> for all developement packages
- in Xcode : XCode->Setting->Download and install component: "Command Line Tools" - in Xcode : XCode->Setting->Download and install component: "Command Line Tools"
cd yourDevFolder lutin -C -P -m debug edn
../ewol/build/lutin.py --color --mode=debug edn
(IOs) All needed and some useful packages (IOs) All needed and some useful packages
@@ -80,22 +103,14 @@ download the software :
for porting on IOs you need a developper account for porting on IOs you need a developper account
cd yourDevFolder
# compile and install on simulator (no developper account needed) # compile and install on simulator (no developper account needed)
../ewol/build/lutin.py --color --target=IOs --mode=debug --simulation edn-intall 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) # launch IOs simulator in xcode, and your application will appear on the second page (32 bit mode only)
# compile and install on board # compile and install on board
../ewol/build/lutin.py --color --target=IOs --mode=debug edn-intall lutin -C -P -t IOs -m debug edn?install
# compile and install on board and debug mode : # compile and install on board and debug mode :
../ewol/build/lutin.py --color --target=IOs --mode=debug edn-log lutin -C -P -t IOs -m debug --simulation edn?log
On linux you can generate 3 board in one time
=============================================
cd yourDevFolder/edn
../ewol/build/lutin.py --color --target=Linux --mode=debug edn --target=Windows --mode=debug edn --target=Android --mode=debug edn
Dependency packages Dependency packages
=================== ===================

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<composer> <composer expand="true,false" fill="true,false">
<sizer mode="hori" expand="true,false" fill="true" lock="true"> <sizer mode="hori" expand="true,false" fill="true" lock="true">
<button name="SEARCH:close"> <button name="SEARCH:close">
<image src="THEME:GUI:Remove.edf" fill="true" size="7,7mm" distance-field="true"/> <image src="THEME:GUI:Remove.edf" fill="true" size="7,7mm" distance-field="true"/>
@@ -13,60 +13,16 @@
<image src="THEME:GUI:Replace.edf" fill="true" size="7,7mm" distance-field="true"/> <image src="THEME:GUI:Replace.edf" fill="true" size="7,7mm" distance-field="true"/>
</button> </button>
<button name="SEARCH:case" toggle="true"> <button name="SEARCH:case" toggle="true">
<image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
<image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
</button> </button>
<button name="SEARCH:wrap" toggle="true"> <button name="SEARCH:wrap" toggle="true">
<image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
<image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
</button> </button>
<button name="SEARCH:up-down" toggle="true"> <button name="SEARCH:up-down" toggle="true">
<image src="THEME:GUI:Up.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:Up.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
<image src="THEME:GUI:Down.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:Down.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
</button> </button>
<!--
<image src="THEME:GUI:Add.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:AtoZ.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Attache.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:CaseSensitive.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Close.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Contact.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Down.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:FavoriteDisable.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:FavoriteEnable.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:FavoriteMiddle.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:File.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Folder.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Forbidden.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Help.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Home.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Info.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:List.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Load.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Lock.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Next.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:OpenMenu.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Parameter.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Undo.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Trash.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Search.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:SDCard.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Save.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Replace.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Remove.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Remove2.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Redo.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Quit.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Previous.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Update.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Up.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Validate.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:VolumeMax.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:VolumeMute.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:Warning.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:WhereAmI.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:WrapAround.svg" fill="true" size="7,7mm"/>
<image src="THEME:GUI:ZoomIn.svg" fill="true" size="7,7mm"/>
-->
</sizer> </sizer>
</composer> </composer>

View File

@@ -1,18 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Assembleur"> <EdnLang version="0.1" lang="Assembleur">
<ext>.*\.(s|S|asm)</ext> <ext>.*\.(s|S|asm|ASM)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline doxygen"> <rule name="my comment multiline doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<regex>/\*\*.*?\*/</regex> <regex>
<start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my comment multiline"> <rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<regex>/\*.*?\*/</regex> <regex>
<start>/\*</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my if 0"> <rule name="my if 0">
<color>preprocesseur</color> <color>preprocesseur</color>
<regex>#[ \t]*if 0.*?#(regexif|else)</regex> <regex>
<start>#[ \t]*if 0</start>
<stop>#(endif|else)</stop>
</regex>
</rule> </rule>
<rule name="my preprocesseur"> <rule name="my preprocesseur">
<color>preprocesseur</color> <color>preprocesseur</color>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Boulou log"> <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 --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="comment ##"> <rule name="comment ##">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>

View File

@@ -1,28 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="C/C++"> <EdnLang version="0.1" lang="C">
<ext>.*\.(c|cpp|cxx|cc|h|hpp|hxx|m|mm)</ext> <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 --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="doxygen multiline"> <rule name="doxygen multiline">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<regex>/\*(\*|!)(.|\r|\n)*?\*/</regex> <regex>
<start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
<sub>doxyparse</sub> <sub>doxyparse</sub>
</rule> </rule>
<rule name="comment multiline"> <rule name="comment multiline">
<color>comment</color> <color>comment</color>
<regex>/\*(.|\r|\n)*?(\*/|\0)</regex> <regex>
<start>/\*</start>
<stop>\*/</stop>
</regex>
<sub>TODO</sub> <sub>TODO</sub>
</rule> </rule>
<rule name="comment miltiline ERROR"> <rule name="comment multiline ERROR">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<regex>/\*(.|\r|\n)*</regex> <regex>
<start>/\*</start>
</regex>
</rule> </rule>
<rule name="#if 0"> <rule name="#if 0">
<color>preprocesseur</color> <color>preprocesseur</color>
<regex>#[ \t]*if 0(.|\r|\n)*?#(endif|else)</regex> <regex>
<start>#[ \t]*if 0</start>
<stop>#(endif|else)</stop>
</regex>
</rule> </rule>
<rule name="#if 0 ERROR"> <rule name="#if 0 ERROR">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<regex>#[ \t]*if 0(.|\r|\n)*</regex> <regex>
<start>#[ \t]*if 0</start>
</regex>
</rule> </rule>
<rule name="#preproc"> <rule name="#preproc">
<color>preprocesseur</color> <color>preprocesseur</color>
@@ -40,11 +54,11 @@
</rule> </rule>
<rule name="double quote text"> <rule name="double quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<regex>"(.|\\[\\"])*?"</regex> <!-- " --> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex> <!-- " -->
</rule> </rule>
<rule name="simple quote text"> <rule name="simple quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<regex>'\\?.'</regex> <regex>&apos;\\?.&apos;</regex>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
@@ -54,23 +68,19 @@
</rule> </rule>
<rule name="my function keyword"> <rule name="my function keyword">
<color>systemFunction</color> <color>systemFunction</color>
<regex>\b(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]|_)+)\b</regex> <regex>\b(memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc)\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<regex>\b(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))\b</regex> <regex>\b(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))\b</regex>
</rule>
<rule name="std type">
<color>type</color>
<regex>\bstd::[\w:]*\b</regex>
</rule> </rule>
<rule name="my storage keyword"> <rule name="my storage keyword">
<color>storageKeyword</color> <color>storageKeyword</color>
<regex>\b(inline|const|class|namespace|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum)\b</regex> <regex>\b(inline|const|const|extern|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum)\b</regex>
</rule> </rule>
<rule name="my common Define"> <rule name="my common Define">
<color>commonDefine</color> <color>commonDefine</color>
<regex>\b(NULL|MAX|MIN|__LINE__|__DATA__|__FILE__|__func__|__TIME__|__STDC__)\b</regex> <regex>\b(NULL|MAX|MIN|__(LINE|DATA|FILE|func|TIME|STDC|PRETTY_FUNCTION|FUNCTION)__)\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
@@ -78,16 +88,12 @@
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<regex>\b(true|TRUE|false|FALSE)\b</regex> <regex>\b(TRUE|FALSE)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
<rule name="CPP member">
<color>memberClass</color>
<regex>\bm_\w+\b</regex>
</rule>
<rule name="function input"> <rule name="function input">
<color>inputFunction</color> <color>inputFunction</color>
<regex>\b_\w+\b</regex> <regex>\b_\w+\b</regex>
@@ -100,10 +106,6 @@
<color>boolean</color> <color>boolean</color>
<regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
<rule name="BIG LETTER">
<color>macro</color>
<regex>([A-Z]|_){4,500}</regex>
</rule>
<rule name="simpleQuteTextError"> <rule name="simpleQuteTextError">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<regex>&apos;|&quot;</regex> <regex>&apos;|&quot;</regex>

View File

@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="C++">
<ext>.*\.(cpp|CPP|cxx|CXX|cc|CC|hpp|HPP|hxx|HXX|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="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)?&quot;(.|\\[\\&quot;])*?&quot;</regex> <!-- " -->
</rule>
<rule name="simple quote text">
<color>doubleQuoteText</color>
<regex>&apos;\\?.&apos;</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>&apos;|&quot;|NULL|MAX|MIN|TRUE|FALSE|calloc|malloc|realloc|free|BOOL</regex>
</rule>
<rule name="my keyword">
<color>keyword</color>
<regex>\b(return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof)\b</regex>
</rule>
<rule name="my function keyword">
<color>systemFunction</color>
<regex>\b(new|delete|try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|(reinterpret|static|dynamic|const)_cast)\b</regex>
</rule>
<rule name="my type">
<color>type</color>
<regex>\b(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))\b</regex>
</rule>
<rule name="std type">
<color>type</color>
<regex>\b(std(11)?|boost)::[\w:]*</regex>
</rule>
<rule name="my storage keyword">
<color>storageKeyword</color>
<regex>\b(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)\b</regex>
</rule>
<rule name="my common Define">
<color>commonDefine</color>
<regex>\b(nullptr|__(LINE|DATA|FILE|func|TIME|STDC|PRETTY_FUNCTION|FUNCTION)__)\b</regex>
</rule>
<rule name="numeric constant">
<color>number</color>
<regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(LL|L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule>
<rule name="my boolean">
<color>boolean</color>
<regex>\b(true|false)\b</regex>
</rule>
<rule name="BIG LETTER">
<color>macro</color>
<regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule>
<rule name="CPP member">
<color>memberClass</color>
<regex>\b((m|s|p|s|g)_|property|signal)\w+\b</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
<rule name="Function name">
<color>functionName</color>
<regex>\b((\w|_)+[ \t]*\()</regex>
</rule>
<rule name="condition">
<color>boolean</color>
<regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule>
<rule name="simpleQuteTextError">
<color>SYNTAX_ERROR</color>
<regex>&apos;|&quot;</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>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
</EdnLang>

View 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>

View File

@@ -4,15 +4,24 @@
<pass1> <pass1>
<rule name="my comment multiline doxygen"> <rule name="my comment multiline doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<regex>/\*\*.*\*/</regex> <regex>
<start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my comment multiline"> <rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<regex>/\*.*\*/</regex> <regex>
<start>/\*</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my if 0"> <rule name="my if 0">
<color>preprocesseur</color> <color>preprocesseur</color>
<regex>#[ \t]*if 0(.|\\[\\\n])*#(endif|else)</regex> <regex>
<start>#[ \t]*if 0</start>
<stop>#(endif|else)</stop>
</regex>
</rule> </rule>
<rule name="my preprocesseur"> <rule name="my preprocesseur">
<color>preprocesseur</color> <color>preprocesseur</color>
@@ -38,7 +47,7 @@
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<regex>\b(void|bool|float|int|(vec|mat|ivect|bvect)[2-4])\b</regex> <regex>\b(void|bool|float|int|(vec|mat|ivec|bvec)[2-4])\b</regex>
</rule> </rule>
<rule name="my storage keyword"> <rule name="my storage keyword">
<color>storageKeyword</color> <color>storageKeyword</color>

View File

@@ -1,34 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Java"> <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 --> <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> <color>commentDoxygen</color>
<regex>/\*\*.*?\*/</regex> <regex>
<start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
<sub>doxyparse</sub>
</rule> </rule>
<rule name="my comment multiline"> <rule name="comment multiline">
<color>comment</color> <color>comment</color>
<regex>/\*.*?\*/</regex> <regex>
<start>/\*</start>
<stop>\*/</stop>
</regex>
<sub>TODO</sub>
</rule> </rule>
<rule name="my comment doxygen"> <rule name="comment multiline ERROR">
<color>commentDoxygen</color>
<regex>//!(.|\\[\\\n])*?$</regex>
</rule>
<rule name="my todo comment">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<regex>//[ \t]*TODO[ \t]*:(.|\\[\\\n])*?$</regex> <regex>
<start>/\*(\*|!)</start>
</regex>
</rule> </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> <color>comment</color>
<regex>//(.|\\[\\\n])*?$</regex> <regex>//.*$</regex>
<sub>TODO</sub>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="double quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<regex>&quot;(.|\\[\\&quot;])*?&quot;</regex> <regex>(U|u|u8)?&quot;(.|\\[\\&quot;])*?&quot;</regex> <!-- " -->
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simple quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<regex>&apos;(.|\\[\\&apos;])*?&apos;</regex> <regex>&apos;\\?.&apos;</regex>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
@@ -64,13 +76,41 @@
<color>macro</color> <color>macro</color>
<regex>\b[A-Z_][A-Z_0-9]{3,500}\b</regex> <regex>\b[A-Z_][A-Z_0-9]{3,500}\b</regex>
</rule> </rule>
<rule name="java member">
<color>memberClass</color>
<regex>\bm_\w+\b</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<regex>\b(\w|_)+[ \t]*\(</regex> <regex>\b((\w|_)+[ \t]*\()</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
</pass2> </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>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
</EdnLang> </EdnLang>

View File

@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Json"> <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 --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<regex>&quot;(.|\\[\\&quot;])*?&quot;</regex> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
</rule> </rule>
<rule name="my comment">
<color>comment</color>
<regex>#.*</regex>
</rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">

View File

@@ -4,7 +4,10 @@
<pass1> <pass1>
<rule name="Comment multiline"> <rule name="Comment multiline">
<color>comment</color> <color>comment</color>
<regex>\-\-\[\[.*?\-\-\]\]</regex> <regex>
<start>\-\-\[\[</start>
<stop>\-\-\]\]</stop>
</regex>
</rule> </rule>
<rule name="my todo comment"> <rule name="my todo comment">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>

View File

@@ -1,22 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Php: pretty home page"> <EdnLang version="0.1" lang="PHP">
<ext>.*\.(php|php3|php4|phtml)</ext> <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 --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline"> <rule name="doxygen multiline">
<color>comment</color> <color>commentDoxygen</color>
<regex>/\*.*?\*/</regex> <regex>
<start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
<sub>doxyparse</sub>
</rule> </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> <color>SYNTAX_ERROR</color>
<regex>//[ \t]*TODO[ \t]*:(.|\\[\\\n])*?$</regex> <regex>
<start>/\*(\*|!)</start>
</regex>
</rule> </rule>
<rule name="my comment inline"> <rule name="inline doxygen">
<color>comment</color> <color>commentDoxygen</color>
<regex>#(.|\\[\\\n])*?$</regex> <regex>//!.*$</regex>
<sub>doxyparse</sub>
</rule> </rule>
<rule name="my comment"> <rule name="inline comment">
<color>comment</color> <color>comment</color>
<regex>//(.|\\[\\\n])*?$</regex> <regex>(//|#).*$</regex>
<sub>TODO</sub>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
@@ -28,9 +44,17 @@
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="start-stop-php">
<color>macro</color>
<regex>(&lt;\?\w+|\?&gt;)</regex>
</rule>
<rule name="my keyword">
<color>inputFunction</color>
<regex>\$_[a-zA-Z_][a-zA-Z0-9_]*\b</regex>
</rule>
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<regex>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</regex> <regex>\$[a-zA-Z_][a-zA-Z0-9_]*\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
@@ -50,7 +74,11 @@
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<regex>\b(true|TRUE|false|FALSE)\b</regex> <regex>\b(TRUE|FALSE)\b</regex>
</rule>
<rule name="BIG LETTER">
<color>macro</color>
<regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
@@ -60,5 +88,33 @@
<color>boolean</color> <color>boolean</color>
<regex>==|&lt;=|&gt;=|!=|&lt;|&gt;|&amp;&amp;|\{|\}</regex> <regex>==|&lt;=|&gt;=|!=|&lt;|&gt;|&amp;&amp;|\{|\}</regex>
</rule> </rule>
<rule name="simpleQuteTextError">
<color>SYNTAX_ERROR</color>
<regex>&apos;|&quot;</regex>
</rule>
</pass2> </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>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
</EdnLang> </EdnLang>

View File

@@ -1,26 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Python"> <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 --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline"> <rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<regex>&quot;&quot;&quot;(.|\r|\n)*?&quot;&quot;&quot;</regex> <regex>
<start>&quot;&quot;&quot;</start>
<stop>&quot;&quot;&quot;</stop>
</regex>
</rule> </rule>
<rule name="my comment multiline"> <rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<regex>'''(.|\r|\n)*?'''</regex> <regex>
<start>'''</start>
<stop>'''</stop>
</regex>
</rule> </rule>
<rule name="comment multiline Error"> <rule name="comment multiline Error">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<regex>(&quot;&quot;&quot;|''')(.|\n|\r)*</regex> <regex>
<start>(&quot;&quot;&quot;|''')</start>
</regex>
</rule> </rule>
<rule name="my comment doxygen"> <rule name="my comment doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<regex>##.*</regex> <regex>##.*</regex>
<sub>doxyparse</sub>
</rule> </rule>
<rule name="my comment"> <rule name="my comment">
<color>comment</color> <color>comment</color>
<regex>#.*</regex> <regex>#.*</regex>
<sub>TODO</sub>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
@@ -30,6 +40,26 @@
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<regex>&apos;((\\[\\&apos;])|.)*?&apos;</regex> <regex>&apos;((\\[\\&apos;])|.)*?&apos;</regex>
</rule> </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>\b_(\w|_)+[ \t]*\(</regex>
<sub>checkCamelCaseError</sub>
</rule>
<rule name="Function name">
<color>functionName</color>
<regex>\b(\w|_)+[ \t]*\(</regex>
<sub>checkCamelCaseError</sub>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_(\w|_)+\b</regex>
<sub>checkCamelCaseError</sub>
</rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
@@ -60,10 +90,6 @@
<color>macro</color> <color>macro</color>
<regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
<rule name="Function name">
<color>functionName</color>
<regex>\b(\w|_)+[ \t]*\(</regex>
</rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
@@ -73,4 +99,56 @@
<regex>&apos;|&quot;</regex> <regex>&apos;|&quot;</regex>
</rule> </rule>
</pass2> </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>\b_\w+\b</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> </EdnLang>

View File

@@ -1,38 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.2" lang="XML"> <EdnLang version="0.2" lang="XML">
<ext>.*\.(xml|svg)</ext> <ext>.*\.(xml|XML|svg|SVG|html|HTML|htm|HTM|tpl|TPL)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="Comment"> <rule name="Comment">
<color>comment</color> <color>comment</color>
<!--<regex><![CDATA[<!\-\-(.|\r|\n)*?\-\->]]></regex>--> <regex>
-<regex>&lt;!\-\-(.|\r|\n)*?\-\-&gt;</regex> <start>&lt;!\-\-</start>
<stop>\-\-&gt;</stop>
</regex>
</rule> </rule>
<rule name="CDATA"> <rule name="CDATA">
<color>macro</color> <color>macro</color>
<!--<regex><![CDATA[<!\[CDATA\[(.|\r|\n)*?\]\]>]]></regex>--> <regex>
<regex>&lt;!\[CDATA\[(.|\r|\n)*?\]\]&gt;</regex> <start>&lt;!\[CDATA\[</start>
<stop>\]\]&gt;</stop>
</regex>
</rule> </rule>
<rule name="stop balise"> <rule name="stop balise">
<color>functionName</color> <color>functionName</color>
<!--<regex><![CDATA[</[ \t]*\w+?[ \t]*>]]></regex>-->
<regex>&lt;/[ \t]*\w+?[ \t]*&gt;</regex> <regex>&lt;/[ \t]*\w+?[ \t]*&gt;</regex>
</rule> </rule>
<rule name="stop balise"> <rule name="stop balise">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<!--<regex><![CDATA[</(.|\n|\r)*?>]]></regex>--> <regex>
<regex>&lt;/(.|\n|\r)*?&gt;</regex> <start>&lt;/</start>
<stop>&gt;</stop>
</regex>
</rule> </rule>
<rule name="start balise"> <rule name="start balise">
<color>normal</color> <color>normal</color>
<!--<regex><![CDATA[<(.|\n|\r)*?>]]></regex>--> <regex>
<regex>&lt;(.|\n|\r)*?&gt;</regex> <start>&lt;</start>
<stop>&gt;</stop>
</regex>
<sub>parseInsideBalise</sub> <sub>parseInsideBalise</sub>
</rule> </rule>
</pass1> </pass1>
<pass2> <pass2>
<rule name="start balise"> <rule name="start balise">
<color>commonDefine</color> <color>commonDefine</color>
<!--<regex><![CDATA[&(gt|lt|amp|apos|quot);]]></regex>-->
<regex>&amp;(gt|lt|amp|apos|quot);</regex> <regex>&amp;(gt|lt|amp|apos|quot);</regex>
</rule> </rule>
<rule name="start balise"> <rule name="start balise">
@@ -43,17 +49,14 @@
<pass name="parseInsideBalise"> <pass name="parseInsideBalise">
<rule name="special Balise"> <rule name="special Balise">
<color>error</color> <color>error</color>
<!--<regex><![CDATA[<\?\w*|\?>]]></regex>-->
<regex>&lt;\?\w*|\?&gt;</regex> <regex>&lt;\?\w*|\?&gt;</regex>
</rule> </rule>
<rule name="open balise"> <rule name="open balise">
<color>functionName</color> <color>functionName</color>
<!--<regex><![CDATA[<[ \t]*[0-9a-zA-Z_]+]]></regex>-->
<regex>&lt;[ \t]*[0-9a-zA-Z_]+</regex> <regex>&lt;[ \t]*[0-9a-zA-Z_]+</regex>
</rule> </rule>
<rule name="close balise"> <rule name="close balise">
<color>functionName</color> <color>functionName</color>
<!--<regex><![CDATA[/?>]]></regex>-->
<regex>/?&gt;</regex> <regex>/?&gt;</regex>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">

View File

@@ -14,6 +14,7 @@
{ name:"storageKeyword", foreground:"#5c8fed"}, { name:"storageKeyword", foreground:"#5c8fed"},
{ name:"inputFunction", foreground:"#B80000", bold:true, italic:true}, { name:"inputFunction", foreground:"#B80000", bold:true, italic:true},
{ name:"memberClass", foreground:"#7c5406", bold:true}, { name:"memberClass", foreground:"#7c5406", bold:true},
{ name:"memberClassPrivate", foreground:"#7c2400", bold:true},
{ name:"number", foreground:"#00ff00"}, { name:"number", foreground:"#00ff00"},
{ name:"systemFunction", foreground:"#ffff00"}, { name:"systemFunction", foreground:"#ffff00"},
{ name:"commonDefine", foreground:"#56bf10"}, { name:"commonDefine", foreground:"#56bf10"},
@@ -25,9 +26,11 @@
{ name:"macro", foreground:"#6c09c8", bold:true}, { name:"macro", foreground:"#6c09c8", bold:true},
{ name:"SYNTAX_ERROR", foreground:"#000000", background:"#FF0000", bold:true}, { name:"SYNTAX_ERROR", foreground:"#000000", background:"#FF0000", bold:true},
{ name:"functionName", foreground:"#24d1e0", bold:true}, { name:"functionName", foreground:"#24d1e0", bold:true},
{ name:"functionNamePrivate", foreground:"#24d190", bold:true},
{ name:"TestResultOK", foreground:"#000000", background:"#00FF00", bold:true}, { name:"TestResultOK", foreground:"#000000", background:"#00FF00", bold:true},
{ name:"TestResultERROR", FG:"#000000", background:"#FF0000", 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-key", foreground:"#dc3700", bold:true, italic:false},
{ name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false}, { name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false},
] ]

View File

@@ -12,6 +12,7 @@
{ name:"type", foreground:"#376d0a", bold:true}, { name:"type", foreground:"#376d0a", bold:true},
{ name:"memberClass", foreground:"#7c5406", bold:true}, { name:"memberClass", foreground:"#7c5406", bold:true},
{ name:"memberClassPrivate", foreground:"#7c2400", bold:true},
{ name:"inputFunction", foreground:"#B80000", bold:true, italic:true}, { name:"inputFunction", foreground:"#B80000", bold:true, italic:true},
{ name:"storageKeyword", foreground:"#466cb4"}, { name:"storageKeyword", foreground:"#466cb4"},
{ name:"number", foreground:"#007b00"}, { name:"number", foreground:"#007b00"},
@@ -25,9 +26,11 @@
{ name:"macro", foreground:"#571793", bold:true}, { name:"macro", foreground:"#571793", bold:true},
{ name:"SYNTAX_ERROR", foreground:"#000000", background:"#c20000", bold:true}, { name:"SYNTAX_ERROR", foreground:"#000000", background:"#c20000", bold:true},
{ name:"functionName", foreground:"#09857e", bold:true}, { name:"functionName", foreground:"#09857e", bold:true},
{ name:"functionNamePrivate", foreground:"#09854e", bold:true},
{ name:"TestResultOK", foreground:"#000000", background:"#009c00", 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:"doxygen-key-known", foreground:"#Fc4700", bold:true, italic:false},
{ name:"doxygen-key", foreground:"#dc3700", bold:true, italic:false}, { name:"doxygen-key", foreground:"#dc3700", bold:true, italic:false},
{ name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false}, { name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false},
] ]

134
lutin_edn.py Normal file
View File

@@ -0,0 +1,134 @@
#!/usr/bin/python
import lutin.module as module
import lutin.tools as tools
import lutin.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,0]
def get_version_id():
return 6
def create(target, module_name):
my_module = module.Module(__file__, module_name, get_type())
my_module.add_extra_compile_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/Gui/BufferView.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_module_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/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/theme/default/*.svg','theme/shape/square/')
my_module.copy_path('data/theme/default/*.edf','theme/shape/square/')
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-Search.xml','')
my_module.add_path(os.path.join(tools.get_current_path(__file__), "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.compile_flags('c', [
"-DPROJECT_NAME=\"\\\""+my_module.name+"\\\"\"",
"-DAPPL_VERSION=\"\\\"" + tools.version_to_string(get_version()) + "\\\"\""
])
versionIDCode = str(get_version_id())
# set the package properties:
my_module.pkg_set("VERSION_CODE", versionIDCode)
if target.name=="MacOs":
my_module.pkg_set("ICON", os.path.join(tools.get_current_path(__file__), "data/icon.icns"))
else:
my_module.pkg_set("ICON", os.path.join(tools.get_current_path(__file__), "data/icon.png"))
my_module.pkg_set("SECTION", ["Development", "Editors"])
my_module.pkg_set("PRIORITY", "optional")
my_module.pkg_add("RIGHT", "WRITE_EXTERNAL_STORAGE")
my_module.pkg_add("RIGHT", "SET_ORIENTATION")
return my_module

View File

@@ -1,22 +1,15 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/types.h> #include <etk/types.h>
#include <etk/stdTools.h> #include <etk/stdTools.h>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/context/clipBoard.h> #include <gale/context/clipBoard.h>
#include <appl/HighlightManager.h> #include <appl/HighlightManager.h>
#undef __class__
#define __class__ "Buffer"
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () { appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
m_value = u32char::Null; m_value = u32char::Null;
if (m_current < 0) { if (m_current < 0) {
@@ -115,10 +108,10 @@ appl::Buffer::Iterator appl::Buffer::selectStop() {
} }
appl::Buffer::Buffer() : appl::Buffer::Buffer() :
signalIsModify(*this, "is-modify"), signalIsModify(this, "is-modify", ""),
signalIsSave(*this, "is-save"), signalIsSave(this, "is-save", ""),
signalSelectChange(*this, "select-change"), signalSelectChange(this, "select-change", ""),
signalChangeName(*this, "change-name"), signalChangeName(this, "change-name", ""),
m_hasFileName(false), m_hasFileName(false),
m_fileName(""), m_fileName(""),
m_isModify(false), m_isModify(false),
@@ -138,7 +131,7 @@ void appl::Buffer::init() {
} }
appl::Buffer::~Buffer() { appl::Buffer::~Buffer() {
APPL_ERROR("REAL remove buffer : '" << m_name << "'"); APPL_ERROR("REAL remove buffer : '" << propertyName << "'");
} }
bool appl::Buffer::loadFile(const std::string& _name) { bool appl::Buffer::loadFile(const std::string& _name) {
@@ -714,7 +707,7 @@ void appl::Buffer::setHighlightType(const std::string& _type) {
void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64_t _nbAdded) { void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64_t _nbAdded) {
// prevent ERROR... // prevent ERROR...
if (nullptr == m_highlight) { if (m_highlight == nullptr) {
return; return;
} }
// prevent No data Call // prevent No data Call
@@ -777,7 +770,7 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
// update position after the range position : // update position after the range position :
int64_t elemStart; int64_t elemStart;
if (startId == -1) { if (startId <= -1) {
elemStart = 0; elemStart = 0;
} else { } else {
elemStart = startId+1; elemStart = startId+1;
@@ -878,7 +871,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
} }
void appl::Buffer::generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos) { void appl::Buffer::generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos) {
if (nullptr == m_highlight) { if (m_highlight == nullptr) {
return; return;
} }
//APPL_DEBUG("area : ("<<pos<<","<<endPos<<") insert at : " << addingPos); //APPL_DEBUG("area : ("<<pos<<","<<endPos<<") insert at : " << addingPos);
@@ -910,7 +903,7 @@ appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64
void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines) { void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines) {
_MData.posHLPass1 = 0; _MData.posHLPass1 = 0;
_MData.posHLPass2 = 0; _MData.posHLPass2 = 0;
if (nullptr == m_highlight) { if (m_highlight == nullptr) {
return; return;
} }
//int64_t timeStart = ewol::getTime(); //int64_t timeStart = ewol::getTime();
@@ -1015,24 +1008,24 @@ uint32_t appl::Buffer::getCursorLinesId() {
} }
namespace etk { namespace etk {
template<> std::string to_string<std::shared_ptr<appl::Buffer>>(const std::shared_ptr<appl::Buffer>& _obj) { template<> std::string to_string<ememory::SharedPtr<appl::Buffer>>(const ememory::SharedPtr<appl::Buffer>& _obj) {
if (_obj != nullptr) { if (_obj != nullptr) {
return _obj->getFileName(); return _obj->getFileName();
} }
return ""; return "";
} }
template<> std::u32string to_u32string<std::shared_ptr<appl::Buffer>>(const std::shared_ptr<appl::Buffer>& _obj) { template<> std::u32string to_u32string<ememory::SharedPtr<appl::Buffer>>(const ememory::SharedPtr<appl::Buffer>& _obj) {
return etk::to_u32string(etk::to_string(_obj)); return etk::to_u32string(etk::to_string(_obj));
} }
template<> bool from_string<std::shared_ptr<appl::Buffer>>(std::shared_ptr<appl::Buffer>& _variableRet, const std::string& _value) { template<> bool from_string<ememory::SharedPtr<appl::Buffer>>(ememory::SharedPtr<appl::Buffer>& _variableRet, const std::string& _value) {
if (_variableRet != nullptr) { if (_variableRet != nullptr) {
_variableRet->loadFile(_value); _variableRet->loadFile(_value);
return true; return true;
} }
return false; return false;
} }
template<> bool from_string<std::shared_ptr<appl::Buffer>>(std::shared_ptr<appl::Buffer>& _variableRet, const std::u32string& _value) { template<> bool from_string<ememory::SharedPtr<appl::Buffer>>(ememory::SharedPtr<appl::Buffer>& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, etk::to_string(_value)); return from_string(_variableRet, etk::to_string(_value));
} }
template<> std::string to_string<appl::Buffer>(const appl::Buffer& _obj) { template<> std::string to_string<appl::Buffer>(const appl::Buffer& _obj) {
@@ -1051,3 +1044,8 @@ namespace etk {
} }
}; };
#include <esignal/details/Signal.hxx>
// declare for signal event
ESIGNAL_DECLARE_SIGNAL(ememory::SharedPtr<appl::Buffer>);

View File

@@ -1,23 +1,18 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_BUFFER_H__
#define __APPL_BUFFER_H__
#include <etk/types.h> #include <etk/types.h>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#include <ewol/ewol.h> #include <ewol/ewol.h>
#include <etk/Buffer.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <ewol/widget/Widget.h> #include <ewol/widget/Widget.h>
#include <ewol/compositing/Text.h> #include <ewol/compositing/Text.h>
#include <appl/Highlight.h> #include <appl/Highlight.h>
#include <ewol/object/Signal.h> #include <esignal/Signal.h>
namespace appl { namespace appl {
@@ -27,6 +22,9 @@ namespace appl {
int64_t posHLPass1; int64_t posHLPass1;
int64_t posHLPass2; int64_t posHLPass2;
}; };
class Buffer;
using BufferShared = ememory::SharedPtr<appl::Buffer>;
using BufferWeak = ememory::WeakPtr<appl::Buffer>;
class Buffer : public ewol::Object { class Buffer : public ewol::Object {
public: public:
class Iterator { class Iterator {
@@ -289,10 +287,10 @@ namespace appl {
friend class Buffer; friend class Buffer;
}; };
public: public:
ewol::object::Signal<void> signalIsModify; esignal::Signal<> signalIsModify;
ewol::object::Signal<void> signalIsSave; esignal::Signal<> signalIsSave;
ewol::object::Signal<void> signalSelectChange; esignal::Signal<> signalSelectChange;
ewol::object::Signal<void> signalChangeName; esignal::Signal<> signalChangeName;
protected: protected:
Buffer(); Buffer();
void init(); void init();
@@ -339,7 +337,7 @@ namespace appl {
* @breif get the status of file modification. * @breif get the status of file modification.
* @return true if file is modify. * @return true if file is modify.
*/ */
bool isModify() { bool isModify() const {
return m_isModify; return m_isModify;
} }
/** /**
@@ -592,7 +590,7 @@ namespace appl {
protected: protected:
std::string m_highlightType; //!< Name of the highlight type std::string m_highlightType; //!< Name of the highlight type
std::shared_ptr<appl::Highlight> m_highlight; //!< internal link with the Highlight system ememory::SharedPtr<appl::Highlight> m_highlight; //!< internal link with the Highlight system
std::vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1 std::vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1
public: public:
/** /**
@@ -624,7 +622,4 @@ namespace appl {
void hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _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); appl::HighlightInfo* getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos);
}; };
}; }
#endif

View File

@@ -1,11 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/types.h> #include <etk/types.h>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#include <appl/debug.h> #include <appl/debug.h>
@@ -13,35 +10,29 @@
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <ewol/object/Manager.h> #include <ewol/object/Manager.h>
#include <ewol/resource/Manager.h> #include <esignal/Signal.h>
#include <gale/resource/Manager.h>
#undef __class__
#define __class__ "BufferManager"
appl::BufferManager::BufferManager() : appl::BufferManager::BufferManager() :
signalNewBuffer(*this, "new-buffer"), signalNewBuffer(this, "new-buffer", ""),
signalSelectFile(*this, "select-buffer"), signalSelectFile(this, "select-buffer", ""),
signalTextSelectionChange(*this, "text-selection-change"), signalTextSelectionChange(this, "text-selection-change", ""),
signalRemoveBuffer(*this, "remove-buffer") { signalRemoveBuffer(this, "remove-buffer", "") {
addObjectType("appl::BufferManager"); addObjectType("appl::BufferManager");
} }
void appl::BufferManager::init(const std::string& _uniqueName) {
ewol::Resource::init(_uniqueName);
}
appl::BufferManager::~BufferManager() { appl::BufferManager::~BufferManager() {
m_list.clear(); m_list.clear();
} }
std::shared_ptr<appl::Buffer> appl::BufferManager::createNewBuffer() { ememory::SharedPtr<appl::Buffer> appl::BufferManager::createNewBuffer() {
std::shared_ptr<appl::Buffer> tmp = appl::Buffer::create(); ememory::SharedPtr<appl::Buffer> tmp = appl::Buffer::create();
if (tmp == nullptr) { if (tmp == nullptr) {
APPL_ERROR("Can not allocate the Buffer (empty)."); APPL_ERROR("Can not allocate the Buffer (empty).");
return nullptr; return nullptr;
} }
tmp->setParent(shared_from_this()); tmp->setParent(ewol::Object::sharedFromThis());
m_list.push_back(tmp); m_list.push_back(tmp);
APPL_INFO("Create a new Buffer"); APPL_INFO("Create a new Buffer");
signalNewBuffer.emit(tmp->getFileName()); signalNewBuffer.emit(tmp->getFileName());
@@ -52,7 +43,7 @@ std::shared_ptr<appl::Buffer> appl::BufferManager::createNewBuffer() {
return tmp; return tmp;
} }
std::shared_ptr<appl::Buffer> appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) { ememory::SharedPtr<appl::Buffer> appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) {
APPL_INFO("get('" << _fileName << "'," << _createIfNeeded << ")"); APPL_INFO("get('" << _fileName << "'," << _createIfNeeded << ")");
for (auto &it : m_list) { for (auto &it : m_list) {
if (it == nullptr) { if (it == nullptr) {
@@ -63,17 +54,17 @@ std::shared_ptr<appl::Buffer> appl::BufferManager::get(const std::string& _fileN
} }
} }
if (_createIfNeeded == true) { if (_createIfNeeded == true) {
if (etk::FSNodeGetType(_fileName) == etk::FSN_FOLDER) { if (etk::FSNodeGetType(_fileName) == etk::typeNode_folder) {
APPL_WARNING("try open a folder : " << _fileName); APPL_WARNING("try open a folder : " << _fileName);
APPL_CRITICAL("plop"); APPL_CRITICAL("plop");
return nullptr; return nullptr;
} }
std::shared_ptr<appl::Buffer> tmp = appl::Buffer::create(); ememory::SharedPtr<appl::Buffer> tmp = appl::Buffer::create();
if (tmp == nullptr) { if (tmp == nullptr) {
APPL_ERROR("Can not allocate the Buffer class : " << _fileName); APPL_ERROR("Can not allocate the Buffer class : " << _fileName);
return nullptr; return nullptr;
} }
tmp->setParent(shared_from_this()); tmp->setParent(ewol::Object::sharedFromThis());
tmp->loadFile(_fileName); tmp->loadFile(_fileName);
m_list.push_back(tmp); m_list.push_back(tmp);
APPL_INFO("Creata a open Buffer"); APPL_INFO("Creata a open Buffer");
@@ -84,18 +75,20 @@ std::shared_ptr<appl::Buffer> appl::BufferManager::get(const std::string& _fileN
return nullptr; return nullptr;
} }
void appl::BufferManager::setBufferSelected(std::shared_ptr<appl::Buffer> _bufferSelected) { void appl::BufferManager::setBufferSelected(ememory::SharedPtr<appl::Buffer> _bufferSelected) {
m_bufferSelected = _bufferSelected; m_bufferSelected = _bufferSelected;
if (m_bufferSelected == nullptr) { if (m_bufferSelected == nullptr) {
APPL_ERROR("select a NULL buffer ..."); APPL_ERROR("select a NULL buffer ...");
propertySetOnWidgetNamed("appl-widget-display-name", "value", "---");
return; return;
} }
APPL_INFO("Set buffer selected"); APPL_INFO("Set buffer selected");
//signalSelectFile.emit(m_bufferSelected->getName()); //signalSelectFile.emit(m_bufferSelected->getName());
//propertySetOnWidgetNamed("appl-widget-display-name", "value", m_bufferSelected->getName());
APPL_INFO("Set buffer selected (done)"); APPL_INFO("Set buffer selected (done)");
} }
std::shared_ptr<appl::Buffer> appl::BufferManager::get(int32_t _id) { ememory::SharedPtr<appl::Buffer> appl::BufferManager::get(int32_t _id) {
int32_t id = 0; int32_t id = 0;
for (auto &it : m_list) { for (auto &it : m_list) {
if (id == _id) { if (id == _id) {
@@ -122,6 +115,7 @@ void appl::BufferManager::open(const std::string& _fileName) {
if (exist(_fileName) == true) { if (exist(_fileName) == true) {
APPL_WARNING(" the element '" << _fileName << "' already exist ... just reselect it ..."); APPL_WARNING(" the element '" << _fileName << "' already exist ... just reselect it ...");
signalSelectFile.emit(_fileName); signalSelectFile.emit(_fileName);
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName(_fileName));
return; return;
} }
if (get(_fileName, true) == nullptr) { if (get(_fileName, true) == nullptr) {
@@ -129,10 +123,10 @@ void appl::BufferManager::open(const std::string& _fileName) {
return; return;
} }
signalSelectFile.emit(_fileName); signalSelectFile.emit(_fileName);
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName(_fileName));
} }
void appl::BufferManager::requestDestroyFromChild(const ememory::SharedPtr<Object>& _child) {
void appl::BufferManager::requestDestroyFromChild(const std::shared_ptr<Object>& _child) {
APPL_WARNING("Buffer request a close..."); APPL_WARNING("Buffer request a close...");
bool find = false; bool find = false;
int32_t newValue = -1; int32_t newValue = -1;
@@ -151,11 +145,28 @@ void appl::BufferManager::requestDestroyFromChild(const std::shared_ptr<Object>&
++it; ++it;
} }
if (find == true) { if (find == true) {
signalRemoveBuffer.emit(std::dynamic_pointer_cast<appl::Buffer>(_child)); signalRemoveBuffer.emit(ememory::dynamicPointerCast<appl::Buffer>(_child));
} }
if (m_bufferSelected == _child) { if (m_bufferSelected == _child) {
APPL_ERROR("is selected"); if ( it != m_list.end()
&& *it != nullptr) {
APPL_VERBOSE("Remove buffer select new one");
signalSelectFile.emit((*it)->getFileName());
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName((*it)->getFileName()));
APPL_VERBOSE("Remove buffer select new one (done)");
return;
}
if ( m_list.size() != 0
&& m_list.back() != nullptr) {
APPL_VERBOSE("Remove buffer select new one (last)");
signalSelectFile.emit(m_list.back()->getFileName());
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName(m_list.back()->getFileName()));
APPL_VERBOSE("Remove buffer select new one (done)");
return;
}
signalSelectFile.emit(""); signalSelectFile.emit("");
propertySetOnWidgetNamed("appl-widget-display-name", "value", "---");
m_bufferSelected = nullptr; m_bufferSelected = nullptr;
} }
} }

View File

@@ -1,35 +1,34 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __BUFFER_MANAGER_H__
#define __BUFFER_MANAGER_H__
#include <list> #include <list>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
#include <ewol/widget/Widget.h> #include <ewol/widget/Widget.h>
#include <ewol/resource/Resource.h> #include <gale/resource/Resource.h>
namespace appl { namespace appl {
class BufferManager : public ewol::Resource { 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: public:
ewol::object::Signal<std::string> signalNewBuffer; esignal::Signal<std::string> signalNewBuffer;
ewol::object::Signal<std::string> signalSelectFile; esignal::Signal<std::string> signalSelectFile;
ewol::object::Signal<void> signalTextSelectionChange; esignal::Signal<> signalTextSelectionChange;
ewol::object::Signal<std::shared_ptr<appl::Buffer>> signalRemoveBuffer; esignal::Signal<ememory::SharedPtr<appl::Buffer>> signalRemoveBuffer;
protected: protected:
BufferManager(); BufferManager();
void init(const std::string& _uniqueName);
public: public:
DECLARE_RESOURCE_SINGLE_FACTORY(BufferManager, "???Buffer_Manager???"); DECLARE_SINGLE_FACTORY(BufferManager, "???Buffer_Manager???");
virtual ~BufferManager(); virtual ~BufferManager();
private: private:
std::list<std::shared_ptr<appl::Buffer>> m_list; // list of all buffer curently open std::list<ememory::SharedPtr<appl::Buffer>> m_list; // list of all buffer curently open
public: public:
/** /**
* @brief Get a specific buffer with his name (can create a new buffer). * @brief Get a specific buffer with his name (can create a new buffer).
@@ -37,7 +36,7 @@ namespace appl {
* @param[in] _createIfNeeded Create the buffer if not existed. * @param[in] _createIfNeeded Create the buffer if not existed.
* @return a pointer on the buffer * @return a pointer on the buffer
*/ */
std::shared_ptr<appl::Buffer> get(const std::string& _fileName, bool _createIfNeeded=false); ememory::SharedPtr<appl::Buffer> get(const std::string& _fileName, bool _createIfNeeded=false);
/** /**
* @brief Load a specific file, event if it not existed: * @brief Load a specific file, event if it not existed:
* @param[in] _fileName Name of the file to open or create. * @param[in] _fileName Name of the file to open or create.
@@ -61,31 +60,44 @@ namespace appl {
* @param[in] _id Number of buffer * @param[in] _id Number of buffer
* @return pointer on the buffer * @return pointer on the buffer
*/ */
std::shared_ptr<appl::Buffer> get(int32_t _id); ememory::SharedPtr<appl::Buffer> get(int32_t _id);
/** /**
* @brief Create a new buffer empty. * @brief Create a new buffer empty.
* @return Created buffer or nullptr. * @return Created buffer or nullptr.
*/ */
std::shared_ptr<appl::Buffer> createNewBuffer(); ememory::SharedPtr<appl::Buffer> createNewBuffer();
private: private:
std::shared_ptr<appl::Buffer> m_bufferSelected; ememory::SharedPtr<appl::Buffer> m_bufferSelected;
public: public:
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
* @param[in] _bufferSelected Pointer on the buffer selected * @param[in] _bufferSelected Pointer on the buffer selected
*/ */
void setBufferSelected(std::shared_ptr<appl::Buffer> _bufferSelected); void setBufferSelected(ememory::SharedPtr<appl::Buffer> _bufferSelected);
/** /**
* @brief Get the current buffer selected * @brief Get the current buffer selected
* @return Pointer on the buffer selected * @return Pointer on the buffer selected
*/ */
std::shared_ptr<appl::Buffer> getBufferSelected() { ememory::SharedPtr<appl::Buffer> getBufferSelected() {
return m_bufferSelected; return m_bufferSelected;
}; };
private: private:
void requestDestroyFromChild(const std::shared_ptr<Object>& _child); void requestDestroyFromChild(const ememory::SharedPtr<Object>& _child);
public:
// generic iterators:
std::list<ememory::SharedPtr<appl::Buffer>>::const_iterator begin() const {
return m_list.begin();
}
std::list<ememory::SharedPtr<appl::Buffer>>::const_iterator end() const {
return m_list.end();
}
std::list<ememory::SharedPtr<appl::Buffer>>::iterator begin() {
return m_list.begin();
}
std::list<ememory::SharedPtr<appl::Buffer>>::iterator end() {
return m_list.end();
}
}; };
}; }
#endif

View File

@@ -1,51 +1,40 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/GlyphDecoration.h> #include <appl/GlyphDecoration.h>
#undef __class__
#define __class__ "GlyphDecoration"
appl::GlyphDecoration::GlyphDecoration(const std::string &_newColorName) : appl::GlyphDecoration::GlyphDecoration(const std::string &_newColorName) :
m_colorName(_newColorName), m_colorName(_newColorName),
m_colorFG(etk::color::black), m_colorFG(etk::color::black),
m_colorBG(etk::color::none), m_colorBG(etk::color::none),
m_italic(false), m_italic(false),
m_bold(false) m_bold(false) {
{ APPL_VERBOSE("create");
APPL_VERBOSE("New(" << __class__ << ")");
} }
void appl::GlyphDecoration::setItalic(bool _enable) void appl::GlyphDecoration::setItalic(bool _enable) {
{
m_italic = _enable; m_italic = _enable;
if (true == _enable) { if (_enable == true) {
APPL_VERBOSE("color : \"" << m_colorName << "\" enable italic"); APPL_VERBOSE("color : \"" << m_colorName << "\" enable italic");
} else { } else {
APPL_VERBOSE("color : \"" << m_colorName << "\" disable italic"); APPL_VERBOSE("color : \"" << m_colorName << "\" disable italic");
} }
} }
void appl::GlyphDecoration::setBold(bool _enable) void appl::GlyphDecoration::setBold(bool _enable) {
{
m_bold = _enable; m_bold = _enable;
if (true == _enable) { if (_enable == true) {
APPL_VERBOSE("color : \"" << m_colorName << "\" enable bold"); APPL_VERBOSE("color : \"" << m_colorName << "\" enable bold");
} else { } else {
APPL_VERBOSE("color : \"" << m_colorName << "\" disable bold"); APPL_VERBOSE("color : \"" << m_colorName << "\" disable bold");
} }
} }
std::ostream& appl::operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj) std::ostream& appl::operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj) {
{
_os << "{fg=" << _obj.getForeground(); _os << "{fg=" << _obj.getForeground();
_os << ",bg=" << _obj.getBackground(); _os << ",bg=" << _obj.getBackground();
_os << ",italic=" << _obj.getItalic(); _os << ",italic=" << _obj.getItalic();

View File

@@ -1,13 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __GLYPH_DECORATION_H__
#define __GLYPH_DECORATION_H__
#include <etk/Color.h> #include <etk/Color.h>
#include <etk/types.h> #include <etk/types.h>
@@ -119,6 +115,4 @@ namespace appl {
std::ostream& operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj); std::ostream& operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj);
} }
#endif

View File

@@ -1,30 +1,23 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/GlyphPainting.h> #include <appl/GlyphPainting.h>
#include <ejson/ejson.h> #include <ejson/ejson.h>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#include <ewol/resource/Manager.h> #include <gale/resource/Manager.h>
#undef __class__
#define __class__ "GlyphPainting"
appl::GlyphPainting::GlyphPainting() { appl::GlyphPainting::GlyphPainting() {
addObjectType("appl::GlyphPainting"); addResourceType("appl::GlyphPainting");
} }
void appl::GlyphPainting::init(const std::string& _filename) { void appl::GlyphPainting::init(const std::string& _filename) {
ewol::Resource::init(_filename); gale::Resource::init(_filename);
EWOL_DEBUG("SFP : load \"" << _filename << "\""); APPL_DEBUG("SFP : load \"" << _filename << "\"");
reload(); reload();
} }
@@ -34,7 +27,7 @@ appl::GlyphPainting::~GlyphPainting() {
void appl::GlyphPainting::reload() { void appl::GlyphPainting::reload() {
ejson::Document doc; ejson::Document doc;
if (false == doc.load(m_name)) { if (doc.load(m_name) == false) {
APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName()); APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName());
return; return;
} }
@@ -45,22 +38,22 @@ void appl::GlyphPainting::reload() {
doc.generate(tmppppp); doc.generate(tmppppp);
APPL_DEBUG(tmppppp); APPL_DEBUG(tmppppp);
*/ */
ejson::Array* baseArray = doc.getArray("ednColor"); ejson::Array baseArray = doc["ednColor"].toArray();
if (baseArray == nullptr) { if (baseArray.exist() == false) {
APPL_ERROR("Can not get basic array : 'ednColor'"); APPL_ERROR("Can not get basic array : 'ednColor'");
return; return;
} }
for (size_t iii = 0; iii < baseArray->size(); ++iii) { for (const auto it : baseArray) {
ejson::Object* tmpObj = baseArray->getObject(iii); ejson::Object tmpObj = it.toObject();
if (tmpObj == nullptr) { if (tmpObj.exist() == false) {
APPL_DEBUG(" can not get object in 'ednColor' id=" << iii); APPL_DEBUG(" can not get object in 'ednColor' it=" << it);
continue; continue;
} }
std::string name = tmpObj->getStringValue("name", ""); std::string name = tmpObj["name"].toString().get();
std::string background = tmpObj->getStringValue("background", "#FFF0"); std::string background = tmpObj["background"].toString().get("#FFF0");
std::string foreground = tmpObj->getStringValue("foreground", "#000F"); std::string foreground = tmpObj["foreground"].toString().get("#000F");
bool italic = tmpObj->getBooleanValue("italic", false); bool italic = tmpObj["italic"].toBoolean().get(false);
bool bold = tmpObj->getBooleanValue("bold", false); bool bold = tmpObj["bold"].toBoolean().get(false);
APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'"); APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'");
bool findElement = false; bool findElement = false;
for (size_t jjj=0; jjj<m_list.size(); ++jjj) { for (size_t jjj=0; jjj<m_list.size(); ++jjj) {

View File

@@ -1,21 +1,17 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_GLYPH_PAINTING_H__
#define __APPL_GLYPH_PAINTING_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/debug.h> #include <ewol/debug.h>
#include <ewol/resource/Resource.h> #include <gale/resource/Resource.h>
#include <appl/GlyphDecoration.h> #include <appl/GlyphDecoration.h>
namespace appl { namespace appl {
class GlyphPainting : public ewol::Resource { class GlyphPainting : public gale::Resource {
private: private:
std::vector<appl::GlyphDecoration> m_list; std::vector<appl::GlyphDecoration> m_list;
protected: protected:
@@ -52,7 +48,6 @@ namespace appl {
return m_list[_pos]; return m_list[_pos];
} }
}; };
}; }
#endif

View File

@@ -1,11 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/BufferView.h> #include <appl/Gui/BufferView.h>
@@ -14,9 +11,6 @@
#include <appl/Gui/MainWindows.h> #include <appl/Gui/MainWindows.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#undef __class__
#define __class__ "BufferView"
// TODO : write it better // TODO : write it better
static void SortElementList(std::vector<appl::dataBufferStruct>& _list) { static void SortElementList(std::vector<appl::dataBufferStruct>& _list) {
std::vector<appl::dataBufferStruct> tmpList = _list; std::vector<appl::dataBufferStruct> tmpList = _list;
@@ -37,7 +31,6 @@ static void SortElementList(std::vector<appl::dataBufferStruct>& _list) {
BufferView::BufferView() : BufferView::BufferView() :
m_openOrderMode(false) { m_openOrderMode(false) {
addObjectType("appl::BufferView"); addObjectType("appl::BufferView");
setCanHaveFocus(true);
m_selectedID = -1; m_selectedID = -1;
m_selectedIdRequested = -1; m_selectedIdRequested = -1;
// load buffer manager: // load buffer manager:
@@ -54,10 +47,12 @@ BufferView::BufferView() :
void BufferView::init() { void BufferView::init() {
ewol::widget::List::init(); ewol::widget::List::init();
propertyHide.set(true);
propertyCanFocus.set(true);
if (m_bufferManager != nullptr) { if (m_bufferManager != nullptr) {
m_bufferManager->signalNewBuffer.bind(shared_from_this(), &BufferView::onCallbackNewBuffer); m_bufferManager->signalNewBuffer.connect(sharedFromThis(), &BufferView::onCallbackNewBuffer);
m_bufferManager->signalSelectFile.bind(shared_from_this(), &BufferView::onCallbackselectNewFile); m_bufferManager->signalSelectFile.connect(sharedFromThis(), &BufferView::onCallbackselectNewFile);
m_bufferManager->signalRemoveBuffer.bind(shared_from_this(), &BufferView::onCallbackBufferRemoved); m_bufferManager->signalRemoveBuffer.connect(sharedFromThis(), &BufferView::onCallbackBufferRemoved);
} }
} }
@@ -87,20 +82,27 @@ void BufferView::insertAlphabetic(const appl::dataBufferStruct& _dataStruct, boo
} }
void BufferView::onCallbackNewBuffer(const std::string& _value) { void BufferView::onCallbackNewBuffer(const std::string& _value) {
std::shared_ptr<appl::Buffer> buffer = m_bufferManager->get(_value); ememory::SharedPtr<appl::Buffer> buffer = m_bufferManager->get(_value);
if (buffer == nullptr) { if (buffer == nullptr) {
APPL_ERROR("event on element nor exist : " << _value); APPL_ERROR("event on element nor exist : " << _value);
return; return;
} }
buffer->signalIsSave.bind(shared_from_this(), &BufferView::onCallbackIsSave); buffer->signalIsSave.connect(sharedFromThis(), &BufferView::onCallbackIsSave);
buffer->signalIsModify.bind(shared_from_this(), &BufferView::onCallbackIsModify); buffer->signalIsModify.connect(sharedFromThis(), &BufferView::onCallbackIsModify);
buffer->signalChangeName.bind(shared_from_this(), &BufferView::onCallbackChangeName); buffer->signalChangeName.connect(sharedFromThis(), &BufferView::onCallbackChangeName);
appl::dataBufferStruct tmp(_value, buffer); appl::dataBufferStruct tmp(_value, buffer);
if (m_openOrderMode == true) { if (m_openOrderMode == true) {
m_list.push_back(tmp); m_list.push_back(tmp);
} else { } else {
insertAlphabetic(tmp); insertAlphabetic(tmp);
} }
if (m_list.size() <= 1) {
propertyHide.set(true);
propertySetOnWidgetNamed("appl-Buffer-viewer-separator", "hide", "true");
} else {
propertyHide.set(false);
propertySetOnWidgetNamed("appl-Buffer-viewer-separator", "hide", "false");
}
markToRedraw(); markToRedraw();
} }
@@ -136,7 +138,7 @@ void BufferView::onCallbackChangeName() {
markToRedraw(); markToRedraw();
} }
void BufferView::onCallbackBufferRemoved(const std::shared_ptr<appl::Buffer>& _buffer) { void BufferView::onCallbackBufferRemoved(const ememory::SharedPtr<appl::Buffer>& _buffer) {
APPL_ERROR("request remove buffer:"); APPL_ERROR("request remove buffer:");
auto it = m_list.begin(); auto it = m_list.begin();
while (it != m_list.end()) { while (it != m_list.end()) {
@@ -147,6 +149,11 @@ void BufferView::onCallbackBufferRemoved(const std::shared_ptr<appl::Buffer>& _b
++it; ++it;
} }
} }
if (m_list.size() <= 1) {
propertyHide.set(true);
} else {
propertyHide.set(false);
}
markToRedraw(); markToRedraw();
} }
void BufferView::onCallbackIsSave() { void BufferView::onCallbackIsSave() {
@@ -199,8 +206,8 @@ bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextT
return true; return true;
} }
bool BufferView::onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) { bool BufferView::onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) {
if (1 == _IdInput && _typeEvent == ewol::key::statusSingle) { if (1 == _IdInput && _typeEvent == gale::key::status::pressSingle) {
APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw );
if( _raw >= 0 if( _raw >= 0
&& _raw<(int64_t)m_list.size()) { && _raw<(int64_t)m_list.size()) {

View File

@@ -1,13 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __BUFFER_VIEW_H__
#define __BUFFER_VIEW_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
@@ -19,8 +15,8 @@ namespace appl {
class dataBufferStruct { class dataBufferStruct {
public: public:
etk::FSNode m_bufferName; etk::FSNode m_bufferName;
std::shared_ptr<appl::Buffer> m_buffer; ememory::SharedPtr<appl::Buffer> m_buffer;
dataBufferStruct(const std::string& _bufferName, const std::shared_ptr<appl::Buffer>& _buffer) : dataBufferStruct(const std::string& _bufferName, const ememory::SharedPtr<appl::Buffer>& _buffer) :
m_bufferName(_bufferName), m_bufferName(_bufferName),
m_buffer(_buffer) { m_buffer(_buffer) {
@@ -29,11 +25,14 @@ namespace appl {
}; };
}; };
class BufferView;
using BufferViewShared = ememory::SharedPtr<BufferView>;
using BufferViewWeak = ememory::WeakPtr<BufferView>;
class BufferView : public ewol::widget::List { class BufferView : public ewol::widget::List {
private: private:
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
private: private:
std::shared_ptr<appl::GlyphPainting> m_paintingProperties; //!< element painting property ememory::SharedPtr<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground1; int32_t m_colorBackground1;
int32_t m_colorBackground2; int32_t m_colorBackground2;
int32_t m_colorBackgroundSelect; int32_t m_colorBackgroundSelect;
@@ -66,17 +65,13 @@ class BufferView : public ewol::widget::List {
virtual bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg); virtual bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg);
virtual uint32_t getNuberOfRaw(); virtual uint32_t getNuberOfRaw();
virtual bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg); 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::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y); virtual bool onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y);
private: //callback function: private: //callback function:
void onCallbackChangeName(); void onCallbackChangeName();
void onCallbackIsSave(); void onCallbackIsSave();
void onCallbackIsModify(); void onCallbackIsModify();
void onCallbackNewBuffer(const std::string& _value); void onCallbackNewBuffer(const std::string& _value);
void onCallbackselectNewFile(const std::string& _value); void onCallbackselectNewFile(const std::string& _value);
void onCallbackBufferRemoved(const std::shared_ptr<appl::Buffer>& _buffer); void onCallbackBufferRemoved(const ememory::SharedPtr<appl::Buffer>& _buffer);
}; };
#endif

View File

@@ -1,12 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/MainWindows.h> #include <appl/Gui/MainWindows.h>
@@ -30,7 +26,6 @@
#include <ewol/widget/Manager.h> #include <ewol/widget/Manager.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <date/date.h>
#include <ewol/widget/meta/StdPopUp.h> #include <ewol/widget/meta/StdPopUp.h>
#include <appl/Gui/WorkerSaveFile.h> #include <appl/Gui/WorkerSaveFile.h>
#include <appl/Gui/WorkerSaveAllFile.h> #include <appl/Gui/WorkerSaveAllFile.h>
@@ -39,21 +34,11 @@
namespace appl { namespace appl {
std::string getVersion() { std::string getVersion() {
#define FIRST_YEAR (2010) return APPL_VERSION;
std::string tmpOutput = etk::to_string(date::getYear()-FIRST_YEAR);
tmpOutput += ".";
tmpOutput += etk::to_string(date::getMonth());
tmpOutput += ".";
tmpOutput += etk::to_string(date::getDay());
return tmpOutput;
} }
} }
#undef __class__
#define __class__ "AboutGui"
#include <ewol/widget/Label.h> #include <ewol/widget/Label.h>
#include <ewol/widget/Spacer.h> #include <ewol/widget/Spacer.h>
@@ -63,31 +48,21 @@ class ParameterAboutGui : public ewol::widget::Sizer {
addObjectType("appl::ParameterAboutGui"); addObjectType("appl::ParameterAboutGui");
} }
void init() { void init() {
ewol::widget::Sizer::init(ewol::widget::Sizer::modeVert); propertyMode.setDirectCheck(ewol::widget::Sizer::modeVert);
std::shared_ptr<ewol::widget::Spacer> mySpacer; ewol::widget::Sizer::init();
ememory::SharedPtr<ewol::widget::Spacer> mySpacer;
mySpacer = ewol::widget::Spacer::create(); mySpacer = ewol::widget::Spacer::create();
if (nullptr == mySpacer) { if (mySpacer == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
mySpacer->setExpand(bvec2(true,true)); mySpacer->propertyExpand.set(bvec2(true,true));
subWidgetAdd(mySpacer); subWidgetAdd(mySpacer);
} }
std::string tmpLabel = "<left>"; std::string tmpLabel = "<left>";
tmpLabel += " <b>Editeur De N'ours</b> : v:"; tmpLabel += " <b>Editeur De N'ours</b> : v:";
tmpLabel += appl::getVersion(); tmpLabel += appl::getVersion();
tmpLabel += "<br/>"; 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>Website</b> : https://github.com/HeeroYui/edn<br/>";
tmpLabel += " <b>License</b> : GPL v3<br/>"; tmpLabel += " <b>License</b> : GPL v3<br/>";
tmpLabel += " <b>Copyright</b> : 2010 Edouard DUPIN<br/>"; tmpLabel += " <b>Copyright</b> : 2010 Edouard DUPIN<br/>";
@@ -96,11 +71,12 @@ class ParameterAboutGui : public ewol::widget::Sizer {
tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>"; tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>";
tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>"; tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>";
tmpLabel += "</left>"; tmpLabel += "</left>";
std::shared_ptr<ewol::widget::Label> myLabel = ewol::widget::Label::create(tmpLabel); ememory::SharedPtr<ewol::widget::Label> myLabel = ewol::widget::Label::create();
if (nullptr == myLabel) { if (myLabel == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
myLabel->setExpand(bvec2(true,false)); myLabel->propertyValue.set(tmpLabel);
myLabel->propertyExpand.set(bvec2(true,false));
subWidgetAdd(myLabel); subWidgetAdd(myLabel);
} }
}; };
@@ -109,18 +85,6 @@ class ParameterAboutGui : public ewol::widget::Sizer {
}; };
}; };
// 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";
static const char* l_MsgNameGuiChangeShape = "appl-event-main-windows-Change-shape";
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() { MainWindows::MainWindows() {
addObjectType("appl::MainWindows"); addObjectType("appl::MainWindows");
@@ -129,90 +93,123 @@ MainWindows::MainWindows() {
void MainWindows::init() { void MainWindows::init() {
ewol::widget::Windows::init(); ewol::widget::Windows::init();
APPL_DEBUG("CREATE WINDOWS ... "); APPL_DEBUG("CREATE WINDOWS ... ");
std::shared_ptr<ewol::widget::Sizer> mySizerVert = nullptr; ewol::widget::SizerShared mySizerVert;
std::shared_ptr<ewol::widget::Sizer> mySizerVert2 = nullptr; ewol::widget::SizerShared mySizerVert2;
std::shared_ptr<ewol::widget::Sizer> mySizerHori = nullptr; ewol::widget::SizerShared mySizerHori;
std::shared_ptr<appl::TextViewer> myTextView = nullptr; ememory::SharedPtr<appl::TextViewer> myTextView;
std::shared_ptr<BufferView> myBufferView = nullptr; ememory::SharedPtr<appl::TextViewer> myTextView2;
std::shared_ptr<ewol::widget::Menu> myMenu = nullptr; ememory::SharedPtr<BufferView> myBufferView;
ewol::widget::MenuShared myMenu;
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::create(); m_bufferManager = appl::BufferManager::create();
m_viewerManager = appl::ViewerManager::create();
mySizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); mySizerVert = ewol::widget::Sizer::create();
mySizerVert->setName("plop 1111111"); mySizerVert->propertyName.set("plop 1111111");
mySizerVert->propertyMode.set(ewol::widget::Sizer::modeVert);
setSubWidget(mySizerVert); setSubWidget(mySizerVert);
mySizerHori = ewol::widget::Sizer::create();
mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori); mySizerHori->propertyName.set("plop 222222222");
mySizerHori->setName("plop 222222222"); mySizerHori->propertyMode.set(ewol::widget::Sizer::modeHori);
mySizerVert->subWidgetAdd(mySizerHori); mySizerVert->subWidgetAdd(mySizerHori);
myBufferView = BufferView::create(); myBufferView = BufferView::create();
myBufferView->setName("plop 3333333"); myBufferView->propertyName.set("plop 3333333");
myBufferView->setExpand(bvec2(false,true)); myBufferView->propertyExpand.set(bvec2(false,true));
myBufferView->setFill(bvec2(true,true)); myBufferView->propertyFill.set(bvec2(true,true));
mySizerHori->subWidgetAdd(myBufferView); mySizerHori->subWidgetAdd(myBufferView);
mySizerVert2 = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); 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); mySizerHori->subWidgetAdd(mySizerVert2);
mySizerVert2->setName("plop 4444444"); mySizerVert2->propertyName.set("appl-view-code-sizer");
// main buffer Area : // main buffer Area :
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
myTextView = appl::TextViewer::create("FreeMono;DejaVuSansMono;FreeSerif", 16); int32_t sizeText = 16;
#else #else
myTextView = appl::TextViewer::create("FreeMono;DejaVuSansMono;FreeSerif", 11); int32_t sizeText = 11;
#endif #endif
myTextView->setName("appl-text-viewer"); myTextView2 = appl::TextViewer::create("font-size", sizeText);
myTextView->setExpand(bvec2(true,true)); myTextView2->propertyName.set("appl-text-viewer2");
myTextView->setFill(bvec2(true,true)); myTextView2->propertyExpand.set(bvec2(true,true));
myTextView2->propertyFill.set(bvec2(true,true));
myTextView2->propertyHide.set(true);
mySizerVert2->subWidgetAdd(myTextView2);
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); mySizerVert2->subWidgetAdd(myTextView);
/*
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11); // search area:
myTextView->setExpand(bvec2(true,true));
myTextView->setFill(bvec2(true,true));
mySizerVert2->subWidgetAdd(myTextView);
*/
// search area :
m_widgetSearch = appl::widget::Search::create(); m_widgetSearch = appl::widget::Search::create();
mySizerVert2->subWidgetAdd(m_widgetSearch); mySizerVert2->subWidgetAdd(m_widgetSearch);
mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori); mySizerHori = ewol::widget::Sizer::create();
mySizerHori->setName("plop 555555"); mySizerHori->propertyName.set("plop 555555");
mySizerHori->propertyMode.set(ewol::widget::Sizer::modeHori);
mySizerVert->subWidgetAdd(mySizerHori); mySizerVert->subWidgetAdd(mySizerHori);
myMenu = ewol::widget::Menu::create(); myMenu = ewol::widget::Menu::create();
myMenu->setName("appl-menu-interface"); myMenu->propertyName.set("appl-menu-interface");
mySizerHori->subWidgetAdd(myMenu); mySizerHori->subWidgetAdd(myMenu);
int32_t idMenuFile = myMenu->addTitle("File"); int32_t idMenuFile = myMenu->addTitle("_T{File}");
myMenu->add(idMenuFile, "New", "", "menu:new"); myMenu->add(idMenuFile, "_T{New}", "", "menu:new");
myMenu->addSpacer(); myMenu->addSpacer();
myMenu->add(idMenuFile, "Open", "THEME:GUI:Load.edf", "menu:open"); myMenu->add(idMenuFile, "_T{Open}", "THEME:GUI:Load.edf", "menu:open");
myMenu->add(idMenuFile, "Close", "THEME:GUI:Close.edf", "menu:close"); myMenu->add(idMenuFile, "_T{Close}", "THEME:GUI:Close.edf", "menu:close");
myMenu->add(idMenuFile, "Close (all)", "", "menu:close-all"); myMenu->add(idMenuFile, "_T{Close (all)}", "", "menu:close-all");
myMenu->add(idMenuFile, "Save", "THEME:GUI:Save.edf", "menu:save"); myMenu->add(idMenuFile, "_T{Save}", "THEME:GUI:Save.edf", "menu:save");
myMenu->add(idMenuFile, "Save As ...", "", "menu:save-as"); myMenu->add(idMenuFile, "_T{Save As ...}", "", "menu:save-as");
myMenu->addSpacer(); myMenu->addSpacer();
myMenu->add(idMenuFile, "Properties", "THEME:GUI:Parameter.edf", "menu:property"); myMenu->add(idMenuFile, "_T{Properties}", "THEME:GUI:Parameter.edf", "menu:property");
int32_t idMenuEdit = myMenu->addTitle("Edit"); int32_t idMenuEdit = myMenu->addTitle("_T{Edit}");
myMenu->add(idMenuEdit, "Goto line ...","", "menu:goto-line"); myMenu->add(idMenuEdit, "_T{Goto line ...}","", "menu:goto-line");
int32_t idMenuSearch = myMenu->addTitle("Search"); int32_t idMenuSearch = myMenu->addTitle("_T{Search}");
myMenu->add(idMenuSearch, "Search", "THEME:GUI:Search.edf", "menu:search"); myMenu->add(idMenuSearch, "_T{Search}", "THEME:GUI:Search.edf", "menu:search");
myMenu->add(idMenuSearch, "Replace", "THEME:GUI:Replace.edf", "menu:replace"); myMenu->add(idMenuSearch, "_T{Replace}", "THEME:GUI:Replace.edf", "menu:replace");
myMenu->addSpacer(); myMenu->addSpacer();
myMenu->add(idMenuSearch, "Find (previous)","", "menu:find:previous"); myMenu->add(idMenuSearch, "_T{Find (previous)}","", "menu:find:previous");
myMenu->add(idMenuSearch, "Find (next)", "", "menu:find:next"); myMenu->add(idMenuSearch, "_T{Find (next)}", "", "menu:find:next");
myMenu->add(idMenuSearch, "Find (all)", "", "menu:find:all"); myMenu->add(idMenuSearch, "_T{Find (all)}", "", "menu:find:all");
myMenu->add(idMenuSearch, "Un-Select", "", "menu:find:none"); myMenu->add(idMenuSearch, "_T{Un-Select}", "", "menu:find:none");
int32_t idMenugDisplay = myMenu->addTitle("Display"); int32_t idMenugDisplay = myMenu->addTitle("_T{Display}");
myMenu->add(idMenugDisplay, "Color Black", "", "menu:color:color/black/"); myMenu->add(idMenugDisplay, "_T{Color Black}", "", "menu:color:color/black/");
myMenu->add(idMenugDisplay, "Color White", "", "menu:color:color/white/"); myMenu->add(idMenugDisplay, "_T{Color White}", "", "menu:color:color/white/");
myMenu->add(idMenugDisplay, "Shape square", "", "menu:shape:shape/square/"); myMenu->add(idMenugDisplay, "_T{Shape square}", "", "menu:shape:shape/square/");
myMenu->add(idMenugDisplay, "Shape round", "", "menu:shape:shape/round/"); myMenu->add(idMenugDisplay, "_T{Shape round}", "", "menu:shape:shape/round/");
myMenu->addSpacer(); myMenu->addSpacer();
myMenu->add(idMenugDisplay, "Reload openGl Shader", "", "menu:reloadShape"); myMenu->add(idMenugDisplay, "_T{Reload openGl Shader}", "", "menu:reloadShape");
myMenu->signalSelect.bind(shared_from_this(), &MainWindows::onCallbackMenuEvent); myMenu->addSpacer();
m_widgetLabelFileName = ewol::widget::Label::create("FileName"); myMenu->add(idMenugDisplay, "_T{Split}", "", "menu:split:enable");
m_widgetLabelFileName->setExpand(bvec2(true,false)); myMenu->add(idMenugDisplay, "_T{Unsplit}", "", "menu:split:disable");
m_widgetLabelFileName->setFill(bvec2(true,false));; 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); mySizerHori->subWidgetAdd(m_widgetLabelFileName);
// add generic shortcut ... // add generic shortcut ...
@@ -229,9 +226,9 @@ void MainWindows::init() {
shortCutAdd("ctrl+f", "menu:search"); shortCutAdd("ctrl+f", "menu:search");
shortCutAdd("F12", "menu:reloade-shader"); shortCutAdd("F12", "menu:reloade-shader");
// TODO : auto-bind on shortcut event ==> maybe do beter later ... // TODO : auto-connect on shortcut event ==> maybe do beter later ...
signalShortcut.bind(shared_from_this(), &MainWindows::onCallbackShortCut); signalShortcut.connect(sharedFromThis(), &MainWindows::onCallbackShortCut);
m_bufferManager->signalSelectFile.bind(shared_from_this(), &MainWindows::onCallbackShortCut); m_bufferManager->signalSelectFile.connect(sharedFromThis(), &MainWindows::onCallbackselectNewFile);
} }
@@ -239,8 +236,6 @@ MainWindows::~MainWindows() {
} }
void MainWindows::onCallbackShortCut(const std::string& _value) { void MainWindows::onCallbackShortCut(const std::string& _value) {
APPL_WARNING("Event from ShortCut : " << _value); APPL_WARNING("Event from ShortCut : " << _value);
onCallbackMenuEvent(_value); onCallbackMenuEvent(_value);
@@ -255,7 +250,7 @@ void MainWindows::onCallbackMenuEvent(const std::string& _value) {
} else if (_value == "menu:open") { } else if (_value == "menu:open") {
displayOpen(); displayOpen();
} else if (_value == "menu:close") { } else if (_value == "menu:close") {
std::shared_ptr<appl::WorkerCloseFile> worker = appl::WorkerCloseFile::create(); ememory::SharedPtr<appl::WorkerCloseFile> worker = appl::WorkerCloseFile::create();
worker->startAction(""); worker->startAction("");
} else if (_value == "menu:close-all") { } else if (_value == "menu:close-all") {
appl::WorkerCloseAllFile::create(); appl::WorkerCloseAllFile::create();
@@ -271,21 +266,41 @@ void MainWindows::onCallbackMenuEvent(const std::string& _value) {
if (m_widgetSearch == nullptr) { if (m_widgetSearch == nullptr) {
return; return;
} }
if (m_widgetSearch->isHide()) { if (m_widgetSearch->propertyHide.get() == true) {
m_widgetSearch->show(); m_widgetSearch->propertyHide.set(false);
m_widgetSearch->selectSearch(); m_widgetSearch->selectSearch();
} else { } else {
m_widgetSearch->hide(); if (m_widgetSearch->isSelectSearch()) {
m_widgetSearch->propertyHide.set(true);
if (m_viewerManager != nullptr) {
ememory::SharedPtr<appl::TextViewer> tmp = m_viewerManager->getViewerSelected();
if (tmp != nullptr) {
tmp->keepFocus();
}
}
} else {
m_widgetSearch->selectSearch();
}
} }
} else if (_value == "menu:replace") { } else if (_value == "menu:replace") {
if (m_widgetSearch == nullptr) { if (m_widgetSearch == nullptr) {
return; return;
} }
if (m_widgetSearch->isHide()) { if (m_widgetSearch->propertyHide.get() == true) {
m_widgetSearch->show(); m_widgetSearch->propertyHide.set(false);
m_widgetSearch->selectReplace(); m_widgetSearch->selectReplace();
} else { } else {
m_widgetSearch->hide(); if (m_widgetSearch->isSelectReplace()) {
m_widgetSearch->propertyHide.set(true);
if (m_viewerManager != nullptr) {
ememory::SharedPtr<appl::TextViewer> tmp = m_viewerManager->getViewerSelected();
if (tmp != nullptr) {
tmp->keepFocus();
}
}
} else {
m_widgetSearch->selectReplace();
}
} }
} else if (_value == "menu:find:previous") { } else if (_value == "menu:find:previous") {
APPL_TODO("Event from Menu : " << _value); APPL_TODO("Event from Menu : " << _value);
@@ -297,17 +312,34 @@ void MainWindows::onCallbackMenuEvent(const std::string& _value) {
APPL_TODO("Event from Menu : " << _value); APPL_TODO("Event from Menu : " << _value);
} else if ( _value == "menu:color:color/black/" } else if ( _value == "menu:color:color/black/"
|| _value == "menu:color:color/white/") { || _value == "menu:color:color/white/") {
etk::theme::setName("COLOR", std::string(_value, 12)); etk::theme::setName("COLOR", std::string(_value, 11));
EWOL_ERROR("Select Shape or Color : 'COLOR'='" << std::string(_value, 11) << "'");
ewol::getContext().getResourcesManager().reLoadResources(); ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll(); ewol::getContext().forceRedrawAll();
} else if ( _value == "menu:shape:shape/square/" } else if ( _value == "menu:shape:shape/square/"
|| _value == "menu:shape:shape/round/") { || _value == "menu:shape:shape/round/") {
etk::theme::setName("GUI", std::string(_value, 12)); EWOL_ERROR("Select Shape or Color : 'GUI'='" << std::string(_value, 11) << "'");
etk::theme::setName("GUI", std::string(_value, 11));
ewol::getContext().getResourcesManager().reLoadResources(); ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll(); ewol::getContext().forceRedrawAll();
} else if (_value == "menu:reloadShape") { } else if (_value == "menu:reloadShape") {
ewol::getContext().getResourcesManager().reLoadResources(); ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll(); 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 { } else {
APPL_ERROR("Event from Menu UNKNOW : '" << _value << "'"); APPL_ERROR("Event from Menu UNKNOW : '" << _value << "'");
} }
@@ -318,7 +350,7 @@ void MainWindows::onCallbackMenuEvent(const std::string& _value) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData()); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == nullptr) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
@@ -337,7 +369,7 @@ void MainWindows::onCallbackMenuEvent(const std::string& _value) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData()); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == nullptr) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
@@ -348,7 +380,7 @@ void MainWindows::onCallbackMenuEvent(const std::string& _value) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData()); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == nullptr) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
@@ -360,59 +392,60 @@ void MainWindows::onCallbackMenuEvent(const std::string& _value) {
*/ */
void MainWindows::displayOpen() { void MainWindows::displayOpen() {
std::shared_ptr<ewol::widget::FileChooser> tmpWidget = ewol::widget::FileChooser::create(); ememory::SharedPtr<ewol::widget::FileChooser> tmpWidget = ewol::widget::FileChooser::create();
if (tmpWidget == nullptr) { if (tmpWidget == nullptr) {
APPL_ERROR("Can not open File chooser !!! "); APPL_ERROR("Can not open File chooser !!! ");
return; return;
} }
tmpWidget->setTitle("Open files ..."); tmpWidget->propertyLabelTitle.set("_T{Open files ...}");
tmpWidget->setValidateLabel("Open"); tmpWidget->propertyLabelValidate.set("_T{Open}");
if (m_bufferManager == nullptr) { if (m_bufferManager == nullptr) {
APPL_ERROR("can not call unexistant buffer manager ... "); APPL_ERROR("can not call unexistant buffer manager ... ");
return; return;
} }
// Get a ref on the buffer selected (if null, no buffer was selected ...) // Get a ref on the buffer selected (if null, no buffer was selected ...)
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->getBufferSelected(); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->getBufferSelected();
if (tmpBuffer != nullptr) { if (tmpBuffer != nullptr) {
etk::FSNode tmpFile = tmpBuffer->getFileName(); etk::FSNode tmpFile = tmpBuffer->getFileName();
tmpWidget->setFolder(tmpFile.getNameFolder()); tmpWidget->propertyPath.set(tmpFile.getNameFolder());
} }
// apply widget pop-up ... // apply widget pop-up ...
popUpWidgetPush(tmpWidget); popUpWidgetPush(tmpWidget);
tmpWidget->signalValidate.bind(shared_from_this(), &MainWindows::onCallbackPopUpFileSelected); tmpWidget->signalValidate.connect(sharedFromThis(), &MainWindows::onCallbackPopUpFileSelected);
} }
void MainWindows::displayProperty() { void MainWindows::displayProperty() {
// Request the parameter GUI // Request the parameter GUI
std::shared_ptr<ewol::widget::Parameter> tmpWidget = ewol::widget::Parameter::create(); ememory::SharedPtr<ewol::widget::Parameter> tmpWidget = ewol::widget::Parameter::create();
if (nullptr == tmpWidget) { if (tmpWidget == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { return;
#ifdef SDGSDFGSDFGSDFGSDFGSTERGDHFGHFDS }
#if 0
std::string menuDescription = "<title>Properties</title>\n"; std::string menuDescription = "<title>Properties</title>\n";
menuDescription += "<group title='Editor'>\n"; menuDescription += "<group title='_T{Editor}'>\n";
menuDescription += " <menu title='Editor Interface' short-title='Editor' widget='appl-text-viewer'>\n"; menuDescription += " <menu title='_T{Editor Interface}' short-title='Editor' widget='appl-text-viewer'>\n";
menuDescription += "</group>\n"; menuDescription += "</group>\n";
menuDescription += "<group title='Gui'>\n"; menuDescription += "<group title='_T{Gui}'>\n";
menuDescription += " <menu title='Font selection' short-title='Font' widget=''>\n"; menuDescription += " <menu title='Font selection' short-title='Font' widget=''>\n";
menuDescription += " <menu title='Color selection' short-title='Color' widget=''>\n"; menuDescription += " <menu title='Color selection' short-title='Color' widget=''>\n";
menuDescription += " <menu title='Theme selection' short-title='Theme' widget=''>\n"; menuDescription += " <menu title='Theme selection' short-title='Theme' widget=''>\n";
menuDescription += "</group>\n"; menuDescription += "</group>\n";
tmpWidget->setMenu(menuDescription); tmpWidget->setMenu(menuDescription);
#endif #else
tmpWidget->setTitle("Properties"); tmpWidget->propertyLabelTitle.set("_T{Properties}");
popUpWidgetPush(tmpWidget); popUpWidgetPush(tmpWidget);
tmpWidget->menuAddGroup("Editor"); tmpWidget->menuAddGroup("_T{Editor}");
std::shared_ptr<ewol::Widget> tmpSubWidget = globals::ParameterGlobalsGui::create(); ememory::SharedPtr<ewol::Widget> tmpSubWidget = globals::ParameterGlobalsGui::create();
tmpWidget->menuAdd("Editor", "", tmpSubWidget); tmpWidget->menuAdd("_T{Editor}", "", tmpSubWidget);
tmpWidget->menuAdd("Font & Color", "", nullptr); tmpWidget->menuAdd("_T{Font & Color}", "", nullptr);
tmpWidget->menuAdd("Highlight", "", nullptr); tmpWidget->menuAdd("_T{Highlight}", "", nullptr);
tmpWidget->menuAddGroup("General"); tmpWidget->menuAddGroup("_T{General}");
tmpWidget->menuAdd("Display", "", nullptr); tmpWidget->menuAdd("_T{Display}", "", nullptr);
tmpSubWidget = ParameterAboutGui::create(); tmpSubWidget = ParameterAboutGui::create();
tmpWidget->menuAdd("About", "", tmpSubWidget); tmpWidget->menuAdd("_T{About}", "", tmpSubWidget);
} #endif
} }
void MainWindows::onCallbackselectNewFile(const std::string& _value) { void MainWindows::onCallbackselectNewFile(const std::string& _value) {
@@ -421,13 +454,15 @@ void MainWindows::onCallbackselectNewFile(const std::string& _value) {
APPL_ERROR("can not call unexistant buffer manager ... "); APPL_ERROR("can not call unexistant buffer manager ... ");
return; return;
} }
// TODO : Remove all previous binding from the old buffer ... m_connectionSave.disconnect();
m_connectionModify.disconnect();
m_connectionSaveName.disconnect();
onCallbackTitleUpdate(); onCallbackTitleUpdate();
std::shared_ptr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected(); ememory::SharedPtr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp != nullptr) { if (tmpp != nullptr) {
tmpp->signalIsSave.bind(shared_from_this(), &MainWindows::onCallbackTitleUpdate); m_connectionSave = tmpp->signalIsSave.connect(this, &MainWindows::onCallbackTitleUpdate);
tmpp->signalIsModify.bind(shared_from_this(), &MainWindows::onCallbackTitleUpdate); m_connectionModify = tmpp->signalIsModify.connect(this, &MainWindows::onCallbackTitleUpdate);
tmpp->signalChangeName.bind(shared_from_this(), &MainWindows::onCallbackTitleUpdate); m_connectionSaveName = tmpp->signalChangeName.connect(this, &MainWindows::onCallbackTitleUpdate);
} }
} }
@@ -444,61 +479,61 @@ void MainWindows::onCallbackTitleUpdate() {
return; return;
} }
// select a new Buffer ==> change title: // select a new Buffer ==> change title:
std::shared_ptr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected(); ememory::SharedPtr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == nullptr) { if (tmpp == nullptr) {
setTitle("Edn"); propertyTitle.set("Edn");
if (m_widgetLabelFileName != nullptr) { if (m_widgetLabelFileName != nullptr) {
m_widgetLabelFileName->setLabel(""); m_widgetLabelFileName->propertyValue.set("");
} }
} else { } else {
std::string nameFileSystem = etk::FSNode(tmpp->getFileName()).getFileSystemName(); std::string nameFileSystem = etk::FSNode(tmpp->getFileName()).getFileSystemName();
setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + nameFileSystem); propertyTitle.set(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + nameFileSystem);
if (m_widgetLabelFileName != nullptr) { if (m_widgetLabelFileName != nullptr) {
m_widgetLabelFileName->setLabel(nameFileSystem + (tmpp->isModify()==true?" *":"")); m_widgetLabelFileName->propertyValue.set(nameFileSystem + (tmpp->isModify()==true?" *":""));
} }
} }
} }
void MainWindows::saveAsPopUp(const std::shared_ptr<appl::Buffer>& _buffer) { void MainWindows::saveAsPopUp(const ememory::SharedPtr<appl::Buffer>& _buffer) {
if (_buffer == nullptr) { if (_buffer == nullptr) {
APPL_ERROR("Call With nullptr input..."); APPL_ERROR("Call With nullptr input...");
return; return;
} }
std::shared_ptr<appl::WorkerSaveFile> tmpObject = appl::WorkerSaveFile::create(_buffer->getFileName()); ememory::SharedPtr<appl::WorkerSaveFile> tmpObject = appl::WorkerSaveFile::create("buffer-name", _buffer->getFileName());
} }
void MainWindows::closeNotSavedFile(const std::shared_ptr<appl::Buffer>& _buffer) { void MainWindows::closeNotSavedFile(const ememory::SharedPtr<appl::Buffer>& _buffer) {
if (_buffer == nullptr) { if (_buffer == nullptr) {
APPL_ERROR("Call With nullptr input..."); APPL_ERROR("Call With nullptr input...");
return; return;
} }
std::shared_ptr<ewol::widget::StdPopUp> tmpPopUp = ewol::widget::StdPopUp::create(); ememory::SharedPtr<ewol::widget::StdPopUp> tmpPopUp = ewol::widget::StdPopUp::create();
if (tmpPopUp == nullptr) { if (tmpPopUp == nullptr) {
APPL_ERROR("Can not create a simple pop-up"); APPL_ERROR("Can not create a simple pop-up");
return; return;
} }
tmpPopUp->setTitle("<bold>Close un-saved file:</bold>"); tmpPopUp->propertyTitle.set("<bold>_T{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..."); tmpPopUp->propertyComment.set("_T{The file named:} <i>\"" + _buffer->getFileName() + "\"</i> _T{is curently modify.} <br/>_T{If you don't saves these modifications,<br/>they will be definitly lost...}");
std::shared_ptr<ewol::widget::Button> bt = nullptr; ememory::SharedPtr<ewol::widget::Button> bt = nullptr;
if (_buffer->hasFileName() == true) { if (_buffer->hasFileName() == true) {
bt = tmpPopUp->addButton("Save", true); bt = tmpPopUp->addButton("_T{Save}", true);
if (bt != nullptr) { if (bt != nullptr) {
// TODO : The element is removed before beeing pressed // TODO : The element is removed before beeing pressed
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestSaveFile, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestSaveFile, _buffer->getFileName());
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
} }
} }
bt = tmpPopUp->addButton("Save As", true); bt = tmpPopUp->addButton("_T{Save As}", true);
if (bt != nullptr) { if (bt != nullptr) {
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestSaveFileAs, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestSaveFileAs, _buffer->getFileName());
//bt->signalPressed.bind(shared_from_this(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); //bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
// TODO : Request the close when saved ... // TODO : Request the close when saved ...
} }
bt = tmpPopUp->addButton("Close", true); bt = tmpPopUp->addButton("_T{Close}", true);
if (bt != nullptr) { if (bt != nullptr) {
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
} }
tmpPopUp->addButton("Cancel", true); tmpPopUp->addButton("_T{Cancel}", true);
tmpPopUp->setRemoveOnExternClick(true); tmpPopUp->propertyCloseOutEvent.set(true);
popUpWidgetPush(tmpPopUp); popUpWidgetPush(tmpPopUp);
} }

View File

@@ -1,13 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __MAIN_WINDOWS_H__
#define __MAIN_WINDOWS_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
@@ -17,11 +13,14 @@
#include <ewol/widget/Label.h> #include <ewol/widget/Label.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <appl/Gui/Search.h> #include <appl/Gui/Search.h>
#include <appl/Gui/ViewerManager.h>
class MainWindows : public ewol::widget::Windows { class MainWindows : public ewol::widget::Windows {
private: private:
std::shared_ptr<ewol::widget::Label> m_widgetLabelFileName; ewol::widget::LabelShared m_widgetLabelFileName;
std::shared_ptr<appl::widget::Search> m_widgetSearch; appl::widget::SearchShared m_widgetSearch;
esignal::Connection m_connectionSave;
esignal::Connection m_connectionModify;
esignal::Connection m_connectionSaveName;
protected: protected:
// Constructeur // Constructeur
MainWindows(); MainWindows();
@@ -30,17 +29,18 @@ class MainWindows : public ewol::widget::Windows {
DECLARE_FACTORY(MainWindows); DECLARE_FACTORY(MainWindows);
virtual ~MainWindows(); virtual ~MainWindows();
private: private:
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
ememory::SharedPtr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
/** /**
* @brief Display a pop-up to the select the name of the file. * @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. * @param[in] _buffer Buffer that might be saved with a new name.
*/ */
void saveAsPopUp(const std::shared_ptr<appl::Buffer>& _buffer); void saveAsPopUp(const ememory::SharedPtr<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. * @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. * @param[in] _buffer Buffer that might be close.
*/ */
void closeNotSavedFile(const std::shared_ptr<appl::Buffer>& _buffer); void closeNotSavedFile(const ememory::SharedPtr<appl::Buffer>& _buffer);
void displayOpen(); void displayOpen();
void displayProperty(); void displayProperty();
private: private:
@@ -52,6 +52,3 @@ class MainWindows : public ewol::widget::Windows {
}; };
#endif

View File

@@ -1,11 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include "appl/global.h" #include "appl/global.h"
#include "appl/Gui/Search.h" #include "appl/Gui/Search.h"
#include "appl/BufferManager.h" #include "appl/BufferManager.h"
@@ -15,21 +12,6 @@
#include <ewol/widget/Button.h> #include <ewol/widget/Button.h>
#include <ewol/widget/Entry.h> #include <ewol/widget/Entry.h>
#undef __class__
#define __class__ "Search"
const char* const l_eventSearchEntry = "appl-search-entry";
const char* const l_eventSearchEntryEnter = "appl-search-entry-enter";
const char* const l_eventReplaceEntry = "appl-replace-entry";
const char* const l_eventReplaceEntryEnter = "appl-replace-entry-enter";
const char* const l_eventSearchBt = "appl-search-button";
const char* const l_eventReplaceBt = "appl-replace-button";
const char* const l_eventCaseCb = "appl-case-sensitive-CheckBox";
const char* const l_eventWrapCb = "appl-wrap-CheckBox";
const char* const l_eventForwardCb = "appl-forward-CheckBox";
const char* const l_eventHideBt = "appl-hide-button";
appl::widget::Search::Search() : appl::widget::Search::Search() :
m_forward(true), m_forward(true),
m_caseSensitive(false), m_caseSensitive(false),
@@ -37,28 +19,29 @@ appl::widget::Search::Search() :
addObjectType("appl::widget::Search"); addObjectType("appl::widget::Search");
} }
void appl::widget::Search::init() { void appl::widget::Search::init() {
ewol::widget::Composer::init(ewol::widget::Composer::file, "DATA:GUI-Search.xml"); ewol::widget::Composer::init();
loadFromFile("DATA:GUI-Search.xml");
m_viewerManager = appl::ViewerManager::create(); m_viewerManager = appl::ViewerManager::create();
// link event // link event
subBind(ewol::widget::Button, "SEARCH:close", signalPressed, shared_from_this(), &appl::widget::Search::OnCallbackHide); subBind(ewol::widget::Button, "SEARCH:close", signalPressed, sharedFromThis(), &appl::widget::Search::OnCallbackHide);
subBind(ewol::widget::Entry, "SEARCH:search-entry", signalModify, shared_from_this(), &appl::widget::Search::OnCallbackSearchValue); subBind(ewol::widget::Entry, "SEARCH:search-entry", signalModify, sharedFromThis(), &appl::widget::Search::OnCallbackSearchValue);
subBind(ewol::widget::Entry, "SEARCH:search-entry", signalEnter, shared_from_this(), &appl::widget::Search::OnCallbackSearchEntryValidate); subBind(ewol::widget::Entry, "SEARCH:search-entry", signalEnter, sharedFromThis(), &appl::widget::Search::OnCallbackSearchEntryValidate);
subBind(ewol::widget::Button, "SEARCH:search", signalPressed, shared_from_this(), &appl::widget::Search::OnCallbackSearch); subBind(ewol::widget::Button, "SEARCH:search", signalPressed, sharedFromThis(), &appl::widget::Search::OnCallbackSearch);
subBind(ewol::widget::Entry, "SEARCH:replace-entry", signalModify, shared_from_this(), &appl::widget::Search::OnCallbackReplaceValue); subBind(ewol::widget::Entry, "SEARCH:replace-entry", signalModify, sharedFromThis(), &appl::widget::Search::OnCallbackReplaceValue);
subBind(ewol::widget::Entry, "SEARCH:replace-entry", signalEnter, shared_from_this(), &appl::widget::Search::OnCallbackReplaceEntryValidate); subBind(ewol::widget::Entry, "SEARCH:replace-entry", signalEnter, sharedFromThis(), &appl::widget::Search::OnCallbackReplaceEntryValidate);
subBind(ewol::widget::Button, "SEARCH:replace", signalPressed, shared_from_this(), &appl::widget::Search::OnCallbackReplace); subBind(ewol::widget::Button, "SEARCH:replace", signalPressed, sharedFromThis(), &appl::widget::Search::OnCallbackReplace);
subBind(ewol::widget::Button, "SEARCH:case", signalValue, shared_from_this(), &appl::widget::Search::OnCallbackCase); subBind(ewol::widget::Button, "SEARCH:case", signalValue, sharedFromThis(), &appl::widget::Search::OnCallbackCase);
subBind(ewol::widget::Button, "SEARCH:wrap", signalValue, shared_from_this(), &appl::widget::Search::OnCallbackWrap); subBind(ewol::widget::Button, "SEARCH:wrap", signalValue, sharedFromThis(), &appl::widget::Search::OnCallbackWrap);
subBind(ewol::widget::Button, "SEARCH:up-down", signalValue, shared_from_this(), &appl::widget::Search::OnCallbackForward); subBind(ewol::widget::Button, "SEARCH:up-down", signalValue, sharedFromThis(), &appl::widget::Search::OnCallbackForward);
// set default properties // set default properties
parameterSetOnWidgetNamed("SEARCH:case", "value", etk::to_string(m_caseSensitive)); propertySetOnWidgetNamed("SEARCH:case", "value", etk::to_string(m_caseSensitive));
parameterSetOnWidgetNamed("SEARCH:wrap", "value", etk::to_string(m_wrap)); propertySetOnWidgetNamed("SEARCH:wrap", "value", etk::to_string(m_wrap));
parameterSetOnWidgetNamed("SEARCH:up-down", "value", etk::to_string(m_forward)); propertySetOnWidgetNamed("SEARCH:up-down", "value", etk::to_string(m_forward));
// get widget // get widget
m_searchEntry = std::dynamic_pointer_cast<ewol::widget::Entry>(getSubObjectNamed("SEARCH:search-entry")); m_searchEntry = ememory::dynamicPointerCast<ewol::widget::Entry>(getSubObjectNamed("SEARCH:search-entry"));
m_replaceEntry = std::dynamic_pointer_cast<ewol::widget::Entry>(getSubObjectNamed("SEARCH:replace-entry")); m_replaceEntry = ememory::dynamicPointerCast<ewol::widget::Entry>(getSubObjectNamed("SEARCH:replace-entry"));
// basicly hiden ... // basicly hiden ...
hide(); propertyHide.set(true);
} }
appl::widget::Search::~Search() { appl::widget::Search::~Search() {
@@ -70,7 +53,7 @@ void appl::widget::Search::find() {
APPL_WARNING("No viewer manager selected!!!"); APPL_WARNING("No viewer manager selected!!!");
return; return;
} }
std::shared_ptr<appl::TextViewer> viewer = m_viewerManager->getViewerSelected(); ememory::SharedPtr<appl::TextViewer> viewer = m_viewerManager->getViewerSelected();
if (viewer == nullptr) { if (viewer == nullptr) {
APPL_INFO("No viewer selected!!!"); APPL_INFO("No viewer selected!!!");
return; return;
@@ -106,7 +89,7 @@ void appl::widget::Search::replace() {
APPL_WARNING("No viewer manager selected!!!"); APPL_WARNING("No viewer manager selected!!!");
return; return;
} }
std::shared_ptr<appl::TextViewer> viewer = m_viewerManager->getViewerSelected(); ememory::SharedPtr<appl::TextViewer> viewer = m_viewerManager->getViewerSelected();
if (viewer == nullptr) { if (viewer == nullptr) {
APPL_INFO("No viewer selected!!!"); APPL_INFO("No viewer selected!!!");
return; return;
@@ -119,7 +102,7 @@ void appl::widget::Search::replace() {
} }
void appl::widget::Search::OnCallbackHide() { void appl::widget::Search::OnCallbackHide() {
hide(); propertyHide.set(true);
} }
void appl::widget::Search::OnCallbackSearchValue(const std::string& _value) { void appl::widget::Search::OnCallbackSearchValue(const std::string& _value) {
m_searchData = etk::to_u32string(_value); m_searchData = etk::to_u32string(_value);
@@ -154,14 +137,28 @@ void appl::widget::Search::OnCallbackForward(const bool& _value) {
} }
void appl::widget::Search::selectSearch() { void appl::widget::Search::selectSearch() {
if (m_searchEntry!= nullptr) { if (m_searchEntry != nullptr) {
m_searchEntry->keepFocus(); m_searchEntry->keepFocus();
} }
} }
bool appl::widget::Search::isSelectSearch() {
if (m_searchEntry != nullptr) {
return m_searchEntry->getFocus();
}
return false;
}
void appl::widget::Search::selectReplace() { void appl::widget::Search::selectReplace() {
if (m_replaceEntry!= nullptr) { if (m_replaceEntry != nullptr) {
m_replaceEntry->keepFocus(); m_replaceEntry->keepFocus();
} }
} }
bool appl::widget::Search::isSelectReplace() {
if (m_replaceEntry != nullptr) {
return m_replaceEntry->getFocus();
}
return false;
}

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __SEARCH_H__
#define __SEARCH_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/Composer.h> #include <ewol/widget/Composer.h>
#include <ewol/widget/Entry.h> #include <ewol/widget/Entry.h>
@@ -16,14 +11,17 @@
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
namespace appl { namespace appl {
namespace widget { namespace widget {
class Search;
using SearchShared = ememory::SharedPtr<appl::widget::Search>;
using SearchWeak = ememory::WeakPtr<appl::widget::Search>;
class Search : public ewol::widget::Composer { class Search : public ewol::widget::Composer {
private: private:
std::shared_ptr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager ememory::SharedPtr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
bool m_forward; bool m_forward;
bool m_caseSensitive; bool m_caseSensitive;
bool m_wrap; bool m_wrap;
std::shared_ptr<ewol::widget::Entry> m_searchEntry; ememory::SharedPtr<ewol::widget::Entry> m_searchEntry;
std::shared_ptr<ewol::widget::Entry> m_replaceEntry; ememory::SharedPtr<ewol::widget::Entry> m_replaceEntry;
std::u32string m_searchData; std::u32string m_searchData;
std::u32string m_replaceData; std::u32string m_replaceData;
protected: protected:
@@ -44,7 +42,9 @@ namespace appl {
void replace(); void replace();
public: public:
void selectSearch(); void selectSearch();
bool isSelectSearch();
void selectReplace(); void selectReplace();
bool isSelectReplace();
private: // callback functions private: // callback functions
void OnCallbackHide(); void OnCallbackHide();
void OnCallbackSearchValue(const std::string& _value); void OnCallbackSearchValue(const std::string& _value);
@@ -58,7 +58,5 @@ namespace appl {
void OnCallbackForward(const bool& _value); void OnCallbackForward(const bool& _value);
}; };
}; };
}; }
#endif

View File

@@ -1,21 +1,15 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/tool.h> #include <etk/tool.h>
#include <appl/Gui/TagFileList.h> #include <appl/Gui/TagFileList.h>
#undef __class__
#define __class__ "TagFileList"
appl::TagFileList::TagFileList() : appl::TagFileList::TagFileList() :
signalSelect(*this, "select"), signalSelect(this, "select", ""),
signalValidate(*this, "validate"), signalValidate(this, "validate", ""),
signalUnSelect(*this, "unselect") { signalUnSelect(this, "unselect", "") {
addObjectType("appl::TagFileList"); addObjectType("appl::TagFileList");
m_selectedLine = -1; m_selectedLine = -1;
setMouseLimit(1); setMouseLimit(1);
@@ -79,8 +73,8 @@ bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _
}; };
bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) { bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) {
if (_typeEvent == ewol::key::statusSingle) { if (_typeEvent == gale::key::status::pressSingle) {
EWOL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); EWOL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw );
if (_IdInput == 1) { if (_IdInput == 1) {
int32_t previousRaw = m_selectedLine; int32_t previousRaw = m_selectedLine;

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_CTAGS_LIST_H__
#define __APPL_CTAGS_LIST_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/List.h> #include <ewol/widget/List.h>
#include <ewol/resource/ColorFile.h> #include <ewol/resource/ColorFile.h>
@@ -29,14 +24,14 @@ namespace appl {
}; };
class TagFileList : public ewol::widget::List { class TagFileList : public ewol::widget::List {
public: public:
ewol::object::Signal<std::string> signalSelect; esignal::Signal<std::string> signalSelect;
ewol::object::Signal<std::string> signalValidate; esignal::Signal<std::string> signalValidate;
ewol::object::Signal<void> signalUnSelect; esignal::Signal<> signalUnSelect;
private: private:
int32_t m_selectedLine; int32_t m_selectedLine;
std::vector<appl::TagListElement*> m_list; std::vector<appl::TagListElement*> m_list;
protected: protected:
std::shared_ptr<ewol::resource::ColorFile> m_colorProperty; //!< theme color property. ememory::SharedPtr<ewol::resource::ColorFile> m_colorProperty; //!< theme color property.
int32_t m_colorIdText; //!< Color of the text. int32_t m_colorIdText; //!< Color of the text.
int32_t m_colorIdBackground1; //!< Color of the Background. int32_t m_colorIdBackground1; //!< Color of the Background.
int32_t m_colorIdBackground2; //!< Color of the Background 2. int32_t m_colorIdBackground2; //!< Color of the Background 2.
@@ -53,7 +48,7 @@ namespace appl {
bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg); bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg);
uint32_t getNuberOfRaw(); uint32_t getNuberOfRaw();
bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg); bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg);
bool onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y); bool onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y);
public: public:
/** /**
* @brief add a Ctags item on the curent list * @brief add a Ctags item on the curent list
@@ -62,10 +57,5 @@ namespace appl {
*/ */
void add(std::string& _file, int32_t _line); void add(std::string& _file, int32_t _line);
}; };
}; }
#endif

View File

@@ -1,11 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/Gui/TagFileSelection.h> #include <appl/Gui/TagFileSelection.h>
#include <ewol/widget/Sizer.h> #include <ewol/widget/Sizer.h>
#include <ewol/widget/List.h> #include <ewol/widget/List.h>
@@ -20,87 +17,72 @@
#include <ewol/ewol.h> #include <ewol/ewol.h>
#undef __class__
#define __class__ "TagFileSelection"
static const char * const applEventctagsSelection = "appl-event-ctags-validate";
static const char * const applEventctagsCancel = "appl-event-ctags-cancel";
static const char * const applEventCtagsListValidate = "appl-event-ctags-list-validate";
static const char * const applEventCtagsListSelect = "appl-event-ctags-list-selected";
static const char * const applEventCtagsListUnSelect = "appl-event-ctags-list-un-selected";
appl::TagFileSelection::TagFileSelection() : appl::TagFileSelection::TagFileSelection() :
signalSelect(*this, "select"), signalSelect(this, "select", ""),
signalCancel(*this, "cancel") { signalCancel(this, "cancel", "") {
addObjectType("appl::TagFileSelection"); addObjectType("appl::TagFileSelection");
} }
void appl::TagFileSelection::init() { void appl::TagFileSelection::init() {
ewol::widget::PopUp::init(); ewol::widget::PopUp::init();
std::shared_ptr<ewol::widget::Sizer> mySizerVert; ewol::widget::SizerShared mySizerVert;
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
setMinSize(ewol::Dimension(vec2(90,90),ewol::Dimension::Pourcent)); propertyMinSize.set(gale::Dimension(vec2(90,90), gale::distance::pourcent));
#elif defined(__TARGET_OS__Windows) #elif defined(__TARGET_OS__Windows)
setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent)); propertyMinSize.set(gale::Dimension(vec2(80,80), gale::distance::pourcent));
#else #else
setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent)); propertyMinSize.set(gale::Dimension(vec2(80,80), gale::distance::pourcent));
#endif #endif
mySizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); mySizerVert = ewol::widget::Sizer::create();
if (nullptr == mySizerVert) { if (mySizerVert == nullptr) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
return;
}
mySizerVert->propertyMode.set(ewol::widget::Sizer::modeVert);
mySizerVert->propertyLockExpand.set(bvec2(true,true));
mySizerVert->propertyExpand.set(bvec2(true,true));
// set it in the pop-up-system :
setSubWidget(mySizerVert);
ewol::WidgetShared compose = ewol::widget::composerGenerateString(
"<sizer mode='hori' expand='true,false' lock='false,true'>\n"
" <spacer expand='true,false'/>\n"
" <button name='PLUGIN-CTAGS-jump' expand='false' fill='true'>"
" <sizer mode='hori'>\n"
" <image src='THEME:GUI:Load.svg' fill='true' size='10,10mm'/>\n"
" <label>Jump</label>\n"
" </sizer>\n"
" </button>\n"
" <button name='PLUGIN-CTAGS-cancel' expand='false' fill='true'>"
" <sizer mode='hori'>\n"
" <image src='THEME:GUI:Remove.svg' fill='true' size='10,10mm'/>\n"
" <label>Cancel</label>\n"
" </sizer>\n"
" </button>\n"
"</sizer>\n");
mySizerVert->subWidgetAdd(compose);
externSubBind(compose, ewol::widget::Button, "PLUGIN-CTAGS-jump", signalPressed, sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsSelection);
externSubBind(compose, ewol::widget::Button, "PLUGIN-CTAGS-cancel", signalPressed, sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsCancel);
m_listTag = appl::TagFileList::create();
if (m_listTag == nullptr) {
EWOL_ERROR("Can not allocate widget == > display might be in error"); EWOL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
mySizerVert->lockExpand(bvec2(true,true)); m_listTag->signalValidate.connect(sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsListValidate);
mySizerVert->setExpand(bvec2(true,true)); m_listTag->signalSelect.connect(sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsListSelect);
// set it in the pop-up-system : m_listTag->signalUnSelect.connect(sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsListUnSelect);
setSubWidget(mySizerVert); m_listTag->propertyExpand.set(bvec2(true,true));
std::shared_ptr<ewol::widget::Composer> compose = ewol::widget::Composer::create(ewol::widget::Composer::String, m_listTag->propertyFill.set(bvec2(true,true));
"<sizer mode=\"hori\" expand=\"true,false\" lock=\"false,true\">\n" mySizerVert->subWidgetAdd(m_listTag);
" <spacer expand=\"true,false\"/>\n"
" <button name=\"PLUGIN-CTAGS-jump\" expand=\"false\" fill=\"true\">"
" <sizer mode=\"hori\">\n"
" <image src=\"THEME:GUI:Load.svg\" fill=\"true\" size=\"10,10mm\"/>\n"
" <label>Jump</label>\n"
" </sizer>\n"
" </button>\n"
" <button name=\"PLUGIN-CTAGS-cancel\" expand=\"false\" fill=\"true\">"
" <sizer mode=\"hori\">\n"
" <image src=\"THEME:GUI:Remove.svg\" fill=\"true\" size=\"10,10mm\"/>\n"
" <label>Cancel</label>\n"
" </sizer>\n"
" </button>\n"
"</sizer>\n");
compose->setExpand(bvec2(true,false));
compose->setFill(bvec2(true,true));
mySizerVert->subWidgetAdd(compose);
externSubBind(compose, ewol::widget::Button, "PLUGIN-CTAGS-jump", signalPressed, shared_from_this(), &appl::TagFileSelection::onCallbackCtagsSelection);
externSubBind(compose, ewol::widget::Button, "PLUGIN-CTAGS-cancel", signalPressed, shared_from_this(), &appl::TagFileSelection::onCallbackCtagsCancel);
m_listTag = appl::TagFileList::create();
if (nullptr == m_listTag) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
} else {
m_listTag->signalValidate.bind(shared_from_this(), &appl::TagFileSelection::onCallbackCtagsListValidate);
m_listTag->signalSelect.bind(shared_from_this(), &appl::TagFileSelection::onCallbackCtagsListSelect);
m_listTag->signalUnSelect.bind(shared_from_this(), &appl::TagFileSelection::onCallbackCtagsListUnSelect);
m_listTag->setExpand(bvec2(true,true));
m_listTag->setFill(bvec2(true,true));
mySizerVert->subWidgetAdd(m_listTag);
}
std::shared_ptr<ewol::widget::Label> myWidgetTitle;
myWidgetTitle = ewol::widget::Label::create("Ctags Jump Selection ...");
if (nullptr == myWidgetTitle) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
} else {
mySizerVert->subWidgetAdd(myWidgetTitle);
}
} }
ewol::widget::LabelShared myWidgetTitle = ewol::widget::Label::create();
if (myWidgetTitle == nullptr) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
return;
}
myWidgetTitle->propertyValue.set("Ctags Jump Selection ...");
mySizerVert->subWidgetAdd(myWidgetTitle);
} }
@@ -109,7 +91,7 @@ appl::TagFileSelection::~TagFileSelection() {
} }
void appl::TagFileSelection::onCallbackCtagsSelection() { void appl::TagFileSelection::onCallbackCtagsSelection() {
if (m_eventNamed!="") { if (m_eventNamed != "") {
signalSelect.emit(m_eventNamed); signalSelect.emit(m_eventNamed);
// == > Auto remove ... // == > Auto remove ...
autoDestroy(); autoDestroy();
@@ -144,7 +126,7 @@ void appl::TagFileSelection::onCallbackCtagsListUnSelect() {
* @param[in] jump line id * @param[in] jump line id
*/ */
void appl::TagFileSelection::addCtagsNewItem(std::string _file, int32_t _line) { void appl::TagFileSelection::addCtagsNewItem(std::string _file, int32_t _line) {
if (nullptr != m_listTag) { if (m_listTag != nullptr) {
m_listTag->add(_file, _line); m_listTag->add(_file, _line);
} }
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_CTAGS_SELECTION_H__
#define __APPL_CTAGS_SELECTION_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/PopUp.h> #include <ewol/widget/PopUp.h>
#include <appl/Gui/TagFileList.h> #include <appl/Gui/TagFileList.h>
@@ -16,10 +11,10 @@
namespace appl { namespace appl {
class TagFileSelection : public ewol::widget::PopUp { class TagFileSelection : public ewol::widget::PopUp {
public: public:
ewol::object::Signal<std::string> signalSelect; esignal::Signal<std::string> signalSelect;
ewol::object::Signal<void> signalCancel; esignal::Signal<> signalCancel;
private: private:
std::shared_ptr<appl::TagFileList> m_listTag; ememory::SharedPtr<appl::TagFileList> m_listTag;
std::string m_eventNamed; std::string m_eventNamed;
public: public:
TagFileSelection(); TagFileSelection();
@@ -40,8 +35,5 @@ namespace appl {
void onCallbackCtagsListSelect(const std::string& _value); void onCallbackCtagsListSelect(const std::string& _value);
void onCallbackCtagsListUnSelect(); void onCallbackCtagsListUnSelect();
}; };
}; }
#endif

View File

@@ -1,24 +1,19 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <ewol/context/clipBoard.h> #include <gale/context/clipBoard.h>
#include <ewol/widget/Manager.h> #include <ewol/widget/Manager.h>
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/TextPluginManager.h> #include <appl/TextPluginManager.h>
#include <etk/stdTools.h>
#undef __class__
#define __class__ "TextViewer"
#define tic() \ #define tic() \
int64_t startTime = ewol::getTime(); int64_t startTime = ewol::getTime();
@@ -28,14 +23,12 @@
int64_t processTimeLocal = (endTime - startTime); \ int64_t processTimeLocal = (endTime - startTime); \
APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms"); APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms");
static const char* const appl_Buffer_eventIsModify = "buffer-is-modify";
static const char* const appl_Buffer_eventSelectChange = "buffer-select-change";
appl::TextViewer::TextViewer() : appl::TextViewer::TextViewer() :
propertyFontName(this, "font-name", "FreeMono;DejaVuSansMono;FreeSerif", "Name of the font for the displayed text", &appl::TextViewer::onChangePropertyFontName),
propertyFontSize(this, "font-size", 12, "Size of the font for the displayed text", &appl::TextViewer::onChangePropertyFontSize),
m_insertMode(false) { m_insertMode(false) {
addObjectType("appl::TextViewer"); addObjectType("appl::TextViewer");
setCanHaveFocus(true);
setLimitScrolling(0.2); setLimitScrolling(0.2);
setSingleFinger(false); setSingleFinger(false);
@@ -56,13 +49,14 @@ appl::TextViewer::TextViewer() :
m_colorNormal = m_paintingProperties->request("normal"); m_colorNormal = m_paintingProperties->request("normal");
} }
void appl::TextViewer::init(const std::string& _fontName, int32_t _fontSize) { void appl::TextViewer::init() {
ewol::widget::WidgetScrolled::init(); ewol::widget::WidgetScrolled::init();
m_displayText.setFont(_fontName, _fontSize); propertyCanFocus.set(true);
m_displayText.setFont(*propertyFontName, *propertyFontSize);
m_pluginManager->connect(*this); m_pluginManager->connect(*this);
// last created has focus ... // last created has focus ...
setCurrentSelect(); setCurrentSelect();
signalShortcut.bind(shared_from_this(), &appl::TextViewer::onCallbackShortCut); signalShortcut.connect(sharedFromThis(), &appl::TextViewer::onCallbackShortCut);
/* /*
registerMultiCast(ednMsgBufferId); registerMultiCast(ednMsgBufferId);
@@ -72,7 +66,9 @@ void appl::TextViewer::init(const std::string& _fontName, int32_t _fontSize) {
registerMultiCast(appl::MsgSelectGotoLineSelect); registerMultiCast(appl::MsgSelectGotoLineSelect);
*/ */
if (m_bufferManager != nullptr) { if (m_bufferManager != nullptr) {
m_bufferManager->signalSelectFile.bind(shared_from_this(), &appl::TextViewer::onCallbackselectNewFile); m_bufferManager->signalSelectFile.connect(sharedFromThis(), &appl::TextViewer::onCallbackselectNewFile);
} else {
APPL_CRITICAL("Buffer manager has not been created at the init");
} }
} }
@@ -88,13 +84,18 @@ void appl::TextViewer::onCallbackShortCut(const std::string& _value) {
void appl::TextViewer::onCallbackselectNewFile(const std::string& _value) { void appl::TextViewer::onCallbackselectNewFile(const std::string& _value) {
APPL_INFO("Select new file: " << _value);
if (isSelectedLast() == false) {
return;
}
// reset scroll: // reset scroll:
if (m_buffer != nullptr) { if (m_buffer != nullptr) {
m_buffer->unBindAll(shared_from_this()); m_buffer->signals.disconnect(sharedFromThis());
bool needAdd = true; bool needAdd = true;
auto it = m_drawingRemenber.begin(); auto it = m_drawingRemenber.begin();
while (it != m_drawingRemenber.end()) { while (it != m_drawingRemenber.end()) {
std::shared_ptr<appl::Buffer> tmpBuff = it->first.lock(); ememory::SharedPtr<appl::Buffer> tmpBuff = it->first.lock();
if (tmpBuff == nullptr) { if (tmpBuff == nullptr) {
it = m_drawingRemenber.erase(it); it = m_drawingRemenber.erase(it);
continue; continue;
@@ -108,7 +109,7 @@ void appl::TextViewer::onCallbackselectNewFile(const std::string& _value) {
++it; ++it;
} }
if (needAdd == true) { if (needAdd == true) {
m_drawingRemenber.push_back(std::make_pair(std::weak_ptr<appl::Buffer>(m_buffer), m_originScrooled)); m_drawingRemenber.push_back(std::make_pair(ememory::WeakPtr<appl::Buffer>(m_buffer), m_originScrooled));
APPL_VERBOSE("Push origin : " << m_originScrooled); APPL_VERBOSE("Push origin : " << m_originScrooled);
} }
} }
@@ -117,8 +118,8 @@ void appl::TextViewer::onCallbackselectNewFile(const std::string& _value) {
m_buffer = m_bufferManager->get(_value); m_buffer = m_bufferManager->get(_value);
m_bufferManager->setBufferSelected(m_buffer); m_bufferManager->setBufferSelected(m_buffer);
if (m_buffer != nullptr) { if (m_buffer != nullptr) {
m_buffer->signalIsModify.bind(shared_from_this(), &appl::TextViewer::onCallbackIsModify); m_buffer->signalIsModify.connect(sharedFromThis(), &appl::TextViewer::onCallbackIsModify);
m_buffer->signalSelectChange.bind(shared_from_this(), &appl::TextViewer::onCallbackSelectChange); m_buffer->signalSelectChange.connect(sharedFromThis(), &appl::TextViewer::onCallbackSelectChange);
for (auto element : m_drawingRemenber) { for (auto element : m_drawingRemenber) {
if (element.first.lock() == m_buffer) { if (element.first.lock() == m_buffer) {
m_originScrooled = element.second; m_originScrooled = element.second;
@@ -145,10 +146,6 @@ std::string appl::TextViewer::getBufferPath() {
return std::string(filename, 0, pos); return std::string(filename, 0, pos);
} }
void appl::TextViewer::changeZoom(float _range) {
m_displayText.setFontSize(m_displayText.getSize() + _range);
markToRedraw();
}
bool appl::TextViewer::calculateMinSize() { bool appl::TextViewer::calculateMinSize() {
m_minSize.setValue(50,50); m_minSize.setValue(50,50);
@@ -163,7 +160,7 @@ void appl::TextViewer::onDraw() {
} }
void appl::TextViewer::onRegenerateDisplay() { void appl::TextViewer::onRegenerateDisplay() {
if (false == needRedraw()) { if (needRedraw() == false) {
return; return;
} }
//tic(); //tic();
@@ -179,7 +176,8 @@ void appl::TextViewer::onRegenerateDisplay() {
if (m_buffer == nullptr) { if (m_buffer == nullptr) {
m_maxSize.setX(256); m_maxSize.setX(256);
m_maxSize.setY(256); m_maxSize.setY(256);
m_displayText.setTextAlignement(10, m_size.x()-20, ewol::compositing::alignLeft); float textEndAlignament = std::max(11.0f, m_size.x()-20.0f);
m_displayText.setTextAlignement(10, textEndAlignament, ewol::compositing::alignLeft);
m_displayText.setRelPos(vec3(10, 0, 0)); m_displayText.setRelPos(vec3(10, 0, 0));
std::string tmpString("<br/>\n" std::string tmpString("<br/>\n"
"<font color=\"red\">\n" "<font color=\"red\">\n"
@@ -389,9 +387,9 @@ bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) {
return true; return true;
} }
// just forward event == > manage directly in the buffer // just forward event == > manage directly in the buffer
if (_event.getType() == ewol::key::keyboardChar) { if (_event.getType() == gale::key::keyboard::character) {
//APPL_DEBUG("KB EVENT : \"" << UTF8_data << "\" size=" << strlen(UTF8_data) << "type=" << (int32_t)typeEvent); //APPL_DEBUG("KB EVENT : \"" << UTF8_data << "\" size=" << strlen(UTF8_data) << "type=" << (int32_t)typeEvent);
if (_event.getStatus() != ewol::key::statusDown) { if (_event.getStatus() != gale::key::status::down) {
return false; return false;
} }
char32_t localValue = _event.getChar(); char32_t localValue = _event.getChar();
@@ -441,44 +439,44 @@ bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) {
return true; return true;
} }
// move events ... // move events ...
if (_event.getStatus() == ewol::key::statusDown) { if (_event.getStatus() == gale::key::status::down) {
// selection when shift is set: // selection when shift is set:
m_buffer->setSelectMode(_event.getSpecialKey().getShift()); m_buffer->setSelectMode(_event.getSpecialKey().getShift());
// check selection event ... // check selection event ...
switch(_event.getType()) { switch(_event.getType()) {
case ewol::key::keyboardInsert: case gale::key::keyboard::insert:
m_insertMode = m_insertMode==true?false:true; m_insertMode = m_insertMode==true?false:true;
markToRedraw(); markToRedraw();
break; break;
case ewol::key::keyboardLeft: case gale::key::keyboard::left:
//APPL_INFO("keyEvent : <LEFT>"); //APPL_INFO("keyEvent : <LEFT>");
moveCursorLeft(); moveCursorLeft();
break; break;
case ewol::key::keyboardRight: case gale::key::keyboard::right:
//APPL_INFO("keyEvent : <RIGHT>"); //APPL_INFO("keyEvent : <RIGHT>");
moveCursorRight(); moveCursorRight();
break; break;
case ewol::key::keyboardUp: case gale::key::keyboard::up:
//APPL_INFO("keyEvent : <UP>"); //APPL_INFO("keyEvent : <UP>");
moveCursorUp(1); moveCursorUp(1);
break; break;
case ewol::key::keyboardDown: case gale::key::keyboard::down:
//APPL_INFO("keyEvent : <DOWN>"); //APPL_INFO("keyEvent : <DOWN>");
moveCursorDown(1); moveCursorDown(1);
break; break;
case ewol::key::keyboardPageUp: case gale::key::keyboard::pageUp:
//APPL_INFO("keyEvent : <PAGE-UP>"); //APPL_INFO("keyEvent : <PAGE-UP>");
moveCursorUp(15); // TODO : Set the real number of line ... moveCursorUp(15); // TODO : Set the real number of line ...
break; break;
case ewol::key::keyboardPageDown: case gale::key::keyboard::pageDown:
//APPL_INFO("keyEvent : <PAGE-DOWN>"); //APPL_INFO("keyEvent : <PAGE-DOWN>");
moveCursorDown(15); // TODO : Set the real number of line ... moveCursorDown(15); // TODO : Set the real number of line ...
break; break;
case ewol::key::keyboardStart: case gale::key::keyboard::start:
//APPL_INFO("keyEvent : <Start of line>"); //APPL_INFO("keyEvent : <Start of line>");
moveCursorLeft(moveEnd); moveCursorLeft(moveEnd);
break; break;
case ewol::key::keyboardEnd: case gale::key::keyboard::end:
//APPL_INFO("keyEvent : <End of line>"); //APPL_INFO("keyEvent : <End of line>");
moveCursorRight(moveEnd); moveCursorRight(moveEnd);
break; break;
@@ -492,7 +490,7 @@ bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) {
bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) { bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
if ( _event.getId() != 0 if ( _event.getId() != 0
&& _event.getStatus() == ewol::key::statusDown) { && _event.getStatus() == gale::key::status::down) {
keepFocus(); keepFocus();
} }
//tic(); //tic();
@@ -504,13 +502,11 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
markToRedraw(); markToRedraw();
return true; return true;
} }
APPL_VERBOSE("event : " << _event);
// Second call plugin // Second call plugin
if (m_pluginManager->onEventInput(*this, _event) == true) { if (m_pluginManager->onEventInput(*this, _event) == true) {
markToRedraw(); markToRedraw();
return true; return true;
} }
APPL_VERBOSE("event2 : " << _event);
vec2 relativePos = relativePosition(_event.getPos()); vec2 relativePos = relativePosition(_event.getPos());
// offset for the lineNumber: // offset for the lineNumber:
relativePos -= vec2(m_lastOffsetDisplay, 0); relativePos -= vec2(m_lastOffsetDisplay, 0);
@@ -522,7 +518,7 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
relativePos.setX(0); relativePos.setX(0);
} }
if ( _event.getId() == 12 if ( _event.getId() == 12
&& _event.getStatus() == ewol::key::statusSingle) { && _event.getStatus() == gale::key::status::pressSingle) {
APPL_TODO("RAT5 SAVE button ==> TODO implement"); APPL_TODO("RAT5 SAVE button ==> TODO implement");
// Rat5 save event // Rat5 save event
//sendMultiCast(ednMsgGuiSave, "current"); //sendMultiCast(ednMsgGuiSave, "current");
@@ -531,8 +527,8 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
// just forward event == > manage directly in the buffer // just forward event == > manage directly in the buffer
if (_event.getId() == 1) { if (_event.getId() == 1) {
// mouse selection : // mouse selection :
//if (_event.getType() == ewol::key::typeMouse) { //if (_event.getType() == gale::key::typeMouse) {
if (_event.getStatus() == ewol::key::statusDown) { if (_event.getStatus() == gale::key::status::down) {
//if (_event.getSpecialKey().isSetShift() == false) { //if (_event.getSpecialKey().isSetShift() == false) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
m_buffer->setSelectMode(false); m_buffer->setSelectMode(false);
@@ -541,7 +537,7 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
markToRedraw(); markToRedraw();
return true; return true;
//} //}
} else if (_event.getStatus() == ewol::key::statusUp) { } else if (_event.getStatus() == gale::key::status::up) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
moveCursor(newPos); moveCursor(newPos);
m_buffer->setSelectMode(false); m_buffer->setSelectMode(false);
@@ -549,41 +545,41 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
std::string value; std::string value;
m_buffer->copy(value); m_buffer->copy(value);
if (value.size() != 0) { if (value.size() != 0) {
ewol::context::clipBoard::set(ewol::context::clipBoard::clipboardSelection, value); gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
} }
markToRedraw(); markToRedraw();
return true; return true;
} }
//} //}
if (_event.getStatus() == ewol::key::statusSingle) { if (_event.getStatus() == gale::key::status::pressSingle) {
if ( _event.getType() == ewol::key::typeMouse if ( _event.getType() == gale::key::type::mouse
|| _event.getType() == ewol::key::typeFinger) { || _event.getType() == gale::key::type::finger) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
moveCursor(newPos); moveCursor(newPos);
markToRedraw(); markToRedraw();
return true; return true;
} }
} else if (_event.getStatus() == ewol::key::statusDouble) { } else if (_event.getStatus() == gale::key::status::pressDouble) {
mouseEventDouble(); mouseEventDouble();
// Copy selection : // Copy selection :
std::string value; std::string value;
m_buffer->copy(value); m_buffer->copy(value);
if (value.size() != 0) { if (value.size() != 0) {
ewol::context::clipBoard::set(ewol::context::clipBoard::clipboardSelection, value); gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
} }
markToRedraw(); markToRedraw();
return true; return true;
} else if (_event.getStatus() == ewol::key::statusTriple) { } else if (_event.getStatus() == gale::key::status::pressTriple) {
mouseEventTriple(); mouseEventTriple();
// Copy selection : // Copy selection :
std::string value; std::string value;
m_buffer->copy(value); m_buffer->copy(value);
if (value.size() != 0) { if (value.size() != 0) {
ewol::context::clipBoard::set(ewol::context::clipBoard::clipboardSelection, value); gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
} }
markToRedraw(); markToRedraw();
return true; return true;
} else if (_event.getStatus() == ewol::key::statusMove) { } else if (_event.getStatus() == gale::key::status::move) {
if (m_buffer->getSelectMode() == true) { if (m_buffer->getSelectMode() == true) {
//int64_t timeStart = ewol::getTime(); //int64_t timeStart = ewol::getTime();
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
@@ -601,10 +597,10 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
} }
} }
} else if (2 == _event.getId()) { } else if (2 == _event.getId()) {
if (ewol::key::statusSingle == _event.getStatus()) { if (gale::key::status::pressSingle == _event.getStatus()) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
moveCursor(newPos); moveCursor(newPos);
ewol::context::clipBoard::request(ewol::context::clipBoard::clipboardSelection); gale::context::clipBoard::request(gale::context::clipBoard::clipboardSelection);
markToRedraw(); markToRedraw();
return true; return true;
} }
@@ -679,9 +675,9 @@ appl::Buffer::Iterator appl::TextViewer::getMousePosition(const vec2& _relativeP
return m_buffer->end(); return m_buffer->end();
} }
void appl::TextViewer::onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID) { void appl::TextViewer::onEventClipboard(enum gale::context::clipBoard::clipboardListe _clipboardID) {
if (m_buffer != nullptr) { if (m_buffer != nullptr) {
std::string data = ewol::context::clipBoard::get(_clipboardID); std::string data = gale::context::clipBoard::get(_clipboardID);
write(data); write(data);
} }
markToRedraw(); markToRedraw();
@@ -708,13 +704,13 @@ void appl::TextViewer::onLostFocus() {
markToRedraw(); markToRedraw();
} }
void appl::TextViewer::setFontSize(int32_t _size) { void appl::TextViewer::onChangePropertyFontSize() {
m_displayText.setFontSize(_size); m_displayText.setFontSize(*propertyFontSize);
setScrollingSize(_size*3.0*1.46); // 1.46 is a magic number ... setScrollingSize(*propertyFontSize*3.0*1.46); // 1.46 is a magic number ...
} }
void appl::TextViewer::setFontName(const std::string& _fontName) { void appl::TextViewer::onChangePropertyFontName() {
m_displayText.setFontName(_fontName); m_displayText.setFontName(*propertyFontName);
} }
// TODO : Update process time ==> a little expensive (2->4ms) in end of file // TODO : Update process time ==> a little expensive (2->4ms) in end of file
@@ -985,13 +981,13 @@ float appl::TextViewer::getScreenSize(const appl::Buffer::Iterator& _startLinePo
void appl::TextViewer::setCurrentSelect() { void appl::TextViewer::setCurrentSelect() {
if (m_viewerManager != nullptr) { if (m_viewerManager != nullptr) {
m_viewerManager->setViewerSelected(std::dynamic_pointer_cast<appl::TextViewer>(shared_from_this()), m_buffer); m_viewerManager->setViewerSelected(ememory::dynamicPointerCast<appl::TextViewer>(sharedFromThis()), m_buffer);
} }
} }
bool appl::TextViewer::isSelectedLast() { bool appl::TextViewer::isSelectedLast() {
if (m_viewerManager != nullptr) { if (m_viewerManager != nullptr) {
return m_viewerManager->isLastSelected(std::dynamic_pointer_cast<appl::TextViewer>(shared_from_this())); return m_viewerManager->isLastSelected(ememory::dynamicPointerCast<appl::TextViewer>(sharedFromThis()));
} }
return false; return false;
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_VIEWER_H__
#define __APPL_TEXT_VIEWER_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
@@ -23,9 +18,15 @@
namespace appl { namespace appl {
class textPluginManager; class textPluginManager;
class TextViewer;
using TextViewerShared = ememory::SharedPtr<appl::TextViewer>;
using TextViewerWeak = ememory::WeakPtr<appl::TextViewer>;
class TextViewer : public ewol::widget::WidgetScrolled { class TextViewer : public ewol::widget::WidgetScrolled {
private: private:
std::shared_ptr<appl::GlyphPainting> m_paintingProperties; //!< element painting property eproperty::Value<std::string> propertyFontName; //!< name of the font to display text.
eproperty::Value<int32_t> propertyFontSize; //!< Size of the font to display text.
ememory::SharedPtr<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground; int32_t m_colorBackground;
int32_t m_colorSpace; int32_t m_colorSpace;
int32_t m_colorTabulation; int32_t m_colorTabulation;
@@ -34,32 +35,32 @@ namespace appl {
int32_t m_colorSelection; int32_t m_colorSelection;
int32_t m_colorNormal; int32_t m_colorNormal;
private: private:
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
std::shared_ptr<appl::textPluginManager> m_pluginManager; //!< Plugin manager interface ememory::SharedPtr<appl::textPluginManager> m_pluginManager; //!< Plugin manager interface
std::shared_ptr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager ememory::SharedPtr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
protected: protected:
TextViewer(); TextViewer();
void init(const std::string& _fontName="", int32_t _fontSize=-1); void init();
public: public:
DECLARE_FACTORY(TextViewer); DECLARE_FACTORY(TextViewer);
virtual ~TextViewer(); virtual ~TextViewer();
private: private:
std::shared_ptr<appl::Buffer> m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) ememory::SharedPtr<appl::Buffer> m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer)
public: public:
/** /**
* @brief Get the buffer property (only for the class : template <typename TYPE> class TextViewerPluginData) * @brief Get the buffer property (only for the class : template <typename TYPE> class TextViewerPluginData)
* @return pointer on buffer * @return pointer on buffer
*/ */
std::shared_ptr<appl::Buffer> internalGetBuffer() { ememory::SharedPtr<appl::Buffer> internalGetBuffer() {
return m_buffer; return m_buffer;
} }
private: private:
ewol::compositing::Text m_displayText; //!< Text display properties. ewol::compositing::Text m_displayText; //!< Text display properties.
ewol::compositing::Drawing m_displayDrawing; //!< Other diaplay requested. ewol::compositing::Drawing m_displayDrawing; //!< Other display requested.
std::vector<std::pair<std::weak_ptr<appl::Buffer>, vec2>> m_drawingRemenber; std::vector<std::pair<ememory::WeakPtr<appl::Buffer>, vec2>> m_drawingRemenber;
public: public:
void setFontSize(int32_t _size); virtual void onChangePropertyFontSize();
void setFontName(const std::string& _fontName); virtual void onChangePropertyFontName();
protected: // derived function protected: // derived function
virtual void onDraw(); virtual void onDraw();
public: // Derived function public: // Derived function
@@ -67,10 +68,9 @@ namespace appl {
virtual void onRegenerateDisplay(); virtual void onRegenerateDisplay();
virtual bool onEventInput(const ewol::event::Input& _event); virtual bool onEventInput(const ewol::event::Input& _event);
virtual bool onEventEntry(const ewol::event::Entry& _event); virtual bool onEventEntry(const ewol::event::Entry& _event);
virtual void onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID); virtual void onEventClipboard(enum gale::context::clipBoard::clipboardListe _clipboardID);
virtual void onGetFocus(); virtual void onGetFocus();
virtual void onLostFocus(); virtual void onLostFocus();
virtual void changeZoom(float _range);
private: private:
float m_lastOffsetDisplay; //!< Line number ofssed in the display float m_lastOffsetDisplay; //!< Line number ofssed in the display
private: private:
@@ -418,7 +418,5 @@ namespace appl {
void onCallbackSelectChange(); void onCallbackSelectChange();
void onCallbackselectNewFile(const std::string& _value); void onCallbackselectNewFile(const std::string& _value);
}; };
}; }
#endif

View File

@@ -1,21 +1,15 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <ewol/object/Manager.h> #include <ewol/object/Manager.h>
#include <ewol/resource/Manager.h> #include <gale/resource/Manager.h>
#undef __class__
#define __class__ "ViewerManager"
appl::ViewerManager::ViewerManager() { appl::ViewerManager::ViewerManager() {
addObjectType("appl::ViewerManager"); addObjectType("appl::ViewerManager");
@@ -23,19 +17,19 @@ appl::ViewerManager::ViewerManager() {
m_bufferManager = appl::BufferManager::create(); m_bufferManager = appl::BufferManager::create();
} }
void appl::ViewerManager::init(const std::string& _uniqueName) {
ewol::Resource::init(_uniqueName);
}
appl::ViewerManager::~ViewerManager() { appl::ViewerManager::~ViewerManager() {
} }
bool appl::ViewerManager::isLastSelected(const std::shared_ptr<appl::TextViewer>& _viewer) { ememory::SharedPtr<appl::TextViewer> appl::ViewerManager::getViewerSelected() {
return m_viewer.lock();
}
bool appl::ViewerManager::isLastSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer) {
return m_viewer.lock() == _viewer; return m_viewer.lock() == _viewer;
} }
void appl::ViewerManager::setViewerSelected(const std::shared_ptr<appl::TextViewer>& _viewer, const std::shared_ptr<appl::Buffer>& _buffer) { void appl::ViewerManager::setViewerSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer, const ememory::SharedPtr<appl::Buffer>& _buffer) {
if (m_viewer.lock() == _viewer) { if (m_viewer.lock() == _viewer) {
return; return;
} }

View File

@@ -1,53 +1,45 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __VIEWER_MANAGER_H__
#define __VIEWER_MANAGER_H__
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
#include <ewol/widget/Widget.h> #include <ewol/widget/Widget.h>
#include <ewol/resource/Resource.h> #include <gale/resource/Resource.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
namespace appl { namespace appl {
class TextViewer; class TextViewer;
class ViewerManager : public ewol::Resource { class ViewerManager;
using ViewerManagerShared = ememory::SharedPtr<appl::ViewerManager>;
using ViewerManagerWeak = ememory::WeakPtr<appl::ViewerManager>;
class ViewerManager : public ewol::Object {
protected: protected:
ViewerManager(); ViewerManager();
void init(const std::string& _uniqueName);
public: public:
DECLARE_RESOURCE_SINGLE_FACTORY(ViewerManager, "???ViewerManager???"); DECLARE_SINGLE_FACTORY(ViewerManager, "???ViewerManager???");
virtual ~ViewerManager(); virtual ~ViewerManager();
private: private:
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
std::weak_ptr<appl::TextViewer> m_viewer; ememory::WeakPtr<appl::TextViewer> m_viewer;
public: public:
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
* @param[in] _viewer Pointer on the viewer selected * @param[in] _viewer Pointer on the viewer selected
*/ */
void setViewerSelected(const std::shared_ptr<appl::TextViewer>& _viewer, const std::shared_ptr<appl::Buffer>& _buffer); void setViewerSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer, const ememory::SharedPtr<appl::Buffer>& _buffer);
/** /**
* @brief Get the current buffer selected * @brief Get the current buffer selected
* @return Pointer on the buffer selected * @return Pointer on the buffer selected
*/ */
std::shared_ptr<appl::TextViewer> getViewerSelected() { ememory::SharedPtr<appl::TextViewer> getViewerSelected();
return m_viewer.lock();
};
/** /**
* @breif Check if the element is the last request selection * @breif Check if the element is the last request selection
* @param[in] _viewer element selected. * @param[in] _viewer element selected.
* @return true if the element is selected * @return true if the element is selected
*/ */
bool isLastSelected(const std::shared_ptr<appl::TextViewer>& _viewer); bool isLastSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer);
}; };
}; }
#endif

View File

@@ -1,18 +1,12 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/Gui/WorkerCloseAllFile.h> #include <appl/Gui/WorkerCloseAllFile.h>
#undef __class__
#define __class__ "WorkerCloseAllFile"
appl::WorkerCloseAllFile::WorkerCloseAllFile() { appl::WorkerCloseAllFile::WorkerCloseAllFile() {
addObjectType("appl::WorkerCloseAllFile"); addObjectType("appl::WorkerCloseAllFile");
// load buffer manager: // load buffer manager:
@@ -28,7 +22,7 @@ void appl::WorkerCloseAllFile::init() {
} }
// List all current open file : // List all current open file :
for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) { for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) {
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->get(iii); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(iii);
if (tmpBuffer == nullptr) { if (tmpBuffer == nullptr) {
continue; continue;
} }
@@ -46,7 +40,7 @@ void appl::WorkerCloseAllFile::init() {
} }
// create the worker : // create the worker :
m_worker = appl::WorkerCloseFile::create(); m_worker = appl::WorkerCloseFile::create();
m_worker->signalCloseDone.bind(shared_from_this(), &appl::WorkerCloseAllFile::onCallbackCloseDone); m_worker->signalCloseDone.connect(sharedFromThis(), &appl::WorkerCloseAllFile::onCallbackCloseDone);
m_worker->startAction(m_bufferNameList.front()); m_worker->startAction(m_bufferNameList.front());
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());
@@ -71,7 +65,7 @@ void appl::WorkerCloseAllFile::onCallbackCloseDone() {
} }
// create the worker : // create the worker :
m_worker = appl::WorkerCloseFile::create(); m_worker = appl::WorkerCloseFile::create();
m_worker->signalCloseDone.bind(shared_from_this(), &appl::WorkerCloseAllFile::onCallbackCloseDone); m_worker->signalCloseDone.connect(sharedFromThis(), &appl::WorkerCloseAllFile::onCallbackCloseDone);
m_worker->startAction(m_bufferNameList.front()); m_worker->startAction(m_bufferNameList.front());
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __WORKER_CLOSE_ALL_FILE_H__
#define __WORKER_CLOSE_ALL_FILE_H__
#include <ewol/object/Worker.h> #include <ewol/object/Worker.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <appl/Gui/WorkerCloseFile.h> #include <appl/Gui/WorkerCloseFile.h>
@@ -23,12 +18,9 @@ namespace appl {
virtual ~WorkerCloseAllFile(); virtual ~WorkerCloseAllFile();
private: private:
std::vector<std::string> m_bufferNameList; std::vector<std::string> m_bufferNameList;
std::shared_ptr<appl::WorkerCloseFile> m_worker; //! pop-up element that is open... ememory::SharedPtr<appl::WorkerCloseFile> m_worker; //! pop-up element that is open...
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // callback function public: // callback function
void onCallbackCloseDone(); void onCallbackCloseDone();
}; };
}; }
#endif

View File

@@ -1,22 +1,17 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/Gui/WorkerCloseFile.h> #include <appl/Gui/WorkerCloseFile.h>
#include <ewol/widget/meta/StdPopUp.h> #include <ewol/widget/meta/StdPopUp.h>
#include <ewol/tools/message.h>
#undef __class__
#define __class__ "WorkerCloseFile"
appl::WorkerCloseFile::WorkerCloseFile() : appl::WorkerCloseFile::WorkerCloseFile() :
signalCloseDone(*this, "close-file-done"), signalCloseDone(this, "close-file-done", ""),
signalAbort(*this, "close-file-abort"), signalAbort(this, "close-file-abort", ""),
m_buffer(nullptr), m_buffer(nullptr),
m_worker(nullptr), m_worker(nullptr),
m_bufferManager(nullptr) { m_bufferManager(nullptr) {
@@ -38,7 +33,7 @@ void appl::WorkerCloseFile::startAction(const std::string& _bufferName) {
} }
if (m_bufferName == "") { if (m_bufferName == "") {
// need to find the curent file ... // need to find the curent file ...
std::shared_ptr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected(); ememory::SharedPtr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == nullptr) { if (tmpp == nullptr) {
APPL_ERROR("No selected buffer now ..."); APPL_ERROR("No selected buffer now ...");
destroy(); destroy();
@@ -64,35 +59,35 @@ void appl::WorkerCloseFile::startAction(const std::string& _bufferName) {
return; return;
} }
std::shared_ptr<ewol::widget::StdPopUp> tmpPopUp = ewol::widget::StdPopUp::create(); ememory::SharedPtr<ewol::widget::StdPopUp> tmpPopUp = ewol::widget::StdPopUp::create();
if (tmpPopUp == nullptr) { if (tmpPopUp == nullptr) {
APPL_ERROR("Can not create a simple pop-up"); APPL_ERROR("Can not create a simple pop-up");
destroy(); destroy();
return; return;
} }
tmpPopUp->setTitle("<bold>Close un-saved file:</bold>"); tmpPopUp->propertyTitle.set("<bold>_T{Close un-saved file:}</bold>");
tmpPopUp->setComment("The file named : <i>\"" + m_buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost..."); tmpPopUp->propertyComment.set("_T{The file named:} <i>'" + m_buffer->getFileName() + "'</i> _T{is curently modify.}<br/>_T{If you don't saves these modifications,}<br/>_T{they will be definitly lost...}");
std::shared_ptr<ewol::widget::Button> bt = nullptr; ememory::SharedPtr<ewol::widget::Button> bt = nullptr;
if (m_buffer->hasFileName() == true) { if (m_buffer->hasFileName() == true) {
bt = tmpPopUp->addButton("Save", true); bt = tmpPopUp->addButton("_T{Save}", true);
if (bt != nullptr) { if (bt != nullptr) {
bt->signalPressed.bind(shared_from_this(), &appl::WorkerCloseFile::onCallbackSaveValidate); bt->signalPressed.connect(sharedFromThis(), &appl::WorkerCloseFile::onCallbackSaveValidate);
} }
} }
bt = tmpPopUp->addButton("Save As", true); bt = tmpPopUp->addButton("_T{Save As}", true);
if (bt != nullptr) { if (bt != nullptr) {
bt->signalPressed.bind(shared_from_this(), &appl::WorkerCloseFile::onCallbackSaveAsValidate); bt->signalPressed.connect(sharedFromThis(), &appl::WorkerCloseFile::onCallbackSaveAsValidate);
} }
bt = tmpPopUp->addButton("Close", true); bt = tmpPopUp->addButton("_T{Close}", true);
if (bt != nullptr) { if (bt != nullptr) {
bt->signalPressed.bind(shared_from_this(), &appl::WorkerCloseFile::onCallbackClose); bt->signalPressed.connect(sharedFromThis(), &appl::WorkerCloseFile::onCallbackClose);
} }
bt = tmpPopUp->addButton("Cancel", true); bt = tmpPopUp->addButton("_T{Cancel}", true);
if (bt != nullptr) { if (bt != nullptr) {
bt->signalPressed.bind(shared_from_this(), &appl::WorkerCloseFile::onCallbackCancel); bt->signalPressed.connect(sharedFromThis(), &appl::WorkerCloseFile::onCallbackCancel);
} }
tmpPopUp->setRemoveOnExternClick(true); tmpPopUp->propertyCloseOutEvent.set(true);
std::shared_ptr<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows(); ememory::SharedPtr<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows();
if (tmpWindows == nullptr) { if (tmpWindows == nullptr) {
APPL_ERROR("Error to get the windows."); APPL_ERROR("Error to get the windows.");
destroy(); destroy();
@@ -116,10 +111,10 @@ void appl::WorkerCloseFile::onCallbackSaveAsValidate() {
// nothing to do in this case ==> can do nothing ... // nothing to do in this case ==> can do nothing ...
return; return;
} }
m_worker = appl::WorkerSaveFile::create(m_bufferName); m_worker = appl::WorkerSaveFile::create("buffer-name", m_bufferName);
if (m_worker != nullptr) { if (m_worker != nullptr) {
m_worker->signalSaveDone.bind(shared_from_this(), &appl::WorkerCloseFile::onCallbackClose); m_worker->signalSaveDone.connect(sharedFromThis(), &appl::WorkerCloseFile::onCallbackClose);
m_worker->signalAbort.bind(shared_from_this(), &appl::WorkerCloseFile::onCallbackCancel); m_worker->signalAbort.connect(sharedFromThis(), &appl::WorkerCloseFile::onCallbackCancel);
} }
} }
@@ -137,11 +132,7 @@ void appl::WorkerCloseFile::onCallbackSaveValidate() {
return; return;
} }
if (m_buffer->storeFile() == false) { if (m_buffer->storeFile() == false) {
std::shared_ptr<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows(); ewol::tools::message::displayWarning("We can not save the file : <br/><i>" + m_buffer->getFileName() + "</i>");
if (tmpWindows == nullptr) {
return;
}
tmpWindows->displayWarningMessage("We can not save the file : <br/><i>" + m_buffer->getFileName() + "</i>");
signalAbort.emit(); signalAbort.emit();
} else { } else {
m_buffer->destroy(); m_buffer->destroy();

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __WORKER_CLOSE_FILE_H__
#define __WORKER_CLOSE_FILE_H__
#include <ewol/object/Worker.h> #include <ewol/object/Worker.h>
#include <ewol/widget/meta/FileChooser.h> #include <ewol/widget/meta/FileChooser.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
@@ -17,8 +12,8 @@
namespace appl { namespace appl {
class WorkerCloseFile : public ewol::object::Worker { class WorkerCloseFile : public ewol::object::Worker {
public: public:
ewol::object::Signal<void> signalCloseDone; esignal::Signal<> signalCloseDone;
ewol::object::Signal<void> signalAbort; esignal::Signal<> signalAbort;
protected: protected:
// note : if == "" ==> current ... // note : if == "" ==> current ...
WorkerCloseFile(); WorkerCloseFile();
@@ -33,15 +28,14 @@ namespace appl {
void startAction(const std::string& _bufferName); void startAction(const std::string& _bufferName);
private: private:
std::string m_bufferName; std::string m_bufferName;
std::shared_ptr<appl::Buffer> m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer ememory::SharedPtr<appl::Buffer> m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer
std::shared_ptr<appl::WorkerSaveFile> m_worker; //! sub-worker element... ememory::SharedPtr<appl::WorkerSaveFile> m_worker; //! sub-worker element...
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // callback Functions public: // callback Functions
void onCallbackSaveAsValidate(); void onCallbackSaveAsValidate();
void onCallbackSaveValidate(); void onCallbackSaveValidate();
void onCallbackClose(); void onCallbackClose();
void onCallbackCancel(); void onCallbackCancel();
}; };
}; }
#endif

View File

@@ -1,18 +1,12 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/Gui/WorkerSaveAllFile.h> #include <appl/Gui/WorkerSaveAllFile.h>
#undef __class__
#define __class__ "WorkerSaveAllFile"
appl::WorkerSaveAllFile::WorkerSaveAllFile() { appl::WorkerSaveAllFile::WorkerSaveAllFile() {
addObjectType("appl::WorkerSaveAllFile"); addObjectType("appl::WorkerSaveAllFile");
// load buffer manager: // load buffer manager:
@@ -27,18 +21,17 @@ void appl::WorkerSaveAllFile::init() {
return; return;
} }
// List all current open file : // List all current open file :
for (int32_t iii=0; iii<m_bufferManager->size(); ++iii) { for (auto &it : *m_bufferManager) {
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->get(iii); if (it == nullptr) {
if (tmpBuffer == nullptr) {
continue; continue;
} }
if (tmpBuffer->isModify() == false) { if (it->isModify() == false) {
continue; continue;
} }
if (tmpBuffer->hasFileName() == false) { if (it->hasFileName() == false) {
m_bufferNameList.push_back(tmpBuffer->getFileName()); m_bufferNameList.push_back(it->getFileName());
} else { } else {
tmpBuffer->storeFile(); it->storeFile();
} }
} }
// checkif an element has something to do in the queue // checkif an element has something to do in the queue
@@ -47,14 +40,14 @@ void appl::WorkerSaveAllFile::init() {
return; return;
} }
// create the worker : // create the worker :
m_worker = appl::WorkerSaveFile::create(m_bufferNameList.front()); m_worker = appl::WorkerSaveFile::create("buffer-name", m_bufferNameList.front());
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());
if (m_bufferNameList.size() == 0) { if (m_bufferNameList.size() == 0) {
destroy(); destroy();
return; return;
} }
m_worker->signalSaveDone.bind(shared_from_this(), &appl::WorkerSaveAllFile::onCallbackSaveAsDone); m_worker->signalSaveDone.connect(sharedFromThis(), &appl::WorkerSaveAllFile::onCallbackSaveAsDone);
} }
appl::WorkerSaveAllFile::~WorkerSaveAllFile() { appl::WorkerSaveAllFile::~WorkerSaveAllFile() {
@@ -71,13 +64,13 @@ void appl::WorkerSaveAllFile::onCallbackSaveAsDone() {
return; return;
} }
// create the worker : // create the worker :
m_worker = appl::WorkerSaveFile::create(m_bufferNameList.front()); m_worker = appl::WorkerSaveFile::create("buffer-name", m_bufferNameList.front());
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());
if (m_bufferNameList.size() == 0) { if (m_bufferNameList.size() == 0) {
destroy(); destroy();
return; return;
} }
m_worker->signalSaveDone.bind(shared_from_this(), &appl::WorkerSaveAllFile::onCallbackSaveAsDone); m_worker->signalSaveDone.connect(sharedFromThis(), &appl::WorkerSaveAllFile::onCallbackSaveAsDone);
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __WORKER_SAVE_ALL_FILE_H__
#define __WORKER_SAVE_ALL_FILE_H__
#include <ewol/object/Worker.h> #include <ewol/object/Worker.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <appl/Gui/WorkerSaveFile.h> #include <appl/Gui/WorkerSaveFile.h>
@@ -23,11 +18,10 @@ namespace appl {
virtual ~WorkerSaveAllFile(); virtual ~WorkerSaveAllFile();
private: private:
std::vector<std::string> m_bufferNameList; std::vector<std::string> m_bufferNameList;
std::shared_ptr<appl::WorkerSaveFile> m_worker; //! pop-up element that is open... ememory::SharedPtr<appl::WorkerSaveFile> m_worker; //! pop-up element that is open...
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // callback function public: // callback function
void onCallbackSaveAsDone(); void onCallbackSaveAsDone();
}; };
}; }
#endif

View File

@@ -1,57 +1,52 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/Gui/WorkerSaveFile.h> #include <appl/Gui/WorkerSaveFile.h>
#include <ewol/tools/message.h>
#undef __class__
#define __class__ "WorkerSaveFile"
appl::WorkerSaveFile::WorkerSaveFile() : appl::WorkerSaveFile::WorkerSaveFile() :
signalSaveDone(*this, "save-file-done"), signalSaveDone(this, "save-file-done", ""),
signalAbort(*this, "save-file-abort") { signalAbort(this, "save-file-abort", ""),
propertyBufferName(this, "buffer-name", "", ""),
propertyForceSave(this, "force-save", false, "request save in all case") {
addObjectType("appl::WorkerSaveFile"); addObjectType("appl::WorkerSaveFile");
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::create(); m_bufferManager = appl::BufferManager::create();
} }
void appl::WorkerSaveFile::init(const std::string& _bufferName, bool _forceSaveAs) { void appl::WorkerSaveFile::init() {
ewol::object::Worker::init(); ewol::object::Worker::init();
m_bufferName = _bufferName;
if (m_bufferManager == nullptr) { if (m_bufferManager == nullptr) {
APPL_ERROR("can not call unexistant buffer manager ... "); APPL_ERROR("can not call unexistant buffer manager ... ");
destroy(); destroy();
return; return;
} }
if (m_bufferName == "") { if (*propertyBufferName == "") {
// need to find the curent file ... // need to find the curent file ...
std::shared_ptr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected(); ememory::SharedPtr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == nullptr) { if (tmpp == nullptr) {
APPL_ERROR("No selected buffer now ..."); APPL_ERROR("No selected buffer now ...");
destroy(); destroy();
return; return;
} }
m_bufferName = tmpp->getFileName(); propertyBufferName.setDirect(tmpp->getFileName());
} }
if (m_bufferManager->exist(m_bufferName) == false) { if (m_bufferManager->exist(*propertyBufferName) == false) {
APPL_ERROR("Try to save an non-existant file :" << m_bufferName); APPL_ERROR("Try to save an non-existant file :" << *propertyBufferName);
destroy(); destroy();
return; return;
} }
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->get(m_bufferName); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(*propertyBufferName);
if (tmpBuffer == nullptr) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << m_bufferName); APPL_ERROR("Error to get the buffer : " << *propertyBufferName);
destroy(); destroy();
return; return;
} }
if (_forceSaveAs == false) { if (*propertyForceSave == false) {
if (tmpBuffer->hasFileName() == true) { if (tmpBuffer->hasFileName() == true) {
tmpBuffer->storeFile(); tmpBuffer->storeFile();
signalSaveDone.emit(); signalSaveDone.emit();
@@ -60,25 +55,25 @@ void appl::WorkerSaveFile::init(const std::string& _bufferName, bool _forceSaveA
} }
} }
m_chooser = ewol::widget::FileChooser::create(); m_chooser = ewol::widget::FileChooser::create();
if (nullptr == m_chooser) { if (m_chooser == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
destroy(); destroy();
return; return;
} }
m_chooser->setTitle("Save files As..."); m_chooser->propertyLabelTitle.set("_T{Save files As...}");
m_chooser->setValidateLabel("Save"); m_chooser->propertyLabelValidate.set("_T{Save}");
etk::FSNode tmpName(m_bufferName); etk::FSNode tmpName(*propertyBufferName);
m_chooser->setFolder(tmpName.getNameFolder()); m_chooser->propertyPath.set(tmpName.getNameFolder());
m_chooser->setFileName(tmpName.getNameFile()); m_chooser->propertyFile.set(tmpName.getNameFile());
std::shared_ptr<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows(); ememory::SharedPtr<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows();
if (tmpWindows == nullptr) { if (tmpWindows == nullptr) {
APPL_ERROR("Error to get the windows."); APPL_ERROR("Error to get the windows.");
destroy(); destroy();
return; return;
} }
tmpWindows->popUpWidgetPush(m_chooser); tmpWindows->popUpWidgetPush(m_chooser);
m_chooser->signalValidate.bind(shared_from_this(), &appl::WorkerSaveFile::onCallbackSaveAsValidate); m_chooser->signalValidate.connect(sharedFromThis(), &appl::WorkerSaveFile::onCallbackSaveAsValidate);
m_chooser->signalCancel.bind(shared_from_this(), &appl::WorkerSaveFile::onCallbackCancel); m_chooser->signalCancel.connect(sharedFromThis(), &appl::WorkerSaveFile::onCallbackCancel);
} }
appl::WorkerSaveFile::~WorkerSaveFile() { appl::WorkerSaveFile::~WorkerSaveFile() {
@@ -101,25 +96,20 @@ void appl::WorkerSaveFile::onCallbackSaveAsValidate(const std::string& _value) {
destroy(); destroy();
return; return;
} }
if (m_bufferManager->exist(m_bufferName) == false) { if (m_bufferManager->exist(*propertyBufferName) == false) {
APPL_ERROR("Try to save an non-existant file :" << m_bufferName); APPL_ERROR("Try to save an non-existant file :" << *propertyBufferName);
destroy(); destroy();
return; return;
} }
std::shared_ptr<appl::Buffer> tmpBuffer = m_bufferManager->get(m_bufferName); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(*propertyBufferName);
if (tmpBuffer == nullptr) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << m_bufferName); APPL_ERROR("Error to get the buffer : " << *propertyBufferName);
destroy(); destroy();
return; return;
} }
tmpBuffer->setFileName(_value); tmpBuffer->setFileName(_value);
if (tmpBuffer->storeFile() == false) { if (tmpBuffer->storeFile() == false) {
std::shared_ptr<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows(); ewol::tools::message::displayWarning("We can not save the file : <br/><i>" + tmpBuffer->getFileName() + "</i>");
if (tmpWindows == nullptr) {
destroy();
return;
}
tmpWindows->displayWarningMessage("We can not save the file : <br/><i>" + tmpBuffer->getFileName() + "</i>");
} else { } else {
signalSaveDone.emit(); signalSaveDone.emit();
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __WORKER_SAVE_FILE_H__
#define __WORKER_SAVE_FILE_H__
#include <ewol/widget/meta/FileChooser.h> #include <ewol/widget/meta/FileChooser.h>
#include <ewol/object/Worker.h> #include <ewol/object/Worker.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
@@ -16,22 +11,22 @@
namespace appl { namespace appl {
class WorkerSaveFile : public ewol::object::Worker { class WorkerSaveFile : public ewol::object::Worker {
public: public:
ewol::object::Signal<void> signalSaveDone; esignal::Signal<> signalSaveDone;
ewol::object::Signal<void> signalAbort; esignal::Signal<> signalAbort;
eproperty::Value<std::string> propertyBufferName;
eproperty::Value<bool> propertyForceSave;
protected: protected:
WorkerSaveFile(); WorkerSaveFile();
void init(const std::string& _bufferName, bool _forceSaveAs=true); void init();
public: public:
DECLARE_FACTORY(WorkerSaveFile); DECLARE_FACTORY(WorkerSaveFile);
virtual ~WorkerSaveFile(); virtual ~WorkerSaveFile();
private: private:
std::string m_bufferName; ememory::SharedPtr<ewol::widget::FileChooser> m_chooser; //! pop-up element that is open...
std::shared_ptr<ewol::widget::FileChooser> m_chooser; //! pop-up element that is open... ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // callback function public: // callback function
void onCallbackSaveAsValidate(const std::string& _value); void onCallbackSaveAsValidate(const std::string& _value);
void onCallbackCancel(); void onCallbackCancel();
}; };
}; }
#endif

View File

@@ -1,21 +1,14 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Highlight.h> #include <appl/Highlight.h>
#include <exml/exml.h> #include <exml/exml.h>
#include <ewol/ewol.h> #include <ewol/ewol.h>
#include <ewol/resource/Manager.h> #include <gale/resource/Manager.h>
#undef __class__
#define __class__ "Highlight"
// first pass // first pass
//#define HL_DEBUG APPL_INFO //#define HL_DEBUG APPL_INFO
@@ -26,11 +19,11 @@
#define HL2_DEBUG APPL_VERBOSE #define HL2_DEBUG APPL_VERBOSE
appl::Highlight::Highlight() { appl::Highlight::Highlight() {
addObjectType("appl::Highlight"); addResourceType("appl::Highlight");
} }
void appl::Highlight::init(const std::string& _xmlFilename, const std::string& _colorFile) { void appl::Highlight::init(const std::string& _xmlFilename, const std::string& _colorFile) {
ewol::Resource::init(_xmlFilename); gale::Resource::init(_xmlFilename);
// keep color propertiy file : // keep color propertiy file :
m_paintingProperties = appl::GlyphPainting::create(_colorFile); m_paintingProperties = appl::GlyphPainting::create(_colorFile);
@@ -40,79 +33,79 @@ void appl::Highlight::init(const std::string& _xmlFilename, const std::string& _
APPL_ERROR(" can not load file XML : " << _xmlFilename); APPL_ERROR(" can not load file XML : " << _xmlFilename);
return; return;
} }
exml::Element* root = doc.getNamed("EdnLang"); exml::Element root = doc.nodes["EdnLang"];
if (nullptr == root ) { if (root.exist() == false) {
APPL_ERROR("(l ?) main node not find: \"EdnLang\" ..."); APPL_ERROR("(l ?) main node not find: 'EdnLang' ...");
return; return;
} }
m_typeName = root->getAttribute("lang"); m_typeName = root.attributes["lang"];
int32_t level1 = 0; int32_t level1 = 0;
int32_t level2 = 0; int32_t level2 = 0;
// parse all the elements : // parse all the elements :
for(size_t iii = 0; iii < root->size(); ++iii) { for (const auto it : root.nodes) {
exml::Element* child = root->getElement(iii); const exml::Element child = it.toElement();
if (child == nullptr) { if (child.exist() == false) {
// trash here all that is not element ... // trash here all that is not element ...
continue; continue;
} }
if (child->getValue() == "ext") { if (child.getValue() == "ext") {
std::string myData = child->getText(); std::string myData = child.getText();
if (myData.size()!=0) { if (myData.size()!=0) {
//HL_DEBUG("(l %d) node fined : %s=\"%s\"", child->Row(), child->Value() , myData); //HL_DEBUG("(l %d) node fined : %s=\"%s\"", child->Row(), child->Value() , myData);
m_listExtentions.push_back(myData); m_listExtentions.push_back(myData);
} }
} else if (child->getValue() == "pass1") { } else if (child.getValue() == "pass1") {
// get sub Nodes ... // get sub Nodes ...
for(size_t jjj=0; jjj< child->size(); jjj++) { for (const auto it2 : child.nodes) {
exml::Element* passChild = child->getElement(jjj); const exml::Element passChild = it2.toElement();
if (passChild == nullptr) { if (passChild.exist() == false) {
continue; continue;
} }
if (passChild->getValue() != "rule") { if (passChild.getValue() != "rule") {
APPL_ERROR("(l "<< passChild->getPos() << ") node not suported : \""<< passChild->getValue() << "\" must be [rule]" ); APPL_ERROR("(l "<< passChild.getPos() << ") node not suported : '"<< passChild.getValue() << "' must be [rule]" );
continue; continue;
} }
// Create the patern in list // Create the patern in list
m_listHighlightPass1.push_back(HighlightPattern(m_paintingProperties, passChild, level1++)); m_listHighlightPass1.push_back(HighlightPattern(m_paintingProperties, passChild, level1++));
} }
} else if (child->getValue() == "pass2") { } else if (child.getValue() == "pass2") {
// get sub Nodes ... // get sub Nodes ...
for(size_t jjj=0; jjj< child->size(); jjj++) { for (const auto it2 : child.nodes) {
exml::Element* passChild = child->getElement(jjj); const exml::Element passChild = it2.toElement();
if (passChild == nullptr) { if (passChild.exist() == false) {
continue; continue;
} }
if (passChild->getValue() != "rule") { if (passChild.getValue() != "rule") {
APPL_ERROR("(l "<< passChild->getPos() << ") node not suported : \""<< passChild->getValue() << "\" must be [rule]" ); APPL_ERROR("(l "<< passChild.getPos() << ") node not suported : '"<< passChild.getValue() << "' must be [rule]" );
continue; continue;
} }
// Create the patern in list // Create the patern in list
m_listHighlightPass2.push_back(HighlightPattern(m_paintingProperties, passChild, level2++)); m_listHighlightPass2.push_back(HighlightPattern(m_paintingProperties, passChild, level2++));
} }
} else if (child->getValue() == "pass") { } else if (child.getValue() == "pass") {
std::string attributeName = child->getAttribute("name"); std::string attributeName = child.attributes["name"];
if (attributeName == "") { if (attributeName == "") {
APPL_ERROR("Can not parse an element pass with no attribute name ... ligne=" << child->getPos()); APPL_ERROR("Can not parse an element pass with no attribute name ... ligne=" << child.getPos());
continue; continue;
} }
m_listHighlightNamed.insert(std::pair<std::string, std::vector<HighlightPattern>>(attributeName, std::vector<HighlightPattern>())); m_listHighlightNamed.insert(std::pair<std::string, std::vector<HighlightPattern>>(attributeName, std::vector<HighlightPattern>()));
auto it = m_listHighlightNamed.find(attributeName); auto it3 = m_listHighlightNamed.find(attributeName);
int32_t level3=0; int32_t level3=0;
// get sub Nodes ... // get sub Nodes ...
for(size_t jjj=0; jjj< child->size(); jjj++) { for (const auto it2 : child.nodes) {
exml::Element* passChild = child->getElement(jjj); const exml::Element passChild = it2.toElement();
if (passChild == nullptr) { if (passChild.exist() == false) {
continue; continue;
} }
if (passChild->getValue() != "rule") { if (passChild.getValue() != "rule") {
APPL_ERROR("(l "<< passChild->getPos() << ") node not suported : \""<< passChild->getValue() << "\" must be [rule]" ); APPL_ERROR("(l "<< passChild.getPos() << ") node not suported : '"<< passChild.getValue() << "' must be [rule]" );
continue; continue;
} }
// add element in the list // add element in the list
it->second.push_back(HighlightPattern(m_paintingProperties, passChild, level3++)); it3->second.push_back(HighlightPattern(m_paintingProperties, passChild, level3++));
} }
} else { } else {
APPL_ERROR("(l "<< child->getPos() << ") node not suported : \""<< child->getValue() << "\" must be [ext,pass1,pass2]" ); APPL_ERROR("(l "<< child.getPos() << ") node not suported : '"<< child.getValue() << "' must be [ext,pass1,pass2]" );
} }
} }
} }
@@ -128,7 +121,7 @@ appl::Highlight::~Highlight() {
bool appl::Highlight::isCompatible(const std::string& _name) { bool appl::Highlight::isCompatible(const std::string& _name) {
for (auto &it : m_listExtentions) { for (auto &it : m_listExtentions) {
APPL_VERBOSE(" check : " << it << "=?=" << _name); APPL_DEBUG(" check : " << it << "=?=" << _name);
std::regex expression; std::regex expression;
try { try {
expression.assign(it, std::regex_constants::optimize | std::regex_constants::ECMAScript); expression.assign(it, std::regex_constants::optimize | std::regex_constants::ECMAScript);
@@ -141,6 +134,7 @@ bool appl::Highlight::isCompatible(const std::string& _name) {
if (resultMatch.size() <= 0) { if (resultMatch.size() <= 0) {
continue; continue;
} }
APPL_VERBOSE(" - begin=" << std::distance(_name.begin(), resultMatch[0].first) << " end=" << std::distance(_name.begin(), resultMatch[0].second));
if (resultMatch[0].first != _name.begin()) { if (resultMatch[0].first != _name.begin()) {
continue; continue;
} }
@@ -217,7 +211,7 @@ void appl::Highlight::parse(int64_t _start,
int64_t currentTime = ewol::getTime(); int64_t currentTime = ewol::getTime();
//try to fond the HL in ALL of we have //try to fond the HL in ALL of we have
for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass1.size(); jjj++){ for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass1.size(); jjj++){
enum resultFind ret = HLP_FIND_OK; bool ret = true;
/* /*
if (_buffer[elementStart] == '\n') { if (_buffer[elementStart] == '\n') {
HL_DEBUG("Parse HL id=" << jjj << " position search: (" << elementStart << "," << _stop << ") input start='\\n' " << m_listHighlightPass1[jjj].getPaternString()); HL_DEBUG("Parse HL id=" << jjj << " position search: (" << elementStart << "," << _stop << ") input start='\\n' " << m_listHighlightPass1[jjj].getPaternString());
@@ -227,10 +221,10 @@ void appl::Highlight::parse(int64_t _start,
*/ */
// Stop the search to the end (to get the end of the pattern) // Stop the search to the end (to get the end of the pattern)
ret = m_listHighlightPass1[jjj].find(elementStart, _buffer.size(), resultat, _buffer); ret = m_listHighlightPass1[jjj].find(elementStart, _buffer.size(), resultat, _buffer);
if (HLP_FIND_ERROR != ret) { if (ret == true) {
int64_t currentTimeEnd = ewol::getTime(); int64_t currentTimeEnd = ewol::getTime();
int64_t deltaTime = currentTimeEnd - currentTime; int64_t deltaTime = currentTimeEnd - currentTime;
HL_DEBUG("Find Pattern in the Buffer : time=" << (float)deltaTime/1000.0f << " ms (" << resultat.start << "," << resultat.stop << ") startPos=" << elementStart << " for=" << m_listHighlightPass1[jjj].getPaternString()); HL_DEBUG("Find Pattern in the Buffer : time=" << (float)deltaTime/1000.0f << " ms (" << resultat.start << "," << resultat.stop << ") startPos=" << elementStart << " for=" << m_listHighlightPass1[jjj].getPaternString().first << " " << m_listHighlightPass1[jjj].getPaternString().second);
// remove element in the current List where the current Element have a end inside the next... // remove element in the current List where the current Element have a end inside the next...
int64_t kkk=_addingPos; int64_t kkk=_addingPos;
while(kkk < (int64_t)_metaData.size() ) { while(kkk < (int64_t)_metaData.size() ) {
@@ -282,8 +276,8 @@ void appl::Highlight::parse(int64_t _start,
*/ */
void appl::Highlight::parse2(int64_t _start, void appl::Highlight::parse2(int64_t _start,
int64_t _stop, int64_t _stop,
std::vector<appl::HighlightInfo> &_metaData, std::vector<appl::HighlightInfo>& _metaData,
std::string&_buffer) { std::string& _buffer) {
HL2_DEBUG("Parse element 0 => " << m_listHighlightPass2.size() << HL2_DEBUG("Parse element 0 => " << m_listHighlightPass2.size() <<
" == > position search: (" << _start << "," << _stop << ")" ); " == > position search: (" << _start << "," << _stop << ")" );
int64_t elementStart = _start; int64_t elementStart = _start;
@@ -292,19 +286,20 @@ void appl::Highlight::parse2(int64_t _start,
while (elementStart < elementStop) { while (elementStart < elementStop) {
if (elementStart == 306) { if (elementStart == 306) {
//etk::log::setLevel(etk::log::logLevelVerbose); //elog::setLevel(elog::logLevelVerbose);
} }
//HL2_DEBUG("Parse element in the buffer pos=" << elementStart << "," << _buffer.size() << ")" ); //HL2_DEBUG("Parse element in the buffer pos=" << elementStart << "," << _buffer.size() << ")" );
//try to fond the HL in ALL of we have //try to fond the HL in ALL of we have
for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass2.size(); jjj++){ for (int64_t jjj=0; jjj<int64_t(m_listHighlightPass2.size()); jjj++){
enum resultFind ret;
HL2_DEBUG("Parse HL id=" << jjj << " position search: (" << HL2_DEBUG("Parse HL id=" << jjj << " position search: (" <<
elementStart << "," << elementStop << ") in='" elementStart << "," << elementStop << ") in='"
<< _buffer[elementStart] << "' " << m_listHighlightPass2[jjj].getPaternString()); << /*_buffer[elementStart]*/ std::string(_buffer.begin()+elementStart,_buffer.begin()+elementStop) << "' " << m_listHighlightPass2[jjj].getPaternString().first << " " << m_listHighlightPass1[jjj].getPaternString().second);
// Stop the search to the end (to get the end of the pattern) // Stop the search to the end (to get the end of the pattern)
ret = m_listHighlightPass2[jjj].find(elementStart, elementStop, resultat, _buffer); bool ret = m_listHighlightPass2[jjj].find(elementStart, elementStop, resultat, _buffer);
if (ret != HLP_FIND_ERROR) { if (ret == true) {
// find an element:
_metaData.push_back(resultat); _metaData.push_back(resultat);
HL2_DEBUG("data='" << std::string(_buffer.begin()+elementStart,_buffer.begin()+resultat.stop) << "'");
elementStart = resultat.stop-1; elementStart = resultat.stop-1;
break; break;
} }
@@ -342,11 +337,10 @@ void appl::Highlight::parseSubElement(const appl::HighlightInfo& _upper,
while (elementStart < elementStop) { while (elementStart < elementStop) {
//try to fond the HL in ALL of we have //try to fond the HL in ALL of we have
for (auto &it : itHL->second){ for (auto &it : itHL->second){
enum resultFind ret; HL2_DEBUG("Parse HL position search: (" << elementStart << "," << elementStop << ") in='" << _buffer[elementStart] << "' " << it.getPaternString().first << " " << it.getPaternString().second);
HL2_DEBUG("Parse HL position search: (" << elementStart << "," << elementStop << ") in='" << _buffer[elementStart] << "' " << it.getPaternString());
// Stop the search to the end (to get the end of the pattern) // Stop the search to the end (to get the end of the pattern)
ret = it.find(elementStart, elementStop, resultat, _buffer); bool ret = it.find(elementStart, elementStop, resultat, _buffer);
if (ret != HLP_FIND_ERROR) { if (ret == true) {
_metaData.push_back(resultat); _metaData.push_back(resultat);
elementStart = resultat.stop-1; elementStart = resultat.stop-1;
break; break;
@@ -355,4 +349,4 @@ void appl::Highlight::parseSubElement(const appl::HighlightInfo& _upper,
// Go to the next element (and search again ...). // Go to the next element (and search again ...).
elementStart++; elementStart++;
} }
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __HIGHLIGHT_H__
#define __HIGHLIGHT_H__
namespace appl { namespace appl {
class Highlight; class Highlight;
@@ -21,19 +16,18 @@ namespace appl {
bool notEnded; bool notEnded;
appl::HighlightPattern* patern; appl::HighlightPattern* patern;
}; };
}; }
#include <memory> #include <ememory/memory.h>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#include <appl/HighlightPattern.h> #include <appl/HighlightPattern.h>
#include <appl/GlyphPainting.h> #include <appl/GlyphPainting.h>
#include <etk/Buffer.h>
#include <exml/exml.h> #include <exml/exml.h>
namespace appl { namespace appl {
class Highlight : public ewol::Resource { class Highlight : public gale::Resource {
private: private:
std::shared_ptr<appl::GlyphPainting> m_paintingProperties; ememory::SharedPtr<appl::GlyphPainting> m_paintingProperties;
public: public:
// Constructeur // Constructeur
Highlight(); Highlight();
@@ -74,16 +68,11 @@ namespace appl {
std::vector<HighlightPattern> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) ) std::vector<HighlightPattern> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) )
std::map<std::string, std::vector<HighlightPattern>> m_listHighlightNamed; //!< list of all sub partern to parse... std::map<std::string, std::vector<HighlightPattern>> m_listHighlightNamed; //!< list of all sub partern to parse...
public: // herited function : public: // herited function :
virtual void updateContext() { virtual bool updateContext() {
// no upfate to do ... // no upfate to do ...
return true;
}; };
}; };
}; }
#endif

View File

@@ -1,30 +1,25 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/HighlightManager.h> #include <appl/HighlightManager.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <ewol/object/Manager.h> #include <ewol/object/Manager.h>
#undef __class__
#define __class__ "highlightManager"
// TODO : Review this in a generic unique resource ... // TODO : Review this in a generic unique resource ...
static std::vector<std::shared_ptr<appl::Highlight>>& s_list() { static std::vector<ememory::SharedPtr<appl::Highlight>>& s_list() {
static std::vector<std::shared_ptr<appl::Highlight>> list; static std::vector<ememory::SharedPtr<appl::Highlight>> list;
return list; return list;
} }
void appl::highlightManager::init() { void appl::highlightManager::init() {
std::vector<std::shared_ptr<appl::Highlight>>& hlList = s_list(); std::vector<ememory::SharedPtr<appl::Highlight>>& hlList = s_list();
if (hlList.size() != 0) { if (hlList.size() != 0) {
APPL_ERROR("HighlightManager == > already exist, just unlink the previous ..."); APPL_ERROR("HighlightManager == > already exist, just unlink the previous ...");
hlList.clear(); hlList.clear();
@@ -37,13 +32,20 @@ void appl::highlightManager::init() {
if (it == nullptr) { if (it == nullptr) {
continue; continue;
} }
if (it->getNodeType() != etk::FSN_FOLDER) { if (it->getNodeType() != etk::typeNode_folder) {
continue; continue;
} }
std::string filename = it->getName() + "/highlight.xml"; std::string filename = it->getName() + "/highlight.xml";
APPL_DEBUG("Load xml name : " << filename); APPL_DEBUG("Load xml name : " << filename);
std::shared_ptr<appl::Highlight> myHightLine = appl::Highlight::create(filename); ememory::SharedPtr<appl::Highlight> myHightLine = appl::Highlight::create(filename);
if (myHightLine != nullptr) { if (myHightLine != nullptr) {
// Check if the language name already exist
for (auto &it2 : hlList) {
if ( it2 != nullptr
&& it2->getTypeName() == myHightLine->getTypeName() ) {
APPL_WARNING("LANGUAGE : replace pattern name: '" << myHightLine->getTypeName() << "' with file '" << filename << "' replace: " << it2->getName());
}
}
hlList.push_back(myHightLine); hlList.push_back(myHightLine);
} else { } else {
APPL_ERROR("Can not allocate HighLight"); APPL_ERROR("Can not allocate HighLight");
@@ -61,7 +63,7 @@ void appl::highlightManager::init() {
} }
void appl::highlightManager::unInit() { void appl::highlightManager::unInit() {
std::vector<std::shared_ptr<Highlight>>& hlList = s_list(); std::vector<ememory::SharedPtr<Highlight>>& hlList = s_list();
if (hlList.size() == 0) { if (hlList.size() == 0) {
APPL_DEBUG("HighlightManager ==> no highlight"); APPL_DEBUG("HighlightManager ==> no highlight");
hlList.clear(); hlList.clear();
@@ -75,7 +77,7 @@ std::string appl::highlightManager::getTypeFile(const std::string& _fileName) {
return ""; return "";
} }
APPL_DEBUG("Try to find type for extention : '" << _fileName << "' in " << s_list().size() << " types"); APPL_DEBUG("Try to find type for extention : '" << _fileName << "' in " << s_list().size() << " types");
std::vector<std::shared_ptr<Highlight>>& hlList = s_list(); std::vector<ememory::SharedPtr<Highlight>>& hlList = s_list();
for (auto &it : hlList) { for (auto &it : hlList) {
if (it == nullptr) { if (it == nullptr) {
continue; continue;

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __HIGHLIGHT_MANAGER_H__
#define __HIGHLIGHT_MANAGER_H__
#include <etk/types.h> #include <etk/types.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
@@ -43,8 +38,5 @@ namespace appl {
*/ */
std::vector<std::string> getTypeList(); std::vector<std::string> getTypeList();
}; };
}; }
#endif

View File

@@ -1,23 +1,18 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/HighlightPattern.h> #include <appl/HighlightPattern.h>
#undef __class__ appl::HighlightPattern::HighlightPattern(const ememory::SharedPtr<appl::GlyphPainting>& _glyphPainting, const exml::Element& _child, int32_t _level) :
#define __class__ "HighlightPattern"
appl::HighlightPattern::HighlightPattern(const std::shared_ptr<appl::GlyphPainting>& _glyphPainting, exml::Element* _child, int32_t _level) :
m_glyphPainting(_glyphPainting), m_glyphPainting(_glyphPainting),
m_paternName(""), m_paternName(""),
m_hasParsingError(true), m_hasParsingError(true),
m_regexValue(""), m_regexValue(),
m_hasEndRegEx(false),
m_regExp(), m_regExp(),
m_colorName(""), m_colorName(""),
m_level(0) { m_level(0) {
@@ -28,7 +23,8 @@ appl::HighlightPattern::HighlightPattern() :
m_glyphPainting(), m_glyphPainting(),
m_paternName(""), m_paternName(""),
m_hasParsingError(true), m_hasParsingError(true),
m_regexValue(""), m_regexValue(),
m_hasEndRegEx(false),
m_regExp(), m_regExp(),
m_colorName(""), m_colorName(""),
m_level(0) { m_level(0) {
@@ -39,20 +35,32 @@ appl::HighlightPattern::~HighlightPattern() {
} }
void appl::HighlightPattern::setPatern(const std::string& _regExp) { void appl::HighlightPattern::setPatern(const std::string& _regExp, const std::string& _regExpStop, bool _hasEndRegEx) {
m_regexValue = _regExp; m_regexValue[0] = _regExp;
APPL_DEBUG("parse regex='" << _regExp << "'"); m_regexValue[1] = _regExpStop;
try { m_hasEndRegEx = _hasEndRegEx;
m_regExp.assign(_regExp, std::regex_constants::optimize | std::regex_constants::ECMAScript); APPL_DEBUG("parse regex='" << _regExp << "' -> '" << _regExpStop << "'");
//m_regExp.assign(_regExp, std::regex_constants::optimize | std::regex_constants::extended); m_hasParsingError = false;
m_hasParsingError = false; if (_regExp != "") {
} catch (std::regex_error e) { try {
m_hasParsingError = true; m_regExp[0].assign(_regExp, std::regex_constants::optimize | std::regex_constants::ECMAScript);
APPL_ERROR("can not parse regex : '" << e.what() << "' for : " << _regExp); } catch (std::regex_error e) {
m_hasParsingError = true;
APPL_ERROR("can not parse regex : '" << e.what() << "' for : " << _regExp);
}
}
if (_regExpStop != "") {
try {
m_regExp[1].assign(_regExpStop, std::regex_constants::optimize | std::regex_constants::ECMAScript);
} catch (std::regex_error e) {
m_hasParsingError = true;
APPL_ERROR("can not parse regex : '" << e.what() << "' for : " << _regExpStop);
}
} }
} }
std::string appl::HighlightPattern::getPaternString() {
return m_regexValue; std::pair<std::string,std::string> appl::HighlightPattern::getPaternString() {
return std::make_pair(m_regexValue[0], m_regexValue[1]);
} }
void appl::HighlightPattern::setColorGlyph(const std::string& _colorName) { void appl::HighlightPattern::setColorGlyph(const std::string& _colorName) {
@@ -64,11 +72,10 @@ void appl::HighlightPattern::setColorGlyph(const std::string& _colorName) {
void appl::HighlightPattern::display() { void appl::HighlightPattern::display() {
APPL_INFO("patern : '" << m_paternName << "' level=" << m_level ); APPL_INFO("patern : '" << m_paternName << "' level=" << m_level );
APPL_INFO(" == > colorName '" << m_colorName << "'"); APPL_INFO(" == > colorName '" << m_colorName << "'");
//APPL_INFO(" == > regExp '" << m_regExp.getRegExp() << "'"); APPL_INFO(" == > regex '" << m_regexValue[0] << "' ==> '" << m_regexValue[1] << "'");
APPL_INFO(" == > regex '" << m_regexValue << "'");
} }
void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { void appl::HighlightPattern::parseRules(const exml::Element& _child, int32_t _level) {
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
/* /*
<rule name="my preprocesseur"> <rule name="my preprocesseur">
@@ -79,7 +86,7 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) {
*/ */
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
// process attribute // process attribute
std::string highLightName = _child->getAttribute("name"); std::string highLightName = _child.attributes["name"];
std::string myEdnDataTmp = "???"; std::string myEdnDataTmp = "???";
if (highLightName.size()!=0) { if (highLightName.size()!=0) {
myEdnDataTmp = highLightName; myEdnDataTmp = highLightName;
@@ -87,49 +94,57 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) {
setName(myEdnDataTmp); setName(myEdnDataTmp);
setLevel(_level); setLevel(_level);
exml::Element* xChild = _child->getNamed("color"); exml::Element xChild = _child.nodes["color"];
if (nullptr != xChild) { if (xChild.exist() == true) {
std::string myData = xChild->getText(); std::string myData = xChild.getText();
if (myData.size() != 0) { if (myData.size() != 0) {
//APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData);
setColorGlyph(myData); setColorGlyph(myData);
} }
} }
xChild = _child->getNamed("regex"); std::string paterStart;
if (nullptr != xChild) { std::string paterStop;
std::string myData = xChild->getText(); xChild = _child.nodes["regex"];
if (myData.size() != 0) { if (xChild.exist() == true) {
//APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); if (xChild.nodes.size() == 1 && xChild.nodes[0].getType() == exml::nodeType::text) {
setPatern(myData); std::string myData = xChild.getText();
if (myData.size() != 0) {
paterStart = myData;
}
setPatern(paterStart);
} else {
exml::Element xxChild = xChild.nodes["start"];
if (xxChild.exist() == true) {
std::string myData = xxChild.getText();
if (myData.size() != 0) {
paterStart = myData;
}
}
xxChild = xChild.nodes["stop"];
if (xxChild.exist() == true) {
std::string myData = xxChild.getText();
if (myData.size() != 0) {
paterStop = myData;
}
}
setPatern(paterStart, paterStop, true);
} }
} }
xChild = _child->getNamed("sub"); xChild = _child.nodes["sub"];
if (nullptr != xChild) { if (xChild.exist() == true) {
std::string myData = xChild->getText(); std::string myData = xChild.getText();
if (myData.size() != 0) { if (myData.size() != 0) {
//APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData);
setSubPatternName(myData); setSubPatternName(myData);
} }
} }
} }
enum resultFind appl::HighlightPattern::find(int32_t _start, static std::pair<int64_t,int64_t> findRegex(int32_t _start,
int32_t _stop, int32_t _stop,
appl::HighlightInfo& _resultat, std::regex& _regex,
const std::string& _buffer) { const std::string& _buffer) {
//APPL_DEBUG(" try to find the element");
_resultat.start = -1;
_resultat.stop = -1;
_resultat.notEnded = false;
_resultat.patern = this;
if (m_hasParsingError == true) {
return HLP_FIND_ERROR;
}
std::smatch resultMatch; std::smatch resultMatch;
std::regex_constants::match_flag_type flags = std::regex_constants::match_continuous; // check only the match at the first character. std::regex_constants::match_flag_type flags = std::regex_constants::match_continuous; // check only the match at the first character.
//APPL_DEBUG("find data at : start=" << _start << " stop=" << _stop << " regex='" << m_regexValue << "'"); //APPL_DEBUG("find data at : start=" << _start << " stop=" << _stop << " regex='" << m_regexValue << "'");
if ((int64_t)_stop <= (int64_t)_buffer.size()) { if ((int64_t)_stop <= (int64_t)_buffer.size()) {
char val = _buffer[_stop]; char val = _buffer[_stop];
@@ -138,33 +153,95 @@ enum resultFind appl::HighlightPattern::find(int32_t _start,
//after last char ==> not end of line ($ would not work)) //after last char ==> not end of line ($ would not work))
flags |= std::regex_constants::match_not_eol; flags |= std::regex_constants::match_not_eol;
} }
/*
if (!( ('a' <= val && val <= 'z') if (!( ('a' <= val && val <= 'z')
|| ('A' <= val && val <= 'Z') || ('A' <= val && val <= 'Z')
|| ('0' <= val && val <= '9') || ('0' <= val && val <= '9')
|| val == '_')) { || val == '_')) {
flags |= std::regex_constants::match_not_eow; flags |= std::regex_constants::match_not_eow;
} }
*/
} }
if (_start>0) { if (_start>0) {
flags |= std::regex_constants::match_prev_avail; flags |= std::regex_constants::match_prev_avail;
} }
std::regex_search(_buffer.begin() + _start, _buffer.begin() + _stop, resultMatch, m_regExp, flags); if ( _stop < 0
|| size_t(_stop) > _buffer.size()) {
APPL_ERROR(" error in indexing for regex ... _stop=" << _stop << " >= _buffer.size()=" << _buffer.size());
return std::pair<int64_t,int64_t>(-1,0);
}
if ( _start < 0
|| size_t(_start) > _buffer.size()) {
APPL_ERROR(" error in indexing for regex ... _start=" << _start << " >= _buffer.size()=" << _buffer.size());
return std::pair<int64_t,int64_t>(-1,0);
}
if (_start > _stop) {
APPL_ERROR(" error in indexing for regex ... _start=" << _start << " > _stop=" << _stop);
return std::pair<int64_t,int64_t>(-1,0);
}
std::regex_search(_buffer.begin() + _start, _buffer.begin() + _stop, resultMatch, _regex, flags);
if (resultMatch.size() > 0) { if (resultMatch.size() > 0) {
_resultat.start = std::distance(_buffer.begin(), resultMatch[0].first); int64_t start = std::distance(_buffer.begin(), resultMatch[0].first);
_resultat.stop = std::distance(_buffer.begin(), resultMatch[0].second); int64_t stop = std::distance(_buffer.begin(), resultMatch[0].second);
//APPL_DEBUG("find data at : start=" << _resultat.start << " stop=" << _resultat.stop << " data='" <<std::string(_buffer, _resultat.start, _resultat.stop-_resultat.start) << "'" ); //APPL_DEBUG("find data at : start=" << _resultat.start << " stop=" << _resultat.stop << " data='" <<std::string(_buffer, _resultat.start, _resultat.stop-_resultat.start) << "'" );
/* /*
if (true){ if (true){
//TK_DEBUG("in line : '" << etk::to_string(_buffer) << "'"); //TK_DEBUG("in line : '" << etk::to_string(_buffer) << "'");
TK_DEBUG(" Find " << resultMatch.size() << " elements"); APPL_DEBUG(" Find " << resultMatch.size() << " elements");
for (size_t iii=0; iii<resultMatch.size(); ++iii) { for (size_t iii=0; iii<resultMatch.size(); ++iii) {
int32_t posStart = std::distance(_buffer.begin(), resultMatch[iii].first); int32_t posStart = std::distance(_buffer.begin(), resultMatch[iii].first);
int32_t posStop = std::distance(_buffer.begin(), resultMatch[iii].second); int32_t posStop = std::distance(_buffer.begin(), resultMatch[iii].second);
TK_DEBUG(" [" << iii << "] " << posStart << " to " << posStop); APPL_DEBUG(" [" << iii << "] " << posStart << " to " << posStop);
} }
} }
*/ */
return HLP_FIND_OK; return std::pair<int64_t,int64_t>(start,stop);
} }
return HLP_FIND_ERROR; return std::pair<int64_t,int64_t>(-1,0);
}
bool appl::HighlightPattern::find(int32_t _start,
int32_t _stop,
appl::HighlightInfo& _resultat,
const std::string& _buffer) {
//APPL_DEBUG(" try to find the element");
_resultat.start = -1;
_resultat.stop = -1;
_resultat.notEnded = false;
_resultat.patern = this;
if (m_hasParsingError == true) {
return false;
}
// phase 1 start regEx or global regex:
if (m_regexValue[0].size() == 0) {
return false;
}
std::pair<int64_t,int64_t> ret0 = findRegex(_start, _stop, m_regExp[0], _buffer);
if (ret0.first >= 0) {
_resultat.start = ret0.first;
_resultat.stop = ret0.second;
//APPL_DEBUG("find data at : start=" << _resultat.start << " stop=" << _resultat.stop << " data='" <<std::string(_buffer, _resultat.start, _resultat.stop-_resultat.start) << "'" );
// second step : Complex searching ...
if (m_hasEndRegEx == true) {
// when no regex specify ==> get all the buffer ...
if (m_regexValue[1].size() == 0) {
_resultat.stop = _stop;
return true;
}
_start = _resultat.stop;
while (_start < _stop) {
std::pair<int64_t,int64_t> ret1 = findRegex(_start, _stop, m_regExp[1], _buffer);
if (ret1.first >= 0) {
_resultat.stop = ret1.second;
return true;
}
_start++;
}
_resultat.stop = _stop;
_resultat.notEnded = true; // TODO : Manege back the not ended ...
return false;
}
return true;
}
return false;
} }

View File

@@ -1,39 +1,26 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#include <appl/Highlight.h> #include <appl/Highlight.h>
#ifndef __HIGHLIGHT_PATTERN_H__
#define __HIGHLIGHT_PATTERN_H__
class HighlightPattern; class HighlightPattern;
#include <appl/GlyphPainting.h> #include <appl/GlyphPainting.h>
#include <vector> #include <vector>
#include <regex> #include <regex>
#include <exml/exml.h> #include <exml/exml.h>
#include <etk/Buffer.h>
enum resultFind {
HLP_FIND_ERROR,
HLP_FIND_OK,
HLP_FIND_OK_NO_END,
};
namespace appl { namespace appl {
class HighlightPattern { class HighlightPattern {
private: private:
std::shared_ptr<appl::GlyphPainting> m_glyphPainting; ememory::SharedPtr<appl::GlyphPainting> m_glyphPainting;
public: public:
// Constructeur // Constructeur
HighlightPattern(); HighlightPattern();
HighlightPattern(const std::shared_ptr<appl::GlyphPainting>& _glyphPainting, exml::Element* _child, int32_t _level); HighlightPattern(const ememory::SharedPtr<appl::GlyphPainting>& _glyphPainting, const exml::Element& _child, int32_t _level);
virtual ~HighlightPattern(); virtual ~HighlightPattern();
private: private:
std::string m_paternName; //!< Current style name (like "c++" or "c" or "script Bash") std::string m_paternName; //!< Current style name (like "c++" or "c" or "script Bash")
@@ -55,11 +42,12 @@ namespace appl {
}; };
private: private:
bool m_hasParsingError; bool m_hasParsingError;
std::string m_regexValue; std::string m_regexValue[2];
std::regex m_regExp; //!< Start of Regular expression bool m_hasEndRegEx;
std::regex m_regExp[2]; //!< Start of Regular expression
public: public:
void setPatern(const std::string& _regExp); void setPatern(const std::string& _regExp, const std::string& _regExpStop="", bool _hasEndRegEx=false);
std::string getPaternString(); std::pair<std::string,std::string> getPaternString();
private: private:
std::string m_colorName; //!< Current color name std::string m_colorName; //!< Current color name
int32_t m_colorId; //!< Id of the the glyph painting int32_t m_colorId; //!< Id of the the glyph painting
@@ -87,19 +75,15 @@ namespace appl {
* @param[in] _stop End of the possibility whe search can continue * @param[in] _stop End of the possibility whe search can continue
* @param[out] _resultat Position where find data * @param[out] _resultat Position where find data
* @param[in] _buffer : Where to search data * @param[in] _buffer : Where to search data
* @return HLP_FIND_OK We find a compleate pattern * @return true We find a compleate pattern
* @return HLP_FIND_OK_NO_END Xe find a partial pattern (missing end) * @return false Not find the pattern
* @return HLP_FIND_ERROR Not find the pattern
*/ */
enum resultFind find(int32_t _start, bool find(int32_t _start,
int32_t _stop, int32_t _stop,
appl::HighlightInfo& _resultat, appl::HighlightInfo& _resultat,
const std::string& _buffer); const std::string& _buffer);
void parseRules(exml::Element* _child, int32_t _level); void parseRules(const exml::Element& _child, int32_t _level);
}; };
}; }
#endif

View File

@@ -1,20 +1,12 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPlugin.h> #include <appl/TextPlugin.h>
#include <appl/TextPluginManager.h> #include <appl/TextPluginManager.h>
#include <appl/debug.h> #include <appl/debug.h>
#undef __class__
#define __class__ "TextViewerPlugin"
appl::TextViewerPlugin::TextViewerPlugin() : appl::TextViewerPlugin::TextViewerPlugin() :
m_isEnable(true), m_isEnable(true),
m_activateOnEventEntry(false), m_activateOnEventEntry(false),
@@ -25,7 +17,7 @@ appl::TextViewerPlugin::TextViewerPlugin() :
m_activateOnReceiveShortCut(false), m_activateOnReceiveShortCut(false),
m_activateOnCursorMove(false) { m_activateOnCursorMove(false) {
addObjectType("appl::TextViewerPlugin"); addObjectType("appl::TextViewerPlugin");
m_menuInterface = std::dynamic_pointer_cast<ewol::widget::Menu>(getObjectNamed("appl-menu-interface")); m_menuInterface = ememory::dynamicPointerCast<ewol::widget::Menu>(getObjectNamed("appl-menu-interface"));
if (m_menuInterface.expired() == true) { if (m_menuInterface.expired() == true) {
APPL_ERROR("Can not acces to the Menu interface"); APPL_ERROR("Can not acces to the Menu interface");
} }
@@ -33,14 +25,6 @@ appl::TextViewerPlugin::TextViewerPlugin() :
m_pluginManager = appl::textPluginManager::create(); m_pluginManager = appl::textPluginManager::create();
} }
void appl::TextViewerPlugin::init() {
ewol::Object::init();
}
void appl::TextViewerPlugin::init(const std::string& _name) {
ewol::Object::init(_name);
}
appl::TextViewerPlugin::~TextViewerPlugin() { appl::TextViewerPlugin::~TextViewerPlugin() {
if (m_isEnable == false) { if (m_isEnable == false) {
return; return;

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_H__
#define __APPL_TEXT_PLUGIN_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -17,19 +12,20 @@
namespace appl { namespace appl {
class textPluginManager; class textPluginManager;
class TextViewerPlugin;
using TextViewerPluginShared = ememory::SharedPtr<TextViewerPlugin>;
using TextViewerPluginWeak = ememory::WeakPtr<TextViewerPlugin>;
class TextViewerPlugin : public ewol::Object { class TextViewerPlugin : public ewol::Object {
friend class appl::TextViewer; friend class appl::TextViewer;
protected: protected:
std::weak_ptr<appl::textPluginManager> m_pluginManager; ememory::WeakPtr<appl::textPluginManager> m_pluginManager;
protected: protected:
TextViewerPlugin(); TextViewerPlugin();
void init();
void init(const std::string& _name);
public: public:
DECLARE_FACTORY(TextViewerPlugin); DECLARE_FACTORY(TextViewerPlugin);
virtual ~TextViewerPlugin(); virtual ~TextViewerPlugin();
protected: protected:
std::weak_ptr<ewol::widget::Menu> m_menuInterface; ewol::widget::MenuWeak m_menuInterface;
private: private:
bool m_isEnable; //!< The plugin is enable or not (for all viewer). bool m_isEnable; //!< The plugin is enable or not (for all viewer).
public: public:
@@ -220,7 +216,5 @@ namespace appl {
return false; return false;
} }
}; };
}; }
#endif

View File

@@ -1,28 +1,17 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginAutoIndent.h> #include <appl/TextPluginAutoIndent.h>
#include <ewol/context/clipBoard.h> #include <gale/context/clipBoard.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#undef __class__
#define __class__ "TextPluginAutoIndent"
appl::TextPluginAutoIndent::TextPluginAutoIndent() { appl::TextPluginAutoIndent::TextPluginAutoIndent() {
m_activateOnEventEntry = true; m_activateOnEventEntry = true;
addObjectType("appl::TextPluginAutoIndent"); addObjectType("appl::TextPluginAutoIndent");
} }
void appl::TextPluginAutoIndent::init() {
appl::TextViewerPlugin::init();
}
bool appl::TextPluginAutoIndent::onEventEntry(appl::TextViewer& _textDrawer, bool appl::TextPluginAutoIndent::onEventEntry(appl::TextViewer& _textDrawer,
const ewol::event::Entry& _event) { const ewol::event::Entry& _event) {
@@ -31,10 +20,10 @@ bool appl::TextPluginAutoIndent::onEventEntry(appl::TextViewer& _textDrawer,
} }
//APPL_DEBUG("KB EVENT : " << _event); //APPL_DEBUG("KB EVENT : " << _event);
// just forward event == > manage directly in the buffer // just forward event == > manage directly in the buffer
if (_event.getType() != ewol::key::keyboardChar) { if (_event.getType() != gale::key::keyboard::character) {
return false; return false;
} }
if (_event.getStatus() != ewol::key::statusDown) { if (_event.getStatus() != gale::key::status::down) {
return false; return false;
} }
if (_event.getChar() != u32char::Return) { if (_event.getChar() != u32char::Return) {

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_AUTO_INDENT_H__
#define __APPL_TEXT_PLUGIN_AUTO_INDENT_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -19,7 +14,6 @@ namespace appl {
class TextPluginAutoIndent : public appl::TextViewerPlugin { class TextPluginAutoIndent : public appl::TextViewerPlugin {
protected: protected:
TextPluginAutoIndent(); TextPluginAutoIndent();
void init();
public: public:
DECLARE_FACTORY(TextPluginAutoIndent); DECLARE_FACTORY(TextPluginAutoIndent);
virtual ~TextPluginAutoIndent() { virtual ~TextPluginAutoIndent() {
@@ -29,7 +23,5 @@ namespace appl {
virtual bool onEventEntry(appl::TextViewer& _textDrawer, virtual bool onEventEntry(appl::TextViewer& _textDrawer,
const ewol::event::Entry& _event); const ewol::event::Entry& _event);
}; };
}; }
#endif

View File

@@ -1,20 +1,13 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginCopy.h> #include <appl/TextPluginCopy.h>
#include <ewol/context/clipBoard.h> #include <gale/context/clipBoard.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#undef __class__
#define __class__ "TextPluginCopy"
appl::TextPluginCopy::TextPluginCopy() : appl::TextPluginCopy::TextPluginCopy() :
m_menuIdTitle(-1), m_menuIdTitle(-1),
m_menuIdCopy(-1), m_menuIdCopy(-1),
@@ -25,13 +18,9 @@ appl::TextPluginCopy::TextPluginCopy() :
addObjectType("appl::TextPluginCopy"); addObjectType("appl::TextPluginCopy");
} }
void appl::TextPluginCopy::init() {
appl::TextViewerPlugin::init();
}
void appl::TextPluginCopy::onPluginEnable(appl::TextViewer& _textDrawer) { void appl::TextPluginCopy::onPluginEnable(appl::TextViewer& _textDrawer) {
// add event : // add event :
std::shared_ptr<ewol::widget::Menu> menu = m_menuInterface.lock(); ememory::SharedPtr<ewol::widget::Menu> menu = m_menuInterface.lock();
if (menu != nullptr) { if (menu != nullptr) {
m_menuIdTitle = menu->addTitle("Edit"); m_menuIdTitle = menu->addTitle("Edit");
if (m_menuIdTitle != -1) { if (m_menuIdTitle != -1) {
@@ -50,7 +39,7 @@ void appl::TextPluginCopy::onPluginDisable(appl::TextViewer& _textDrawer) {
_textDrawer.ext_shortCutRm("appl::TextPluginCopy::cut"); _textDrawer.ext_shortCutRm("appl::TextPluginCopy::cut");
_textDrawer.ext_shortCutRm("appl::TextPluginCopy::copy"); _textDrawer.ext_shortCutRm("appl::TextPluginCopy::copy");
_textDrawer.ext_shortCutRm("appl::TextPluginCopy::Paste"); _textDrawer.ext_shortCutRm("appl::TextPluginCopy::Paste");
std::shared_ptr<ewol::widget::Menu> menu = m_menuInterface.lock(); ememory::SharedPtr<ewol::widget::Menu> menu = m_menuInterface.lock();
if (menu != nullptr) { if (menu != nullptr) {
menu->remove(m_menuIdRemove); menu->remove(m_menuIdRemove);
menu->remove(m_menuIdPast); menu->remove(m_menuIdPast);
@@ -76,7 +65,7 @@ bool appl::TextPluginCopy::onReceiveShortCut(appl::TextViewer& _textDrawer,
std::string value; std::string value;
_textDrawer.copy(value); _textDrawer.copy(value);
if (value.size() != 0) { if (value.size() != 0) {
ewol::context::clipBoard::set(ewol::context::clipBoard::clipboardStd, value); gale::context::clipBoard::set(gale::context::clipBoard::clipboardStd, value);
} }
} }
if (_shortCutName == "appl::TextPluginCopy::cut") { if (_shortCutName == "appl::TextPluginCopy::cut") {
@@ -85,7 +74,7 @@ bool appl::TextPluginCopy::onReceiveShortCut(appl::TextViewer& _textDrawer,
return true; return true;
} else if (_shortCutName == "appl::TextPluginCopy::Paste") { } else if (_shortCutName == "appl::TextPluginCopy::Paste") {
if (_textDrawer.hasBuffer() == true) { if (_textDrawer.hasBuffer() == true) {
ewol::context::clipBoard::request(ewol::context::clipBoard::clipboardStd); gale::context::clipBoard::request(gale::context::clipBoard::clipboardStd);
} }
return true; return true;
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_COPY_H__
#define __APPL_TEXT_PLUGIN_COPY_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -25,7 +20,6 @@ namespace appl {
int32_t m_menuIdRemove; int32_t m_menuIdRemove;
protected: protected:
TextPluginCopy(); TextPluginCopy();
void init();
public: public:
DECLARE_FACTORY(TextPluginCopy); DECLARE_FACTORY(TextPluginCopy);
virtual ~TextPluginCopy() { virtual ~TextPluginCopy() {
@@ -36,7 +30,5 @@ namespace appl {
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveShortCut(appl::TextViewer& _textDrawer, const std::string& _shortCutName); virtual bool onReceiveShortCut(appl::TextViewer& _textDrawer, const std::string& _shortCutName);
}; };
}; }
#endif

View File

@@ -1,23 +1,15 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginCtags.h> #include <appl/TextPluginCtags.h>
#include <ewol/context/clipBoard.h> #include <gale/context/clipBoard.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#include <ewol/widget/meta/FileChooser.h> #include <ewol/widget/meta/FileChooser.h>
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <appl/Gui/TagFileSelection.h> #include <appl/Gui/TagFileSelection.h>
#undef __class__
#define __class__ "TextPluginCtags"
appl::TextPluginCtags::TextPluginCtags() : appl::TextPluginCtags::TextPluginCtags() :
m_tagFolderBase(""), m_tagFolderBase(""),
m_tagFilename(""), m_tagFilename(""),
@@ -28,11 +20,6 @@ appl::TextPluginCtags::TextPluginCtags() :
addObjectType("appl::TextPluginCtags"); addObjectType("appl::TextPluginCtags");
} }
void appl::TextPluginCtags::init() {
appl::TextViewerPlugin::init();
}
appl::TextPluginCtags::~TextPluginCtags() { appl::TextPluginCtags::~TextPluginCtags() {
} }
@@ -72,8 +59,8 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) {
if (tagsFindNext (m_ctagFile, &entry) == TagSuccess) { if (tagsFindNext (m_ctagFile, &entry) == TagSuccess) {
APPL_INFO("Multiple file destination ..."); APPL_INFO("Multiple file destination ...");
std::shared_ptr<appl::TagFileSelection> tmpWidget = appl::TagFileSelection::create(); ememory::SharedPtr<appl::TagFileSelection> tmpWidget = appl::TagFileSelection::create();
if (nullptr == tmpWidget) { if (tmpWidget == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID); tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID);
@@ -85,7 +72,7 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) {
tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID); tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID);
} while (tagsFindNext (m_ctagFile, &entry) == TagSuccess); } while (tagsFindNext (m_ctagFile, &entry) == TagSuccess);
ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget); ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget);
tmpWidget->signalSelect.bind(shared_from_this(), &appl::TextPluginCtags::onCallbackOpenCtagsSelectReturn); tmpWidget->signalSelect.connect(sharedFromThis(), &appl::TextPluginCtags::onCallbackOpenCtagsSelectReturn);
} }
} else { } else {
jumpFile(myfile.getName(), lineID - 1); jumpFile(myfile.getName(), lineID - 1);
@@ -169,21 +156,21 @@ bool appl::TextPluginCtags::onReceiveShortCut(appl::TextViewer& _textDrawer,
} }
if (_shortCutName == "appl::TextPluginCtags::OpenCtagsFile") { if (_shortCutName == "appl::TextPluginCtags::OpenCtagsFile") {
APPL_INFO("Request opening ctag file"); APPL_INFO("Request opening ctag file");
std::shared_ptr<ewol::widget::FileChooser> tmpWidget = ewol::widget::FileChooser::create(); ememory::SharedPtr<ewol::widget::FileChooser> tmpWidget = ewol::widget::FileChooser::create();
if (nullptr == tmpWidget) { if (tmpWidget == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
return true; return true;
} }
tmpWidget->setTitle("Open Exuberant Ctags file"); tmpWidget->propertyLabelTitle.set("Open Exuberant Ctags file");
tmpWidget->setValidateLabel("Open"); tmpWidget->propertyLabelValidate.set("Open");
// try to get the current folder : // try to get the current folder :
std::string path = _textDrawer.getBufferPath(); std::string path = _textDrawer.getBufferPath();
APPL_ERROR("get path : '" << path << "'"); APPL_ERROR("get path : '" << path << "'");
if (path != "") { if (path != "") {
tmpWidget->setFolder(path); tmpWidget->propertyPath.set(path);
} }
ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget); ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget);
tmpWidget->signalValidate.bind(shared_from_this(), &appl::TextPluginCtags::onCallbackOpenCtagsOpenFileReturn); tmpWidget->signalValidate.connect(sharedFromThis(), &appl::TextPluginCtags::onCallbackOpenCtagsOpenFileReturn);
return true; return true;
} else if (_shortCutName == "appl::TextPluginCtags::JumpDestination") { } else if (_shortCutName == "appl::TextPluginCtags::JumpDestination") {
if (_textDrawer.hasBuffer() == false) { if (_textDrawer.hasBuffer() == false) {

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_CTAGS_H__
#define __APPL_TEXT_PLUGIN_CTAGS_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -33,10 +28,9 @@ namespace appl {
void printTag(const tagEntry *_entry); void printTag(const tagEntry *_entry);
void jumpTo(const std::string& _name); void jumpTo(const std::string& _name);
void jumpFile(const std::string& _filename, int64_t _lineId); void jumpFile(const std::string& _filename, int64_t _lineId);
std::shared_ptr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
protected: protected:
TextPluginCtags(); TextPluginCtags();
void init();
public: public:
DECLARE_FACTORY(TextPluginCtags); DECLARE_FACTORY(TextPluginCtags);
virtual ~TextPluginCtags(); virtual ~TextPluginCtags();
@@ -49,7 +43,5 @@ namespace appl {
void onCallbackOpenCtagsOpenFileReturn(const std::string& _value); void onCallbackOpenCtagsOpenFileReturn(const std::string& _value);
void onCallbackOpenCtagsSelectReturn(const std::string& _value); void onCallbackOpenCtagsSelectReturn(const std::string& _value);
}; };
}; }
#endif

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_DATA_H__
#define __APPL_TEXT_PLUGIN_DATA_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -22,48 +17,39 @@ namespace appl {
// nothing to do ... // nothing to do ...
addObjectType("appl::TextViewerPluginData"); addObjectType("appl::TextViewerPluginData");
} }
void init() {
appl::TextViewerPlugin::init();
}
void init(const std::string& _name) {
appl::TextViewerPlugin::init(_name);
}
public: public:
DECLARE_FACTORY(TextViewerPluginData); DECLARE_FACTORY(TextViewerPluginData);
virtual ~TextViewerPluginData() { virtual ~TextViewerPluginData() {
for (size_t iii = 0; iii < m_specificData.size() ; ++iii) { for (size_t iii = 0; iii < m_specificData.size() ; ++iii) {
if (m_specificData[iii].second != nullptr) { if (m_specificData[iii].second != nullptr) {
remove(*m_specificData[iii].second); remove(*m_specificData[iii].second);
delete(m_specificData[iii].second);
m_specificData[iii].second = nullptr;
} }
} }
m_specificData.clear(); m_specificData.clear();
} }
private: private:
std::vector<std::pair<std::weak_ptr<appl::Buffer> ,TYPE* >> m_specificData; std::vector<std::pair<ememory::WeakPtr<appl::Buffer> ,std::unique_ptr<TYPE>>> m_specificData;
protected: protected:
TYPE* getDataRef(appl::TextViewer& _textDrawer) { TYPE* getDataRef(appl::TextViewer& _textDrawer) {
auto it = m_specificData.begin(); auto it = m_specificData.begin();
while(it != m_specificData.end()) { while(it != m_specificData.end()) {
std::shared_ptr<appl::Buffer> buf = it->first.lock(); ememory::SharedPtr<appl::Buffer> buf = it->first.lock();
if (buf == nullptr) { if (buf == nullptr) {
delete(it->second);
it->second = nullptr;
it = m_specificData.erase(it); it = m_specificData.erase(it);
continue;
} }
if (buf == _textDrawer.internalGetBuffer()) { if (buf == _textDrawer.internalGetBuffer()) {
return it->second; return it->second.get();
} }
++it; ++it;
} }
TYPE* data = new TYPE(); std::unique_ptr<TYPE> data(new TYPE());
if (data == nullptr) { if (data == nullptr) {
return nullptr; return nullptr;
} }
m_specificData.push_back(std::make_pair(_textDrawer.internalGetBuffer(), data)); m_specificData.push_back(std::make_pair(_textDrawer.internalGetBuffer(), std::move(data)));
// create a new one ... // create a new one ...
return data; return data.get();
} }
protected: // Wrap all element with their internal data: (do not use theses function) protected: // Wrap all element with their internal data: (do not use theses function)
bool onReceiveShortCut(appl::TextViewer& _textDrawer, bool onReceiveShortCut(appl::TextViewer& _textDrawer,
@@ -132,7 +118,5 @@ namespace appl {
return; return;
}; };
}; };
}; }
#endif

View File

@@ -1,20 +1,12 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginHistory.h> #include <appl/TextPluginHistory.h>
#include <ewol/context/clipBoard.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#include <appl/TextPluginManager.h> #include <appl/TextPluginManager.h>
#undef __class__
#define __class__ "TextPluginHistory"
appl::TextPluginHistory::TextPluginHistory() : appl::TextPluginHistory::TextPluginHistory() :
m_menuIdTitle(-1), m_menuIdTitle(-1),
m_menuIdUndo(-1), m_menuIdUndo(-1),
@@ -26,13 +18,9 @@ appl::TextPluginHistory::TextPluginHistory() :
addObjectType("appl::TextPluginHistory"); addObjectType("appl::TextPluginHistory");
} }
void appl::TextPluginHistory::init() {
appl::TextViewerPluginData<appl::PluginHistoryData>::init();
}
void appl::TextPluginHistory::onPluginEnable(appl::TextViewer& _textDrawer) { void appl::TextPluginHistory::onPluginEnable(appl::TextViewer& _textDrawer) {
std::shared_ptr<ewol::widget::Menu> menu = m_menuInterface.lock(); ememory::SharedPtr<ewol::widget::Menu> menu = m_menuInterface.lock();
if (menu != nullptr) { if (menu != nullptr) {
m_menuIdTitle = menu->addTitle("Edit"); m_menuIdTitle = menu->addTitle("Edit");
if (m_menuIdTitle != -1) { if (m_menuIdTitle != -1) {
@@ -48,7 +36,7 @@ void appl::TextPluginHistory::onPluginEnable(appl::TextViewer& _textDrawer) {
void appl::TextPluginHistory::onPluginDisable(appl::TextViewer& _textDrawer) { void appl::TextPluginHistory::onPluginDisable(appl::TextViewer& _textDrawer) {
_textDrawer.ext_shortCutRm("appl::TextPluginHistory::Undo"); _textDrawer.ext_shortCutRm("appl::TextPluginHistory::Undo");
_textDrawer.ext_shortCutRm("appl::TextPluginHistory::Redo"); _textDrawer.ext_shortCutRm("appl::TextPluginHistory::Redo");
std::shared_ptr<ewol::widget::Menu> menu = m_menuInterface.lock(); ememory::SharedPtr<ewol::widget::Menu> menu = m_menuInterface.lock();
if (menu != nullptr) { if (menu != nullptr) {
menu->remove(m_menuIdRedo); menu->remove(m_menuIdRedo);
menu->remove(m_menuIdUndo); menu->remove(m_menuIdUndo);
@@ -149,7 +137,7 @@ bool appl::TextPluginHistory::onDataWrite(appl::TextViewer& _textDrawer,
clearRedo(_data); clearRedo(_data);
_data.m_undo.push_back(tmpElement); _data.m_undo.push_back(tmpElement);
} }
std::shared_ptr<appl::textPluginManager> mng = m_pluginManager.lock(); ememory::SharedPtr<appl::textPluginManager> mng = m_pluginManager.lock();
if (mng!=nullptr) { if (mng!=nullptr) {
mng->onCursorMove(_textDrawer, _textDrawer.cursor()); mng->onCursorMove(_textDrawer, _textDrawer.cursor());
} }
@@ -177,7 +165,7 @@ bool appl::TextPluginHistory::onDataReplace(appl::TextViewer& _textDrawer,
clearRedo(_data); clearRedo(_data);
_data.m_undo.push_back(tmpElement); _data.m_undo.push_back(tmpElement);
} }
std::shared_ptr<appl::textPluginManager> mng = m_pluginManager.lock(); ememory::SharedPtr<appl::textPluginManager> mng = m_pluginManager.lock();
if (mng!=nullptr) { if (mng!=nullptr) {
mng->onCursorMove(_textDrawer, _textDrawer.cursor()); mng->onCursorMove(_textDrawer, _textDrawer.cursor());
} }
@@ -202,7 +190,7 @@ bool appl::TextPluginHistory::onDataRemove(appl::TextViewer& _textDrawer,
_data.m_undo.push_back(tmpElement); _data.m_undo.push_back(tmpElement);
} }
_textDrawer.removeDirect(); _textDrawer.removeDirect();
std::shared_ptr<appl::textPluginManager> mng = m_pluginManager.lock(); ememory::SharedPtr<appl::textPluginManager> mng = m_pluginManager.lock();
if (mng!=nullptr) { if (mng!=nullptr) {
mng->onCursorMove(_textDrawer, _textDrawer.cursor()); mng->onCursorMove(_textDrawer, _textDrawer.cursor());
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_HISTORY_H__
#define __APPL_TEXT_PLUGIN_HISTORY_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -42,7 +37,6 @@ namespace appl {
int32_t m_menuIdRedo; int32_t m_menuIdRedo;
protected: protected:
TextPluginHistory(); TextPluginHistory();
void init();
public: public:
DECLARE_FACTORY(TextPluginHistory); DECLARE_FACTORY(TextPluginHistory);
virtual ~TextPluginHistory() { }; virtual ~TextPluginHistory() { };
@@ -74,7 +68,5 @@ namespace appl {
void clearRedo(appl::PluginHistoryData& _data); void clearRedo(appl::PluginHistoryData& _data);
void clearUndo(appl::PluginHistoryData& _data); void clearUndo(appl::PluginHistoryData& _data);
}; };
}; }
#endif

View File

@@ -1,11 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginManager.h> #include <appl/TextPluginManager.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/TextPluginCopy.h> #include <appl/TextPluginCopy.h>
@@ -16,14 +13,11 @@
#include <appl/TextPluginSelectAll.h> #include <appl/TextPluginSelectAll.h>
#include <appl/TextPluginCtags.h> #include <appl/TextPluginCtags.h>
#undef __class__
#define __class__ "textPluginManager"
appl::textPluginManager::textPluginManager() { appl::textPluginManager::textPluginManager() {
} }
void appl::textPluginManager::init(const std::string& _name) { void appl::textPluginManager::init(const std::string& _name) {
ewol::Resource::init(_name); gale::Resource::init(_name);
} }
void appl::textPluginManager::addDefaultPlugin() { void appl::textPluginManager::addDefaultPlugin() {
@@ -36,7 +30,7 @@ void appl::textPluginManager::addDefaultPlugin() {
appl::textPluginManager::addPlugin(appl::TextPluginCtags::create()); appl::textPluginManager::addPlugin(appl::TextPluginCtags::create());
} }
void appl::textPluginManager::addPlugin(const std::shared_ptr<appl::TextViewerPlugin>& _plugin) { void appl::textPluginManager::addPlugin(ememory::SharedPtr<appl::TextViewerPlugin> _plugin) {
if (_plugin == nullptr) { if (_plugin == nullptr) {
return; return;
} }
@@ -63,14 +57,14 @@ void appl::textPluginManager::addPlugin(const std::shared_ptr<appl::TextViewerPl
if (_plugin->isAvaillableOnCursorMove() == true) { if (_plugin->isAvaillableOnCursorMove() == true) {
m_listOnCursorMove.push_back(_plugin); m_listOnCursorMove.push_back(_plugin);
} }
std::shared_ptr<appl::TextViewer> viewer = m_currentViewer.lock(); ememory::SharedPtr<appl::TextViewer> viewer = m_currentViewer.lock();
if (viewer != nullptr) { if (viewer != nullptr) {
_plugin->onPluginEnable(*viewer); _plugin->onPluginEnable(*viewer);
} }
} }
void appl::textPluginManager::connect(appl::TextViewer& _widget) { void appl::textPluginManager::connect(appl::TextViewer& _widget) {
m_currentViewer = std::dynamic_pointer_cast<appl::TextViewer>(_widget.shared_from_this()); m_currentViewer = ememory::dynamicPointerCast<appl::TextViewer>(_widget.sharedFromThis());
for (auto &it : m_list) { for (auto &it : m_list) {
if (it == nullptr) { if (it == nullptr) {
continue; continue;

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_MANAGER_H__
#define __APPL_TEXT_PLUGIN_MANAGER_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -16,17 +11,17 @@
#include <appl/TextPlugin.h> #include <appl/TextPlugin.h>
namespace appl { namespace appl {
class textPluginManager : public ewol::Resource { class textPluginManager : public gale::Resource {
private: private:
std::weak_ptr<appl::TextViewer> m_currentViewer; ememory::WeakPtr<appl::TextViewer> m_currentViewer;
std::list<std::shared_ptr<appl::TextViewerPlugin>> m_list; std::list<ememory::SharedPtr<appl::TextViewerPlugin>> m_list;
std::vector<std::shared_ptr<appl::TextViewerPlugin>> m_listOnEventEntry; std::vector<ememory::SharedPtr<appl::TextViewerPlugin>> m_listOnEventEntry;
std::vector<std::shared_ptr<appl::TextViewerPlugin>> m_listOnEventInput; std::vector<ememory::SharedPtr<appl::TextViewerPlugin>> m_listOnEventInput;
std::vector<std::shared_ptr<appl::TextViewerPlugin>> m_listOnWrite; std::vector<ememory::SharedPtr<appl::TextViewerPlugin>> m_listOnWrite;
std::vector<std::shared_ptr<appl::TextViewerPlugin>> m_listOnReplace; std::vector<ememory::SharedPtr<appl::TextViewerPlugin>> m_listOnReplace;
std::vector<std::shared_ptr<appl::TextViewerPlugin>> m_listOnRemove; std::vector<ememory::SharedPtr<appl::TextViewerPlugin>> m_listOnRemove;
std::vector<std::shared_ptr<appl::TextViewerPlugin>> m_listOnReceiveShortCutViewer; std::vector<ememory::SharedPtr<appl::TextViewerPlugin>> m_listOnReceiveShortCutViewer;
std::vector<std::shared_ptr<appl::TextViewerPlugin>> m_listOnCursorMove; std::vector<ememory::SharedPtr<appl::TextViewerPlugin>> m_listOnCursorMove;
protected: protected:
textPluginManager(); textPluginManager();
void init(const std::string& _name); void init(const std::string& _name);
@@ -41,7 +36,7 @@ namespace appl {
* @brief Add a plugin. * @brief Add a plugin.
* @param[in] _plugin Plugin pointer to add. * @param[in] _plugin Plugin pointer to add.
*/ */
void addPlugin(const std::shared_ptr<appl::TextViewerPlugin>& _plugin); void addPlugin(ememory::SharedPtr<appl::TextViewerPlugin> _plugin);
/** /**
* @brief connect a new widget to the plugin. * @brief connect a new widget to the plugin.
* @param[in] _widget Reference on the widget caller. * @param[in] _widget Reference on the widget caller.
@@ -117,7 +112,5 @@ namespace appl {
bool onCursorMove(appl::TextViewer& _textDrawer, bool onCursorMove(appl::TextViewer& _textDrawer,
const appl::Buffer::Iterator& _pos); const appl::Buffer::Iterator& _pos);
}; };
}; }
#endif

View File

@@ -1,38 +1,27 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginMultiLineTab.h> #include <appl/TextPluginMultiLineTab.h>
#include <ewol/context/clipBoard.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#undef __class__
#define __class__ "TextPluginMultiLineTab"
appl::TextPluginMultiLineTab::TextPluginMultiLineTab() { appl::TextPluginMultiLineTab::TextPluginMultiLineTab() {
m_activateOnEventEntry = true; m_activateOnEventEntry = true;
addObjectType("appl::TextPluginMultiLineTab"); addObjectType("appl::TextPluginMultiLineTab");
} }
void appl::TextPluginMultiLineTab::init() {
appl::TextViewerPlugin::init();
}
bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer, bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer,
const ewol::event::Entry& _event) { const ewol::event::Entry& _event) {
if (isEnable() == false) { if (isEnable() == false) {
return false; return false;
} }
if (_event.getType() != ewol::key::keyboardChar) { if (_event.getType() != gale::key::keyboard::character) {
return false; return false;
} }
//APPL_DEBUG("KB EVENT : \"" << UTF8_data << "\" size=" << strlen(UTF8_data) << "type=" << (int32_t)typeEvent); //APPL_DEBUG("KB EVENT : \"" << UTF8_data << "\" size=" << strlen(UTF8_data) << "type=" << (int32_t)typeEvent);
if (_event.getStatus() != ewol::key::statusDown) { if (_event.getStatus() != gale::key::status::down) {
return false; return false;
} }
char32_t localValue = _event.getChar(); char32_t localValue = _event.getChar();
@@ -98,4 +87,4 @@ bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer,
_textDrawer.replace(data, itStart, itStop); _textDrawer.replace(data, itStart, itStop);
_textDrawer.select(itStart, itStart+data.size()); _textDrawer.select(itStart, itStart+data.size());
return true; return true;
} }

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_MULTI_LINE_TAB_H__
#define __APPL_TEXT_PLUGIN_MULTI_LINE_TAB_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -19,7 +14,6 @@ namespace appl {
class TextPluginMultiLineTab : public appl::TextViewerPlugin { class TextPluginMultiLineTab : public appl::TextViewerPlugin {
protected: protected:
TextPluginMultiLineTab(); TextPluginMultiLineTab();
void init();
public: public:
DECLARE_FACTORY(TextPluginMultiLineTab); DECLARE_FACTORY(TextPluginMultiLineTab);
virtual ~TextPluginMultiLineTab() { virtual ~TextPluginMultiLineTab() {
@@ -29,8 +23,5 @@ namespace appl {
virtual bool onEventEntry(appl::TextViewer& _textDrawer, virtual bool onEventEntry(appl::TextViewer& _textDrawer,
const ewol::event::Entry& _event); const ewol::event::Entry& _event);
}; };
}; }
#endif

View File

@@ -1,28 +1,16 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginRmLine.h> #include <appl/TextPluginRmLine.h>
#include <ewol/context/clipBoard.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#undef __class__
#define __class__ "TextPluginRmLine"
appl::TextPluginRmLine::TextPluginRmLine() { appl::TextPluginRmLine::TextPluginRmLine() {
m_activateOnReceiveShortCut = true; m_activateOnReceiveShortCut = true;
addObjectType("appl::TextPluginRmLine"); addObjectType("appl::TextPluginRmLine");
} }
void appl::TextPluginRmLine::init() {
appl::TextViewerPlugin::init();
}
void appl::TextPluginRmLine::onPluginEnable(appl::TextViewer& _textDrawer) { void appl::TextPluginRmLine::onPluginEnable(appl::TextViewer& _textDrawer) {
// add event : // add event :

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_RM_LINE_H__
#define __APPL_TEXT_RM_LINE_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -19,7 +14,6 @@ namespace appl {
class TextPluginRmLine : public appl::TextViewerPlugin { class TextPluginRmLine : public appl::TextViewerPlugin {
protected: protected:
TextPluginRmLine(); TextPluginRmLine();
void init();
public: public:
DECLARE_FACTORY(TextPluginRmLine); DECLARE_FACTORY(TextPluginRmLine);
virtual ~TextPluginRmLine() { virtual ~TextPluginRmLine() {
@@ -30,7 +24,5 @@ namespace appl {
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveShortCut(appl::TextViewer& _textDrawer, const std::string& _shortCutName); virtual bool onReceiveShortCut(appl::TextViewer& _textDrawer, const std::string& _shortCutName);
}; };
}; }
#endif

View File

@@ -1,20 +1,11 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/TextPluginSelectAll.h> #include <appl/TextPluginSelectAll.h>
#include <ewol/context/clipBoard.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#undef __class__
#define __class__ "TextPluginSelectAll"
appl::TextPluginSelectAll::TextPluginSelectAll() : appl::TextPluginSelectAll::TextPluginSelectAll() :
m_menuIdTitle(-1), m_menuIdTitle(-1),
m_menuIdSelectAll(-1), m_menuIdSelectAll(-1),
@@ -23,12 +14,9 @@ appl::TextPluginSelectAll::TextPluginSelectAll() :
addObjectType("appl::TextPluginSelectAll"); addObjectType("appl::TextPluginSelectAll");
} }
void appl::TextPluginSelectAll::init() {
appl::TextViewerPlugin::init();
}
void appl::TextPluginSelectAll::onPluginEnable(appl::TextViewer& _textDrawer) { void appl::TextPluginSelectAll::onPluginEnable(appl::TextViewer& _textDrawer) {
std::shared_ptr<ewol::widget::Menu> menu = m_menuInterface.lock(); ememory::SharedPtr<ewol::widget::Menu> menu = m_menuInterface.lock();
if (menu != nullptr) { if (menu != nullptr) {
m_menuIdTitle = menu->addTitle("Edit"); m_menuIdTitle = menu->addTitle("Edit");
if (m_menuIdTitle != -1) { if (m_menuIdTitle != -1) {
@@ -44,7 +32,7 @@ void appl::TextPluginSelectAll::onPluginEnable(appl::TextViewer& _textDrawer) {
void appl::TextPluginSelectAll::onPluginDisable(appl::TextViewer& _textDrawer) { void appl::TextPluginSelectAll::onPluginDisable(appl::TextViewer& _textDrawer) {
_textDrawer.ext_shortCutRm("appl::TextPluginSelectAll::All"); _textDrawer.ext_shortCutRm("appl::TextPluginSelectAll::All");
_textDrawer.ext_shortCutRm("appl::TextPluginSelectAll::None"); _textDrawer.ext_shortCutRm("appl::TextPluginSelectAll::None");
std::shared_ptr<ewol::widget::Menu> menu = m_menuInterface.lock(); ememory::SharedPtr<ewol::widget::Menu> menu = m_menuInterface.lock();
if (menu != nullptr) { if (menu != nullptr) {
menu->remove(m_menuIdSelectNone); menu->remove(m_menuIdSelectNone);
menu->remove(m_menuIdSelectAll); menu->remove(m_menuIdSelectAll);

View File

@@ -1,14 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_PLUGIN_SELECT_ALL_H__
#define __APPL_TEXT_PLUGIN_SELECT_ALL_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
@@ -19,7 +14,6 @@ namespace appl {
class TextPluginSelectAll : public appl::TextViewerPlugin { class TextPluginSelectAll : public appl::TextViewerPlugin {
protected: protected:
TextPluginSelectAll(); TextPluginSelectAll();
void init();
int32_t m_menuIdTitle; int32_t m_menuIdTitle;
int32_t m_menuIdSelectAll; int32_t m_menuIdSelectAll;
int32_t m_menuIdSelectNone; int32_t m_menuIdSelectNone;
@@ -33,7 +27,5 @@ namespace appl {
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveShortCut(appl::TextViewer& _textDrawer, const std::string& _shortCutName); virtual bool onReceiveShortCut(appl::TextViewer& _textDrawer, const std::string& _shortCutName);
}; };
}; }
#endif

View File

@@ -1,15 +1,11 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
int32_t appl::getLogId() { int32_t appl::getLogId() {
static int32_t g_val = etk::log::registerInstance("edn"); static int32_t g_val = elog::registerInstance("edn");
return g_val; return g_val;
} }

View File

@@ -1,29 +1,16 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_DEBUG_H__ #include <elog/log.h>
#define __APPL_DEBUG_H__
#include <etk/log.h>
namespace appl { namespace appl {
int32_t getLogId(); int32_t getLogId();
}; };
// TODO : Review this problem of multiple intanciation of "std::stringbuf sb" #define APPL_BASE(info,data) ELOG_BASE(appl::getLogId(),info,data)
#define APPL_BASE(info,data) \
do { \
if (info <= etk::log::getLevel(appl::getLogId())) { \
std::stringbuf sb; \
std::ostream tmpStream(&sb); \
tmpStream << data; \
etk::log::logStream(appl::getLogId(), info, __LINE__, __class__, __func__, tmpStream); \
} \
} while(0)
#define APPL_CRITICAL(data) APPL_BASE(1, data) #define APPL_CRITICAL(data) APPL_BASE(1, data)
#define APPL_ERROR(data) APPL_BASE(2, data) #define APPL_ERROR(data) APPL_BASE(2, data)
@@ -48,4 +35,3 @@ namespace appl {
} \ } \
} while (0) } while (0)
#endif

View File

@@ -1,35 +1,29 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/global.h> #include <appl/global.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <ewol/resource/Manager.h> #include <gale/resource/Manager.h>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#undef __class__
#define __class__ "globals"
class myParamGlobal : public ewol::Object { class myParamGlobal : public ewol::Object {
public: public:
ewol::object::Param<bool> m_displayEOL; eproperty::Value<bool> m_displayEOL;
ewol::object::Param<bool> m_AutoIndent; eproperty::Value<bool> m_AutoIndent;
ewol::object::Param<bool> m_displayTabChar; eproperty::Value<bool> m_displayTabChar;
ewol::object::Param<bool> m_displaySpaceChar; eproperty::Value<bool> m_displaySpaceChar;
public : public :
myParamGlobal() : myParamGlobal() :
m_displayEOL(*this, "eol", false, "Display end of line character"), m_displayEOL(this, "eol", false, "Display end of line character"),
m_AutoIndent(*this, "auto-indent", true, "Auto indent when create new line"), m_AutoIndent(this, "auto-indent", true, "Auto indent when create new line"),
m_displayTabChar(*this, "display-tab", true, "Display the Tab char"), m_displayTabChar(this, "display-tab", true, "Display the Tab char"),
m_displaySpaceChar(*this, "display-space", true, "Display the space char") { m_displaySpaceChar(this, "display-space", true, "Display the space char") {
m_static = true; // Note : set the object static notification( Must be set or assert at the end of process) m_static = true; // Note : set the object static notification( Must be set or assert at the end of process)
setName("edn_global_param"); propertyName.set("edn_global_param");
} }
}; };
@@ -54,7 +48,7 @@ bool globals::isSetDisplayEndOfLine() {
} }
void globals::setDisplayEndOfLine(bool newVal) { void globals::setDisplayEndOfLine(bool newVal) {
l_obj().m_displayEOL = newVal; l_obj().m_displayEOL.set(newVal);
//ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange); //ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange);
} }
@@ -64,7 +58,7 @@ bool globals::isSetDisplaySpaceChar() {
} }
void globals::setDisplaySpaceChar(bool _newVal) { void globals::setDisplaySpaceChar(bool _newVal) {
l_obj().m_displaySpaceChar = _newVal; l_obj().m_displaySpaceChar.set(_newVal);
//ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange); //ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange);
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
@@ -73,7 +67,7 @@ bool globals::isSetDisplayTabChar() {
} }
void globals::setDisplayTabChar(bool _newVal) { void globals::setDisplayTabChar(bool _newVal) {
l_obj().m_displayTabChar = _newVal; l_obj().m_displayTabChar.set(_newVal);
//ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange); //ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange);
} }
@@ -83,7 +77,7 @@ bool globals::isSetAutoIndent() {
} }
void globals::setAutoIndent(bool _newVal) { void globals::setAutoIndent(bool _newVal) {
l_obj().m_AutoIndent = _newVal; l_obj().m_AutoIndent.set(_newVal);
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
@@ -109,60 +103,67 @@ globals::ParameterGlobalsGui::ParameterGlobalsGui() {
} }
void globals::ParameterGlobalsGui::init() { void globals::ParameterGlobalsGui::init() {
ewol::widget::Sizer::init(ewol::widget::Sizer::modeVert); ewol::widget::Sizer::init();
std::shared_ptr<ewol::widget::CheckBox> myCheckbox; propertyMode.set(ewol::widget::Sizer::modeVert);
std::shared_ptr<ewol::widget::Spacer> mySpacer; ememory::SharedPtr<ewol::widget::CheckBox> myCheckbox;
ememory::SharedPtr<ewol::widget::Spacer> mySpacer;
mySpacer = ewol::widget::Spacer::create(); mySpacer = ewol::widget::Spacer::create();
if (nullptr == mySpacer) { if (mySpacer == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
mySpacer->setExpand(bvec2(true,true)); mySpacer->propertyExpand.set(bvec2(true,true));
subWidgetAdd(mySpacer); subWidgetAdd(mySpacer);
} }
myCheckbox = ewol::widget::CheckBox::create("Automatic Indentation"); myCheckbox = ewol::widget::CheckBox::create();
if (nullptr == myCheckbox) { if (myCheckbox == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
myCheckbox->setExpand(bvec2(true,false)); //TODO : myCheckbox->propertyLabel.set("Automatic Indentation");
myCheckbox->setValue(isSetAutoIndent()); myCheckbox->propertyExpand.set(bvec2(true,false));
myCheckbox->signalValue.bind(shared_from_this(), &globals::ParameterGlobalsGui::onCallbackIndentation); myCheckbox->propertyValue.set(isSetAutoIndent());
myCheckbox->signalValue.connect(sharedFromThis(), &globals::ParameterGlobalsGui::onCallbackIndentation);
subWidgetAdd(myCheckbox); subWidgetAdd(myCheckbox);
} }
myCheckbox = ewol::widget::CheckBox::create("Display space char (' ')"); myCheckbox = ewol::widget::CheckBox::create();
if (nullptr == myCheckbox) { if (myCheckbox == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
myCheckbox->setExpand(bvec2(true,false)); //TODO : myCheckbox->propertyLabel.set("Display space char (' ')");
myCheckbox->setValue(isSetDisplaySpaceChar()); myCheckbox->propertyExpand.set(bvec2(true,false));
myCheckbox->signalValue.bind(shared_from_this(), &globals::ParameterGlobalsGui::onCallbackSpace); myCheckbox->propertyValue.set(isSetDisplaySpaceChar());
myCheckbox->signalValue.connect(sharedFromThis(), &globals::ParameterGlobalsGui::onCallbackSpace);
subWidgetAdd(myCheckbox); subWidgetAdd(myCheckbox);
} }
myCheckbox = ewol::widget::CheckBox::create("Display tabulation char ('\\t')"); myCheckbox = ewol::widget::CheckBox::create();
if (nullptr == myCheckbox) { if (myCheckbox == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
myCheckbox->setExpand(bvec2(true,false)); //TODO : myCheckbox->propertyLabel.set("Display tabulation char ('\\t')");
myCheckbox->setValue(isSetDisplayTabChar());
myCheckbox->signalValue.bind(shared_from_this(), &globals::ParameterGlobalsGui::onCallbackTabulation); myCheckbox->propertyExpand.set(bvec2(true,false));
myCheckbox->propertyValue.set(isSetDisplayTabChar());
myCheckbox->signalValue.connect(sharedFromThis(), &globals::ParameterGlobalsGui::onCallbackTabulation);
subWidgetAdd(myCheckbox); subWidgetAdd(myCheckbox);
} }
myCheckbox = ewol::widget::CheckBox::create("Display end of line ('\\n')"); myCheckbox = ewol::widget::CheckBox::create();
if (nullptr == myCheckbox) { if (myCheckbox == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
myCheckbox->setExpand(bvec2(true,false)); //TODO : myCheckbox->propertyLabel.set("Display end of line ('\\n')");
myCheckbox->setValue(isSetDisplayEndOfLine()); myCheckbox->propertyExpand.set(bvec2(true,false));
myCheckbox->signalValue.bind(shared_from_this(), &globals::ParameterGlobalsGui::onCallbackEndOfLine); myCheckbox->propertyValue.set(isSetDisplayEndOfLine());
myCheckbox->signalValue.connect(sharedFromThis(), &globals::ParameterGlobalsGui::onCallbackEndOfLine);
subWidgetAdd(myCheckbox); subWidgetAdd(myCheckbox);
} }
myCheckbox = ewol::widget::CheckBox::create("switch Rounded/default"); myCheckbox = ewol::widget::CheckBox::create();
if (nullptr == myCheckbox) { if (myCheckbox == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
myCheckbox->setExpand(bvec2(true,false)); //TODO : myCheckbox->propertyLabel.set("switch Rounded/default");
myCheckbox->setValue(isSetDisplayEndOfLine()); myCheckbox->propertyExpand.set(bvec2(true,false));
myCheckbox->signalValue.bind(shared_from_this(), &globals::ParameterGlobalsGui::onCallbackRounded); myCheckbox->propertyValue.set(isSetDisplayEndOfLine());
myCheckbox->signalValue.connect(sharedFromThis(), &globals::ParameterGlobalsGui::onCallbackRounded);
subWidgetAdd(myCheckbox); subWidgetAdd(myCheckbox);
} }
} }

View File

@@ -1,20 +1,13 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __TOOLS_GLOBALS_H__
#define __TOOLS_GLOBALS_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/Sizer.h> #include <ewol/widget/Sizer.h>
namespace globals {
namespace globals
{
void init(); void init();
void UnInit(); void UnInit();
int32_t getNbColoneBorder(); int32_t getNbColoneBorder();
@@ -49,9 +42,6 @@ namespace globals
void onCallbackTabulation(const bool& _value); void onCallbackTabulation(const bool& _value);
void onCallbackRounded(const bool& _value); void onCallbackRounded(const bool& _value);
}; };
} }
#endif

View File

@@ -1,11 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/types.h> #include <etk/types.h>
#include <ewol/ewol.h> #include <ewol/ewol.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
@@ -17,7 +14,7 @@
#include <etk/tool.h> #include <etk/tool.h>
#include <unistd.h> #include <unistd.h>
//#include <ewol/config.h> //#include <ewol/config.h>
#include <ewol/context/commandLine.h> #include <gale/context/commandLine.h>
//#include <ewol/UserConfig.h> //#include <ewol/UserConfig.h>
#include <ewol/context/Context.h> #include <ewol/context/Context.h>
#include <appl/TextPluginManager.h> #include <appl/TextPluginManager.h>
@@ -28,20 +25,30 @@
#include <appl/ctags/readtags.h> #include <appl/ctags/readtags.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
class MainApplication : public ewol::context::Application { class MainApplication : public ewol::context::Application {
private: private:
std::shared_ptr<appl::BufferManager> m_bufferManager; ememory::SharedPtr<appl::BufferManager> m_bufferManager;
std::shared_ptr<appl::textPluginManager> m_pluginManager; ememory::SharedPtr<appl::textPluginManager> m_pluginManager;
public: public:
bool init(ewol::Context& _context, size_t _initId) { virtual void onCreate(ewol::Context& _context) override {
APPL_INFO(" == > init APPL v" << APPL_VERSION << " (START) [" << ewol::getBoardType() << "] (" << ewol::getCompilationMode() << ")"); APPL_INFO(" == > CREATE ... " << PROJECT_NAME << " v" << APPL_VERSION << " (START) [" << ewol::getBoardType() << "] (" << ewol::getCompilationMode() << ") (BEGIN)");
for( int32_t iii=0 ; iii<_context.getCmd().size(); iii++) {
etk::theme::setName("COLOR", "color/black/"); std::string tmpppp = _context.getCmd().get(iii);
if ( tmpppp == "-h"
|| tmpppp == "--help") {
APPL_INFO(" -t c-flags-file-name" );
APPL_INFO(" -h/--help display this help" );
exit(0);
}
}
//etk::theme::setName("COLOR", "color/black/");
etk::theme::setName("COLOR", "color/white/");
// TODO : remove this : Move if in the windows properties // TODO : remove this : Move if in the windows properties
_context.setSize(vec2(800, 600)); _context.setSize(vec2(800, 600));
_context.setTitle("edn");
// select internal data for font ... // select internal data for font ...
_context.getFontDefault().setUseExternal(true); _context.getFontDefault().setUseExternal(true);
#ifdef __TARGET_OS__Android #ifdef __TARGET_OS__Android
@@ -52,34 +59,35 @@ class MainApplication : public ewol::context::Application {
// set the application icon ... // set the application icon ...
_context.setIcon("DATA:icon.png"); _context.setIcon("DATA:icon.png");
APPL_INFO("==> CREATE ... " PROJECT_NAME " (END)");
}
void onStart(ewol::Context& _context) override {
APPL_INFO("==> START ... " PROJECT_NAME " (BEGIN)");
// init internal global value // init internal global value
globals::init(); globals::init();
// init ALL Singleton : // init ALL Singleton :
//()CTagsManager::getInstance(); //()CTagsManager::getInstance();
m_bufferManager = appl::BufferManager::create(); m_bufferManager = appl::BufferManager::create();
m_pluginManager = appl::textPluginManager::create(); m_pluginManager = appl::textPluginManager::create();
appl::highlightManager::init(); appl::highlightManager::init();
// Request load of the user configuration ... // Request load of the user configuration ...
//ewol::userConfig::load(); //ewol::userConfig::load();
char cCurrentPath[FILENAME_MAX]; char cCurrentPath[FILENAME_MAX];
// get the curent program folder // get the curent program folder
if (!getcwd(cCurrentPath, FILENAME_MAX)) { if (!getcwd(cCurrentPath, FILENAME_MAX)) {
return false; return;
} }
cCurrentPath[FILENAME_MAX - 1] = '\0'; cCurrentPath[FILENAME_MAX - 1] = '\0';
//APPL_INFO("The current working directory is " << cCurrentPath); //APPL_INFO("The current working directory is " << cCurrentPath);
std::shared_ptr<MainWindows> basicWindows = MainWindows::create(); ememory::SharedPtr<MainWindows> basicWindows = MainWindows::create();
if (basicWindows == nullptr) { if (basicWindows == nullptr) {
APPL_ERROR("Can not allocate the basic windows"); APPL_ERROR("Can not allocate the basic windows");
_context.stop(); _context.exit(-1);
return false; return;
} }
// create the specific windows // create the specific windows
_context.setWindows(basicWindows); _context.setWindows(basicWindows);
@@ -100,25 +108,38 @@ class MainApplication : public ewol::context::Application {
APPL_INFO("Load ctag file : \"" << name << "\"" ); APPL_INFO("Load ctag file : \"" << name << "\"" );
ctagDetected = false; ctagDetected = false;
//_context.getEObjectManager().multiCast().anonymousSend(ednMsgCtagsLoadFile, name); //_context.getEObjectManager().multiCast().anonymousSend(ednMsgCtagsLoadFile, name);
} else if ( tmpppp == "-h"
|| tmpppp == "--help") {
// nothing to do ...
} else { } else {
etk::FSNode file(tmpppp); etk::FSNode file(tmpppp);
std::string name = file.getName(); if (file.getNodeType() == etk::typeNode_file) {
APPL_INFO("need load file : \"" << name << "\"" ); std::string name = file.getName();
m_bufferManager->open(name); APPL_INFO("need load file : \"" << name << "\"" );
} m_bufferManager->open(name);
}
}
} }
APPL_INFO(" == > init " PROJECT_NAME " (END)"); APPL_INFO("==> START ... " PROJECT_NAME " (END)");
return true; return;
} }
void unInit(ewol::Context& _context) { void onStop(ewol::Context& _context) override {
APPL_INFO(" == > Un-Init " PROJECT_NAME " (START)"); APPL_INFO("==> STOP ... " PROJECT_NAME " (START)");
APPL_INFO("Stop Hightlight");
appl::highlightManager::unInit(); appl::highlightManager::unInit();
//Kill all singleton //Kill all singleton
m_pluginManager.reset(); m_pluginManager.reset();
m_bufferManager.reset(); m_bufferManager.reset();
APPL_INFO(" == > Un-Init " PROJECT_NAME " (END)"); APPL_INFO("==> STOP ... " PROJECT_NAME " (END)");
}
void onKillDemand(ewol::Context& _context) override {
APPL_INFO("==> User demand kill ... " PROJECT_NAME " (START)");
if (m_bufferManager == nullptr) {
_context.exit(0);
}
APPL_TODO("Implement the check of buffer not saved ...");
_context.exit(0);
APPL_INFO("==> User demand kill ... " PROJECT_NAME " (END)");
} }
}; };
@@ -130,6 +151,11 @@ class MainApplication : public ewol::context::Application {
* @return std IO * @return std IO
*/ */
int main(int _argc, const char *_argv[]) { int main(int _argc, const char *_argv[]) {
/*
APPL_ERROR(" base signature = " << typeid(&MainApplication::init).name());
APPL_ERROR(" base signature = " << typeid(std::string).name());
APPL_CRITICAL(" END ");
*/
// second possibility // second possibility
return ewol::run(new MainApplication(), _argc, _argv); return ewol::run(new MainApplication(), _argc, _argv);
} }

View File

@@ -1,129 +0,0 @@
#!/usr/bin/python
import lutinModule as module
import lutinTools as tools
import lutinDebug as debug
import datetime
def get_desc():
return "EDN application N'ours editor (Editeur De N'ours)"
def create(target):
# module name is 'edn' and type binary.
myModule = module.Module(__file__, 'edn', 'PACKAGE')
myModule.add_extra_compile_flags()
# add the file to compile:
myModule.add_src_file([
'appl/ctags/readtags.cpp'])
myModule.add_src_file([
'appl/debug.cpp',
'appl/global.cpp',
'appl/globalMsg.cpp',
'appl/init.cpp'])
# Gui:
myModule.add_src_file([
'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'])
# All needed for the buffer management :
myModule.add_src_file([
'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'])
# Generic color management for the text editor :
myModule.add_src_file([
'appl/GlyphDecoration.cpp',
'appl/GlyphPainting.cpp'])
# syntax coloration for the text editor
myModule.add_src_file([
'appl/HighlightPattern.cpp',
'appl/Highlight.cpp',
'appl/HighlightManager.cpp'])
myModule.add_module_depend('ewol')
myModule.compile_flags_CC([
"-DPROJECT_NAME=\"\\\""+myModule.name+"\\\"\""
])
#myModule.copy_file('../data/icon.png','icon.png')
myModule.copy_folder('../data/icon.*','')
myModule.copy_folder('../data/languages/asm/*.xml','languages/asm/')
myModule.copy_folder('../data/languages/bash/*.xml','languages/bash/')
myModule.copy_folder('../data/languages/boo/*.xml','languages/boo/')
myModule.copy_folder('../data/languages/c/*.xml','languages/c/')
myModule.copy_folder('../data/languages/cmake/*.xml','languages/cmake/')
myModule.copy_folder('../data/languages/glsl/*.xml','languages/glsl/')
myModule.copy_folder('../data/languages/in/*.xml','languages/in/')
myModule.copy_folder('../data/languages/java/*.xml','languages/java/')
myModule.copy_folder('../data/languages/json/*.xml','languages/json/')
myModule.copy_folder('../data/languages/lua/*.xml','languages/lua/')
myModule.copy_folder('../data/languages/makefile/*.xml','languages/makefile/')
myModule.copy_folder('../data/languages/matlab/*.xml','languages/matlab/')
myModule.copy_folder('../data/languages/php/*.xml','languages/php/')
myModule.copy_folder('../data/languages/xml/*.xml','languages/xml/')
myModule.copy_folder('../data/languages/python/*.xml','languages/python/')
myModule.copy_folder('../data/theme/default/*.svg','theme/shape/square/')
myModule.copy_folder('../data/theme/default/*.edf','theme/shape/square/')
myModule.copy_folder('../data/theme/colorWhite/*.json','theme/color/white/')
myModule.copy_folder('../data/theme/colorBlack/*.json','theme/color/black/')
myModule.copy_folder('../data/GUI-Search.xml','')
myModule.add_path(tools.get_current_path(__file__))
myModule.copy_file("../data/Font/freefont/FreeSerif.ttf","fonts/FreeSerif.ttf")
myModule.copy_folder("../data/Font/freefont/FreeMon*.ttf","fonts/")
tagFile = tools.get_current_path(__file__) + "/tag"
versionID = tools.file_read_data(tagFile)
myModule.compile_flags_CC([
"-DAPPL_VERSION=\"\\\"" + versionID + "\\\"\""
])
tagFile = tools.get_current_path(__file__) + "/tagCode"
versionIDCode = tools.file_read_data(tagFile)
# set the package properties :
myModule.pkg_set("VERSION", versionID)
myModule.pkg_set("VERSION_CODE", versionIDCode)
myModule.pkg_set("COMPAGNY_TYPE", "org")
myModule.pkg_set("COMPAGNY_NAME", "Edouard DUPIN")
myModule.pkg_set("MAINTAINER", ["Mr DUPIN Edouard <yui.heero@gmail.com>"])
if target.name=="MacOs":
myModule.pkg_set("ICON", tools.get_current_path(__file__) + "/../data/icon.icns")
else:
myModule.pkg_set("ICON", tools.get_current_path(__file__) + "/../data/icon.png")
myModule.pkg_set("SECTION", ["Development", "Editors"])
myModule.pkg_set("PRIORITY", "optional")
myModule.pkg_set("DESCRIPTION", "Text editor for sources code with ctags management")
myModule.pkg_set("NAME", "Editeur de N'ours")
myModule.pkg_add("RIGHT", "WRITE_EXTERNAL_STORAGE")
myModule.pkg_add("RIGHT", "SET_ORIENTATION")
# add the currrent module at the
return myModule

View File

@@ -1,11 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
* * @copyright 2010, Edouard DUPIN, all right reserved
* @copyright 2011, Edouard DUPIN, all right reserved * @license GPL v3 (see license file)
*
* @license BSD v3 (see license file)
*/ */
#ifndef __EWOL_WIDGET_H__ #ifndef __EWOL_WIDGET_H__
#define __EWOL_WIDGET_H__ #define __EWOL_WIDGET_H__
@@ -54,7 +51,7 @@ namespace ewol {
namespace ewol { namespace ewol {
#if 0 #if 0
/** /**
* @not-in-doc * @not_in_doc
*/ */
#endif #endif
class DrawProperty{ class DrawProperty{
@@ -91,7 +88,7 @@ namespace ewol {
std::ostream& operator <<(std::ostream& _os, const ewol::DrawProperty& _obj); std::ostream& operator <<(std::ostream& _os, const ewol::DrawProperty& _obj);
/** /**
* @brief Gravity of the widget property * @brief Gravity of the widget property
* @not-in-doc * @not_in_doc
*/ */
enum gravity { enum gravity {
gravityCenter=0x00, //!< gravity is in certer gravityCenter=0x00, //!< gravity is in certer
@@ -108,7 +105,7 @@ namespace ewol {
std::string gravityToString(const enum ewol::gravity _obj); std::string gravityToString(const enum ewol::gravity _obj);
enum ewol::gravity stringToGravity(const std::string& _obj); enum ewol::gravity stringToGravity(const std::string& _obj);
/** /**
* @not-in-doc * @not_in_doc
*/ */
class EventShortCut { class EventShortCut {
public: public: