diff --git a/data/edn.desktop b/data/edn.desktop index dfddb4f..49f6d41 100644 --- a/data/edn.desktop +++ b/data/edn.desktop @@ -1,14 +1,27 @@ [Desktop Entry] -Version=0.3.0 Name=Edn : Editeur de N'ours -Exec=edn -Icon=Edn +Exec=edn %U +Icon=/usr/share/edn/icon.png Terminal=false Type=Application -Categories=Development;Utility;TextEditor; +Categories=Development; GenericName=Text editor GenericName[en]=Text editor GenericName[nl]=Tekst verwerker -GenericName[fr]=éditeur de text +GenericName[fr]=Éditeur de text Comment=Code editor for c, c++, php, bash, xml ... Comment[fr]=éditeur de text pour les language c, c++, php, bash, xml ... +OnlyShowIn=GNOME;Unity; +MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Actions=New; + +[Desktop Action New] +Name=Open a New Window +Name[fr]=Ouvrir une nouvelle fenêtre +Name[nl]=Nieuw venster openen +Name[en]=Open a New Window +Exec=edn + +#desktop-file-validate edn.desktop +#sudo cp xxx /usr/share/applications/ \ No newline at end of file diff --git a/data/languages/asm/highlight.xml b/data/languages/asm/highlight.xml index 0037cee..cb7cee7 100644 --- a/data/languages/asm/highlight.xml +++ b/data/languages/asm/highlight.xml @@ -6,52 +6,41 @@ commentDoxygen - /\*\* - \*/ + /\*\*.*\*/ comment - /\* - \*/ + /\*.*\*/ preprocesseur - #[ \t]*if 0 - #endif|#else - \ + #[ \t]*if 0.*#(regexif|else) preprocesseur - # - \n - \ + #.*$ commentDoxygen - //! - \n + //!.*$ SYNTAX_ERROR - //[ \t]*TODO[ \t]*: - \n - \ + //[ \t]*TODO[ \t]*:.*$ comment - (//|@) - \n - \ + (//|@).*$ keyword - \@smull|ldrsh|smlal|stmdb|mul|mla|umull|ldr|add|str|mov|subs|bgt|ldmia|stmia|ldmfd|cmp|sub|strd|stmfd|bne|bhi|ldrd|mvn\@ + \@smull|ldrsh|smlal|stmdb|mul|mla|umull|ldr|add|str|mov|subs|bgt|ldmia|stmia|ldmfd|cmp|sub|strd|stmfd|bne|bhi|ldrd|mvn\@ type - \@r(10|11|12|[0-9]?)|sp|lp|lr|pc\@ + \@r(10|11|12|[0-9]?)|sp|lp|lr|pc\@ diff --git a/data/languages/bash/highlight.xml b/data/languages/bash/highlight.xml index 4366dd8..6f32014 100644 --- a/data/languages/bash/highlight.xml +++ b/data/languages/bash/highlight.xml @@ -4,45 +4,37 @@ commentDoxygen - #! - \n - \ + #!(\\[\\\n]|.)*$ comment - # - \n - \ + #(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - ' - ' - + '(\\[\\']|.)*' keyword - \@for|done|do|while|in|if|elif|then|else|fi\@ + \@for|done|do|while|in|if|elif|then|else|fi\@ keyword - [\$]+[a-zA-Z_][a-zA-Z0-9_]* + [\$]+[a-zA-Z_][a-zA-Z0-9_]* functionName - function (\w|_)+[ \t]*\( + function (\w|_)+[ \t]*\( boolean - ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| diff --git a/data/languages/boo/highlight.xml b/data/languages/boo/highlight.xml index 4a3afb5..704ef55 100644 --- a/data/languages/boo/highlight.xml +++ b/data/languages/boo/highlight.xml @@ -4,57 +4,50 @@ SYNTAX_ERROR - ## - \n + ##.*$ comment - # - \n + #.*$ preprocesseur - (NOTE|TODO) : - \n + (NOTE|TODO) : .*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*$ doubleQuoteText - \@' - ' - + \@'(\\[\\']|.)*$ TestResultOK - 100% + 100% number - [0-9]*% + [0-9]*% TestResultOK - \[( )*(OK|Ok|ok)( )*\] + \[( )*(OK|Ok|ok)( )*\] TestResultERROR - \[(ERREUR|Erreur|erreur)\] + \[(ERREUR|Erreur|erreur)\] number - \[( )*\] + \[( )*\] macro - ==> + ==> diff --git a/data/languages/c/highlight.xml b/data/languages/c/highlight.xml index 6db57e4..d0ea594 100644 --- a/data/languages/c/highlight.xml +++ b/data/languages/c/highlight.xml @@ -2,137 +2,118 @@ *.c *.cpp + *.cxx *.cc *.h *.hpp + *.hxx + *.m *.mm commentDoxygen - /\*\* - \*/ - - macro - \@[A-Z_]{4,500}\@ - - - keyword - @\w*[ \t]*(\[(in|out| |,)*\])?[ \t]*([a-zA-Z0-9\-_]*) - - - + /\*\*.*(\*/|\e) SYNTAX_ERROR - /\*[ \t]*TODO : - \*/ + /\*[ \t]*TODO :.*(\*/|\e) comment - /\* - \*/ + /\*.*(\*/|\e) preprocesseur - #[ \t]*if 0 - #endif|#else - \ + #[ \t]*if 0.*#(endif|else) preprocesseur - # - \n - \ + #(\\[\\\n]|.)*$ commentDoxygen - //! - \n + //!.*$ SYNTAX_ERROR - //[ \t]*TODO[ \t]*: - \n - \ + //[ \t]*TODO[ \t]*:.*$ comment - // - \n - \ + //.*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - ' - ' - + '((\\[\\'])|.){1,2}' + + + SYNTAX_ERROR + ' keyword - \@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@ + \@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@ systemFunction - \@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]|_)+\@ + \@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]|_)+\@ type - \@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)\@ + \@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)\@ type - \@std::(vector|(u16|u32|w)?string|codecvt_utf(16|8_utf16|8)+|complex|iterator(_traits)?|tuple(_element|_size)?|pair)\@ + \@std::(vector|(u16|u32|w)?string|codecvt_utf(16|8_utf16|8)+|complex|iterator(_traits)?|tuple(_element|_size)?|pair)\@ storageKeyword - \@inline|const|class|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum\@ + \@inline|const|class|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum\@ commonDefine - \@NULL|MAX|MIN|__LINE__|__DATA__|__FILE__|__func__|__TIME__|__STDC__\@ + \@NULL|MAX|MIN|__LINE__|__DATA__|__FILE__|__func__|__TIME__|__STDC__\@ number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ boolean - \@true|TRUE|false|FALSE\@ + \@true|TRUE|false|FALSE\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ memberClass - \@m_[A-Za-z_0-9]*\@ + \@m_[A-Za-z_0-9]*\@ inputFunction - \@_[A-Za-z_0-9]*\@ + \@_[A-Za-z_0-9]*\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( boolean - ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| - + --> diff --git a/data/languages/cmake/highlight.xml b/data/languages/cmake/highlight.xml index c8107eb..8144806 100644 --- a/data/languages/cmake/highlight.xml +++ b/data/languages/cmake/highlight.xml @@ -5,53 +5,45 @@ commentDoxygen - ## - \n + ##.*$ SYNTAX_ERROR - #[ \t]TODO[ \t]*: - \n - \ + #[ \t]TODO[ \t]*:(\\[\\\n]|.)*$ comment - # - \n - \ + #(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*$ keyword - \@foreach|message|endforeach|if|else|endif|list|file|string\@ + \@foreach|message|endforeach|if|else|endif|list|file|string\@ systemFunction - \@set|include_directories|add_definitions|add_library|include_directories|target_link_libraries|project|include|check_include_file|enable_testing|option|cmake_minimum_required|add_definitions|check_include_file|configure_file|include_directories|add_custom_command|add_executable|add_test\@ + \@set|include_directories|add_definitions|add_library|include_directories|target_link_libraries|project|include|check_include_file|enable_testing|option|cmake_minimum_required|add_definitions|check_include_file|configure_file|include_directories|add_custom_command|add_executable|add_test\@ inputFunction - ${ - } + \${.*} number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( diff --git a/data/languages/glsl/highlight.xml b/data/languages/glsl/highlight.xml index 28777e7..5e745e6 100644 --- a/data/languages/glsl/highlight.xml +++ b/data/languages/glsl/highlight.xml @@ -7,76 +7,65 @@ commentDoxygen - /\*\* - \*/ + /\*\*.*\*/ comment - /\* - \*/ + /\*.*\*/ preprocesseur - #[ \t]*if 0 - #endif|#else - \ + #[ \t]*if 0(\\[\\\n]|.)*#(endif|else) preprocesseur - # - \n - \ + #(\\[\\\n]|.)*$ commentDoxygen - //! - \n + //!(\\[\\\n]|.)*$ SYNTAX_ERROR - //[ \t]*TODO[ \t]*: - \n - \ + //[ \t]*TODO[ \t]*:(\\[\\\n]|.)*$ comment - // - \n - \ + //(\\[\\\n]|.)*$ keyword - \@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@ + \@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@ type - \@void|bool|float|int|(vec|mat|ivect|bvect)[2-4]\@ + \@void|bool|float|int|(vec|mat|ivect|bvect)[2-4]\@ storageKeyword - \@varying|uniform|attribute|precision|mediump\@ + \@varying|uniform|attribute|precision|mediump\@ number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ boolean - \@true|false\@ + \@true|false\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( boolean - ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| diff --git a/data/languages/in/highlight.xml b/data/languages/in/highlight.xml index 777b7ee..fc16d28 100644 --- a/data/languages/in/highlight.xml +++ b/data/languages/in/highlight.xml @@ -4,43 +4,37 @@ preprocesseur - # - \n - \ + #(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*$ doubleQuoteText - ' - ' - + '(\\[\\']|.)*$ keyword - \@menu|endmenu|comment|if|endif|help|default|choice|endchoice|prompt|depends on|config\@ + \@menu|endmenu|comment|if|endif|help|default|choice|endchoice|prompt|depends on|config\@ type - \@int|hex|bool|string\@ + \@int|hex|bool|string\@ number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ boolean - ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| diff --git a/data/languages/java/highlight.xml b/data/languages/java/highlight.xml index d76fb75..68e3a55 100644 --- a/data/languages/java/highlight.xml +++ b/data/languages/java/highlight.xml @@ -4,84 +4,73 @@ commentDoxygen - /\*\* - \*/ + /\*\*.*\*/ comment - /\* - \*/ + /\*.*\*/ commentDoxygen - //! - \n + //!(\\[\\\n]|.)*$ SYNTAX_ERROR - //[ \t]*TODO[ \t]*: - \n - \ + //[ \t]*TODO[ \t]*:(\\[\\\n]|.)*$ comment - // - \n - \ + //(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - ' - ' - + '(\\[\\']|.)*' keyword - \@return|goto|if|else|case|default|switch|break|continue|while|do|for\@ + \@return|goto|if|else|case|default|switch|break|continue|while|do|for\@ systemFunction - \@new|try|catch|print\@ + \@new|try|catch|print\@ type - \@boolean|byte|char|double|float|int|long|short|String|Object|Thread|void|enum\@ + \@boolean|byte|char|double|float|int|long|short|String|Object|Thread|void|enum\@ storageKeyword - \@import|package|extends|Override|implements|const|class|abstract|private|public|protected|final|const|static|transiant|volatile|interface@ + \@import|package|extends|Override|implements|const|class|abstract|private|public|protected|final|const|static|transiant|volatile|interface@ commonDefine - \@null\@ + \@null\@ number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ boolean - \@true|false\@ + \@true|false\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( boolean - ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| diff --git a/data/languages/json/highlight.xml b/data/languages/json/highlight.xml index 2c54042..a8fe3db 100644 --- a/data/languages/json/highlight.xml +++ b/data/languages/json/highlight.xml @@ -4,31 +4,29 @@ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" keyword - \{|\}|\[|\] + \{|\}|\[|\] error - :|, + :|, functionName - ([a-zA-Z0-9]|-|_)* + ([a-zA-Z0-9]|-|_)* number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ boolean - \@true|false\@ + \@true|false\@ diff --git a/data/languages/lua/highlight.xml b/data/languages/lua/highlight.xml index 19cdbfe..ad52fbf 100644 --- a/data/languages/lua/highlight.xml +++ b/data/languages/lua/highlight.xml @@ -4,57 +4,49 @@ comment - \-\-\[\[ - \-\-\]\] + \-\-\[\[.*\-\-\]\] SYNTAX_ERROR - \-\-[ \t]*TODO[ \t]*: - \n - \ + \-\-[ \t]*TODO[ \t]*:(\\[\\\n]|.)*$ comment - \-\- - \n - \ + \-\-(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - ' - ' + '(\\[\\']|.)*' keyword - \@and|break|do|else|elseif|end|for|function|if|in|local|nil|not|or|repeat|return|then|until|while\@ + \@and|break|do|else|elseif|end|for|function|if|in|local|nil|not|or|repeat|return|then|until|while\@ number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ boolean - \@true|false\@ + \@true|false\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( boolean - ==|<=|>=|~=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|~=|<{1,2}|>{1,2}|&&|\{|\}| diff --git a/data/languages/makefile/highlight.xml b/data/languages/makefile/highlight.xml index 1dacdef..caf22df 100644 --- a/data/languages/makefile/highlight.xml +++ b/data/languages/makefile/highlight.xml @@ -6,38 +6,33 @@ preprocesseur - # - \n - \ + #(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - ' - ' + '(\\[\\']|.)*' type - \@if|ifeq|ifneq|else|endif|define|endef\@ + \@if|ifeq|ifneq|else|endif|define|endef\@ keyword - \$\([a-zA-Z_][a-zA-Z0-9_]*\) + \$\([a-zA-Z_][a-zA-Z0-9_]*\) functionName - \$\((call|info|error|warning|shell|patsubst|lastword|wildcard|addprefix|foreach|subst|word|eval) + \$\((call|info|error|warning|shell|patsubst|lastword|wildcard|addprefix|foreach|subst|word|eval) boolean - :=|?=|!=|= + :=|?=|!=|= diff --git a/data/languages/matlab/highlight.xml b/data/languages/matlab/highlight.xml index d100ec5..ebb5afe 100644 --- a/data/languages/matlab/highlight.xml +++ b/data/languages/matlab/highlight.xml @@ -5,58 +5,49 @@ commentDoxygen - %% - \n + %%(\\[\\\n]|.)*$ comment - % - \n - \ + %(\\[\\\n]|.)*$ doubleQuoteText - " - ("|\n) - \ + ".*($|") doubleQuoteText - ' - ('|\n) - + '.*($|') preprocesseur - global( |\t)+ - \n - \ + global( |\t)+(\\[\\\n]|.)*$ keyword - \@return|goto|if|else|case|default|switch|break|continue|while|do|for|otherwise|end\@ + \@return|goto|if|else|case|default|switch|break|continue|while|do|for|otherwise|end\@ boolean - \@true|false\@ + \@true|false\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( boolean - ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ diff --git a/data/languages/php/highlight.xml b/data/languages/php/highlight.xml index 6694404..1b9bac6 100644 --- a/data/languages/php/highlight.xml +++ b/data/languages/php/highlight.xml @@ -7,70 +7,61 @@ comment - /\* - \*/ + /\*.*\*/ SYNTAX_ERROR - //[ \t]*TODO[ \t]*: - \n - \ + //[ \t]*TODO[ \t]*:(\\[\\\n]|.)*$ comment - # - \n + #(\\[\\\n]|.)*$ comment - // - \n - \ + //(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - ' - ' + '(\\[\\']|.)*' keyword - [\$]+[a-zA-Z_][a-zA-Z0-9_]* + [\$]+[a-zA-Z_][a-zA-Z0-9_]* type - \@array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset\@ + \@array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset\@ storageKeyword - \@abstract|and|as|break|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor\@ + \@abstract|and|as|break|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor\@ commonDefine - \@doubleval|floatval|gettype|intval|print_r|serialize|settype|strval|unserialize|var_dump|var_export\@ + \@doubleval|floatval|gettype|intval|print_r|serialize|settype|strval|unserialize|var_dump|var_export\@ number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ boolean - \@true|TRUE|false|FALSE\@ + \@true|TRUE|false|FALSE\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( boolean - ==|<=|>=|!=|<|>|&&|\{|\}| + ==|<=|>=|!=|<|>|&&|\{|\}| diff --git a/data/languages/python/highlight.xml b/data/languages/python/highlight.xml index 87306fa..83b8b21 100644 --- a/data/languages/python/highlight.xml +++ b/data/languages/python/highlight.xml @@ -4,73 +4,70 @@ comment - """ - """ + """.*""" + + + comment + '''.*''' commentDoxygen - ## - \n + ##(\\[\\\n]|.)*$ comment - # - \n - \ + #(\\[\\\n]|.)*$ doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - ' - ' + '((\\[\\'])|.)*' keyword - \@if|else|elif|break|pass|continue|while|do|for|in|return\@ + \@if|else|elif|break|pass|continue|while|do|for|in|return\@ systemFunction - \@print|len|range|del|__init__|self|os\.|sys\.|path\.\@ + \@print|len|range|del|__init__|self|os\.|sys\.|path\.\@ type - \@bool|BOOL|char|double|float\@ + \@bool|BOOL|char|double|float\@ storageKeyword - \@def|class|import|from|as|try|except\@ + \@def|class|import|from|as|try|except\@ number - \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ + \@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@ boolean - \@True|False\@ + \@True|False\@ macro - \@[A-Z_][A-Z_0-9]{3,500}\@ + \@[A-Z_][A-Z_0-9]{3,500}\@ functionName - \@(\w|_)+[ \t]*\( + \@(\w|_)+[ \t]*\( boolean - ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| + ==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}| macro - ([A-Z]|_){4,500} + ([A-Z]|_){4,500} doxElem diff --git a/data/languages/xml/highlight.xml b/data/languages/xml/highlight.xml index 133de65..31c99a8 100644 --- a/data/languages/xml/highlight.xml +++ b/data/languages/xml/highlight.xml @@ -5,30 +5,33 @@ comment - <!\-\- - \-\-> + ]]> + doubleQuoteText - " - " - \ + "(\\[\\"]|.)*" doubleQuoteText - \@' - ('|\n) - + \@'.*('|\n) error - <\?\w*|\?> + <\?\w*|\?> + functionName - </[0-9a-zA-Z_]+|<[0-9a-zA-Z_]+|/>|> + + diff --git a/sources/appl/Buffer.cpp b/sources/appl/Buffer.cpp index d530708..edeaa2c 100644 --- a/sources/appl/Buffer.cpp +++ b/sources/appl/Buffer.cpp @@ -8,6 +8,7 @@ #include +#include #include #include #include @@ -27,7 +28,7 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () { m_current = 0; return *this; } - if (m_data != NULL) { + if (m_data != nullptr) { if (m_current < m_data->m_data.size() ) { int8_t nbChar = utf8::theoricLen(m_data->m_data[m_current]); if (nbChar != 0) { @@ -45,7 +46,7 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () { appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- () { m_value = u32char::Null; - if (m_data != NULL) { + if (m_data != nullptr) { if (m_current > 0) { int32_t iii = -1; while( utf8::theoricFirst(m_data->m_data[m_current+iii]) == false @@ -68,7 +69,7 @@ char32_t appl::Buffer::Iterator::operator* () { if (m_value != u32char::Null) { return m_value; } - if (m_data == NULL) { + if (m_data == nullptr) { APPL_ERROR("request an element that iterator not link"); return m_value; } @@ -127,10 +128,10 @@ appl::Buffer::Buffer() : m_cursorSelectPos(-1), m_cursorPreferredCol(-1), m_nbLines(1), - m_highlight(NULL) { + m_highlight(nullptr) { addObjectType("appl::Buffer"); static int32_t bufferBaseId = 0; - m_fileName = "No Name " + std::to_string(bufferBaseId); + m_fileName = "No Name " + etk::to_string(bufferBaseId); bufferBaseId++; addEventId(eventIsModify); addEventId(eventIsSave); @@ -138,6 +139,10 @@ appl::Buffer::Buffer() : addEventId(eventChangeName); } +void appl::Buffer::init() { + ewol::Object::init(); +} + appl::Buffer::~Buffer() { } @@ -698,13 +703,13 @@ void appl::Buffer::setHighlightType(const std::string& _type) { return; } m_highlightType = _type; - m_highlight = appl::Highlight::keep(resourceName); + m_highlight = appl::Highlight::create(resourceName); generateHighLightAt(0, m_data.size()); } void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64_t _nbAdded) { // prevent ERROR... - if (NULL == m_highlight) { + if (nullptr == m_highlight) { return; } // prevent No data Call @@ -761,10 +766,8 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64 } for (auto it(m_HLDataPass1.begin()+elemStart); it != m_HLDataPass1.end(); ++it) { //APPL_DEBUG("move element=" << i); - it->beginStart += _nbAdded - _nbDeleted; - it->beginStop += _nbAdded - _nbDeleted; - it->endStart += _nbAdded - _nbDeleted; - it->endStop += _nbAdded - _nbDeleted; + it->start += _nbAdded - _nbDeleted; + it->stop += _nbAdded - _nbDeleted; } //Regenerate Element inside range if ( startId == -1 @@ -773,13 +776,13 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64 generateHighLightAt(0, m_data.size()); } else if(-1 == startId) { //APPL_DEBUG("******* Regenerate START"); - generateHighLightAt(0, m_HLDataPass1[0].beginStart, 0); + generateHighLightAt(0, m_HLDataPass1[0].start, 0); } else if(-1 == stopId) { //APPL_DEBUG("******* Regenerate STOP"); - generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].endStop, m_data.size(), m_HLDataPass1.size()); + generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].stop, m_data.size(), m_HLDataPass1.size()); } else { //APPL_DEBUG("******* Regenerate RANGE"); - generateHighLightAt(m_HLDataPass1[startId].endStop, m_HLDataPass1[startId+1].beginStart, startId+1); + generateHighLightAt(m_HLDataPass1[startId].stop, m_HLDataPass1[startId+1].start, startId+1); } } @@ -828,7 +831,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos, S=-1 *************** E */ for (size_t iii = 0; iii < m_HLDataPass1.size(); ++iii) { - if (m_HLDataPass1[iii].endStop > _startPos) { + if (m_HLDataPass1[iii].stop > _startPos) { break; } _startId = iii; @@ -849,7 +852,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos, elemStart = _startId+1; } for (size_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { - if (m_HLDataPass1[iii].beginStart > _endPos) { + if (m_HLDataPass1[iii].start > _endPos) { _stopId = iii; break; } @@ -857,7 +860,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos, } void appl::Buffer::generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos) { - if (NULL == m_highlight) { + if (nullptr == m_highlight) { return; } //APPL_DEBUG("area : ("< _pos) { + if ( m_HLDataPass1[iii].start <= _pos + && m_HLDataPass1[iii].stop > _pos) { return &m_HLDataPass1[iii]; } - if(m_HLDataPass1[iii].beginStart > _pos) { - return NULL; + if(m_HLDataPass1[iii].start > _pos) { + return nullptr; } } - return NULL; + return nullptr; } void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines) { _MData.posHLPass1 = 0; _MData.posHLPass2 = 0; - if (NULL == m_highlight) { + if (nullptr == m_highlight) { return; } //int64_t timeStart = ewol::getTime(); @@ -909,24 +912,24 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const ap endSearch = m_HLDataPass1.size(); } int64_t kkk; - for (kkk = etk_max(startId, 0); kkk < endSearch; ++kkk) { + for (kkk = std::max(startId, (int64_t)0); kkk < endSearch; ++kkk) { // empty section : if (kkk == 0) { - if (HLStartPos < m_HLDataPass1[kkk].beginStart) { + if (HLStartPos < m_HLDataPass1[kkk].start) { APPL_VERBOSE(" == > (empty section 1 ) kkk=" << kkk << " start=" << HLStartPos << - " stop=" << m_HLDataPass1[kkk].beginStart ); + " stop=" << m_HLDataPass1[kkk].start ); m_highlight->parse2(HLStartPos, - m_HLDataPass1[kkk].beginStart, + m_HLDataPass1[kkk].start, _MData.HLData, m_data); } // else : nothing to do ... } else { APPL_VERBOSE(" == > (empty section 2 ) kkk=" << kkk << - " start=" << m_HLDataPass1[kkk-1].endStop << - " stop=" << m_HLDataPass1[kkk].beginStart ); - m_highlight->parse2(m_HLDataPass1[kkk-1].endStop, - m_HLDataPass1[kkk].beginStart, + " start=" << m_HLDataPass1[kkk-1].stop << + " stop=" << m_HLDataPass1[kkk].start ); + m_highlight->parse2(m_HLDataPass1[kkk-1].stop, + m_HLDataPass1[kkk].start, _MData.HLData, m_data); } @@ -938,9 +941,9 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const ap //if( k < (int32_t)m_HLDataPass1.size()) { if (m_HLDataPass1.size() != 0) { APPL_VERBOSE(" == > (empty section 3 ) kkk=" << kkk << - " start=" << m_HLDataPass1[kkk-1].endStop << + " start=" << m_HLDataPass1[kkk-1].stop << " stop=" << HLStop ); - m_highlight->parse2(m_HLDataPass1[kkk-1].endStop, + m_highlight->parse2(m_HLDataPass1[kkk-1].stop, HLStop, _MData.HLData, m_data); @@ -961,15 +964,15 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const ap appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos) { - int64_t start = etk_max(0, _MData.posHLPass2-1); + int64_t start = std::max((int64_t)0, _MData.posHLPass2-1); for (int64_t iii=start; iii<(int32_t)_MData.HLData.size(); iii++) { _MData.posHLPass2 = iii; - if( _MData.HLData[iii].beginStart <= _pos - && _MData.HLData[iii].endStop > _pos) + if( _MData.HLData[iii].start <= _pos + && _MData.HLData[iii].stop > _pos) { return &_MData.HLData[iii]; } - if(_MData.HLData[iii].beginStart > _pos) { + if(_MData.HLData[iii].start > _pos) { return getElementColorAtPosition(_pos, _MData.posHLPass1); } } diff --git a/sources/appl/Buffer.h b/sources/appl/Buffer.h index 4dd1042..9891212 100644 --- a/sources/appl/Buffer.h +++ b/sources/appl/Buffer.h @@ -40,7 +40,7 @@ namespace appl { */ Iterator(): m_current(0), - m_data(NULL), + m_data(nullptr), m_value(u32char::Null) { // nothing to do ... }; @@ -70,7 +70,7 @@ namespace appl { */ virtual ~Iterator() { m_current = 0; - m_data = NULL; + m_data = nullptr; m_value = u32char::Null; }; /** @@ -78,7 +78,7 @@ namespace appl { * @return true if the element is present in buffer */ operator bool () const { - if (m_data == NULL) { + if (m_data == nullptr) { return false; } if (m_current >= m_data->m_data.size()) { @@ -94,7 +94,7 @@ namespace appl { * @return true if the element is present in buffer */ operator int64_t () const { - if (m_data == NULL) { + if (m_data == nullptr) { return 0; } if (m_current < 0) { @@ -217,7 +217,7 @@ namespace appl { * @return The requested position. */ int64_t getPos() const { - if (m_data == NULL) { + if (m_data == nullptr) { return 0; } if (m_current < 0) { @@ -292,8 +292,11 @@ namespace appl { static const char* const eventIsSave; static const char* const eventSelectChange; static const char* const eventChangeName; - public: + protected: Buffer(); + void init(); + public: + DECLARE_FACTORY(Buffer); virtual ~Buffer(); private: bool m_hasFileName; //!< when new file, the buffer has no name ==> but it might be reference with a single name ... @@ -381,14 +384,14 @@ namespace appl { * @return position of the start selection. */ int64_t getStartSelectionPos() { - return etk_min(m_cursorPos, m_cursorSelectPos); + return std::min(m_cursorPos, m_cursorSelectPos); } /** * @brief Get the Stop position of the selection. * @return position of the stop selection. */ int64_t getStopSelectionPos() { - return etk_max(m_cursorPos, m_cursorSelectPos); + return std::max(m_cursorPos, m_cursorSelectPos); } protected: float m_cursorPreferredCol; //!< position of the cursor when up and down is done. @@ -588,7 +591,7 @@ namespace appl { protected: std::string m_highlightType; //!< Name of the highlight type - ewol::object::Shared m_highlight; //!< internal link with the Highlight system + std::shared_ptr m_highlight; //!< internal link with the Highlight system std::vector m_HLDataPass1; //!< colorisation position in the current buffer pass 1 public: /** diff --git a/sources/appl/BufferManager.cpp b/sources/appl/BufferManager.cpp index 86a2295..591a08f 100644 --- a/sources/appl/BufferManager.cpp +++ b/sources/appl/BufferManager.cpp @@ -18,32 +18,34 @@ #undef __class__ #define __class__ "BufferManager" -appl::BufferManager::BufferManager() : - ewol::Resource("???BufferManager???"), - m_bufferSelected(NULL) { +appl::BufferManager::BufferManager() { addObjectType("appl::BufferManager"); } +void appl::BufferManager::init(const std::string& _uniqueName) { + ewol::Resource::init(_uniqueName); +} + appl::BufferManager::~BufferManager() { m_list.clear(); } -ewol::object::Shared appl::BufferManager::createNewBuffer() { - ewol::object::Shared tmp = ewol::object::makeShared(new appl::Buffer()); - if (tmp == NULL) { +std::shared_ptr appl::BufferManager::createNewBuffer() { + std::shared_ptr tmp = appl::Buffer::create(); + if (tmp == nullptr) { APPL_ERROR("Can not allocate the Buffer (empty)."); - return NULL; + return nullptr; } m_list.push_back(tmp); sendMultiCast(appl::MsgSelectNewFile, tmp->getFileName()); return tmp; } -ewol::object::Shared appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) { +std::shared_ptr appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) { APPL_INFO("get(" << _fileName << "," << _createIfNeeded << ")"); for (auto &it : m_list) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->getFileName() == _fileName) { @@ -54,39 +56,25 @@ ewol::object::Shared appl::BufferManager::get(const std::string& _ if (etk::FSNodeGetType(_fileName) == etk::FSN_FOLDER) { APPL_WARNING("try open a folder : " << _fileName); APPL_CRITICAL("plop"); - return NULL; + return nullptr; } - ewol::object::Shared tmp = ewol::object::makeShared(new appl::Buffer()); - if (tmp == NULL) { + std::shared_ptr tmp = appl::Buffer::create(); + if (tmp == nullptr) { APPL_ERROR("Can not allocate the Buffer class : " << _fileName); - return NULL; + return nullptr; } tmp->loadFile(_fileName); m_list.push_back(tmp); return tmp; } - return NULL; + return nullptr; } -void appl::BufferManager::setBufferSelected(ewol::object::Shared _bufferSelected) { +void appl::BufferManager::setBufferSelected(std::shared_ptr _bufferSelected) { m_bufferSelected = _bufferSelected; sendMultiCast(appl::MsgSelectChange, ""); } -void appl::BufferManager::onObjectRemove(const ewol::object::Shared& _object) { - ewol::Resource::onObjectRemove(_object); - if (m_bufferSelected == _object) { - setBufferSelected(NULL); - } - for (auto it(m_list.begin()); it!=m_list.end(); ++it) { - if (*it != _object) { - continue; - } - m_list.erase(it); - it = m_list.begin(); - } -} - -ewol::object::Shared appl::BufferManager::get(int32_t _id) { +std::shared_ptr appl::BufferManager::get(int32_t _id) { int32_t id = 0; for (auto &it : m_list) { if (id == _id) { @@ -113,7 +101,7 @@ void appl::BufferManager::open(const std::string& _fileName) { if (exist(_fileName) == true) { return; } - if (get(_fileName, true) == NULL) { + if (get(_fileName, true) == nullptr) { return; } sendMultiCast(appl::MsgSelectNewFile, _fileName); @@ -123,19 +111,3 @@ void appl::BufferManager::onReceiveMessage(const ewol::object::Message& _msg) { APPL_DEBUG("receive message !!! " << _msg); } -ewol::object::Shared appl::BufferManager::keep() { - ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep("???BufferManager???")); - if (NULL != object) { - return object; - } - // this element create a new one every time .... - EWOL_INFO("CREATE : appl::BufferManager: ???BufferManager???"); - object = ewol::object::makeShared(new appl::BufferManager()); - if (NULL == object) { - EWOL_ERROR("allocation error of a resource : ???BufferManager???"); - return NULL; - } - getManager().localAdd(object); - return object; -} - diff --git a/sources/appl/BufferManager.h b/sources/appl/BufferManager.h index 75dac80..af749de 100644 --- a/sources/appl/BufferManager.h +++ b/sources/appl/BufferManager.h @@ -17,12 +17,14 @@ namespace appl { class BufferManager : public ewol::Resource { - protected: - BufferManager(); public: + BufferManager(); + void init(const std::string& _uniqueName); + public: + DECLARE_RESOURCE_SINGLE_FACTORY(BufferManager, "???Buffer_Manager???"); virtual ~BufferManager(); private: - std::list> m_list; // list of all buffer curently open + std::list> m_list; // list of all buffer curently open public: /** * @brief Get a specific buffer with his name (can create a new buffer). @@ -30,7 +32,7 @@ namespace appl { * @param[in] _createIfNeeded Create the buffer if not existed. * @return a pointer on the buffer */ - ewol::object::Shared get(const std::string& _fileName, bool _createIfNeeded=false); + std::shared_ptr get(const std::string& _fileName, bool _createIfNeeded=false); /** * @brief Load a specific file, event if it not existed: * @param[in] _fileName Name of the file to open or create. @@ -54,38 +56,29 @@ namespace appl { * @param[in] _id Number of buffer * @return pointer on the buffer */ - ewol::object::Shared get(int32_t _id); + std::shared_ptr get(int32_t _id); /** * @brief Create a new buffer empty. - * @return Created buffer or NULL. + * @return Created buffer or nullptr. */ - ewol::object::Shared createNewBuffer(); + std::shared_ptr createNewBuffer(); private: - ewol::object::Shared m_bufferSelected; + std::shared_ptr m_bufferSelected; public: /** * @brief Set the current buffer selected * @param[in] _bufferSelected Pointer on the buffer selected */ - void setBufferSelected(ewol::object::Shared _bufferSelected); + void setBufferSelected(std::shared_ptr _bufferSelected); /** * @brief Get the current buffer selected * @return Pointer on the buffer selected */ - ewol::object::Shared getBufferSelected() { + std::shared_ptr getBufferSelected() { return m_bufferSelected; }; public: // herited function void onReceiveMessage(const ewol::object::Message& _msg); - void onObjectRemove(const ewol::object::Shared& _removeObject); - public: // resource manager - /** - * @brief keep the resource pointer. - * @note Never free this pointer by your own... - * @param[in] _filename Name of the configuration file. - * @return pointer on the resource or NULL if an error occured. - */ - static ewol::object::Shared keep(); }; }; diff --git a/sources/appl/GlyphPainting.cpp b/sources/appl/GlyphPainting.cpp index 981b1c1..75e9a7c 100644 --- a/sources/appl/GlyphPainting.cpp +++ b/sources/appl/GlyphPainting.cpp @@ -18,9 +18,12 @@ -appl::GlyphPainting::GlyphPainting(const std::string& _filename) : - ewol::Resource(_filename) { +appl::GlyphPainting::GlyphPainting() { addObjectType("appl::GlyphPainting"); +} + +void appl::GlyphPainting::init(const std::string& _filename) { + ewol::Resource::init(_filename); EWOL_DEBUG("SFP : load \"" << _filename << "\""); reload(); } @@ -43,13 +46,13 @@ void appl::GlyphPainting::reload() { APPL_DEBUG(tmppppp); */ ejson::Array* baseArray = doc.getArray("ednColor"); - if (baseArray == NULL) { + if (baseArray == nullptr) { APPL_ERROR("Can not get basic array : 'ednColor'"); return; } for (size_t iii = 0; iii < baseArray->size(); ++iii) { ejson::Object* tmpObj = baseArray->getObject(iii); - if (tmpObj == NULL) { + if (tmpObj == nullptr) { APPL_DEBUG(" can not get object in 'ednColor' id=" << iii); continue; } @@ -94,20 +97,3 @@ int32_t appl::GlyphPainting::request(const std::string& _name) { m_list.push_back(tmpDeco); return m_list.size()-1; } - -ewol::object::Shared appl::GlyphPainting::keep(const std::string& _filename) { - //EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); - ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep(_filename)); - if (NULL != object) { - return object; - } - // this element create a new one every time .... - EWOL_INFO("CREATE : appl::GlyphPainting : file : \"" << _filename << "\""); - object = ewol::object::makeShared(new appl::GlyphPainting(_filename)); - if (NULL == object) { - EWOL_ERROR("allocation error of a resource : ??GlyphPainting??"); - return NULL; - } - getManager().localAdd(object); - return object; -} diff --git a/sources/appl/GlyphPainting.h b/sources/appl/GlyphPainting.h index 1e02391..e8caa86 100644 --- a/sources/appl/GlyphPainting.h +++ b/sources/appl/GlyphPainting.h @@ -19,8 +19,10 @@ namespace appl { private: std::vector m_list; protected: - GlyphPainting(const std::string& _filename); + GlyphPainting(); + void init(const std::string& _filename); public: + DECLARE_RESOURCE_NAMED_FACTORY(GlyphPainting); virtual ~GlyphPainting(); public: /** @@ -49,14 +51,6 @@ namespace appl { const appl::GlyphDecoration& operator[] (int32_t _pos) const { return m_list[_pos]; } - public: - /** - * @brief keep the resource pointer. - * @note Never free this pointer by your own... - * @param[in] _filename Name of the configuration file. - * @return pointer on the resource or NULL if an error occured. - */ - static ewol::object::Shared keep(const std::string& _filename); }; }; diff --git a/sources/appl/Gui/BufferView.cpp b/sources/appl/Gui/BufferView.cpp index 263e1b1..b3d9c5f 100644 --- a/sources/appl/Gui/BufferView.cpp +++ b/sources/appl/Gui/BufferView.cpp @@ -21,13 +21,13 @@ static void SortElementList(std::vector& _list) { std::vector tmpList = _list; _list.clear(); for(size_t iii=0; iiim_bufferName.getNameFile() > _list[jjj]->m_bufferName.getNameFile()) { @@ -43,18 +43,12 @@ BufferView::BufferView() : m_openOrderMode(false) { addObjectType("appl::BufferView"); setCanHaveFocus(true); - registerMultiCast(ednMsgBufferListChange); - registerMultiCast(ednMsgBufferState); - registerMultiCast(ednMsgBufferId); - registerMultiCast(appl::MsgSelectNewFile); - registerMultiCast(appl::MsgSelectChange); - registerMultiCast(appl::MsgNameChange); m_selectedID = -1; m_selectedIdRequested = -1; // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); + m_bufferManager = appl::BufferManager::create(); // load color properties - m_paintingProperties = appl::GlyphPainting::keep("THEME:COLOR:bufferList.json"); + m_paintingProperties = appl::GlyphPainting::create("THEME:COLOR:bufferList.json"); // get all id properties ... m_colorBackground1 = m_paintingProperties->request("backgroung1"); m_colorBackground2 = m_paintingProperties->request("backgroung2"); @@ -63,6 +57,16 @@ BufferView::BufferView() : m_colorTextModify = m_paintingProperties->request("textModify"); } +void BufferView::init() { + ewol::widget::List::init(); + registerMultiCast(ednMsgBufferListChange); + registerMultiCast(ednMsgBufferState); + registerMultiCast(ednMsgBufferId); + registerMultiCast(appl::MsgSelectNewFile); + registerMultiCast(appl::MsgSelectChange); + registerMultiCast(appl::MsgNameChange); +} + BufferView::~BufferView() { removeAllElement(); } @@ -70,30 +74,30 @@ BufferView::~BufferView() { void BufferView::removeAllElement() { for(auto &it : m_list) { delete(it); - it = NULL; + it = nullptr; } m_list.clear(); } void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition) { - if (_dataStruct == NULL) { + if (_dataStruct == nullptr) { return; } // alphabetical order: for (size_t iii = 0; iii < m_list.size(); ++iii) { - if (m_list[iii] == NULL) { + if (m_list[iii] == nullptr) { continue; } - if (std::tolower(m_list[iii]->m_bufferName.getNameFile()) > std::tolower(_dataStruct->m_bufferName.getNameFile())) { + if (etk::tolower(m_list[iii]->m_bufferName.getNameFile()) > etk::tolower(_dataStruct->m_bufferName.getNameFile())) { m_list.insert(m_list.begin() + iii, _dataStruct); - _dataStruct = NULL; + _dataStruct = nullptr; if (_selectNewPosition == true) { m_selectedID = iii; } break; } } - if (_dataStruct != NULL) { + if (_dataStruct != nullptr) { m_list.push_back(_dataStruct); if (_selectNewPosition == true) { m_selectedID = m_list.size()-1; @@ -103,18 +107,19 @@ void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _sel void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { + APPL_VERBOSE("message : " << _msg); ewol::widget::List::onReceiveMessage(_msg); if (_msg.getMessage() == appl::MsgSelectNewFile) { - ewol::object::Shared buffer = m_bufferManager->get(_msg.getData()); - if (buffer == NULL) { + std::shared_ptr buffer = m_bufferManager->get(_msg.getData()); + if (buffer == nullptr) { APPL_ERROR("event on element nor exist : " << _msg.getData()); return; } - buffer->registerOnEvent(this, appl::Buffer::eventIsSave); - buffer->registerOnEvent(this, appl::Buffer::eventIsModify); - buffer->registerOnEvent(this, appl::Buffer::eventChangeName); + buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventIsSave); + buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventIsModify); + buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventChangeName); appl::dataBufferStruct* tmp = new appl::dataBufferStruct(_msg.getData(), buffer); - if (tmp == NULL) { + if (tmp == nullptr) { APPL_ERROR("Allocation error of the tmp buffer list element"); return; } @@ -128,7 +133,7 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { } if (_msg.getMessage() == appl::Buffer::eventChangeName) { for (size_t iii = 0; iii < m_list.size(); ++iii) { - if (m_list[iii] == NULL) { + if (m_list[iii] == nullptr) { continue; } if (m_list[iii]->m_bufferName != m_list[iii]->m_buffer->getFileName()) { @@ -136,7 +141,7 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { if (m_openOrderMode == false) { // re-order the fine in the correct position appl::dataBufferStruct* tmp = m_list[iii]; - m_list[iii] = NULL; + m_list[iii] = nullptr; m_list.erase(m_list.begin() + iii); insertAlphabetic(tmp, ((int64_t)iii == m_selectedID)); break; @@ -154,16 +159,15 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { markToRedraw(); return; } - APPL_DEBUG("message : " << _msg); if (_msg.getMessage() == appl::MsgSelectChange) { m_selectedID = -1; - ewol::object::Shared tmpBuffer; - if (m_bufferManager != NULL) { + std::shared_ptr tmpBuffer; + if (m_bufferManager != nullptr) { tmpBuffer = m_bufferManager->getBufferSelected(); } - if (tmpBuffer != NULL) { + if (tmpBuffer != nullptr) { for (size_t iii=0; iiim_buffer != tmpBuffer) { @@ -185,11 +189,11 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { /* if (BufferManager::exist(iii)) { BufferText* tmpBuffer = BufferManager::get(iii); - if (NULL != tmpBuffer) { + if (nullptr != tmpBuffer) { bool isModify = tmpBuffer->isModify(); etk::FSNode name = tmpBuffer->getFileName(); appl::dataBufferStruct* tmpElement = new appl::dataBufferStruct(name, iii, isModify); - if (NULL != tmpElement) { + if (nullptr != tmpElement) { m_list.push_back(tmpElement); } else { APPL_ERROR("Allocation error of the tmp buffer list element"); @@ -216,24 +220,6 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { } } -void BufferView::onObjectRemove(const ewol::object::Shared& _object) { - ewol::widget::List::onObjectRemove(_object); - auto it(m_list.begin()); - while (it != m_list.end()) { - if ( *it != nullptr - && (*it)->m_buffer == _object) { - m_list.erase(it); - markToRedraw(); - it = m_list.begin(); - } else { - ++it; - } - } - if (m_bufferManager == _object) { - m_bufferManager.reset(); - } -} - etk::Color<> BufferView::getBasicBG() { return (*m_paintingProperties)[m_colorBackground1].getForeground(); @@ -258,7 +244,7 @@ bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextT && m_list[_raw] != nullptr) { _myTextToWrite = m_list[_raw]->m_bufferName.getNameFile(); - if ( m_list[_raw]->m_buffer != NULL + if ( m_list[_raw]->m_buffer != nullptr && m_list[_raw]->m_buffer->isModify() == false) { _fg = (*m_paintingProperties)[m_colorTextNormal].getForeground(); } else { @@ -285,8 +271,8 @@ bool BufferView::onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); if( _raw >= 0 && _raw<(int64_t)m_list.size() - && NULL != m_list[_raw]) { - if (m_list[_raw]->m_buffer != NULL) { + && nullptr != m_list[_raw]) { + if (m_list[_raw]->m_buffer != nullptr) { sendMultiCast(appl::MsgSelectNewFile, m_list[_raw]->m_buffer->getFileName()); m_selectedID = _raw; markToRedraw(); diff --git a/sources/appl/Gui/BufferView.h b/sources/appl/Gui/BufferView.h index 00ffae1..e3c3a3b 100644 --- a/sources/appl/Gui/BufferView.h +++ b/sources/appl/Gui/BufferView.h @@ -19,8 +19,8 @@ namespace appl { class dataBufferStruct { public: etk::FSNode m_bufferName; - ewol::object::Shared m_buffer; - dataBufferStruct(const std::string& _bufferName, const ewol::object::Shared& _buffer) : + std::shared_ptr m_buffer; + dataBufferStruct(const std::string& _bufferName, const std::shared_ptr& _buffer) : m_bufferName(_bufferName), m_buffer(_buffer) { @@ -31,9 +31,9 @@ namespace appl { class BufferView : public ewol::widget::List { private: - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + std::shared_ptr m_bufferManager; //!< handle on the buffer manager private: - ewol::object::Shared m_paintingProperties; //!< element painting property + std::shared_ptr m_paintingProperties; //!< element painting property int32_t m_colorBackground1; int32_t m_colorBackground2; int32_t m_colorBackgroundSelect; @@ -48,13 +48,15 @@ class BufferView : public ewol::widget::List { * @param[in] _dataStruct element to add. */ void insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition = false); - public: + protected: // Constructeur BufferView(); + void init(); + public: + DECLARE_FACTORY(BufferView); virtual ~BufferView(); // Derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _object); private: bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order protected: diff --git a/sources/appl/Gui/MainWindows.cpp b/sources/appl/Gui/MainWindows.cpp index f46f73b..e0f0993 100644 --- a/sources/appl/Gui/MainWindows.cpp +++ b/sources/appl/Gui/MainWindows.cpp @@ -40,11 +40,11 @@ namespace appl { std::string getVersion() { #define FIRST_YEAR (2010) - std::string tmpOutput = std::to_string(date::getYear()-FIRST_YEAR); + std::string tmpOutput = etk::to_string(date::getYear()-FIRST_YEAR); tmpOutput += "."; - tmpOutput += std::to_string(date::getMonth()); + tmpOutput += etk::to_string(date::getMonth()); tmpOutput += "."; - tmpOutput += std::to_string(date::getDay()); + tmpOutput += etk::to_string(date::getDay()); return tmpOutput; } @@ -59,12 +59,15 @@ namespace appl { class ParameterAboutGui : public ewol::widget::Sizer { public : - ParameterAboutGui() : - ewol::widget::Sizer(ewol::widget::Sizer::modeVert) { - ewol::object::Shared mySpacer = NULL; + ParameterAboutGui() { + addObjectType("appl::ParameterAboutGui"); + } + void init() { + ewol::widget::Sizer::init(ewol::widget::Sizer::modeVert); + std::shared_ptr mySpacer; - mySpacer = ewol::object::makeShared(new ewol::widget::Spacer()); - if (NULL == mySpacer) { + mySpacer = ewol::widget::Spacer::create(); + if (nullptr == mySpacer) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { mySpacer->setExpand(bvec2(true,true)); @@ -93,8 +96,8 @@ class ParameterAboutGui : public ewol::widget::Sizer { tmpLabel += " libPng, ogg-tremor, portaudio, libZip
"; tmpLabel += " tinyXml, freetype, agg2.4, etk
"; tmpLabel += ""; - ewol::object::Shared myLabel = ewol::object::makeShared(new ewol::widget::Label(tmpLabel)); - if (NULL == myLabel) { + std::shared_ptr myLabel = ewol::widget::Label::create(tmpLabel); + if (nullptr == myLabel) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { myLabel->setExpand(bvec2(true,false)); @@ -121,38 +124,42 @@ const char* l_smoothMax = "tmpEvent_maxChange"; MainWindows::MainWindows() { addObjectType("appl::MainWindows"); +} + +void MainWindows::init() { + ewol::widget::Windows::init(); APPL_DEBUG("CREATE WINDOWS ... "); - ewol::object::Shared mySizerVert = NULL; - ewol::object::Shared mySizerVert2 = NULL; - ewol::object::Shared mySizerHori = NULL; - ewol::object::Shared myTextView = NULL; - ewol::object::Shared myBufferView = NULL; - ewol::object::Shared myMenu = NULL; + std::shared_ptr mySizerVert = nullptr; + std::shared_ptr mySizerVert2 = nullptr; + std::shared_ptr mySizerHori = nullptr; + std::shared_ptr myTextView = nullptr; + std::shared_ptr myBufferView = nullptr; + std::shared_ptr myMenu = nullptr; // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); + m_bufferManager = appl::BufferManager::create(); - mySizerVert = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert)); + mySizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); mySizerVert->setName("plop 1111111"); setSubWidget(mySizerVert); - mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori)); + mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori); mySizerHori->setName("plop 222222222"); mySizerVert->subWidgetAdd(mySizerHori); - myBufferView = ewol::object::makeShared(new BufferView()); + myBufferView = BufferView::create(); myBufferView->setName("plop 3333333"); myBufferView->setExpand(bvec2(false,true)); myBufferView->setFill(bvec2(true,true)); mySizerHori->subWidgetAdd(myBufferView); - mySizerVert2 = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert)); + mySizerVert2 = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); mySizerHori->subWidgetAdd(mySizerVert2); mySizerVert2->setName("plop 4444444"); // main buffer Area : #if defined(__TARGET_OS__Android) - myTextView = ewol::object::makeShared(new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 16)); + myTextView = appl::TextViewer::create("FreeMono;DejaVuSansMono;FreeSerif", 16); #else - myTextView = ewol::object::makeShared(new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11)); + myTextView = appl::TextViewer::create("FreeMono;DejaVuSansMono;FreeSerif", 11); #endif myTextView->setName("appl-text-viewer"); myTextView->setExpand(bvec2(true,true)); @@ -165,14 +172,14 @@ MainWindows::MainWindows() { mySizerVert2->subWidgetAdd(myTextView); */ // search area : - ewol::object::Shared mySearch = ewol::object::makeShared(new appl::widget::Search()); + std::shared_ptr mySearch = appl::widget::Search::create(); mySizerVert2->subWidgetAdd(mySearch); - mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori)); + mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori); mySizerHori->setName("plop 555555"); mySizerVert->subWidgetAdd(mySizerHori); - myMenu = ewol::object::makeShared(new ewol::widget::Menu()); + myMenu = ewol::widget::Menu::create(); mySizerHori->subWidgetAdd(myMenu); int32_t idMenuFile = myMenu->addTitle("File"); myMenu->add(idMenuFile, "New", "", ednMsgGuiNew); @@ -221,7 +228,7 @@ MainWindows::MainWindows() { myMenu->addSpacer(); myMenu->add(idMenugDisplay, "Reload openGl Shader", "", ednMsgGuiReloadShader); - m_widgetLabelFileName = ewol::object::makeShared(new ewol::widget::Label("FileName")); + m_widgetLabelFileName = ewol::widget::Label::create("FileName"); m_widgetLabelFileName->setExpand(bvec2(true,false)); m_widgetLabelFileName->setFill(bvec2(true,false));; mySizerHori->subWidgetAdd(m_widgetLabelFileName); @@ -282,30 +289,30 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { APPL_VERBOSE("Receive Event from the main windows: " << _msg ); // open file Section ... if (_msg.getMessage() == ednMsgGuiOpen) { - ewol::widget::FileChooser* tmpWidget = new ewol::widget::FileChooser(); - if (tmpWidget == NULL) { + std::shared_ptr tmpWidget = ewol::widget::FileChooser::create(); + if (tmpWidget == nullptr) { APPL_ERROR("Can not open File chooser !!! "); return; } tmpWidget->setTitle("Open files ..."); tmpWidget->setValidateLabel("Open"); - if (m_bufferManager == NULL) { + if (m_bufferManager == nullptr) { APPL_ERROR("can not call unexistant buffer manager ... "); return; } // Get a ref on the buffer selected (if null, no buffer was selected ...) - ewol::object::Shared tmpBuffer = m_bufferManager->getBufferSelected(); - if (tmpBuffer != NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->getBufferSelected(); + if (tmpBuffer != nullptr) { etk::FSNode tmpFile = tmpBuffer->getFileName(); tmpWidget->setFolder(tmpFile.getNameFolder()); } // apply widget pop-up ... popUpWidgetPush(tmpWidget); - tmpWidget->registerOnEvent(this, "validate", ednEventPopUpFileSelected); + tmpWidget->registerOnEvent(shared_from_this(), "validate", ednEventPopUpFileSelected); } else if (_msg.getMessage() == ednMsgProperties) { // Request the parameter GUI - ewol::object::Shared tmpWidget = ewol::object::makeShared(new ewol::widget::Parameter()); - if (NULL == tmpWidget) { + std::shared_ptr tmpWidget = ewol::widget::Parameter::create(); + if (nullptr == tmpWidget) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { #ifdef SDGSDFGSDFGSDFGSDFGSTERGDHFGHFDS @@ -342,13 +349,13 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { tmpWidget->setTitle("Properties"); popUpWidgetPush(tmpWidget); tmpWidget->menuAddGroup("Editor"); - ewol::object::Shared tmpSubWidget = ewol::object::makeShared(new globals::ParameterGlobalsGui()); + std::shared_ptr tmpSubWidget = globals::ParameterGlobalsGui::create(); tmpWidget->menuAdd("Editor", "", tmpSubWidget); - tmpWidget->menuAdd("Font & Color", "", NULL); - tmpWidget->menuAdd("Highlight", "", NULL); + tmpWidget->menuAdd("Font & Color", "", nullptr); + tmpWidget->menuAdd("Highlight", "", nullptr); tmpWidget->menuAddGroup("General"); - tmpWidget->menuAdd("Display", "", NULL); - tmpSubWidget = ewol::object::makeShared(new ParameterAboutGui()); + tmpWidget->menuAdd("Display", "", nullptr); + tmpSubWidget = ParameterAboutGui::create(); tmpWidget->menuAdd("About", "", tmpSubWidget); } } else if (_msg.getMessage() == appl::MsgNameGuiChangeColor) { @@ -366,7 +373,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { // TODO : ... } // Note : Fore all next message we need to acces to the buffer manager ==> just check one time ... - if (m_bufferManager == NULL) { + if (m_bufferManager == nullptr) { APPL_ERROR("can not call unexistant buffer manager ... "); return; } @@ -375,21 +382,21 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { || _msg.getMessage() == appl::Buffer::eventIsSave || _msg.getMessage() == appl::Buffer::eventChangeName) { // select a new Buffer ==> change title: - ewol::object::Shared tmpp = m_bufferManager->getBufferSelected(); - if (tmpp == NULL) { + std::shared_ptr tmpp = m_bufferManager->getBufferSelected(); + if (tmpp == nullptr) { setTitle("Edn"); - if (m_widgetLabelFileName != NULL) { + if (m_widgetLabelFileName != nullptr) { m_widgetLabelFileName->setLabel(""); } } else { if (_msg.getMessage() == appl::MsgSelectNewFile) { - tmpp->registerOnEvent(this, appl::Buffer::eventIsModify); - tmpp->registerOnEvent(this, appl::Buffer::eventIsSave); - tmpp->registerOnEvent(this, appl::Buffer::eventChangeName); + tmpp->registerOnEvent(shared_from_this(), appl::Buffer::eventIsModify); + tmpp->registerOnEvent(shared_from_this(), appl::Buffer::eventIsSave); + tmpp->registerOnEvent(shared_from_this(), appl::Buffer::eventChangeName); } std::string nameFileSystem = etk::FSNode(tmpp->getFileName()).getFileSystemName(); setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + nameFileSystem); - if (m_widgetLabelFileName != NULL) { + if (m_widgetLabelFileName != nullptr) { m_widgetLabelFileName->setLabel(nameFileSystem + (tmpp->isModify()==true?" *":"")); } } @@ -402,31 +409,31 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { m_bufferManager->open(_msg.getData()); } else if (_msg.getMessage() == ednMsgGuiSave) { APPL_DEBUG("Request saving the file : " << _msg.getData()); - if (std::tolower(_msg.getData()) == "current") { - new appl::WorkerSaveFile("", false); + if (etk::tolower(_msg.getData()) == "current") { + appl::WorkerSaveFile::create("", false); return; - } else if (std::tolower(_msg.getData()) == "all") { - new appl::WorkerSaveAllFile(); + } else if (etk::tolower(_msg.getData()) == "all") { + appl::WorkerSaveAllFile::create(); return; } else { APPL_ERROR("UNKNOW request : " << _msg); } } else if (_msg.getMessage() == ednMsgGuiSaveAs) { - new appl::WorkerSaveFile("", true); + appl::WorkerSaveFile::create("", true); } else if (_msg.getMessage() == ednMsgGuiClose) { // Get a ref on the buffer selected (if null, no buffer was selected ...) if (_msg.getData() == "current") { - new appl::WorkerCloseFile(""); + appl::WorkerCloseFile::create(""); } else { - new appl::WorkerCloseAllFile(); + appl::WorkerCloseAllFile::create(); } } else if (_msg.getMessage() == mainWindowsRequestSaveFile) { // return after a choice of close... if (m_bufferManager->exist(_msg.getData()) == false) { APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); return; } - ewol::object::Shared tmpBuffer = m_bufferManager->get(_msg.getData()); - if (tmpBuffer == NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->get(_msg.getData()); + if (tmpBuffer == nullptr) { APPL_ERROR("Error to get the buffer : " << _msg.getData()); return; } @@ -444,8 +451,8 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); return; } - ewol::object::Shared tmpBuffer = m_bufferManager->get(_msg.getData()); - if (tmpBuffer == NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->get(_msg.getData()); + if (tmpBuffer == nullptr) { APPL_ERROR("Error to get the buffer : " << _msg.getData()); return; } @@ -455,64 +462,58 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); return; } - ewol::object::Shared tmpBuffer = m_bufferManager->get(_msg.getData()); - if (tmpBuffer == NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->get(_msg.getData()); + if (tmpBuffer == nullptr) { APPL_ERROR("Error to get the buffer : " << _msg.getData()); return; } // note: just remove ==> no check : normal case ... - tmpBuffer->removeObject(); + //tmpBuffer->removeObject(); + EWOL_TODO("call remove buffer ..."); } return; } -void MainWindows::saveAsPopUp(const ewol::object::Shared& _buffer) { - if (_buffer == NULL) { - APPL_ERROR("Call With NULL input..."); +void MainWindows::saveAsPopUp(const std::shared_ptr& _buffer) { + if (_buffer == nullptr) { + APPL_ERROR("Call With nullptr input..."); return; } - appl::WorkerSaveFile* tmpObject = new appl::WorkerSaveFile(_buffer->getFileName()); + std::shared_ptr tmpObject = appl::WorkerSaveFile::create(_buffer->getFileName()); } -void MainWindows::closeNotSavedFile(const ewol::object::Shared& _buffer) { - if (_buffer == NULL) { - APPL_ERROR("Call With NULL input..."); +void MainWindows::closeNotSavedFile(const std::shared_ptr& _buffer) { + if (_buffer == nullptr) { + APPL_ERROR("Call With nullptr input..."); return; } - ewol::object::Shared tmpPopUp = ewol::object::makeShared(new ewol::widget::StdPopUp()); - if (tmpPopUp == NULL) { + std::shared_ptr tmpPopUp = ewol::widget::StdPopUp::create(); + if (tmpPopUp == nullptr) { APPL_ERROR("Can not create a simple pop-up"); return; } tmpPopUp->setTitle("Close un-saved file:"); tmpPopUp->setComment("The file named : \"" + _buffer->getFileName() + "\" is curently modify.
If you don't saves these modifications,
they will be definitly lost..."); - ewol::object::Shared bt = NULL; + std::shared_ptr bt = nullptr; if (_buffer->hasFileName() == true) { bt = tmpPopUp->addButton("Save", true); - if (bt != NULL) { + if (bt != nullptr) { // TODO : The element is removed before beeing pressed - bt->registerOnEvent(this, "pressed", mainWindowsRequestSaveFile, _buffer->getFileName()); - bt->registerOnEvent(this, "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); + bt->registerOnEvent(shared_from_this(), "pressed", mainWindowsRequestSaveFile, _buffer->getFileName()); + bt->registerOnEvent(shared_from_this(), "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); } } bt = tmpPopUp->addButton("Save As", true); - if (bt != NULL) { - bt->registerOnEvent(this, "pressed", mainWindowsRequestSaveFileAs, _buffer->getFileName()); + if (bt != nullptr) { + bt->registerOnEvent(shared_from_this(), "pressed", mainWindowsRequestSaveFileAs, _buffer->getFileName()); //bt->registerOnEvent(this, "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); // TODO : Request the close when saved ... } bt = tmpPopUp->addButton("Close", true); - if (bt != NULL) { - bt->registerOnEvent(this, "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); + if (bt != nullptr) { + bt->registerOnEvent(shared_from_this(), "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); } tmpPopUp->addButton("Cancel", true); tmpPopUp->setRemoveOnExternClick(true); popUpWidgetPush(tmpPopUp); } - -void MainWindows::onObjectRemove(const ewol::object::Shared& _removeObject) { - ewol::widget::Windows::onObjectRemove(_removeObject); - if (m_widgetLabelFileName == _removeObject) { - m_widgetLabelFileName = NULL; - } -} diff --git a/sources/appl/Gui/MainWindows.h b/sources/appl/Gui/MainWindows.h index fa1a5e8..0156616 100644 --- a/sources/appl/Gui/MainWindows.h +++ b/sources/appl/Gui/MainWindows.h @@ -19,26 +19,28 @@ class MainWindows : public ewol::widget::Windows { private: - ewol::object::Shared m_widgetLabelFileName; - public: + std::shared_ptr m_widgetLabelFileName; + protected: // Constructeur MainWindows(); + void init(); + public: + DECLARE_FACTORY(MainWindows); virtual ~MainWindows(); private: - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + std::shared_ptr m_bufferManager; //!< handle on the buffer manager /** * @brief Display a pop-up to the select the name of the file. * @param[in] _buffer Buffer that might be saved with a new name. */ - void saveAsPopUp(const ewol::object::Shared& _buffer); + void saveAsPopUp(const std::shared_ptr& _buffer); /** * @brief Display a pop-up to the user to confirm wat he want to do when he close a file not saved. * @param[in] _buffer Buffer that might be close. */ - void closeNotSavedFile(const ewol::object::Shared& _buffer); + void closeNotSavedFile(const std::shared_ptr& _buffer); public: // Derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; diff --git a/sources/appl/Gui/Search.cpp b/sources/appl/Gui/Search.cpp index a4d9fbe..cbbb118 100644 --- a/sources/appl/Gui/Search.cpp +++ b/sources/appl/Gui/Search.cpp @@ -29,34 +29,32 @@ const char* const l_eventForwardCb = "appl-forward-CheckBox"; const char* const l_eventHideBt = "appl-hide-button"; appl::widget::Search::Search() : - ewol::widget::Composer(ewol::widget::Composer::file, "DATA:GUI-Search.xml"), - m_viewerManager(NULL), m_forward(true), m_caseSensitive(false), - m_wrap(true), - m_searchEntry(NULL), - m_replaceEntry(NULL) { + m_wrap(true) { addObjectType("appl::widget::Search"); - // load buffer manager:onObjectRemove - m_viewerManager = appl::ViewerManager::keep(); +} +void appl::widget::Search::init() { + ewol::widget::Composer::init(ewol::widget::Composer::file, "DATA:GUI-Search.xml"); + m_viewerManager = appl::ViewerManager::create(); // link event - registerOnEventNameWidget(this, "SEARCH:close", "pressed", l_eventHideBt); - registerOnEventNameWidget(this, "SEARCH:search-entry", "modify", l_eventSearchEntry); - registerOnEventNameWidget(this, "SEARCH:search-entry", "enter", l_eventSearchEntryEnter); - registerOnEventNameWidget(this, "SEARCH:search", "pressed", l_eventSearchBt); - registerOnEventNameWidget(this, "SEARCH:replace-entry", "modify", l_eventReplaceEntry); - registerOnEventNameWidget(this, "SEARCH:replace-entry", "enter", l_eventReplaceEntryEnter); - registerOnEventNameWidget(this, "SEARCH:replace", "pressed", l_eventReplaceBt); - registerOnEventNameWidget(this, "SEARCH:case", "value", l_eventCaseCb); - registerOnEventNameWidget(this, "SEARCH:wrap", "value", l_eventWrapCb); - registerOnEventNameWidget(this, "SEARCH:up-down", "value", l_eventForwardCb); + registerOnEventNameWidget(shared_from_this(), "SEARCH:close", "pressed", l_eventHideBt); + registerOnEventNameWidget(shared_from_this(), "SEARCH:search-entry", "modify", l_eventSearchEntry); + registerOnEventNameWidget(shared_from_this(), "SEARCH:search-entry", "enter", l_eventSearchEntryEnter); + registerOnEventNameWidget(shared_from_this(), "SEARCH:search", "pressed", l_eventSearchBt); + registerOnEventNameWidget(shared_from_this(), "SEARCH:replace-entry", "modify", l_eventReplaceEntry); + registerOnEventNameWidget(shared_from_this(), "SEARCH:replace-entry", "enter", l_eventReplaceEntryEnter); + registerOnEventNameWidget(shared_from_this(), "SEARCH:replace", "pressed", l_eventReplaceBt); + registerOnEventNameWidget(shared_from_this(), "SEARCH:case", "value", l_eventCaseCb); + registerOnEventNameWidget(shared_from_this(), "SEARCH:wrap", "value", l_eventWrapCb); + registerOnEventNameWidget(shared_from_this(), "SEARCH:up-down", "value", l_eventForwardCb); // set default properties - setConfigNamed("SEARCH:case", "value", std::to_string(m_caseSensitive)); - setConfigNamed("SEARCH:wrap", "value", std::to_string(m_wrap)); - setConfigNamed("SEARCH:up-down", "value", std::to_string(m_forward)); + parameterSetOnWidgetNamed("SEARCH:case", "value", etk::to_string(m_caseSensitive)); + parameterSetOnWidgetNamed("SEARCH:wrap", "value", etk::to_string(m_wrap)); + parameterSetOnWidgetNamed("SEARCH:up-down", "value", etk::to_string(m_forward)); // get widget - m_searchEntry = ewol::dynamic_pointer_cast(getWidgetNamed("SEARCH:search-entry")); - m_replaceEntry = ewol::dynamic_pointer_cast(getWidgetNamed("SEARCH:replace-entry")); + m_searchEntry = std::dynamic_pointer_cast(getWidgetNamed("SEARCH:search-entry")); + m_replaceEntry = std::dynamic_pointer_cast(getWidgetNamed("SEARCH:replace-entry")); // Display and hide event: registerMultiCast(ednMsgGuiSearch); // basicly hiden ... @@ -68,12 +66,12 @@ appl::widget::Search::~Search() { } void appl::widget::Search::find() { - if (m_viewerManager == NULL) { + if (m_viewerManager == nullptr) { APPL_WARNING("No viewer manager selected!!!"); return; } - ewol::object::Shared viewer = m_viewerManager->getViewerSelected(); - if (viewer == NULL) { + std::shared_ptr viewer = m_viewerManager->getViewerSelected(); + if (viewer == nullptr) { APPL_INFO("No viewer selected!!!"); return; } @@ -104,12 +102,12 @@ void appl::widget::Search::find() { } void appl::widget::Search::replace() { - if (m_viewerManager == NULL) { + if (m_viewerManager == nullptr) { APPL_WARNING("No viewer manager selected!!!"); return; } - ewol::object::Shared viewer = m_viewerManager->getViewerSelected(); - if (viewer == NULL) { + std::shared_ptr viewer = m_viewerManager->getViewerSelected(); + if (viewer == nullptr) { APPL_INFO("No viewer selected!!!"); return; } @@ -125,35 +123,35 @@ void appl::widget::Search::onReceiveMessage(const ewol::object::Message& _msg) { ewol::widget::Composer::onReceiveMessage(_msg); APPL_INFO("Search receive message : " << _msg); if ( _msg.getMessage() == l_eventSearchEntry) { - m_searchData = to_u32string(_msg.getData()); + m_searchData = etk::to_u32string(_msg.getData()); } else if ( _msg.getMessage() == l_eventSearchEntryEnter || _msg.getMessage() == l_eventSearchBt) { find(); } else if ( _msg.getMessage() == l_eventReplaceEntry) { - m_replaceData = to_u32string(_msg.getData()); + m_replaceData = etk::to_u32string(_msg.getData()); } else if ( _msg.getMessage() == l_eventReplaceEntryEnter || _msg.getMessage() == l_eventReplaceBt) { replace(); find(); } else if ( _msg.getMessage() == l_eventCaseCb) { - m_caseSensitive = std::stob(_msg.getData()); + m_caseSensitive = etk::string_to_bool(_msg.getData()); } else if ( _msg.getMessage() == l_eventWrapCb) { - m_wrap = std::stob(_msg.getData()); + m_wrap = etk::string_to_bool(_msg.getData()); } else if ( _msg.getMessage() == l_eventForwardCb) { - m_forward = std::stob(_msg.getData()); + m_forward = etk::string_to_bool(_msg.getData()); } else if ( _msg.getMessage() == l_eventHideBt) { hide(); } else if ( _msg.getMessage() == ednMsgGuiSearch) { if (true == isHide()) { show(); - if (m_searchEntry!= NULL) { + if (m_searchEntry!= nullptr) { m_searchEntry->keepFocus(); } } else { - if( (m_searchEntry!=NULL && true == m_searchEntry->getFocus()) - || (m_replaceEntry!=NULL && true == m_replaceEntry->getFocus()) ) { + if( (m_searchEntry!=nullptr && true == m_searchEntry->getFocus()) + || (m_replaceEntry!=nullptr && true == m_replaceEntry->getFocus()) ) { hide(); - } else if (m_searchEntry!= NULL) { + } else if (m_searchEntry!= nullptr) { m_searchEntry->keepFocus(); } else { hide(); @@ -162,16 +160,3 @@ void appl::widget::Search::onReceiveMessage(const ewol::object::Message& _msg) { } } -void appl::widget::Search::onObjectRemove(const ewol::object::Shared& _object) { - ewol::widget::Composer::onObjectRemove(_object); - if (_object == m_searchEntry) { - m_searchEntry.reset(); - } - if (_object == m_replaceEntry) { - m_replaceEntry.reset(); - } - if (_object == m_viewerManager) { - m_viewerManager.reset(); - } -} - diff --git a/sources/appl/Gui/Search.h b/sources/appl/Gui/Search.h index 52b8204..3a34150 100644 --- a/sources/appl/Gui/Search.h +++ b/sources/appl/Gui/Search.h @@ -18,17 +18,20 @@ namespace appl { namespace widget { class Search : public ewol::widget::Composer { private: - ewol::object::Shared m_viewerManager; //!< handle on the buffer manager + std::shared_ptr m_viewerManager; //!< handle on the buffer manager bool m_forward; bool m_caseSensitive; bool m_wrap; - ewol::object::Shared m_searchEntry; - ewol::object::Shared m_replaceEntry; + std::shared_ptr m_searchEntry; + std::shared_ptr m_replaceEntry; std::u32string m_searchData; std::u32string m_replaceData; - public: + protected: // Constructeur Search(); + void init(); + public: + DECLARE_FACTORY(Search); virtual ~Search(); private: /** @@ -41,7 +44,6 @@ namespace appl { void replace(); public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _object); }; }; }; diff --git a/sources/appl/Gui/TagFileList.cpp b/sources/appl/Gui/TagFileList.cpp index de72afd..be19a79 100644 --- a/sources/appl/Gui/TagFileList.cpp +++ b/sources/appl/Gui/TagFileList.cpp @@ -23,20 +23,22 @@ appl::TagFileList::TagFileList() { addEventId(applEventCtagsListValidate); setMouseLimit(1); // Load color properties: (use file list to be generic ...) - m_colorProperty = ewol::resource::ColorFile::keep("THEME:COLOR:ListFileSystem.json"); - if (m_colorProperty != NULL) { + m_colorProperty = ewol::resource::ColorFile::create("THEME:COLOR:ListFileSystem.json"); + if (m_colorProperty != nullptr) { m_colorIdText = m_colorProperty->request("text"); m_colorIdBackground1 = m_colorProperty->request("background1"); m_colorIdBackground2 = m_colorProperty->request("background2"); m_colorIdBackgroundSelected = m_colorProperty->request("selected"); } } - +void appl::TagFileList::init() { + ewol::widget::List::init(); +} appl::TagFileList::~TagFileList() { for (auto &it : m_list) { delete(it); - it = NULL; + it = nullptr; } } @@ -58,9 +60,9 @@ uint32_t appl::TagFileList::getNuberOfRaw() { } bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) { - if (_raw >= 0 && (size_t)_raw < m_list.size() && NULL != m_list[_raw]) { + if (_raw >= 0 && (size_t)_raw < m_list.size() && nullptr != m_list[_raw]) { if (0 == _colomn) { - _myTextToWrite = std::to_string(m_list[_raw]->fileLine); + _myTextToWrite = etk::to_string(m_list[_raw]->fileLine); } else { _myTextToWrite = m_list[_raw]->filename; } @@ -96,8 +98,8 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _ty } if( m_selectedLine >= 0 && m_selectedLine < (int64_t)m_list.size() - && NULL != m_list[m_selectedLine] ) { - generateEventId(event, std::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename); + && nullptr != m_list[m_selectedLine] ) { + generateEventId(event, etk::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename); } else { generateEventId(applEventCtagsListUnSelect); } @@ -117,7 +119,7 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _ty */ void appl::TagFileList::add(std::string& _file, int32_t _line) { appl::TagListElement *tmpFile = new appl::TagListElement(_file, _line); - if (NULL != tmpFile) { + if (nullptr != tmpFile) { m_list.push_back(tmpFile); } markToRedraw(); diff --git a/sources/appl/Gui/TagFileList.h b/sources/appl/Gui/TagFileList.h index 3827990..e7b0909 100644 --- a/sources/appl/Gui/TagFileList.h +++ b/sources/appl/Gui/TagFileList.h @@ -37,13 +37,16 @@ namespace appl { int32_t m_selectedLine; std::vector m_list; protected: - ewol::object::Shared m_colorProperty; //!< theme color property. + std::shared_ptr m_colorProperty; //!< theme color property. int32_t m_colorIdText; //!< Color of the text. int32_t m_colorIdBackground1; //!< Color of the Background. int32_t m_colorIdBackground2; //!< Color of the Background 2. int32_t m_colorIdBackgroundSelected; //!< Color of line selected. - public: + protected: TagFileList(); + void init(); + public: + DECLARE_FACTORY(TagFileList); virtual ~TagFileList(); // display API : virtual etk::Color<> getBasicBG(); diff --git a/sources/appl/Gui/TagFileSelection.cpp b/sources/appl/Gui/TagFileSelection.cpp index d629ce3..de5f36b 100644 --- a/sources/appl/Gui/TagFileSelection.cpp +++ b/sources/appl/Gui/TagFileSelection.cpp @@ -34,10 +34,11 @@ appl::TagFileSelection::TagFileSelection() { addObjectType("appl::TagFileSelection"); addEventId(applEventctagsSelection); addEventId(applEventctagsCancel); - - ewol::object::Shared myWidgetTitle; - - ewol::object::Shared mySizerVert; +} + +void appl::TagFileSelection::init() { + ewol::widget::PopUp::init(); + std::shared_ptr mySizerVert; #if defined(__TARGET_OS__Android) setMinSize(ewol::Dimension(vec2(90,90),ewol::Dimension::Pourcent)); #elif defined(__TARGET_OS__Windows) @@ -46,15 +47,15 @@ appl::TagFileSelection::TagFileSelection() { setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent)); #endif - mySizerVert = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert)); - if (NULL == mySizerVert) { + mySizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); + if (nullptr == mySizerVert) { EWOL_ERROR("Can not allocate widget == > display might be in error"); } else { mySizerVert->lockExpand(bvec2(true,true)); mySizerVert->setExpand(bvec2(true,true)); // set it in the pop-up-system : setSubWidget(mySizerVert); - ewol::object::Shared compose = ewol::object::makeShared(new ewol::widget::Composer(ewol::widget::Composer::String, + std::shared_ptr compose = ewol::widget::Composer::create(ewol::widget::Composer::String, "\n" " \n" " \n" - "\n")); + "\n"); compose->setExpand(bvec2(true,false)); compose->setFill(bvec2(true,true)); mySizerVert->subWidgetAdd(compose); - compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-jump", "pressed", applEventctagsSelection); - compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-cancel", "pressed", applEventctagsCancel); + compose->registerOnEventNameWidget(shared_from_this(), "PLUGIN-CTAGS-jump", "pressed", applEventctagsSelection); + compose->registerOnEventNameWidget(shared_from_this(), "PLUGIN-CTAGS-cancel", "pressed", applEventctagsCancel); - m_listTag = ewol::object::makeShared(new appl::TagFileList()); - if (NULL == m_listTag) { + m_listTag = appl::TagFileList::create(); + if (nullptr == m_listTag) { EWOL_ERROR("Can not allocate widget == > display might be in error"); } else { - m_listTag->registerOnEvent(this, applEventCtagsListValidate); - m_listTag->registerOnEvent(this, applEventCtagsListSelect); - m_listTag->registerOnEvent(this, applEventCtagsListUnSelect); + m_listTag->registerOnEvent(shared_from_this(), applEventCtagsListValidate); + m_listTag->registerOnEvent(shared_from_this(), applEventCtagsListSelect); + m_listTag->registerOnEvent(shared_from_this(), applEventCtagsListUnSelect); m_listTag->setExpand(bvec2(true,true)); m_listTag->setFill(bvec2(true,true)); mySizerVert->subWidgetAdd(m_listTag); } - myWidgetTitle = new ewol::widget::Label("Ctags Jump Selection ..."); - if (NULL == myWidgetTitle) { + std::shared_ptr 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); @@ -134,21 +136,8 @@ void appl::TagFileSelection::onReceiveMessage(const ewol::object::Message& _msg) * @param[in] jump line id */ void appl::TagFileSelection::addCtagsNewItem(std::string _file, int32_t _line) { - if (NULL != m_listTag) { + if (nullptr != m_listTag) { m_listTag->add(_file, _line); } } -void appl::TagFileSelection::onObjectRemove(const ewol::object::Shared& _removeObject) { - // First step call parrent : - ewol::widget::PopUp::onObjectRemove(_removeObject); - // second step find if in all the elements ... - if(_removeObject == m_listTag) { - m_listTag = NULL; - } -} - - - - - diff --git a/sources/appl/Gui/TagFileSelection.h b/sources/appl/Gui/TagFileSelection.h index 417b591..2d4ba0e 100644 --- a/sources/appl/Gui/TagFileSelection.h +++ b/sources/appl/Gui/TagFileSelection.h @@ -19,10 +19,13 @@ extern const char * const applEventctagsCancel; namespace appl { class TagFileSelection : public ewol::widget::PopUp { private: - ewol::object::Shared m_listTag; + std::shared_ptr m_listTag; std::string m_eventNamed; public: TagFileSelection(); + void init(); + public: + DECLARE_FACTORY(TagFileSelection); virtual ~TagFileSelection(); /** * @brief add a Ctags item on the curent list @@ -32,7 +35,6 @@ namespace appl { void addCtagsNewItem(std::string file, int32_t line); public: // herited function void onReceiveMessage(const ewol::object::Message& _msg); - void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/TextViewer.cpp b/sources/appl/Gui/TextViewer.cpp index b665318..c147aa3 100644 --- a/sources/appl/Gui/TextViewer.cpp +++ b/sources/appl/Gui/TextViewer.cpp @@ -28,26 +28,19 @@ int64_t processTimeLocal = (endTime - startTime); \ APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms"); -appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) : - m_displayText(_fontName, _fontSize), +appl::TextViewer::TextViewer() : m_insertMode(false) { addObjectType("appl::TextViewer"); setCanHaveFocus(true); - registerMultiCast(ednMsgBufferId); - registerMultiCast(ednMsgGuiFind); - registerMultiCast(ednMsgGuiReplace); - registerMultiCast(appl::MsgSelectGotoLine); - registerMultiCast(appl::MsgSelectNewFile); - registerMultiCast(appl::MsgSelectGotoLineSelect); setLimitScrolling(0.2); setSingleFinger(false); // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); - m_viewerManager = appl::ViewerManager::keep(); + m_bufferManager = appl::BufferManager::create(); + m_viewerManager = appl::ViewerManager::create(); // load color properties - m_paintingProperties = appl::GlyphPainting::keep("THEME:COLOR:textViewer.json"); + m_paintingProperties = appl::GlyphPainting::create("THEME:COLOR:textViewer.json"); // get all id properties ... m_colorBackground = m_paintingProperties->request("CODE_basicBackgroung"); m_colorSpace = m_paintingProperties->request("CODE_space"); @@ -56,18 +49,30 @@ appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) : m_colorLineNumber = m_paintingProperties->request("CODE_lineNumber"); m_colorSelection = m_paintingProperties->request("SelectedText"); m_colorNormal = m_paintingProperties->request("normal"); - +} + +void appl::TextViewer::init(const std::string& _fontName, int32_t _fontSize) { + ewol::widget::WidgetScrolled::init(); + m_displayText.setFont(_fontName, _fontSize); appl::textPluginManager::connect(*this); // last created has focus ... setCurrentSelect(); + + registerMultiCast(ednMsgBufferId); + registerMultiCast(ednMsgGuiFind); + registerMultiCast(ednMsgGuiReplace); + registerMultiCast(appl::MsgSelectGotoLine); + registerMultiCast(appl::MsgSelectNewFile); + registerMultiCast(appl::MsgSelectGotoLineSelect); } + appl::TextViewer::~TextViewer() { appl::textPluginManager::disconnect(*this); } std::string appl::TextViewer::getBufferPath() { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return ""; } std::string filename = m_buffer->getFileName(); @@ -109,7 +114,7 @@ void appl::TextViewer::onRegenerateDisplay() { m_displayDrawing.setColor((*m_paintingProperties)[m_colorBackground].getForeground()); m_displayDrawing.rectangleWidth(m_size); - if (m_buffer == NULL) { + if (m_buffer == nullptr) { m_maxSize.setX(256); m_maxSize.setY(256); m_displayText.setTextAlignement(10, m_size.x()-20, ewol::compositing::alignLeft); @@ -138,7 +143,7 @@ void appl::TextViewer::onRegenerateDisplay() { vec3 tmpCursorPosition(0, 0, -1); float tmpCursorLenght = -1.0; // real display ... - m_displayText.setColor(etk::Color<>(0, 0, 0, 256)); + m_displayText.setColor(etk::Color<>(0, 0, 0, 255)); float countNbLine = 1; int32_t countColomn = 0; // the siplay string : @@ -204,7 +209,7 @@ void appl::TextViewer::onRegenerateDisplay() { appl::DisplayHLData displayLocalSyntax; m_buffer->hightlightGenerateLines(displayLocalSyntax, startingIt, (m_size.y()/tmpLetterSize.y()) + 5); float maxSizeX = 0; - appl::HighlightInfo * HLColor = NULL; + appl::HighlightInfo * HLColor = nullptr; bool DisplayCursorAndSelection = isSelectedLast(); appl::Buffer::Iterator it; for (it = startingIt; @@ -220,12 +225,12 @@ void appl::TextViewer::onRegenerateDisplay() { if (*it == u32char::Return) { countNbLine += 1; countColomn = 0; - maxSizeX = etk_max(m_displayText.getPos().x(), maxSizeX); + maxSizeX = std::max(m_displayText.getPos().x(), maxSizeX); // Display the end line position only if we have the focus ... if (DisplayCursorAndSelection == true) { if (it >= selectPosStart && it < selectPosStop) { ewol::compositing::Drawing& draw = m_displayText.getDrawing(); - draw.setColor(etk::Color<>(0xFF0000FF)); + draw.setColor(etk::Color<>(0xFF, 0x00, 0x00, 0xFF)); draw.setPos(m_displayText.getPos() + tmpLetterSize/4.0f); draw.rectangle(m_displayText.getPos() + tmpLetterSize*3.0f/4.0f); } @@ -242,8 +247,8 @@ void appl::TextViewer::onRegenerateDisplay() { } HLColor = m_buffer->getElementColorAtPosition(displayLocalSyntax, (int64_t)it); bool haveBackground = false; - if ( HLColor != NULL - && HLColor->patern != NULL) { + if ( HLColor != nullptr + && HLColor->patern != nullptr) { m_displayText.setColor(HLColor->patern->getColorGlyph().getForeground()); m_displayText.setColorBg(HLColor->patern->getColorGlyph().getBackground()); haveBackground = HLColor->patern->getColorGlyph().haveBackground(); @@ -281,7 +286,7 @@ void appl::TextViewer::onRegenerateDisplay() { tmpCursorPosition = m_displayText.getPos(); tmpCursorLenght = 5; } - maxSizeX = etk_max(m_displayText.getPos().x(), maxSizeX); + maxSizeX = std::max(m_displayText.getPos().x(), maxSizeX); // Display cursor only if we have the focus ... if ( tmpCursorPosition.z() != -1 && getFocus() == true) { @@ -313,7 +318,7 @@ void appl::TextViewer::onRegenerateDisplay() { } bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return false; } // First call plugin @@ -429,7 +434,7 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) { keepFocus(); } //tic(); - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return false; } // First call the scrolling widget : @@ -613,7 +618,7 @@ appl::Buffer::Iterator appl::TextViewer::getMousePosition(const vec2& _relativeP } void appl::TextViewer::onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID) { - if (m_buffer != NULL) { + if (m_buffer != nullptr) { std::string data = ewol::context::clipBoard::get(_clipboardID); write(data); } @@ -642,27 +647,27 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) { return; } if (_msg.getMessage() == appl::MsgSelectGotoLineSelect) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } - appl::Buffer::Iterator it = m_buffer->countForwardNLines(m_buffer->begin(), std::stoi(_msg.getData())); + appl::Buffer::Iterator it = m_buffer->countForwardNLines(m_buffer->begin(), etk::string_to_int32_t(_msg.getData())); select(it, m_buffer->getEndLine(it)); markToRedraw(); return; } if (_msg.getMessage() == appl::MsgSelectGotoLine) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } - appl::Buffer::Iterator it = m_buffer->countForwardNLines(m_buffer->begin(), std::stoi(_msg.getData())); + appl::Buffer::Iterator it = m_buffer->countForwardNLines(m_buffer->begin(), etk::string_to_int32_t(_msg.getData())); moveCursor(it); markToRedraw(); return; } if (_msg.getMessage() == appl::MsgSelectNewFile) { // reset scroll: - if (m_buffer != NULL) { - m_buffer->unRegisterOnEvent(this); + if (m_buffer != nullptr) { + m_buffer->unRegisterOnEvent(shared_from_this()); bool needAdd = true; for (size_t iii=0; iiiget(_msg.getData()); m_bufferManager->setBufferSelected(m_buffer); - if (m_buffer != NULL) { - m_buffer->registerOnEvent(this, appl::Buffer::eventIsModify); - m_buffer->registerOnEvent(this, appl::Buffer::eventSelectChange); + if (m_buffer != nullptr) { + m_buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventIsModify); + m_buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventSelectChange); for (auto element : m_drawingRemenber) { if (element.first == m_buffer) { m_originScrooled = element.second; @@ -699,14 +704,6 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) { } } -void appl::TextViewer::onObjectRemove(const ewol::object::Shared& _removeObject) { - ewol::widget::WidgetScrolled::onObjectRemove(_removeObject); - if (m_buffer == _removeObject) { - m_buffer = NULL; - markToRedraw(); - } -} - void appl::TextViewer::onGetFocus() { showKeyboard(); APPL_INFO("Focus - In"); @@ -731,7 +728,7 @@ void appl::TextViewer::setFontName(const std::string& _fontName) { // TODO : Update process time ==> a little expensive (2->4ms) in end of file void appl::TextViewer::updateScrolling() { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } vec2 realCursorPosition(0,0); @@ -760,7 +757,7 @@ void appl::TextViewer::updateScrolling() { } bool appl::TextViewer::moveCursor(const appl::Buffer::Iterator& _pos) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return false; } markToRedraw(); @@ -774,7 +771,7 @@ bool appl::TextViewer::moveCursor(const appl::Buffer::Iterator& _pos) { } bool appl::TextViewer::write(const std::string& _data) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return false; } if (m_buffer->hasTextSelected() == true) { @@ -784,7 +781,7 @@ bool appl::TextViewer::write(const std::string& _data) { } bool appl::TextViewer::write(const std::string& _data, const appl::Buffer::Iterator& _pos) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return false; } markToRedraw(); @@ -800,7 +797,7 @@ bool appl::TextViewer::write(const std::string& _data, const appl::Buffer::Itera } bool appl::TextViewer::replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return false; } markToRedraw(); @@ -816,7 +813,7 @@ bool appl::TextViewer::replace(const std::string& _data, const appl::Buffer::Ite } bool appl::TextViewer::replace(const std::string& _data) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return false; } if (m_buffer->hasTextSelected() == false) { @@ -826,7 +823,7 @@ bool appl::TextViewer::replace(const std::string& _data) { } void appl::TextViewer::remove() { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } if (m_buffer->hasTextSelected() == false) { @@ -844,7 +841,7 @@ void appl::TextViewer::remove() { void appl::TextViewer::moveCursorRight(appl::TextViewer::moveMode _mode) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } markToRedraw(); @@ -867,7 +864,7 @@ void appl::TextViewer::moveCursorRight(appl::TextViewer::moveMode _mode) { } void appl::TextViewer::moveCursorLeft(appl::TextViewer::moveMode _mode) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } markToRedraw(); @@ -890,7 +887,7 @@ void appl::TextViewer::moveCursorLeft(appl::TextViewer::moveMode _mode) { } void appl::TextViewer::moveCursorUp(uint32_t _nbLine) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } markToRedraw(); @@ -916,7 +913,7 @@ void appl::TextViewer::moveCursorUp(uint32_t _nbLine) { } void appl::TextViewer::moveCursorDown(uint32_t _nbLine) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { return; } markToRedraw(); @@ -996,14 +993,14 @@ float appl::TextViewer::getScreenSize(const appl::Buffer::Iterator& _startLinePo } void appl::TextViewer::setCurrentSelect() { - if (m_viewerManager != NULL) { - m_viewerManager->setViewerSelected(this, m_buffer); + if (m_viewerManager != nullptr) { + m_viewerManager->setViewerSelected(std::dynamic_pointer_cast(shared_from_this()), m_buffer); } } bool appl::TextViewer::isSelectedLast() { - if (m_viewerManager != NULL) { - return m_viewerManager->isLastSelected(this); + if (m_viewerManager != nullptr) { + return m_viewerManager->isLastSelected(std::dynamic_pointer_cast(shared_from_this())); } return false; } diff --git a/sources/appl/Gui/TextViewer.h b/sources/appl/Gui/TextViewer.h index a56e6ed..5d2f676 100644 --- a/sources/appl/Gui/TextViewer.h +++ b/sources/appl/Gui/TextViewer.h @@ -24,7 +24,7 @@ namespace appl { class TextViewer : public ewol::widget::WidgetScrolled { private: - ewol::object::Shared m_paintingProperties; //!< element painting property + std::shared_ptr m_paintingProperties; //!< element painting property int32_t m_colorBackground; int32_t m_colorSpace; int32_t m_colorTabulation; @@ -33,25 +33,28 @@ namespace appl { int32_t m_colorSelection; int32_t m_colorNormal; private: - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager - ewol::object::Shared m_viewerManager; //!< handle on the buffer manager + std::shared_ptr m_bufferManager; //!< handle on the buffer manager + std::shared_ptr m_viewerManager; //!< handle on the buffer manager + protected: + TextViewer(); + void init(const std::string& _fontName="", int32_t _fontSize=-1); public: - TextViewer(const std::string& _fontName="", int32_t _fontSize=-1); + DECLARE_FACTORY(TextViewer); virtual ~TextViewer(); private: - ewol::object::Shared m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) + std::shared_ptr m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) public: /** * @brief Get the buffer property (only for the class : template class TextViewerPluginData) * @return pointer on buffer */ - ewol::object::Shared internalGetBuffer() { + std::shared_ptr internalGetBuffer() { return m_buffer; } private: ewol::compositing::Text m_displayText; //!< Text display properties. ewol::compositing::Drawing m_displayDrawing; //!< Other diaplay requested. - std::vector, vec2>> m_drawingRemenber; + std::vector, vec2>> m_drawingRemenber; public: void setFontSize(int32_t _size); void setFontName(const std::string& _fontName); @@ -61,7 +64,6 @@ namespace appl { virtual bool calculateMinSize(); virtual void onRegenerateDisplay(); virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _removeObject); virtual bool onEventInput(const ewol::event::Input& _event); virtual bool onEventEntry(const ewol::event::Entry& _event); virtual void onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID); @@ -85,7 +87,7 @@ namespace appl { bool replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd); bool replace(const std::string& _data); bool replace(const std::u32string& _data) { - return replace(std::to_string(_data)); + return replace(etk::to_string(_data)); } /** * @brief Remove selected data ... @@ -95,7 +97,7 @@ namespace appl { * @brief Remove selected data ... (No plugin call) */ void removeDirect() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return; } m_buffer->removeSelection(); @@ -108,7 +110,7 @@ namespace appl { * @return true of no error occured. */ bool copy(std::string& _data) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return false; } return m_buffer->copy(_data); @@ -120,7 +122,7 @@ namespace appl { * @param[in] _posEnd End position to end replace the data. */ void copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return; } m_buffer->copy(_data, _pos, _posEnd); @@ -132,7 +134,7 @@ namespace appl { * @return true if the write is done corectly */ bool writeDirect(const std::string& _data, const appl::Buffer::Iterator& _pos) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return false; } bool ret = m_buffer->write(_data, _pos); @@ -147,7 +149,7 @@ namespace appl { * @return true if the write is done corectly */ bool replaceDirect(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return false; } bool ret = m_buffer->replace(_data, _pos, _posEnd); @@ -208,14 +210,14 @@ namespace appl { * @return true if a display buffer is present, false otherwise. */ virtual bool hasBuffer() { - return m_buffer != NULL; + return m_buffer != nullptr; } /** * @brief Get the status of selection. * @return true if we have a current selection, false otherwise. */ virtual bool hasTextSelected() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return false; } return m_buffer->hasTextSelected(); @@ -224,7 +226,7 @@ namespace appl { * @brief Remove Selection of the buffer. */ virtual void unSelect() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return; } m_buffer->unSelect(); @@ -235,7 +237,7 @@ namespace appl { * @param[in] _stop Stop position of the selection (the curor is set at this position) */ virtual void select(const appl::Buffer::Iterator& _start, const appl::Buffer::Iterator& _stop) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return; } moveCursor(_stop); @@ -255,7 +257,7 @@ namespace appl { appl::Buffer::Iterator& _resultStart, appl::Buffer::Iterator& _resultStop, bool _caseSensitive = true) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return false; } bool ret = m_buffer->search(_pos, _search, _resultStart, _caseSensitive); @@ -278,7 +280,7 @@ namespace appl { appl::Buffer::Iterator& _resultStart, appl::Buffer::Iterator& _resultStop, bool _caseSensitive = true) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return false; } bool ret = m_buffer->searchBack(_pos, _search, _resultStart, _caseSensitive); @@ -297,7 +299,7 @@ namespace appl { bool getPosAround(const appl::Buffer::Iterator& _pos, appl::Buffer::Iterator &_beginPos, appl::Buffer::Iterator &_endPos) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return false; } return m_buffer->getPosAround(_pos, _beginPos, _endPos); @@ -308,7 +310,7 @@ namespace appl { * @return The Iterator */ appl::Buffer::Iterator position(int64_t _pos) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->position(_pos); @@ -318,7 +320,7 @@ namespace appl { * @return The iterator on the cursor position */ appl::Buffer::Iterator cursor() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->cursor(); @@ -328,7 +330,7 @@ namespace appl { * @return The iterator on the begin position */ appl::Buffer::Iterator begin() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->begin(); @@ -338,7 +340,7 @@ namespace appl { * @return The iterator on the end position */ appl::Buffer::Iterator end() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->end(); @@ -348,7 +350,7 @@ namespace appl { * @return The Iterator */ appl::Buffer::Iterator selectStart() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->selectStart(); @@ -358,7 +360,7 @@ namespace appl { * @return The Iterator */ appl::Buffer::Iterator selectStop() { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->selectStop(); @@ -369,7 +371,7 @@ namespace appl { * @return The position in the buffer of the start of the line. */ appl::Buffer::Iterator getStartLine(const appl::Buffer::Iterator& _pos) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->getStartLine(_pos); @@ -380,7 +382,7 @@ namespace appl { * @return The position in the buffer of the end of the line. */ appl::Buffer::Iterator getEndLine(const appl::Buffer::Iterator& _pos) { - if (m_buffer==NULL) { + if (m_buffer==nullptr) { return appl::Buffer::Iterator(); } return m_buffer->getEndLine(_pos); diff --git a/sources/appl/Gui/ViewerManager.cpp b/sources/appl/Gui/ViewerManager.cpp index 983d31d..54e404c 100644 --- a/sources/appl/Gui/ViewerManager.cpp +++ b/sources/appl/Gui/ViewerManager.cpp @@ -17,57 +17,30 @@ #undef __class__ #define __class__ "ViewerManager" -appl::ViewerManager::ViewerManager() : - ewol::Resource("???ViewerManager???"), - m_viewer(NULL) { +appl::ViewerManager::ViewerManager() { addObjectType("appl::ViewerManager"); // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); + m_bufferManager = appl::BufferManager::create(); +} + +void appl::ViewerManager::init(const std::string& _uniqueName) { + ewol::Resource::init(_uniqueName); } appl::ViewerManager::~ViewerManager() { } -bool appl::ViewerManager::isLastSelected(const ewol::object::Shared& _viewer) { - return m_viewer == _viewer; +bool appl::ViewerManager::isLastSelected(const std::shared_ptr& _viewer) { + return m_viewer.lock() == _viewer; } -void appl::ViewerManager::setViewerSelected(const ewol::object::Shared& _viewer, const ewol::object::Shared& _buffer) { - if (m_viewer == _viewer) { +void appl::ViewerManager::setViewerSelected(const std::shared_ptr& _viewer, const std::shared_ptr& _buffer) { + if (m_viewer.lock() == _viewer) { return; } m_viewer = _viewer; - if (m_bufferManager != NULL) { + if (m_bufferManager != nullptr) { m_bufferManager->setBufferSelected(_buffer); } } - -void appl::ViewerManager::onReceiveMessage(const ewol::object::Message& _msg) { - APPL_DEBUG("receive message !!! " << _msg); -} - -void appl::ViewerManager::onObjectRemove(const ewol::object::Shared& _removeObject) { - ewol::Resource:: onObjectRemove(_removeObject); - if (_removeObject == m_viewer) { - m_viewer.reset(); - return; - } -} - -ewol::object::Shared appl::ViewerManager::keep() { - //EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); - ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep("???ViewerManager???")); - if (NULL != object) { - return object; - } - // this element create a new one every time .... - EWOL_INFO("CREATE : appl::ViewerManager: ???ViewerManager???"); - object = ewol::object::makeShared(new appl::ViewerManager()); - if (NULL == object) { - EWOL_ERROR("allocation error of a resource : ???ViewerManager???"); - return NULL; - } - getManager().localAdd(object); - return object; -} diff --git a/sources/appl/Gui/ViewerManager.h b/sources/appl/Gui/ViewerManager.h index 42c5e4e..95f24e0 100644 --- a/sources/appl/Gui/ViewerManager.h +++ b/sources/appl/Gui/ViewerManager.h @@ -20,41 +20,32 @@ namespace appl { class ViewerManager : public ewol::Resource { protected: ViewerManager(); + void init(const std::string& _uniqueName); public: + DECLARE_RESOURCE_SINGLE_FACTORY(ViewerManager, "???ViewerManager???"); virtual ~ViewerManager(); private: - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager - ewol::object::Shared m_viewer; + std::shared_ptr m_bufferManager; //!< handle on the buffer manager + std::weak_ptr m_viewer; public: /** * @brief Set the current buffer selected * @param[in] _viewer Pointer on the viewer selected */ - void setViewerSelected(const ewol::object::Shared& _viewer, const ewol::object::Shared& _buffer); + void setViewerSelected(const std::shared_ptr& _viewer, const std::shared_ptr& _buffer); /** * @brief Get the current buffer selected * @return Pointer on the buffer selected */ - ewol::object::Shared getViewerSelected() { - return m_viewer; + std::shared_ptr getViewerSelected() { + return m_viewer.lock(); }; /** * @breif Check if the element is the last request selection * @param[in] _viewer element selected. * @return true if the element is selected */ - bool isLastSelected(const ewol::object::Shared& _viewer); - public: // herited function - void onReceiveMessage(const ewol::object::Message& _msg); - void onObjectRemove(const ewol::object::Shared& _removeObject); - public: // resource manager - /** - * @brief keep the resource pointer. - * @note Never free this pointer by your own... - * @param[in] _filename Name of the configuration file. - * @return pointer on the resource or NULL if an error occured. - */ - static ewol::object::Shared keep(); + bool isLastSelected(const std::shared_ptr& _viewer); }; }; diff --git a/sources/appl/Gui/WorkerCloseAllFile.cpp b/sources/appl/Gui/WorkerCloseAllFile.cpp index 4c0d8db..aada838 100644 --- a/sources/appl/Gui/WorkerCloseAllFile.cpp +++ b/sources/appl/Gui/WorkerCloseAllFile.cpp @@ -15,26 +15,28 @@ static const char* s_closeDone = "close-done"; -appl::WorkerCloseAllFile::WorkerCloseAllFile() : - m_worker(NULL), - m_bufferManager(NULL) { +appl::WorkerCloseAllFile::WorkerCloseAllFile() { addObjectType("appl::WorkerCloseAllFile"); // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); - - if (m_bufferManager == NULL) { + m_bufferManager = appl::BufferManager::create(); +} + +void appl::WorkerCloseAllFile::init() { + ewol::Object::init(); + if (m_bufferManager == nullptr) { APPL_ERROR("can not call unexistant buffer manager ... "); autoDestroy(); return; } // List all current open file : for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) { - ewol::object::Shared tmpBuffer = m_bufferManager->get(iii); - if (tmpBuffer == NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->get(iii); + if (tmpBuffer == nullptr) { continue; } if (tmpBuffer->isModify() == false) { - tmpBuffer->removeObject(); + APPL_TODO("destroy object"); + tmpBuffer->destroy(); continue; } m_bufferNameList.push_back(tmpBuffer->getFileName()); @@ -45,14 +47,14 @@ appl::WorkerCloseAllFile::WorkerCloseAllFile() : return; } // create the worker : - m_worker = ewol::object::makeShared(new appl::WorkerCloseFile(m_bufferNameList.front())); + m_worker = appl::WorkerCloseFile::create(m_bufferNameList.front()); // remove first element : m_bufferNameList.erase(m_bufferNameList.begin()); if (m_bufferNameList.size() == 0) { autoDestroy(); return; } - m_worker->registerOnEvent(this, appl::WorkerCloseFile::eventCloseDone, s_closeDone); + m_worker->registerOnEvent(shared_from_this(), appl::WorkerCloseFile::eventCloseDone, s_closeDone); } appl::WorkerCloseAllFile::~WorkerCloseAllFile() { @@ -60,7 +62,7 @@ appl::WorkerCloseAllFile::~WorkerCloseAllFile() { } void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _msg) { - if (m_bufferManager == NULL) { + if (m_bufferManager == nullptr) { // nothing to do in this case ==> can do nothing ... return; } @@ -70,25 +72,14 @@ void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _ms return; } // create the worker : - m_worker = ewol::object::makeShared(new appl::WorkerCloseFile(m_bufferNameList.front())); + m_worker = appl::WorkerCloseFile::create(m_bufferNameList.front()); // remove first element : m_bufferNameList.erase(m_bufferNameList.begin()); if (m_bufferNameList.size() == 0) { autoDestroy(); return; } - m_worker->registerOnEvent(this, appl::WorkerCloseFile::eventCloseDone, s_closeDone); - } -} - -void appl::WorkerCloseAllFile::onObjectRemove(const ewol::object::Shared& _removeObject) { - if (_removeObject == m_worker) { - m_worker = NULL; - APPL_VERBOSE("AutoRemove After saving sub widget ..."); - autoDestroy(); - } else if (_removeObject == m_bufferManager) { - m_bufferManager = NULL; - autoDestroy(); + m_worker->registerOnEvent(shared_from_this(), appl::WorkerCloseFile::eventCloseDone, s_closeDone); } } diff --git a/sources/appl/Gui/WorkerCloseAllFile.h b/sources/appl/Gui/WorkerCloseAllFile.h index 8d6714e..5615fca 100644 --- a/sources/appl/Gui/WorkerCloseAllFile.h +++ b/sources/appl/Gui/WorkerCloseAllFile.h @@ -14,16 +14,18 @@ namespace appl { class WorkerCloseAllFile : public ewol::Object { - public: + protected: WorkerCloseAllFile(); + void init(); + public: + DECLARE_FACTORY(WorkerCloseAllFile); virtual ~WorkerCloseAllFile(); private: std::vector m_bufferNameList; - ewol::object::Shared m_worker; //! pop-up element that is open... - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + std::shared_ptr m_worker; //! pop-up element that is open... + std::shared_ptr m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/WorkerCloseFile.cpp b/sources/appl/Gui/WorkerCloseFile.cpp index aa304d3..c5f4a11 100644 --- a/sources/appl/Gui/WorkerCloseFile.cpp +++ b/sources/appl/Gui/WorkerCloseFile.cpp @@ -21,25 +21,28 @@ static const char* s_saveValidate = "save-validate"; static const char* s_closeValidate = "close-validate"; static const char* s_saveAsDone = "save-as-done"; -appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) : - m_bufferName(_bufferName), - m_buffer(NULL), - m_worker(NULL), - m_bufferManager(NULL) { +appl::WorkerCloseFile::WorkerCloseFile() : + m_buffer(nullptr), + m_worker(nullptr), + m_bufferManager(nullptr) { addObjectType("appl::WorkerCloseFile"); addEventId(eventCloseDone); // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); - - if (m_bufferManager == NULL) { + m_bufferManager = appl::BufferManager::create(); +} + +void appl::WorkerCloseFile::init(const std::string& _bufferName) { + ewol::Object::init(); + m_bufferName = _bufferName; + if (m_bufferManager == nullptr) { APPL_ERROR("can not call unexistant buffer manager ... "); autoDestroy(); return; } if (m_bufferName == "") { // need to find the curent file ... - ewol::object::Shared tmpp = m_bufferManager->getBufferSelected(); - if (tmpp == NULL) { + std::shared_ptr tmpp = m_bufferManager->getBufferSelected(); + if (tmpp == nullptr) { APPL_ERROR("No selected buffer now ..."); autoDestroy(); return; @@ -52,43 +55,43 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) : return; } m_buffer = m_bufferManager->get(m_bufferName); - if (m_buffer == NULL) { + if (m_buffer == nullptr) { APPL_ERROR("Error to get the buffer : " << m_bufferName); autoDestroy(); return; } if (m_buffer->isModify() == false) { generateEventId(eventCloseDone); - m_buffer->removeObject(); + m_buffer->destroy(); return; } - ewol::object::Shared tmpPopUp = ewol::object::makeShared(new ewol::widget::StdPopUp()); - if (tmpPopUp == NULL) { + std::shared_ptr tmpPopUp = ewol::widget::StdPopUp::create(); + if (tmpPopUp == nullptr) { APPL_ERROR("Can not create a simple pop-up"); return; } tmpPopUp->setTitle("Close un-saved file:"); tmpPopUp->setComment("The file named : \"" + m_buffer->getFileName() + "\" is curently modify.
If you don't saves these modifications,
they will be definitly lost..."); - ewol::object::Shared bt = NULL; + std::shared_ptr bt = nullptr; if (m_buffer->hasFileName() == true) { bt = tmpPopUp->addButton("Save", true); - if (bt != NULL) { - bt->registerOnEvent(this, "pressed", s_saveValidate); + if (bt != nullptr) { + bt->registerOnEvent(shared_from_this(), "pressed", s_saveValidate); } } bt = tmpPopUp->addButton("Save As", true); - if (bt != NULL) { - bt->registerOnEvent(this, "pressed", s_saveAsValidate); + if (bt != nullptr) { + bt->registerOnEvent(shared_from_this(), "pressed", s_saveAsValidate); } bt = tmpPopUp->addButton("Close", true); - if (bt != NULL) { - bt->registerOnEvent(this, "pressed", s_closeValidate); + if (bt != nullptr) { + bt->registerOnEvent(shared_from_this(), "pressed", s_closeValidate); } tmpPopUp->addButton("Cancel", true); tmpPopUp->setRemoveOnExternClick(true); - ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); - if (tmpWindows == NULL) { + std::shared_ptr tmpWindows = ewol::getContext().getWindows(); + if (tmpWindows == nullptr) { APPL_ERROR("Error to get the windows."); autoDestroy(); return; @@ -101,25 +104,25 @@ appl::WorkerCloseFile::~WorkerCloseFile() { } void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) { - if (m_bufferManager == NULL) { + if (m_bufferManager == nullptr) { // nothing to do in this case ==> can do nothing ... return; } APPL_DEBUG("have message : " << _msg); if (_msg.getMessage() == s_saveAsValidate) { - m_worker = ewol::object::makeShared(new appl::WorkerSaveFile(m_bufferName)); - if (m_worker != NULL) { - m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); + m_worker = appl::WorkerSaveFile::create(m_bufferName); + if (m_worker != nullptr) { + m_worker->registerOnEvent(shared_from_this(), appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); } } else if (_msg.getMessage() == s_saveValidate) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { APPL_ERROR("Error to get the buffer : oldName=" << m_bufferName); autoDestroy(); return; } if (m_buffer->storeFile() == false) { - ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); - if (tmpWindows == NULL) { + std::shared_ptr tmpWindows = ewol::getContext().getWindows(); + if (tmpWindows == nullptr) { return; } tmpWindows->displayWarningMessage("We can not save the file :
" + m_buffer->getFileName() + ""); @@ -128,27 +131,14 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) } } else if ( _msg.getMessage() == s_closeValidate || _msg.getMessage() == s_saveAsDone) { - if (m_buffer == NULL) { + if (m_buffer == nullptr) { APPL_ERROR("Error to get the buffer : " << m_bufferName); autoDestroy(); return; } generateEventId(eventCloseDone); - m_buffer->removeObject(); - } -} - -void appl::WorkerCloseFile::onObjectRemove(const ewol::object::Shared& _removeObject) { - if (_removeObject == m_worker) { - m_worker = NULL; - APPL_VERBOSE("AutoRemove After closing sub widget ..."); - autoDestroy(); - } else if (_removeObject == m_bufferManager) { - m_bufferManager = NULL; - autoDestroy(); - } else if (_removeObject == m_buffer) { - m_buffer = NULL; - autoDestroy(); + m_buffer->destroy(); + m_buffer.reset(); } } diff --git a/sources/appl/Gui/WorkerCloseFile.h b/sources/appl/Gui/WorkerCloseFile.h index 10f111a..31354c4 100644 --- a/sources/appl/Gui/WorkerCloseFile.h +++ b/sources/appl/Gui/WorkerCloseFile.h @@ -17,18 +17,20 @@ namespace appl { class WorkerCloseFile : public ewol::Object { public: static const char* eventCloseDone; - public: + protected: // note : if == "" ==> current ... - WorkerCloseFile(const std::string& _bufferName); + WorkerCloseFile(); + void init(const std::string& _bufferName); + public: + DECLARE_FACTORY(WorkerCloseFile); virtual ~WorkerCloseFile(); private: std::string m_bufferName; - ewol::object::Shared m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer - ewol::object::Shared m_worker; //! sub-worker element... - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + std::shared_ptr m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer + std::shared_ptr m_worker; //! sub-worker element... + std::shared_ptr m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/WorkerSaveAllFile.cpp b/sources/appl/Gui/WorkerSaveAllFile.cpp index 5350729..68a9381 100644 --- a/sources/appl/Gui/WorkerSaveAllFile.cpp +++ b/sources/appl/Gui/WorkerSaveAllFile.cpp @@ -15,22 +15,23 @@ static const char* s_saveAsDone = "save-as-done"; -appl::WorkerSaveAllFile::WorkerSaveAllFile() : - m_worker(NULL), - m_bufferManager(NULL) { +appl::WorkerSaveAllFile::WorkerSaveAllFile() { addObjectType("appl::WorkerSaveAllFile"); // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); - - if (m_bufferManager == NULL) { + m_bufferManager = appl::BufferManager::create(); +} + +void appl::WorkerSaveAllFile::init() { + ewol::Object::init(); + if (m_bufferManager == nullptr) { APPL_ERROR("can not call unexistant buffer manager ... "); autoDestroy(); return; } // List all current open file : for (int32_t iii=0; iiisize(); ++iii) { - ewol::object::Shared tmpBuffer = m_bufferManager->get(iii); - if (tmpBuffer == NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->get(iii); + if (tmpBuffer == nullptr) { continue; } if (tmpBuffer->isModify() == false) { @@ -48,14 +49,14 @@ appl::WorkerSaveAllFile::WorkerSaveAllFile() : return; } // create the worker : - m_worker = ewol::object::makeShared(new appl::WorkerSaveFile(m_bufferNameList.front())); + m_worker = appl::WorkerSaveFile::create(m_bufferNameList.front()); // remove first element : m_bufferNameList.erase(m_bufferNameList.begin()); if (m_bufferNameList.size() == 0) { autoDestroy(); return; } - m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); + m_worker->registerOnEvent(shared_from_this(), appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); } appl::WorkerSaveAllFile::~WorkerSaveAllFile() { @@ -63,7 +64,7 @@ appl::WorkerSaveAllFile::~WorkerSaveAllFile() { } void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg) { - if (m_bufferManager == NULL) { + if (m_bufferManager == nullptr) { // nothing to do in this case ==> can do nothing ... return; } @@ -73,25 +74,14 @@ void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg return; } // create the worker : - m_worker = new appl::WorkerSaveFile(m_bufferNameList.front()); + m_worker = appl::WorkerSaveFile::create(m_bufferNameList.front()); // remove first element : m_bufferNameList.erase(m_bufferNameList.begin()); if (m_bufferNameList.size() == 0) { autoDestroy(); return; } - m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); - } -} - -void appl::WorkerSaveAllFile::onObjectRemove(const ewol::object::Shared& _removeObject) { - if (_removeObject == m_worker) { - m_worker = NULL; - APPL_VERBOSE("AutoRemove After saving sub widget ..."); - autoDestroy(); - } else if (_removeObject == m_bufferManager) { - m_bufferManager = NULL; - autoDestroy(); + m_worker->registerOnEvent(shared_from_this(), appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); } } diff --git a/sources/appl/Gui/WorkerSaveAllFile.h b/sources/appl/Gui/WorkerSaveAllFile.h index 2d8c0d4..8909655 100644 --- a/sources/appl/Gui/WorkerSaveAllFile.h +++ b/sources/appl/Gui/WorkerSaveAllFile.h @@ -14,16 +14,18 @@ namespace appl { class WorkerSaveAllFile : public ewol::Object { - public: + protected: WorkerSaveAllFile(); + void init(); + public: + DECLARE_FACTORY(WorkerSaveAllFile); virtual ~WorkerSaveAllFile(); private: std::vector m_bufferNameList; - ewol::object::Shared m_worker; //! pop-up element that is open... - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + std::shared_ptr m_worker; //! pop-up element that is open... + std::shared_ptr m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/WorkerSaveFile.cpp b/sources/appl/Gui/WorkerSaveFile.cpp index c331126..dde1524 100644 --- a/sources/appl/Gui/WorkerSaveFile.cpp +++ b/sources/appl/Gui/WorkerSaveFile.cpp @@ -17,24 +17,25 @@ const char* appl::WorkerSaveFile::eventSaveDone = "save-file-done"; static const char* s_saveAsValidate = "save-as-validate"; -appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _forceSaveAs) : - m_bufferName(_bufferName), - m_chooser(NULL), - m_bufferManager(NULL) { +appl::WorkerSaveFile::WorkerSaveFile() { addObjectType("appl::WorkerSaveFile"); addEventId(eventSaveDone); // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); - - if (m_bufferManager == NULL) { + m_bufferManager = appl::BufferManager::create(); +} + +void appl::WorkerSaveFile::init(const std::string& _bufferName, bool _forceSaveAs) { + ewol::Object::init(); + m_bufferName = _bufferName; + if (m_bufferManager == nullptr) { APPL_ERROR("can not call unexistant buffer manager ... "); autoDestroy(); return; } if (m_bufferName == "") { // need to find the curent file ... - ewol::object::Shared tmpp = m_bufferManager->getBufferSelected(); - if (tmpp == NULL) { + std::shared_ptr tmpp = m_bufferManager->getBufferSelected(); + if (tmpp == nullptr) { APPL_ERROR("No selected buffer now ..."); autoDestroy(); return; @@ -46,8 +47,8 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force autoDestroy(); return; } - ewol::object::Shared tmpBuffer = m_bufferManager->get(m_bufferName); - if (tmpBuffer == NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->get(m_bufferName); + if (tmpBuffer == nullptr) { APPL_ERROR("Error to get the buffer : " << m_bufferName); autoDestroy(); return; @@ -60,8 +61,8 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force return; } } - m_chooser = ewol::object::makeShared(new ewol::widget::FileChooser()); - if (NULL == m_chooser) { + m_chooser = ewol::widget::FileChooser::create(); + if (nullptr == m_chooser) { APPL_ERROR("Can not allocate widget == > display might be in error"); autoDestroy(); return; @@ -71,14 +72,14 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force etk::FSNode tmpName(m_bufferName); m_chooser->setFolder(tmpName.getNameFolder()); m_chooser->setFileName(tmpName.getNameFile()); - ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); - if (tmpWindows == NULL) { + std::shared_ptr tmpWindows = ewol::getContext().getWindows(); + if (tmpWindows == nullptr) { APPL_ERROR("Error to get the windows."); autoDestroy(); return; } tmpWindows->popUpWidgetPush(m_chooser); - m_chooser->registerOnEvent(this, ewol::widget::FileChooser::eventValidate, s_saveAsValidate); + m_chooser->registerOnEvent(shared_from_this(), ewol::widget::FileChooser::eventValidate, s_saveAsValidate); } appl::WorkerSaveFile::~WorkerSaveFile() { @@ -86,7 +87,7 @@ appl::WorkerSaveFile::~WorkerSaveFile() { } void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) { - if (m_bufferManager == NULL) { + if (m_bufferManager == nullptr) { // nothing to do in this case ==> can do nothing ... return; } @@ -99,15 +100,15 @@ void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) { APPL_ERROR("Try to save an non-existant file :" << m_bufferName); return; } - ewol::object::Shared tmpBuffer = m_bufferManager->get(m_bufferName); - if (tmpBuffer == NULL) { + std::shared_ptr tmpBuffer = m_bufferManager->get(m_bufferName); + if (tmpBuffer == nullptr) { APPL_ERROR("Error to get the buffer : " << m_bufferName); return; } tmpBuffer->setFileName(_msg.getData()); if (tmpBuffer->storeFile() == false) { - ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); - if (tmpWindows == NULL) { + std::shared_ptr tmpWindows = ewol::getContext().getWindows(); + if (tmpWindows == nullptr) { return; } tmpWindows->displayWarningMessage("We can not save the file :
" + tmpBuffer->getFileName() + ""); @@ -117,14 +118,3 @@ void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) { } } -void appl::WorkerSaveFile::onObjectRemove(const ewol::object::Shared& _removeObject) { - if (_removeObject == m_chooser) { - m_chooser = NULL; - APPL_VERBOSE("AutoRemove After closing sub widget ..."); - autoDestroy(); - } else if (_removeObject == m_bufferManager) { - m_bufferManager = NULL; - autoDestroy(); - } -} - diff --git a/sources/appl/Gui/WorkerSaveFile.h b/sources/appl/Gui/WorkerSaveFile.h index 03c1e6f..3fbf3b6 100644 --- a/sources/appl/Gui/WorkerSaveFile.h +++ b/sources/appl/Gui/WorkerSaveFile.h @@ -16,16 +16,18 @@ namespace appl { class WorkerSaveFile : public ewol::Object { public: static const char* eventSaveDone; + protected: + WorkerSaveFile(); + void init(const std::string& _bufferName, bool _forceSaveAs=true); public: - WorkerSaveFile(const std::string& _bufferName, bool _forceSaveAs=true); + DECLARE_FACTORY(WorkerSaveFile); virtual ~WorkerSaveFile(); private: std::string m_bufferName; - ewol::object::Shared m_chooser; //! pop-up element that is open... - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + std::shared_ptr m_chooser; //! pop-up element that is open... + std::shared_ptr m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Highlight.cpp b/sources/appl/Highlight.cpp index eff62d9..0fc9a11 100644 --- a/sources/appl/Highlight.cpp +++ b/sources/appl/Highlight.cpp @@ -35,12 +35,15 @@ void appl::Highlight::parseRules(exml::Element* _child, _mListPatern.push_back(std::unique_ptr(myPattern)); } -appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _colorFile) : - ewol::Resource(_xmlFilename), - m_typeName("") { +appl::Highlight::Highlight() { addObjectType("appl::Highlight"); +} + +void appl::Highlight::init(const std::string& _xmlFilename, const std::string& _colorFile) { + ewol::Resource::init(_xmlFilename); + // keep color propertiy file : - m_paintingProperties = appl::GlyphPainting::keep(_colorFile); + m_paintingProperties = appl::GlyphPainting::create(_colorFile); exml::Document doc; if (doc.load(_xmlFilename) == false) { @@ -48,7 +51,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ return; } exml::Element* root = doc.getNamed("EdnLang"); - if (NULL == root ) { + if (nullptr == root ) { APPL_ERROR("(l ?) main node not find: \"EdnLang\" ..."); return; } @@ -58,7 +61,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ // parse all the elements : for(size_t iii = 0; iii < root->size(); ++iii) { exml::Element* child = root->getElement(iii); - if (child == NULL) { + if (child == nullptr) { // trash here all that is not element ... continue; } @@ -72,7 +75,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ // get sub Nodes ... for(size_t jjj=0; jjj< child->size(); jjj++) { exml::Element* passChild = child->getElement(jjj); - if (passChild == NULL) { + if (passChild == nullptr) { continue; } if (passChild->getValue() != "rule") { @@ -85,7 +88,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ // get sub Nodes ... for(size_t jjj=0; jjj< child->size(); jjj++) { exml::Element* passChild = child->getElement(jjj); - if (passChild == NULL) { + if (passChild == nullptr) { continue; } if (passChild->getValue() != "rule") { @@ -177,22 +180,22 @@ void appl::Highlight::parse(int64_t _start, //try to fond the HL in ALL of we have for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass1.size(); jjj++){ enum resultFind ret = HLP_FIND_OK; - HL_DEBUG("Parse HL id=" << jjj << " position search: (" << elementStart << "," << _stop << ")" ); + HL_DEBUG("Parse HL id=" << jjj << " position search: (" << elementStart << "," << _stop << ") input start='" << _buffer[elementStart] << "' " << m_listHighlightPass1[jjj]->getPaternString()); // Stop the search to the end (to get the end of the pattern) ret = m_listHighlightPass1[jjj]->find(elementStart, _buffer.size(), resultat, _buffer); if (HLP_FIND_ERROR != ret) { - HL_DEBUG("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" ); + HL_DEBUG("Find Pattern in the Buffer : (" << resultat.start << "," << resultat.stop << ")" ); // remove element in the current List where the current Element have a end inside the next... int64_t kkk=_addingPos; while(kkk < (int64_t)_metaData.size() ) { - if (_metaData[kkk].beginStart <= resultat.endStop) { + if (_metaData[kkk].start <= resultat.stop) { // remove element HL_DEBUG("Erase element=" << kkk); _metaData.erase(_metaData.begin()+kkk, _metaData.begin()+kkk+1); // Increase the end of search if (kkk < (int64_t)_metaData.size()) { // just befor the end of the next element - elementStop = _metaData[kkk].beginStart-1; + elementStop = _metaData[kkk].start-1; } else { // end of the buffer elementStop = _buffer.size(); @@ -204,9 +207,9 @@ void appl::Highlight::parse(int64_t _start, } // add curent element in the list ... _metaData.insert(_metaData.begin()+_addingPos, resultat); - HL_DEBUG("INSERT at "<< _addingPos << " S=" << resultat.beginStart << " E=" << resultat.endStop ); + HL_DEBUG("INSERT at "<< _addingPos << " S=" << resultat.start << " E=" << resultat.stop ); // update the current research starting element: (set position at the end of the current element - elementStart = resultat.endStop-1; + elementStart = resultat.stop-1; // increment the position of insertion: _addingPos++; // We find a pattern == > Stop search for the current element @@ -234,19 +237,23 @@ void appl::Highlight::parse2(int64_t _start, appl::HighlightInfo resultat; while (elementStart < elementStop) { + if (elementStart == 306) { + //etk::log::setLevel(etk::log::logLevelVerbose); + } //HL2_DEBUG("Parse element in the buffer pos=" << elementStart << "," << _buffer.size() << ")" ); //try to fond the HL in ALL of we have for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass2.size(); jjj++){ enum resultFind ret = HLP_FIND_OK; HL2_DEBUG("Parse HL id=" << jjj << " position search: (" << - _start << "," << _buffer.size() << ")" ); + elementStart << "," << elementStop << ") in='" + << _buffer[elementStart] << "' " << m_listHighlightPass2[jjj]->getPaternString()); // Stop the search to the end (to get the end of the pattern) ret = m_listHighlightPass2[jjj]->find(elementStart, elementStop, resultat, _buffer); - if (HLP_FIND_ERROR != ret) { - HL2_DEBUG("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" ); + if (ret != HLP_FIND_ERROR) { + HL2_DEBUG("Find Pattern in the Buffer : (" << resultat.start << "," << resultat.stop << ")" ); // add curent element in the list ... _metaData.push_back(resultat); - elementStart = resultat.endStop-1; + elementStart = resultat.stop-1; // Exit current cycle break; } @@ -255,21 +262,3 @@ void appl::Highlight::parse2(int64_t _start, elementStart++; } } - -ewol::object::Shared appl::Highlight::keep(const std::string& _filename) { - //EWOL_INFO("KEEP : appl::Highlight : file : \"" << _filename << "\""); - ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep(_filename)); - if (NULL != object) { - return object; - } - EWOL_INFO("CREATE : appl::Highlight : file : \"" << _filename << "\""); - // this element create a new one every time .... - object = ewol::object::makeShared(new appl::Highlight(_filename, "THEME:COLOR:textViewer.json")); - if (NULL == object) { - EWOL_ERROR("allocation error of a resource : ??Highlight??"); - return NULL; - } - getManager().localAdd(object); - return object; -} - diff --git a/sources/appl/Highlight.h b/sources/appl/Highlight.h index a481694..87508c7 100644 --- a/sources/appl/Highlight.h +++ b/sources/appl/Highlight.h @@ -16,10 +16,8 @@ namespace appl { class HighlightInfo { public: - int32_t beginStart; - int32_t beginStop; - int32_t endStart; - int32_t endStop; + int32_t start; + int32_t stop; bool notEnded; appl::HighlightPattern* patern; // pointer on class : }; @@ -35,11 +33,13 @@ namespace appl { namespace appl { class Highlight : public ewol::Resource { private: - ewol::object::Shared m_paintingProperties; - protected: - // Constructeur - Highlight(const std::string& _xmlFilename, const std::string& _colorFile); + std::shared_ptr m_paintingProperties; public: + // Constructeur + Highlight(); + void init(const std::string& _xmlFilename, const std::string& _colorFile = "THEME:COLOR:textViewer.json"); + public: + DECLARE_RESOURCE_NAMED_FACTORY(Highlight); virtual ~Highlight(); private: std::string m_typeName; //!< descriptive string type like "C/C++" @@ -68,14 +68,6 @@ namespace appl { std::vector m_listExtentions; //!< List of possible extention for this high-light, like : ".c", ".cpp", ".h" std::vector> m_listHighlightPass1; //!< List of ALL hightlight modules (pass 1 == > when we load and wride data on the buffer) std::vector> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) ) - public: - /** - * @brief keep the resource pointer. - * @note Never free this pointer by your own... - * @param[in] _filename Name of the configuration file. - * @return pointer on the resource or NULL if an error occured. - */ - static ewol::object::Shared keep(const std::string& _filename); public: // herited function : virtual void updateContext() { // no upfate to do ... diff --git a/sources/appl/HighlightManager.cpp b/sources/appl/HighlightManager.cpp index d926d04..447108b 100644 --- a/sources/appl/HighlightManager.cpp +++ b/sources/appl/HighlightManager.cpp @@ -17,14 +17,14 @@ // TODO : Review this in a generic unique resource ... -static std::vector>& s_list() { - static std::vector> list; +static std::vector>& s_list() { + static std::vector> list; return list; } void appl::highlightManager::init() { - std::vector>& hlList = s_list(); + std::vector>& hlList = s_list(); if (hlList.size() != 0) { APPL_ERROR("HighlightManager == > already exist, just unlink the previous ..."); hlList.clear(); @@ -34,7 +34,7 @@ void appl::highlightManager::init() { // get the subfolder list : std::vector list = myFile.folderGetSubList(false, true, false,false); for (auto &it : list) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->getNodeType() != etk::FSN_FOLDER) { @@ -42,8 +42,8 @@ void appl::highlightManager::init() { } std::string filename = it->getName() + "/highlight.xml"; APPL_DEBUG("Load xml name : " << filename); - ewol::object::Shared myHightLine = appl::Highlight::keep(filename); - if (myHightLine != NULL) { + std::shared_ptr myHightLine = appl::Highlight::create(filename); + if (myHightLine != nullptr) { hlList.push_back(myHightLine); } else { APPL_ERROR("Can not allocate HighLight"); @@ -52,7 +52,7 @@ void appl::highlightManager::init() { // display : /* for (auto &it : hlList) { - if (it == NULL) { + if (it == nullptr) { continue; } it->display(); @@ -61,7 +61,7 @@ void appl::highlightManager::init() { } void appl::highlightManager::unInit() { - std::vector>& hlList = s_list(); + std::vector>& hlList = s_list(); if (hlList.size() == 0) { APPL_DEBUG("HighlightManager ==> no highlight"); hlList.clear(); @@ -75,9 +75,9 @@ std::string appl::highlightManager::getTypeExtention(const std::string& _extenti return ""; } APPL_DEBUG("Try to find type for extention : '" << _extention << "' in " << s_list().size() << " types"); - std::vector>& hlList = s_list(); + std::vector>& hlList = s_list(); for (auto &it : hlList) { - if (it == NULL) { + if (it == nullptr) { continue; } APPL_DEBUG(" check : " << it->getTypeName()); @@ -95,7 +95,7 @@ std::string appl::highlightManager::getFileWithTypeType(const std::string& _type return ""; } for (auto &it : s_list()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->getTypeName() == _type) { diff --git a/sources/appl/HighlightPattern.cpp b/sources/appl/HighlightPattern.cpp index cf50768..ade0386 100644 --- a/sources/appl/HighlightPattern.cpp +++ b/sources/appl/HighlightPattern.cpp @@ -13,43 +13,27 @@ #undef __class__ #define __class__ "HighlightPattern" -appl::HighlightPattern::HighlightPattern(const ewol::object::Shared& _glyphPainting) : +appl::HighlightPattern::HighlightPattern(const std::shared_ptr& _glyphPainting) : m_glyphPainting(_glyphPainting), m_paternName(""), - m_regExpStart(nullptr), - m_regExpStop(nullptr), + m_regExp(nullptr), m_colorName(""), - m_escapeChar(u32char::Null), - m_multiline(false), m_level(0) { - m_regExpStart = std::unique_ptr>(new etk::RegExp()); + m_regExp = std::unique_ptr>(new etk::RegExp()); } appl::HighlightPattern::~HighlightPattern() { } -void appl::HighlightPattern::setPaternStart(std::string& _regExp) { - if (m_regExpStart == NULL) { +void appl::HighlightPattern::setPatern(std::string& _regExp) { + if (m_regExp == nullptr) { return; } - m_regExpStart->compile(_regExp); + m_regExp->compile(_regExp); } - -void appl::HighlightPattern::setPaternStop(std::string& _regExp) { - m_regExpStop.reset(); - if (_regExp.size() != 0) { - m_regExpStop = std::unique_ptr>(new etk::RegExp()); - if (m_regExpStop != NULL) { - m_regExpStop->compile(_regExp); - } else { - APPL_ERROR("Allocation error"); - } - } -} - -void appl::HighlightPattern::setEscapeChar(const char32_t& _EscapeChar) { - m_escapeChar = _EscapeChar; +std::string appl::HighlightPattern::getPaternString() { + return m_regExp->getRegExDecorated(); } void appl::HighlightPattern::setColorGlyph(std::string& _colorName) { @@ -59,17 +43,9 @@ void appl::HighlightPattern::setColorGlyph(std::string& _colorName) { } void appl::HighlightPattern::display() { - APPL_INFO("patern : \"" << m_paternName << "\" level=" << m_level ); - APPL_INFO(" == > colorName \"" << m_colorName << "\""); - APPL_INFO(" == > regExpStart \"" << m_regExpStart->getRegExp() << "\""); - if (m_regExpStop != NULL) { - APPL_INFO(" == > regExpStop \"" << m_regExpStop->getRegExp() << "\""); - } - if (m_multiline == true) { - APPL_INFO(" == > multiline pattern: YES"); - } else { - APPL_INFO(" == > multiline pattern: NO"); - } + APPL_INFO("patern : '" << m_paternName << "' level=" << m_level ); + APPL_INFO(" == > colorName '" << m_colorName << "'"); + APPL_INFO(" == > regExp '" << m_regExp->getRegExp() << "'"); } void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { @@ -77,9 +53,7 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { /* preprocesseur - # - $ - yes + # */ //-------------------------------------------------------------------------------------------- @@ -93,7 +67,7 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { setLevel(_level); exml::Element* xChild = _child->getNamed("color"); - if (NULL != xChild) { + if (nullptr != xChild) { std::string myData = xChild->getText(); if (myData.size() != 0) { //APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); @@ -101,30 +75,13 @@ void appl::HighlightPattern::parseRules(exml::Element* _child, int32_t _level) { setColorGlyph(myEdnData); } } - xChild = _child->getNamed("start"); - if (NULL != xChild) { + xChild = _child->getNamed("regex"); + if (nullptr != xChild) { std::string myData = xChild->getText(); if (myData.size() != 0) { //APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); std::string myEdnData = myData; - setPaternStart(myEdnData); - } - } - xChild = _child->getNamed("end"); - if (NULL != xChild) { - std::string myData = xChild->getText(); - if (myData.size() != 0) { - //APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); - std::string myEdnData = myData; - setPaternStop(myEdnData); - } - } - xChild = _child->getNamed("EscapeChar"); - if (NULL != xChild) { - std::string myData = xChild->getText(); - if (myData.size() != 0) { - //APPL_INFO(PFX"(l %d) node fined : %s=\"%s\"", xChild->Row(), xChild->Value() , myData); - setEscapeChar(myData[0]); + setPatern(myEdnData); } } } @@ -135,41 +92,17 @@ enum resultFind appl::HighlightPattern::find(int32_t _start, appl::HighlightInfo& _resultat, etk::Buffer& _buffer) { //APPL_DEBUG(" try to find the element"); - _resultat.beginStart = -1; - _resultat.beginStop = -1; - _resultat.endStart = -1; - _resultat.endStop = -1; + _resultat.start = -1; + _resultat.stop = -1; _resultat.notEnded = false; _resultat.patern = this; // when we have only one element: - if (m_regExpStop == NULL) { - if (true == m_regExpStart->processOneElement(_buffer, _start, _stop)) { - _resultat.beginStart = m_regExpStart->start(); - _resultat.beginStop = m_regExpStart->stop(); - _resultat.endStart = m_regExpStart->start(); - _resultat.endStop = m_regExpStart->stop(); - return HLP_FIND_OK; - } - //APPL_DEBUG("NOT find hightlightpatern ..."); - return HLP_FIND_ERROR; - } - // try while we find the first element - if (m_regExpStart->processOneElement(_buffer, _start, _stop, m_escapeChar) == false) { - return HLP_FIND_ERROR; - } - _resultat.beginStart = m_regExpStart->start(); - _resultat.beginStop = m_regExpStart->stop(); - if (m_regExpStop->parse(_buffer, _resultat.beginStop, _stop, m_escapeChar) == true) { - _resultat.endStart = m_regExpStop->start(); - _resultat.endStop = m_regExpStop->stop(); + if (true == m_regExp->processOneElement(_buffer, _start, _stop)) { + _resultat.start = m_regExp->start(); + _resultat.stop = m_regExp->stop(); return HLP_FIND_OK; - } else { - _resultat.endStart = _stop+1; - _resultat.endStop = _stop+1; - _resultat.notEnded = true; - return HLP_FIND_OK_NO_END; } - //APPL_DEBUG("NOT find start hightlightpatern ..."); + //APPL_DEBUG("NOT find hightlightpatern ..."); return HLP_FIND_ERROR; } diff --git a/sources/appl/HighlightPattern.h b/sources/appl/HighlightPattern.h index 4611254..4b4069b 100644 --- a/sources/appl/HighlightPattern.h +++ b/sources/appl/HighlightPattern.h @@ -29,10 +29,10 @@ enum resultFind { namespace appl { class HighlightPattern { private: - ewol::object::Shared m_glyphPainting; + std::shared_ptr m_glyphPainting; public: // Constructeur - HighlightPattern(const ewol::object::Shared& _glyphPainting); + HighlightPattern(const std::shared_ptr& _glyphPainting); virtual ~HighlightPattern(); private: std::string m_paternName; //!< Current style name (like "c++" or "c" or "script Bash") @@ -44,13 +44,10 @@ namespace appl { return m_paternName; }; private: - std::unique_ptr> m_regExpStart; //!< Start of Regular expression + std::unique_ptr> m_regExp; //!< Start of Regular expression public: - void setPaternStart(std::string& _regExp); - private: - std::unique_ptr> m_regExpStop; //!< Stop of Regular Expression - public: - void setPaternStop(std::string& _regExp); + void setPatern(std::string& _regExp); + std::string getPaternString(); private: std::string m_colorName; //!< Current color name int32_t m_colorId; //!< Id of the the glyph painting @@ -59,16 +56,6 @@ namespace appl { const appl::GlyphDecoration& getColorGlyph() { return (*m_glyphPainting)[m_colorId]; }; - private: - char32_t m_escapeChar; //!< Escape char to prevent exeit of patern .... - public: - void setEscapeChar(const char32_t& _EscapeChar); - private: - bool m_multiline; //!< The patern is multiline - public: - void setMultiline(bool _enable) { - m_multiline = _enable; - }; private: int32_t m_level; //!< Level of the pattern == > this is to overwrite next pattern when we create an higher .... public: diff --git a/sources/appl/TextPlugin.cpp b/sources/appl/TextPlugin.cpp index 359b725..6a9089a 100644 --- a/sources/appl/TextPlugin.cpp +++ b/sources/appl/TextPlugin.cpp @@ -26,6 +26,10 @@ appl::TextViewerPlugin::TextViewerPlugin() : addObjectType("appl::TextViewerPlugin"); } +void appl::TextViewerPlugin::init() { + ewol::Object::init(); +} + appl::TextViewerPlugin::~TextViewerPlugin() { if (m_isEnable == false) { return; diff --git a/sources/appl/TextPlugin.h b/sources/appl/TextPlugin.h index 98461a7..1cc3bf9 100644 --- a/sources/appl/TextPlugin.h +++ b/sources/appl/TextPlugin.h @@ -17,8 +17,11 @@ namespace appl { class TextViewerPlugin : public ewol::Object { friend class appl::TextViewer; - public: + protected: TextViewerPlugin(); + void init(); + public: + DECLARE_FACTORY(TextViewerPlugin); virtual ~TextViewerPlugin(); private: bool m_isEnable; //!< The plugin is enable or not (for all viewer). diff --git a/sources/appl/TextPluginAutoIndent.cpp b/sources/appl/TextPluginAutoIndent.cpp index 1cfb982..6836c93 100644 --- a/sources/appl/TextPluginAutoIndent.cpp +++ b/sources/appl/TextPluginAutoIndent.cpp @@ -20,6 +20,10 @@ appl::TextPluginAutoIndent::TextPluginAutoIndent() { addObjectType("appl::TextPluginAutoIndent"); } +void appl::TextPluginAutoIndent::init() { + appl::TextViewerPlugin::init(); +} + bool appl::TextPluginAutoIndent::onEventEntry(appl::TextViewer& _textDrawer, const ewol::event::Entry& _event) { if (isEnable() == false) { diff --git a/sources/appl/TextPluginAutoIndent.h b/sources/appl/TextPluginAutoIndent.h index df7d6e5..585cfd2 100644 --- a/sources/appl/TextPluginAutoIndent.h +++ b/sources/appl/TextPluginAutoIndent.h @@ -17,8 +17,11 @@ namespace appl { class TextPluginAutoIndent : public appl::TextViewerPlugin { - public: + protected: TextPluginAutoIndent(); + void init(); + public: + DECLARE_FACTORY(TextPluginAutoIndent); virtual ~TextPluginAutoIndent() { // nothing to do ... }; diff --git a/sources/appl/TextPluginCopy.cpp b/sources/appl/TextPluginCopy.cpp index a5b1641..5a0c933 100644 --- a/sources/appl/TextPluginCopy.cpp +++ b/sources/appl/TextPluginCopy.cpp @@ -20,6 +20,10 @@ appl::TextPluginCopy::TextPluginCopy() { addObjectType("appl::TextPluginCopy"); } +void appl::TextPluginCopy::init() { + appl::TextViewerPlugin::init(); +} + void appl::TextPluginCopy::onPluginEnable(appl::TextViewer& _textDrawer) { // add event : _textDrawer.ext_registerMultiCast(ednMsgGuiCopy); diff --git a/sources/appl/TextPluginCopy.h b/sources/appl/TextPluginCopy.h index 03ef08f..e64bbc3 100644 --- a/sources/appl/TextPluginCopy.h +++ b/sources/appl/TextPluginCopy.h @@ -17,8 +17,11 @@ namespace appl { class TextPluginCopy : public appl::TextViewerPlugin { - public: + protected: TextPluginCopy(); + void init(); + public: + DECLARE_FACTORY(TextPluginCopy); virtual ~TextPluginCopy() { // nothing to do ... }; diff --git a/sources/appl/TextPluginCtags.cpp b/sources/appl/TextPluginCtags.cpp index 9ad1d6a..2630871 100644 --- a/sources/appl/TextPluginCtags.cpp +++ b/sources/appl/TextPluginCtags.cpp @@ -21,12 +21,18 @@ appl::TextPluginCtags::TextPluginCtags() : m_tagFolderBase(""), m_tagFilename(""), - m_ctagFile(NULL) { + m_ctagFile(nullptr) { m_activateOnReceiveMessage = true; // load buffer manager: - m_bufferManager = appl::BufferManager::keep(); + m_bufferManager = appl::BufferManager::create(); addObjectType("appl::TextPluginCtags"); } + +void appl::TextPluginCtags::init() { + appl::TextViewerPlugin::init(); +} + + appl::TextPluginCtags::~TextPluginCtags() { } @@ -58,7 +64,7 @@ void appl::TextPluginCtags::onPluginDisable(appl::TextViewer& _textDrawer) { } void appl::TextPluginCtags::jumpTo(const std::string& _name) { - if (m_ctagFile == NULL) { + if (m_ctagFile == nullptr) { APPL_WARNING("No ctags file open"); return; } @@ -79,8 +85,8 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) { if (tagsFindNext (m_ctagFile, &entry) == TagSuccess) { APPL_INFO("Multiple file destination ..."); - ewol::object::Shared tmpWidget = ewol::object::makeShared(new appl::TagFileSelection()); - if (NULL == tmpWidget) { + std::shared_ptr tmpWidget = appl::TagFileSelection::create(); + if (nullptr == tmpWidget) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID); @@ -92,7 +98,7 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) { tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID); } while (tagsFindNext (m_ctagFile, &entry) == TagSuccess); ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget); - tmpWidget->registerOnEvent(this, applEventctagsSelection, eventOpenCtagsSelectReturn); + tmpWidget->registerOnEvent(shared_from_this(), applEventctagsSelection, eventOpenCtagsSelectReturn); } } else { jumpFile(myfile.getName(), lineID - 1); @@ -102,19 +108,19 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) { void appl::TextPluginCtags::jumpFile(const std::string& _filename, int64_t _lineId) { // save the current file in the history // TODO : registerHistory(); - if (m_bufferManager != NULL) { + if (m_bufferManager != nullptr) { m_bufferManager->open(_filename); } sendMultiCast(appl::MsgSelectChange, _filename); - sendMultiCast(appl::MsgSelectGotoLineSelect, std::to_string(_lineId)); + sendMultiCast(appl::MsgSelectGotoLineSelect, etk::to_string(_lineId)); } void appl::TextPluginCtags::loadTagFile() { tagFileInfo info; // close previous tag file - if (NULL != m_ctagFile) { + if (nullptr != m_ctagFile) { tagsClose(m_ctagFile); - m_ctagFile = NULL; + m_ctagFile = nullptr; } if (m_tagFilename == "") { return; @@ -122,7 +128,7 @@ void appl::TextPluginCtags::loadTagFile() { // load (open) the tag file : APPL_INFO("try to open tag file : " << m_tagFilename); m_ctagFile = tagsOpen(m_tagFilename.c_str(), &info); - if (NULL != m_ctagFile) { + if (nullptr != m_ctagFile) { APPL_INFO("open exuberant Ctags file is OK ..."); } else { APPL_INFO("Error to open ctags file ..."); @@ -139,7 +145,7 @@ void appl::TextPluginCtags::printTag(const tagEntry *_entry) { << "\" at line="<< (int32_t)_entry->address.lineNumber); APPL_INFO("Extention field : "); - if (_entry->kind != NULL && _entry->kind [0] != '\0') { + if (_entry->kind != nullptr && _entry->kind [0] != '\0') { APPL_INFO(" kind : " << _entry->kind); } if (_entry->fileScope) { @@ -175,8 +181,8 @@ bool appl::TextPluginCtags::onReceiveMessageViewer(appl::TextViewer& _textDrawer } if (_msg.getMessage() == eventOpenCtagsFile) { APPL_INFO("Request opening ctag file"); - ewol::object::Shared tmpWidget = ewol::object::makeShared(new ewol::widget::FileChooser()); - if (NULL == tmpWidget) { + std::shared_ptr tmpWidget = ewol::widget::FileChooser::create(); + if (nullptr == tmpWidget) { APPL_ERROR("Can not allocate widget == > display might be in error"); return true; } @@ -189,7 +195,7 @@ bool appl::TextPluginCtags::onReceiveMessageViewer(appl::TextViewer& _textDrawer tmpWidget->setFolder(path); } ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget); - tmpWidget->registerOnEvent(this, "validate", eventOpenCtagsOpenFileReturn); + tmpWidget->registerOnEvent(shared_from_this(), "validate", eventOpenCtagsOpenFileReturn); return true; } else if (_msg.getMessage() == eventJumpDestination) { if (_textDrawer.hasBuffer() == false) { diff --git a/sources/appl/TextPluginCtags.h b/sources/appl/TextPluginCtags.h index ba7eafb..cb8e64e 100644 --- a/sources/appl/TextPluginCtags.h +++ b/sources/appl/TextPluginCtags.h @@ -33,9 +33,12 @@ namespace appl { void printTag(const tagEntry *_entry); void jumpTo(const std::string& _name); void jumpFile(const std::string& _filename, int64_t _lineId); - ewol::object::Shared m_bufferManager; //!< handle on the buffer manager - public: + std::shared_ptr m_bufferManager; //!< handle on the buffer manager + protected: TextPluginCtags(); + void init(); + public: + DECLARE_FACTORY(TextPluginCtags); virtual ~TextPluginCtags(); public: virtual void onPluginEnable(appl::TextViewer& _textDrawer); diff --git a/sources/appl/TextPluginData.h b/sources/appl/TextPluginData.h index ca83194..389c0e9 100644 --- a/sources/appl/TextPluginData.h +++ b/sources/appl/TextPluginData.h @@ -17,23 +17,28 @@ namespace appl { template class TextViewerPluginData : public appl::TextViewerPlugin { - public: + protected: TextViewerPluginData() { // nothing to do ... addObjectType("appl::TextViewerPluginData"); } + void init() { + appl::TextViewerPlugin::init(); + } + public: + DECLARE_FACTORY(TextViewerPluginData); virtual ~TextViewerPluginData() { for (size_t iii = 0; iii < m_specificData.size() ; ++iii) { - if (m_specificData[iii].second != NULL) { + if (m_specificData[iii].second != nullptr) { remove(*m_specificData[iii].second); delete(m_specificData[iii].second); - m_specificData[iii].second = NULL; + m_specificData[iii].second = nullptr; } } m_specificData.clear(); } private: - std::vector ,TYPE* >> m_specificData; + std::vector ,TYPE* >> m_specificData; protected: TYPE* getDataRef(appl::TextViewer& _textDrawer) { for (size_t iii = 0; iii < m_specificData.size() ; ++iii) { @@ -42,8 +47,8 @@ namespace appl { } } TYPE* data = new TYPE(); - if (data == NULL) { - return NULL; + if (data == nullptr) { + return nullptr; } m_specificData.push_back(std::make_pair(_textDrawer.internalGetBuffer(), data)); // create a new one ... @@ -53,7 +58,7 @@ namespace appl { bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg) { TYPE* data = getDataRef(_textDrawer); - if (data == NULL) { + if (data == nullptr) { return false; } return onReceiveMessageViewer(_textDrawer, _msg, *data); @@ -62,7 +67,7 @@ namespace appl { const appl::Buffer::Iterator& _pos, const std::string& _data) { TYPE* data = getDataRef(_textDrawer); - if (data == NULL) { + if (data == nullptr) { return false; } return onWrite(_textDrawer, _pos, _data, *data); @@ -72,7 +77,7 @@ namespace appl { const std::string& _data, const appl::Buffer::Iterator& _posEnd) { TYPE* data = getDataRef(_textDrawer); - if (data == NULL) { + if (data == nullptr) { return false; } return onReplace(_textDrawer, _pos, _data, _posEnd, *data); @@ -81,7 +86,7 @@ namespace appl { const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { TYPE* data = getDataRef(_textDrawer); - if (data == NULL) { + if (data == nullptr) { return false; } return onRemove(_textDrawer, _pos, _posEnd, *data); @@ -115,16 +120,6 @@ namespace appl { virtual void remove(TYPE& _data) { return; }; - public: - virtual void onObjectRemove(const ewol::object::Shared& _object) { - appl::TextViewerPlugin::onObjectRemove(_object); - for (auto it(m_specificData.begin()); it != m_specificData.end(); ++it) { - if (it->first == _object) { - m_specificData.erase(it); - it = m_specificData.begin(); - } - } - }; }; }; diff --git a/sources/appl/TextPluginHistory.cpp b/sources/appl/TextPluginHistory.cpp index 69e1869..46f4a9b 100644 --- a/sources/appl/TextPluginHistory.cpp +++ b/sources/appl/TextPluginHistory.cpp @@ -23,6 +23,11 @@ appl::TextPluginHistory::TextPluginHistory() { addObjectType("appl::TextPluginHistory"); } +void appl::TextPluginHistory::init() { + appl::TextViewerPluginData::init(); +} + + void appl::TextPluginHistory::onPluginEnable(appl::TextViewer& _textDrawer) { // add event : _textDrawer.ext_registerMultiCast(ednMsgGuiRedo); @@ -45,7 +50,7 @@ bool appl::TextPluginHistory::onReceiveMessageViewer(appl::TextViewer& _textDraw if (_data.m_redo.size() == 0) { return true; } - if (_data.m_redo[_data.m_redo.size()-1] == NULL) { + if (_data.m_redo[_data.m_redo.size()-1] == nullptr) { _data.m_redo.pop_back(); return true; } @@ -61,7 +66,7 @@ bool appl::TextPluginHistory::onReceiveMessageViewer(appl::TextViewer& _textDraw if (_data.m_undo.size() == 0) { return true; } - if (_data.m_undo[_data.m_undo.size()-1] == NULL) { + if (_data.m_undo[_data.m_undo.size()-1] == nullptr) { _data.m_undo.pop_back(); return true; } @@ -82,11 +87,11 @@ void appl::TextPluginHistory::clearRedo(appl::PluginHistoryData& _data) { return; } for (size_t iii=0; iii<_data.m_redo.size(); ++iii) { - if (_data.m_redo[iii] == NULL) { + if (_data.m_redo[iii] == nullptr) { continue; } delete(_data.m_redo[iii]); - _data.m_redo[iii] = NULL; + _data.m_redo[iii] = nullptr; } _data.m_redo.clear(); } @@ -96,11 +101,11 @@ void appl::TextPluginHistory::clearUndo(appl::PluginHistoryData& _data) { return; } for (size_t iii=0; iii<_data.m_undo.size(); ++iii) { - if (_data.m_undo[iii] == NULL) { + if (_data.m_undo[iii] == nullptr) { continue; } delete(_data.m_undo[iii]); - _data.m_undo[iii] = NULL; + _data.m_undo[iii] = nullptr; } _data.m_undo.clear(); } @@ -114,13 +119,13 @@ bool appl::TextPluginHistory::onWrite(appl::TextViewer& _textDrawer, return false; } appl::History *tmpElement = new appl::History(); - if (tmpElement != NULL) { + if (tmpElement != nullptr) { tmpElement->m_addedText = _strData; tmpElement->m_posAdded = (int64_t)_pos; tmpElement->m_endPosRemoved = (int64_t)_pos; } _textDrawer.writeDirect(_strData, _pos); - if (tmpElement != NULL) { + if (tmpElement != nullptr) { tmpElement->m_endPosAdded = (int64_t)_textDrawer.cursor(); clearRedo(_data); _data.m_undo.push_back(tmpElement); @@ -138,14 +143,14 @@ bool appl::TextPluginHistory::onReplace(appl::TextViewer& _textDrawer, return false; } appl::History *tmpElement = new appl::History(); - if (tmpElement != NULL) { + if (tmpElement != nullptr) { tmpElement->m_posAdded = (int64_t)_pos; tmpElement->m_addedText = _strData; tmpElement->m_endPosRemoved = (int64_t)_posEnd; _textDrawer.copy(tmpElement->m_removedText, _pos, _posEnd); } _textDrawer.replaceDirect(_strData, _pos, _posEnd); - if (tmpElement != NULL) { + if (tmpElement != nullptr) { tmpElement->m_endPosAdded = (int64_t)_textDrawer.cursor(); clearRedo(_data); _data.m_undo.push_back(tmpElement); @@ -162,7 +167,7 @@ bool appl::TextPluginHistory::onRemove(appl::TextViewer& _textDrawer, return false; } appl::History *tmpElement = new appl::History(); - if (tmpElement != NULL) { + if (tmpElement != nullptr) { tmpElement->m_addedText = ""; tmpElement->m_posAdded = (int64_t)_pos; tmpElement->m_endPosAdded = tmpElement->m_posAdded; @@ -177,10 +182,3 @@ bool appl::TextPluginHistory::onRemove(appl::TextViewer& _textDrawer, } -void appl::TextPluginHistory::onObjectRemove(const ewol::object::Shared& _object) { - appl::TextViewerPluginData::onObjectRemove(_object); - // TODO : Dependence with buffer removing ... -} - - - diff --git a/sources/appl/TextPluginHistory.h b/sources/appl/TextPluginHistory.h index e77d400..787d916 100644 --- a/sources/appl/TextPluginHistory.h +++ b/sources/appl/TextPluginHistory.h @@ -36,8 +36,11 @@ namespace appl { std::vector m_redo; //!< History storing data }; class TextPluginHistory : public appl::TextViewerPluginData { - public: + protected: TextPluginHistory(); + void init(); + public: + DECLARE_FACTORY(TextPluginHistory); virtual ~TextPluginHistory() { }; private: public: @@ -66,8 +69,6 @@ namespace appl { private: void clearRedo(appl::PluginHistoryData& _data); void clearUndo(appl::PluginHistoryData& _data); - public: - virtual void onObjectRemove(const ewol::object::Shared& _object); }; }; diff --git a/sources/appl/TextPluginManager.cpp b/sources/appl/TextPluginManager.cpp index 042f61d..5d444b5 100644 --- a/sources/appl/TextPluginManager.cpp +++ b/sources/appl/TextPluginManager.cpp @@ -19,36 +19,36 @@ #undef __class__ #define __class__ "textPluginManager" -static std::list>& getList() { - static std::list> s_list; +static std::list>& getList() { + static std::list> s_list; return s_list; } -static std::vector>& getListOnEventEntry() { - static std::vector> s_list; +static std::vector>& getListOnEventEntry() { + static std::vector> s_list; return s_list; } -static std::vector>& getListOnEventInput() { - static std::vector> s_list; +static std::vector>& getListOnEventInput() { + static std::vector> s_list; return s_list; } -static std::vector>& getListOnWrite() { - static std::vector> s_list; +static std::vector>& getListOnWrite() { + static std::vector> s_list; return s_list; } -static std::vector>& getListOnReplace() { - static std::vector> s_list; +static std::vector>& getListOnReplace() { + static std::vector> s_list; return s_list; } -static std::vector>& getListOnRemove() { - static std::vector> s_list; +static std::vector>& getListOnRemove() { + static std::vector> s_list; return s_list; } -static std::vector>& getListonReceiveMessageViewer() { - static std::vector> s_list; +static std::vector>& getListonReceiveMessageViewer() { + static std::vector> s_list; return s_list; } -static std::vector>& getListOnCursorMove() { - static std::vector> s_list; +static std::vector>& getListOnCursorMove() { + static std::vector> s_list; return s_list; } @@ -69,17 +69,17 @@ void appl::textPluginManager::unInit() { } void appl::textPluginManager::addDefaultPlugin() { - appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginCopy())); - appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginMultiLineTab())); - appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginAutoIndent())); - appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginHistory())); - appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginRmLine())); - appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginSelectAll())); - appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginCtags())); + appl::textPluginManager::addPlugin(appl::TextPluginCopy::create()); + appl::textPluginManager::addPlugin(appl::TextPluginMultiLineTab::create()); + appl::textPluginManager::addPlugin(appl::TextPluginAutoIndent::create()); + appl::textPluginManager::addPlugin(appl::TextPluginHistory::create()); + appl::textPluginManager::addPlugin(appl::TextPluginRmLine::create()); + appl::textPluginManager::addPlugin(appl::TextPluginSelectAll::create()); + appl::textPluginManager::addPlugin(appl::TextPluginCtags::create()); } -void appl::textPluginManager::addPlugin(const ewol::object::Shared& _plugin) { - if (_plugin == NULL) { +void appl::textPluginManager::addPlugin(const std::shared_ptr& _plugin) { + if (_plugin == nullptr) { return; } getList().push_back(_plugin); @@ -108,7 +108,7 @@ void appl::textPluginManager::addPlugin(const ewol::object::SharedonPluginEnable(_widget); @@ -117,7 +117,7 @@ void appl::textPluginManager::connect(appl::TextViewer& _widget) { void appl::textPluginManager::disconnect(appl::TextViewer& _widget) { for (auto &it : getList()) { - if (it == NULL) { + if (it == nullptr) { continue; } it->onPluginDisable(_widget); @@ -127,7 +127,7 @@ void appl::textPluginManager::disconnect(appl::TextViewer& _widget) { bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer, const ewol::event::Entry& _event) { for (auto &it : getListOnEventEntry()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->onEventEntry(_textDrawer, _event) == true ) { @@ -140,7 +140,7 @@ bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onEventInput(appl::TextViewer& _textDrawer, const ewol::event::Input& _event) { for (auto &it : getListOnEventInput()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->onEventInput(_textDrawer, _event) == true ) { @@ -154,7 +154,7 @@ bool appl::textPluginManager::onWrite(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const std::string& _data) { for (auto &it : getListOnWrite()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->onWrite(_textDrawer, _pos, _data) == true ) { @@ -169,7 +169,7 @@ bool appl::textPluginManager::onReplace(appl::TextViewer& _textDrawer, const std::string& _data, const appl::Buffer::Iterator& _posEnd) { for (auto &it : getListOnReplace()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->onReplace(_textDrawer, _pos, _data, _posEnd) == true ) { @@ -183,7 +183,7 @@ bool appl::textPluginManager::onRemove(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { for (auto &it : getListOnRemove()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->onRemove(_textDrawer, _pos, _posEnd) == true ) { @@ -196,7 +196,7 @@ bool appl::textPluginManager::onRemove(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onReceiveMessageViewer(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg) { for (auto &it : getListonReceiveMessageViewer()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->onReceiveMessageViewer(_textDrawer, _msg) == true ) { @@ -209,7 +209,7 @@ bool appl::textPluginManager::onReceiveMessageViewer(appl::TextViewer& _textDraw bool appl::textPluginManager::onCursorMove(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos) { for (auto &it : getListOnCursorMove()) { - if (it == NULL) { + if (it == nullptr) { continue; } if (it->onCursorMove(_textDrawer, _pos) == true ) { diff --git a/sources/appl/TextPluginManager.h b/sources/appl/TextPluginManager.h index 85393a9..b9c557d 100644 --- a/sources/appl/TextPluginManager.h +++ b/sources/appl/TextPluginManager.h @@ -33,7 +33,7 @@ namespace appl { * @brief Add a plugin. * @param[in] _plugin Plugin pointer to add. */ - void addPlugin(const ewol::object::Shared& _plugin); + void addPlugin(const std::shared_ptr& _plugin); /** * @brief connect a new widget to the plugin. * @param[in] _widget Reference on the widget caller. diff --git a/sources/appl/TextPluginMultiLineTab.cpp b/sources/appl/TextPluginMultiLineTab.cpp index ed1e322..36df111 100644 --- a/sources/appl/TextPluginMultiLineTab.cpp +++ b/sources/appl/TextPluginMultiLineTab.cpp @@ -19,6 +19,10 @@ appl::TextPluginMultiLineTab::TextPluginMultiLineTab() { addObjectType("appl::TextPluginMultiLineTab"); } +void appl::TextPluginMultiLineTab::init() { + appl::TextViewerPlugin::init(); +} + bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer, const ewol::event::Entry& _event) { if (isEnable() == false) { diff --git a/sources/appl/TextPluginMultiLineTab.h b/sources/appl/TextPluginMultiLineTab.h index b849b54..23435e9 100644 --- a/sources/appl/TextPluginMultiLineTab.h +++ b/sources/appl/TextPluginMultiLineTab.h @@ -17,8 +17,11 @@ namespace appl { class TextPluginMultiLineTab : public appl::TextViewerPlugin { - public: + protected: TextPluginMultiLineTab(); + void init(); + public: + DECLARE_FACTORY(TextPluginMultiLineTab); virtual ~TextPluginMultiLineTab() { // nothing to do ... }; diff --git a/sources/appl/TextPluginRmLine.cpp b/sources/appl/TextPluginRmLine.cpp index deb6de7..802aad2 100644 --- a/sources/appl/TextPluginRmLine.cpp +++ b/sources/appl/TextPluginRmLine.cpp @@ -20,6 +20,10 @@ appl::TextPluginRmLine::TextPluginRmLine() { addObjectType("appl::TextPluginRmLine"); } +void appl::TextPluginRmLine::init() { + appl::TextViewerPlugin::init(); +} + void appl::TextPluginRmLine::onPluginEnable(appl::TextViewer& _textDrawer) { // add event : _textDrawer.ext_registerMultiCast(ednMsgGuiRm); diff --git a/sources/appl/TextPluginRmLine.h b/sources/appl/TextPluginRmLine.h index 634d6bb..3cca37d 100644 --- a/sources/appl/TextPluginRmLine.h +++ b/sources/appl/TextPluginRmLine.h @@ -17,8 +17,11 @@ namespace appl { class TextPluginRmLine : public appl::TextViewerPlugin { - public: + protected: TextPluginRmLine(); + void init(); + public: + DECLARE_FACTORY(TextPluginRmLine); virtual ~TextPluginRmLine() { // nothing to do ... }; diff --git a/sources/appl/TextPluginSelectAll.cpp b/sources/appl/TextPluginSelectAll.cpp index a59bc55..0eb6c75 100644 --- a/sources/appl/TextPluginSelectAll.cpp +++ b/sources/appl/TextPluginSelectAll.cpp @@ -20,6 +20,10 @@ appl::TextPluginSelectAll::TextPluginSelectAll() { addObjectType("appl::TextPluginSelectAll"); } +void appl::TextPluginSelectAll::init() { + appl::TextViewerPlugin::init(); +} + static const char* eventSelectAll = "plugin-select-all"; void appl::TextPluginSelectAll::onPluginEnable(appl::TextViewer& _textDrawer) { diff --git a/sources/appl/TextPluginSelectAll.h b/sources/appl/TextPluginSelectAll.h index 9ad156b..8b41a1e 100644 --- a/sources/appl/TextPluginSelectAll.h +++ b/sources/appl/TextPluginSelectAll.h @@ -17,8 +17,11 @@ namespace appl { class TextPluginSelectAll : public appl::TextViewerPlugin { - public: + protected: TextPluginSelectAll(); + void init(); + public: + DECLARE_FACTORY(TextPluginSelectAll); virtual ~TextPluginSelectAll() { // nothing to do ... }; diff --git a/sources/appl/ctags/readtags.cpp b/sources/appl/ctags/readtags.cpp index a9e867b..e258641 100644 --- a/sources/appl/ctags/readtags.cpp +++ b/sources/appl/ctags/readtags.cpp @@ -138,7 +138,7 @@ static int growString (vstring *s) newLength = 2 * s->size; newLine = (char*) realloc (s->buffer, newLength); } - if (newLine == NULL) + if (newLine == nullptr) perror ("string too large"); else { @@ -154,13 +154,13 @@ static void copyName (tagFile *const file) { size_t length; const char *end = strchr (file->line.buffer, '\t'); - if (end == NULL) + if (end == nullptr) { end = strchr (file->line.buffer, '\n'); - if (end == NULL) + if (end == nullptr) end = strchr (file->line.buffer, '\r'); } - if (end != NULL) + if (end != nullptr) length = end - file->line.buffer; else length = strlen (file->line.buffer); @@ -189,7 +189,7 @@ static int readTagLineRaw (tagFile *const file) reReadLine = 0; *pLastChar = '\0'; line = fgets (file->line.buffer, (int) file->line.size, file->fp); - if (line == NULL) + if (line == nullptr) { /* read error */ if (! feof (file->fp)) @@ -236,7 +236,7 @@ static tagResult growFields (tagFile *const file) unsigned short newCount = (unsigned short) 2 * file->fields.max; tagExtensionField *newFields = (tagExtensionField*) realloc (file->fields.list, newCount * sizeof (tagExtensionField)); - if (newFields == NULL) + if (newFields == nullptr) perror ("too many extension fields"); else { @@ -251,7 +251,7 @@ static void parseExtensionFields (tagFile *const file, tagEntry *const entry, char *const string) { char *p = string; - while (p != NULL && *p != '\0') + while (p != nullptr && *p != '\0') { while (*p == TAB) *p++ = '\0'; @@ -260,10 +260,10 @@ static void parseExtensionFields (tagFile *const file, tagEntry *const entry, char *colon; char *field = p; p = strchr (p, TAB); - if (p != NULL) + if (p != nullptr) *p++ = '\0'; colon = strchr (field, ':'); - if (colon == NULL) + if (colon == nullptr) entry->kind = field; else { @@ -295,19 +295,19 @@ static void parseTagLine (tagFile *file, tagEntry *const entry) char *p = file->line.buffer; char *tab = strchr (p, TAB); - entry->fields.list = NULL; + entry->fields.list = nullptr; entry->fields.count = 0; - entry->kind = NULL; + entry->kind = nullptr; entry->fileScope = 0; entry->name = p; - if (tab != NULL) + if (tab != nullptr) { *tab = '\0'; p = tab + 1; entry->file = p; tab = strchr (p, TAB); - if (tab != NULL) + if (tab != nullptr) { int fieldsPresent; *tab = '\0'; @@ -321,8 +321,8 @@ static void parseTagLine (tagFile *file, tagEntry *const entry) do { p = strchr (p + 1, delimiter); - } while (p != NULL && *(p - 1) == '\\'); - if (p == NULL) + } while (p != nullptr && *(p - 1) == '\\'); + if (p == nullptr) { /* invalid pattern */ } @@ -351,19 +351,19 @@ static void parseTagLine (tagFile *file, tagEntry *const entry) entry->fields.list = file->fields.list; for (i = entry->fields.count ; i < file->fields.max ; ++i) { - file->fields.list [i].key = NULL; - file->fields.list [i].value = NULL; + file->fields.list [i].key = nullptr; + file->fields.list [i].value = nullptr; } } static char *duplicate (const char *str) { - char *result = NULL; - if (str != NULL) + char *result = nullptr; + if (str != nullptr) { result = strdup (str); - if (result == NULL) - perror (NULL); + if (result == nullptr) + perror (nullptr); } return result; } @@ -372,14 +372,14 @@ static void readPseudoTags (tagFile *const file, tagFileInfo *const info) { fpos_t startOfLine; const size_t prefixLength = strlen (PseudoTagPrefix); - if (info != NULL) + if (info != nullptr) { info->file.format = 1; info->file.sort = TAG_UNSORTED; - info->program.author = NULL; - info->program.name = NULL; - info->program.url = NULL; - info->program.version = NULL; + info->program.author = nullptr; + info->program.name = nullptr; + info->program.url = nullptr; + info->program.version = nullptr; } while (1) { @@ -407,7 +407,7 @@ static void readPseudoTags (tagFile *const file, tagFileInfo *const info) file->program.url = duplicate (value); else if (strcmp (key, "TAG_PROGRAM_VERSION") == 0) file->program.version = duplicate (value); - if (info != NULL) + if (info != nullptr) { info->file.format = file->format; info->file.sort = file->sortMethod; @@ -440,7 +440,7 @@ static void gotoFirstLogicalTag (tagFile *const file) static tagFile *initialize (const char *const filePath, tagFileInfo *const info) { tagFile *result = (tagFile*) calloc ((size_t) 1, sizeof (tagFile)); - if (result != NULL) + if (result != nullptr) { growString (&result->line); growString (&result->name); @@ -448,10 +448,10 @@ static tagFile *initialize (const char *const filePath, tagFileInfo *const info) result->fields.list = (tagExtensionField*) calloc ( result->fields.max, sizeof (tagExtensionField)); result->fp = fopen (filePath, "r"); - if (result->fp == NULL) + if (result->fp == nullptr) { free (result); - result = NULL; + result = nullptr; info->status.error_number = errno; } else @@ -475,15 +475,15 @@ static void terminate (tagFile *const file) free (file->name.buffer); free (file->fields.list); - if (file->program.author != NULL) + if (file->program.author != nullptr) free (file->program.author); - if (file->program.name != NULL) + if (file->program.name != nullptr) free (file->program.name); - if (file->program.url != NULL) + if (file->program.url != nullptr) free (file->program.url); - if (file->program.version != NULL) + if (file->program.version != nullptr) free (file->program.version); - if (file->search.name != NULL) + if (file->search.name != nullptr) free (file->search.name); memset (file, 0, sizeof (tagFile)); @@ -494,13 +494,13 @@ static void terminate (tagFile *const file) static tagResult readNext (tagFile *const file, tagEntry *const entry) { tagResult result; - if (file == NULL || ! file->initialized) + if (file == nullptr || ! file->initialized) result = TagFailure; else if (! readTagLine (file)) result = TagFailure; else { - if (entry != NULL) + if (entry != nullptr) parseTagLine (file, entry); result = TagSuccess; } @@ -510,13 +510,13 @@ static tagResult readNext (tagFile *const file, tagEntry *const entry) static const char *readFieldValue ( const tagEntry *const entry, const char *const key) { - const char *result = NULL; + const char *result = nullptr; int i; if (strcmp (key, "kind") == 0) result = entry->kind; else if (strcmp (key, "file") == 0) result = EmptyString; - else for (i = 0 ; i < entry->fields.count && result == NULL ; ++i) + else for (i = 0 ; i < entry->fields.count && result == nullptr ; ++i) if (strcmp (entry->fields.list [i].key, key) == 0) result = entry->fields.list [i].value; return result; @@ -650,7 +650,7 @@ static tagResult find (tagFile *const file, tagEntry *const entry, const char *const name, const int options) { tagResult result; - if (file->search.name != NULL) + if (file->search.name != nullptr) free (file->search.name); file->search.name = duplicate (name); file->search.nameLength = strlen (name); @@ -680,7 +680,7 @@ static tagResult find (tagFile *const file, tagEntry *const entry, else { file->search.pos = file->pos; - if (entry != NULL) + if (entry != nullptr) parseTagLine (file, entry); } return result; @@ -699,7 +699,7 @@ static tagResult findNext (tagFile *const file, tagEntry *const entry) else { result = findSequential (file); - if (result == TagSuccess && entry != NULL) + if (result == TagSuccess && entry != nullptr) parseTagLine (file, entry); } return result; @@ -717,7 +717,7 @@ extern tagFile *tagsOpen (const char *const filePath, tagFileInfo *const info) extern tagResult tagsSetSortType (tagFile *const file, const sortType type) { tagResult result = TagFailure; - if (file != NULL && file->initialized) + if (file != nullptr && file->initialized) { file->sortMethod = type; result = TagSuccess; @@ -728,7 +728,7 @@ extern tagResult tagsSetSortType (tagFile *const file, const sortType type) extern tagResult tagsFirst (tagFile *const file, tagEntry *const entry) { tagResult result = TagFailure; - if (file != NULL && file->initialized) + if (file != nullptr && file->initialized) { gotoFirstLogicalTag (file); result = readNext (file, entry); @@ -739,15 +739,15 @@ extern tagResult tagsFirst (tagFile *const file, tagEntry *const entry) extern tagResult tagsNext (tagFile *const file, tagEntry *const entry) { tagResult result = TagFailure; - if (file != NULL && file->initialized) + if (file != nullptr && file->initialized) result = readNext (file, entry); return result; } extern const char *tagsField (const tagEntry *const entry, const char *const key) { - const char *result = NULL; - if (entry != NULL) + const char *result = nullptr; + if (entry != nullptr) result = readFieldValue (entry, key); return result; } @@ -756,7 +756,7 @@ extern tagResult tagsFind (tagFile *const file, tagEntry *const entry, const char *const name, const int options) { tagResult result = TagFailure; - if (file != NULL && file->initialized) + if (file != nullptr && file->initialized) result = find (file, entry, name, options); return result; } @@ -764,7 +764,7 @@ extern tagResult tagsFind (tagFile *const file, tagEntry *const entry, extern tagResult tagsFindNext (tagFile *const file, tagEntry *const entry) { tagResult result = TagFailure; - if (file != NULL && file->initialized) + if (file != nullptr && file->initialized) result = findNext (file, entry); return result; } @@ -772,7 +772,7 @@ extern tagResult tagsFindNext (tagFile *const file, tagEntry *const entry) extern tagResult tagsClose (tagFile *const file) { tagResult result = TagFailure; - if (file != NULL && file->initialized) + if (file != nullptr && file->initialized) { terminate (file); result = TagSuccess; @@ -804,7 +804,7 @@ static void printTag (const tagEntry *entry) entry->name, entry->file, entry->address.pattern); if (extensionFields) { - if (entry->kind != NULL && entry->kind [0] != '\0') + if (entry->kind != nullptr && entry->kind [0] != '\0') printf ("%s\tkind:%s", sep, entry->kind); if (entry->fileScope) printf ("%s\tfile:", sep); @@ -825,7 +825,7 @@ static void findTag (const char *const name, const int options) tagFileInfo info; tagEntry entry; tagFile *const file = tagsOpen (TagFileName, &info); - if (file == NULL) + if (file == nullptr) { fprintf (stderr, "%s: cannot open tag file: %s: %s\n", ProgramName, strerror (info.status.error_number), name); @@ -851,7 +851,7 @@ static void listTags () tagFileInfo info; tagEntry entry; tagFile *const file = tagsOpen (TagFileName, &info); - if (file == NULL) + if (file == nullptr) { fprintf (stderr, "%s: cannot open tag file: %s: %s\n", ProgramName, strerror (info.status.error_number), TagFileName); @@ -927,7 +927,7 @@ extern int main (int argc, char **argv) ++j; if (arg [j] == '\0') SortMethod = TAG_SORTED; - else if (strchr ("012", arg[j]) != NULL) + else if (strchr ("012", arg[j]) != nullptr) SortMethod = (sortType) (arg[j] - '0'); else { diff --git a/sources/appl/ctags/readtags.h b/sources/appl/ctags/readtags.h index 483120e..54e63a9 100644 --- a/sources/appl/ctags/readtags.h +++ b/sources/appl/ctags/readtags.h @@ -114,7 +114,7 @@ typedef struct { /* address for locating tag in source file */ struct { /* pattern for locating source line - * (may be NULL if not present) */ + * (may be nullptr if not present) */ const char *pattern; /* line number in source file of tag definition @@ -122,7 +122,7 @@ typedef struct { unsigned long lineNumber; } address; - /* kind of tag (may by name, character, or NULL if not known) */ + /* kind of tag (may by name, character, or nullptr if not known) */ const char *kind; /* is tag of file-limited scope? */ diff --git a/sources/appl/global.cpp b/sources/appl/global.cpp index b1083bc..3824cd0 100644 --- a/sources/appl/global.cpp +++ b/sources/appl/global.cpp @@ -18,45 +18,36 @@ class myParamGlobal : public ewol::Object { public: - static const char * const configEOL; - static const char * const configAutoIndent; - static const char * const configShowTabChar; - static const char * const configShowSpaceChar; - public: - bool m_displayEOL; - bool m_AutoIndent; - bool m_displayTabChar; - bool m_displaySpaceChar; + ewol::object::Param m_displayEOL; + ewol::object::Param m_AutoIndent; + ewol::object::Param m_displayTabChar; + ewol::object::Param m_displaySpaceChar; public : - myParamGlobal() { + myParamGlobal() : + m_displayEOL(*this, "eol", false, "Display end of line character"), + m_AutoIndent(*this, "auto-indent", true, "Auto indent when create new line"), + m_displayTabChar(*this, "display-tab", true, "Display the Tab 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) setName("edn_global_param"); - m_displayEOL=false; - m_AutoIndent = true; - m_displayTabChar = true; - m_displaySpaceChar = true; - registerConfig(configEOL, "bool", NULL, "Display end of line character"); - registerConfig(configAutoIndent, "bool", NULL, "Auto indent when create new line"); - registerConfig(configShowTabChar, "bool", NULL, "Display the Tab char"); - registerConfig(configShowSpaceChar, "bool", NULL, "Display the space char"); } - + /* bool onSetConfig(const ewol::object::Config& _conf) { // Not set the EObject node parameter (name == > not change ...) if (_conf.getConfig() == configEOL) { - m_displayEOL = std::stob(_conf.getData()); + m_displayEOL = etk::string_to_bool(_conf.getData()); return true; } if (_conf.getConfig() == configAutoIndent) { - m_AutoIndent = std::stob(_conf.getData()); + m_AutoIndent = etk::string_to_bool(_conf.getData()); return true; } if (_conf.getConfig() == configShowTabChar) { - m_displayTabChar = std::stob(_conf.getData()); + m_displayTabChar = etk::string_to_bool(_conf.getData()); return true; } if (_conf.getConfig() == configShowSpaceChar) { - m_displaySpaceChar = std::stob(_conf.getData()); + m_displaySpaceChar = etk::string_to_bool(_conf.getData()); return true; } return false; @@ -97,12 +88,9 @@ class myParamGlobal : public ewol::Object { } return false; } + */ }; -const char * const myParamGlobal::configEOL = "eol"; -const char * const myParamGlobal::configAutoIndent = "auto-indent"; -const char * const myParamGlobal::configShowTabChar = "display-tab"; -const char * const myParamGlobal::configShowSpaceChar = "display-space"; static myParamGlobal& l_obj() { static myParamGlobal s_obj; @@ -179,61 +167,65 @@ static const char * const l_changeTabulation = "edn-event-change-tabulation"; static const char * const l_changeEndOfLine = "edn-event-change-endOfLine"; static const char * const l_changeRounded = "edn-event-change-rounded"; -globals::ParameterGlobalsGui::ParameterGlobalsGui() : - ewol::widget::Sizer(ewol::widget::Sizer::modeVert) { - ewol::widget::CheckBox* myCheckbox = NULL; - ewol::widget::Spacer* mySpacer = NULL; +globals::ParameterGlobalsGui::ParameterGlobalsGui() { + addObjectType("globals::ParameterGlobalsGui"); +} + +void globals::ParameterGlobalsGui::init() { + ewol::widget::Sizer::init(ewol::widget::Sizer::modeVert); + std::shared_ptr myCheckbox; + std::shared_ptr mySpacer; - mySpacer = new ewol::widget::Spacer(); - if (NULL == mySpacer) { + mySpacer = ewol::widget::Spacer::create(); + if (nullptr == mySpacer) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { mySpacer->setExpand(bvec2(true,true)); subWidgetAdd(mySpacer); } - myCheckbox = new ewol::widget::CheckBox("Automatic Indentation"); - if (NULL == myCheckbox) { + myCheckbox = ewol::widget::CheckBox::create("Automatic Indentation"); + if (nullptr == myCheckbox) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { myCheckbox->setExpand(bvec2(true,false)); myCheckbox->setValue(isSetAutoIndent()); - myCheckbox->registerOnEvent(this, "clicked", l_changeIndentation); + myCheckbox->registerOnEvent(shared_from_this(), "clicked", l_changeIndentation); subWidgetAdd(myCheckbox); } - myCheckbox = new ewol::widget::CheckBox("Display space char (' ')"); - if (NULL == myCheckbox) { + myCheckbox = ewol::widget::CheckBox::create("Display space char (' ')"); + if (nullptr == myCheckbox) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { myCheckbox->setExpand(bvec2(true,false)); myCheckbox->setValue(isSetDisplaySpaceChar()); - myCheckbox->registerOnEvent(this, "clicked", l_changeSpace); + myCheckbox->registerOnEvent(shared_from_this(), "clicked", l_changeSpace); subWidgetAdd(myCheckbox); } - myCheckbox = new ewol::widget::CheckBox("Display tabulation char ('\\t')"); - if (NULL == myCheckbox) { + myCheckbox = ewol::widget::CheckBox::create("Display tabulation char ('\\t')"); + if (nullptr == myCheckbox) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { myCheckbox->setExpand(bvec2(true,false)); myCheckbox->setValue(isSetDisplayTabChar()); - myCheckbox->registerOnEvent(this, "clicked", l_changeTabulation); + myCheckbox->registerOnEvent(shared_from_this(), "clicked", l_changeTabulation); subWidgetAdd(myCheckbox); } - myCheckbox = new ewol::widget::CheckBox("Display end of line ('\\n')"); - if (NULL == myCheckbox) { + myCheckbox = ewol::widget::CheckBox::create("Display end of line ('\\n')"); + if (nullptr == myCheckbox) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { myCheckbox->setExpand(bvec2(true,false)); myCheckbox->setValue(isSetDisplayEndOfLine()); - myCheckbox->registerOnEvent(this, "clicked", l_changeEndOfLine); + myCheckbox->registerOnEvent(shared_from_this(), "clicked", l_changeEndOfLine); subWidgetAdd(myCheckbox); } - myCheckbox = new ewol::widget::CheckBox("switch Rounded/default"); - if (NULL == myCheckbox) { + myCheckbox = ewol::widget::CheckBox::create("switch Rounded/default"); + if (nullptr == myCheckbox) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { myCheckbox->setExpand(bvec2(true,false)); myCheckbox->setValue(isSetDisplayEndOfLine()); - myCheckbox->registerOnEvent(this, "clicked", l_changeRounded); + myCheckbox->registerOnEvent(shared_from_this(), "clicked", l_changeRounded); subWidgetAdd(myCheckbox); } } diff --git a/sources/appl/global.h b/sources/appl/global.h index c36085e..60e6009 100644 --- a/sources/appl/global.h +++ b/sources/appl/global.h @@ -37,8 +37,11 @@ namespace globals bool OrderTheBufferList(); class ParameterGlobalsGui : public ewol::widget::Sizer { - public : + protected: ParameterGlobalsGui(); + void init(); + public: + DECLARE_FACTORY(ParameterGlobalsGui); virtual ~ParameterGlobalsGui(); // herited function virtual void onReceiveMessage(const ewol::object::Message& _msg); diff --git a/sources/appl/init.cpp b/sources/appl/init.cpp index 0c4eadc..7b442b1 100644 --- a/sources/appl/init.cpp +++ b/sources/appl/init.cpp @@ -28,109 +28,108 @@ #include #include + +class MainApplication : public ewol::context::Application { + private: + std::shared_ptr m_bufferManager; + public: + bool init(ewol::Context& _context, size_t _initId) { + APPL_INFO(" == > init APPL v" << APPL_VERSION << " (START) [" << ewol::getBoardType() << "] (" << ewol::getCompilationMode() << ")"); + + etk::theme::setName("COLOR", "color/black/"); + + // TODO : remove this : Move if in the windows properties + _context.setSize(vec2(800, 600)); + + // select internal data for font ... + _context.getFontDefault().setUseExternal(true); + #ifdef __TARGET_OS__Android + _context.getFontDefault().set("FreeSerif", 19); + #else + _context.getFontDefault().set("FreeSerif;DejaVuSansMono",14); + #endif + + // set the application icon ... + _context.setIcon("DATA:icon.png"); + + // init internal global value + globals::init(); + + // init ALL Singleton : + //()CTagsManager::getInstance(); + m_bufferManager = appl::BufferManager::create(); + + appl::highlightManager::init(); + appl::textPluginManager::init(); + appl::textPluginManager::addDefaultPlugin(); + + // Request load of the user configuration ... + //ewol::userConfig::load(); + + char cCurrentPath[FILENAME_MAX]; + // get the curent program folder + if (!getcwd(cCurrentPath, FILENAME_MAX)) { + return false; + } + cCurrentPath[FILENAME_MAX - 1] = '\0'; + //APPL_INFO("The current working directory is " << cCurrentPath); + + std::shared_ptr basicWindows = MainWindows::create(); + + if (basicWindows == nullptr) { + APPL_ERROR("Can not allocate the basic windows"); + _context.stop(); + return false; + } + // create the specific windows + _context.setWindows(basicWindows); + + + // add files + APPL_INFO("show list of files : "); + bool ctagDetected = false; + for( int32_t iii=0 ; iii<_context.getCmd().size(); iii++) { + std::string tmpppp = _context.getCmd().get(iii); + if (tmpppp == "-t") { + ctagDetected = true; + } else if (true == ctagDetected) { + etk::FSNode file(tmpppp); + std::string name = file.getName(); + APPL_INFO("Load ctag file : \"" << name << "\"" ); + ctagDetected = false; + _context.getEObjectManager().multiCast().anonymousSend(ednMsgCtagsLoadFile, name); + } else { + etk::FSNode file(tmpppp); + std::string name = file.getName(); + APPL_INFO("need load file : \"" << name << "\"" ); + m_bufferManager->open(name); + } + } + + APPL_INFO(" == > init " PROJECT_NAME " (END)"); + return true; + } + void unInit(ewol::Context& _context) { + APPL_INFO(" == > Un-Init " PROJECT_NAME " (START)"); + appl::textPluginManager::unInit(); + APPL_INFO("Stop Hightlight"); + appl::highlightManager::unInit(); + //Kill all singleton + m_bufferManager.reset(); + APPL_INFO(" == > Un-Init " PROJECT_NAME " (END)"); + } +}; + + + /** * @brief Main of the program (This can be set in every case, but it is not used in Andoid...). * @param std IO * @return std IO */ int main(int _argc, const char *_argv[]) { - // only one things to do: - return ewol::run(_argc, _argv); -} -ewol::object::Shared bufferManager = NULL; - -/** - * @brief main application function initialisation - */ -bool APP_Init(ewol::Context& _context, size_t _initId, size_t& _nbInitStep) { - _nbInitStep = 1; - APPL_INFO(" == > init APPL v" << APPL_VERSION << " (START) [" << ewol::getBoardType() << "] (" << ewol::getCompilationMode() << ")"); - - etk::theme::setName("COLOR", "color/black/"); - - // TODO : remove this : Move if in the windows properties - _context.setSize(vec2(800, 600)); - - // select internal data for font ... - _context.getFontDefault().setUseExternal(true); - #ifdef __TARGET_OS__Android - _context.getFontDefault().set("FreeSerif", 19); - #else - _context.getFontDefault().set("FreeSerif;DejaVuSansMono",14); - #endif - - // set the application icon ... - _context.setIcon("DATA:icon.png"); - - // init internal global value - globals::init(); - - // init ALL Singleton : - //()CTagsManager::getInstance(); - bufferManager = appl::BufferManager::keep(); - - appl::highlightManager::init(); - appl::textPluginManager::init(); - appl::textPluginManager::addDefaultPlugin(); - - // Request load of the user configuration ... - //ewol::userConfig::load(); - - char cCurrentPath[FILENAME_MAX]; - // get the curent program folder - if (!getcwd(cCurrentPath, FILENAME_MAX)) { - return false; - } - cCurrentPath[FILENAME_MAX - 1] = '\0'; - //APPL_INFO("The current working directory is " << cCurrentPath); - - ewol::object::Shared basicWindows = ewol::object::makeShared(new MainWindows()); - - if (basicWindows == nullptr) { - APPL_ERROR("Can not allocate the basic windows"); - _context.stop(); - return false; - } - // create the specific windows - _context.setWindows(basicWindows); - - - // add files - APPL_INFO("show list of files : "); - bool ctagDetected = false; - for( int32_t iii=0 ; iii<_context.getCmd().size(); iii++) { - std::string tmpppp = _context.getCmd().get(iii); - if (tmpppp == "-t") { - ctagDetected = true; - } else if (true == ctagDetected) { - etk::FSNode file(tmpppp); - std::string name = file.getName(); - APPL_INFO("Load ctag file : \"" << name << "\"" ); - ctagDetected = false; - _context.getEObjectManager().multiCast().anonymousSend(ednMsgCtagsLoadFile, name); - } else { - etk::FSNode file(tmpppp); - std::string name = file.getName(); - APPL_INFO("need load file : \"" << name << "\"" ); - bufferManager->open(name); - } - } - - APPL_INFO(" == > init " PROJECT_NAME " (END)"); - return true; + // second possibility + return ewol::run(new MainApplication(), _argc, _argv); } -/** - * @brief main application function Un-Initialisation - */ -void APP_UnInit(ewol::Context& _context) { - APPL_INFO(" == > Un-Init " PROJECT_NAME " (START)"); - appl::textPluginManager::unInit(); - APPL_INFO("Stop Hightlight"); - appl::highlightManager::unInit(); - //Kill all singleton - bufferManager.reset(); - APPL_INFO(" == > Un-Init " PROJECT_NAME " (END)"); -} - diff --git a/sources/tag b/sources/tag index 867e524..cb174d5 100644 --- a/sources/tag +++ b/sources/tag @@ -1 +1 @@ -1.2.0 \ No newline at end of file +1.2.1 \ No newline at end of file