27 Commits
1.1.1 ... 1.2.0

Author SHA1 Message Date
440f4c7093 Update version tag: 1.2.0 2014-06-03 22:27:31 +02:00
a01d121036 Update version tag: 1.1.2 2014-06-03 22:22:20 +02:00
09425067dc [DEV] remove to many request of focus 2014-06-03 22:19:00 +02:00
780234de13 [DEBUG] remove error in the HL update 2014-06-02 21:40:02 +02:00
c421bd5f90 [DEV] remove compilation warning 2014-06-02 21:04:35 +02:00
3ec3fa00d9 [DEV] work corectly with refcounting object (and remove some memory leek at close) 2014-05-27 21:43:02 +02:00
9b21e5c769 [DEV] correction some internal memory leek 2014-05-26 21:42:51 +02:00
2157099f0a [DEV] new staep to owner 2014-05-25 21:17:06 +02:00
d18b202e75 [DEV] init remove remove windows 2014-05-23 12:37:38 +02:00
63834fe960 [DEBUG] plugin are object ==> set it in shared pointer 2014-05-22 22:06:13 +02:00
cab0e6009d [DEV] update to the new API, system start but not compleately work 2014-05-20 23:26:14 +02:00
08261def10 [DEV] start rework on shared pointer 2014-05-20 21:35:41 +02:00
304ac2ba45 [DEV] start rework for dev interface of ewol 2014-05-19 22:30:39 +02:00
2d8c5d588d [STYLE] remove (void) in () to be c++ coherent 2014-05-15 21:37:39 +02:00
f1543f6199 [DEV] correction of the filename display and management 2014-05-13 21:48:20 +02:00
7acd5127eb [DEV] update ctags 2014-05-12 21:10:45 +02:00
0c6151283b [DEV] change log system 2014-04-30 22:18:00 +02:00
8854a5a34b [DEV] update readme for ios 2014-04-24 21:01:08 +02:00
958138ecbb [DEV] update to the single finger move 2014-04-18 22:22:02 +02:00
44bc1dd277 [DEV] remove df text test 2014-04-17 21:31:02 +02:00
0821335de6 [DEBUG] error writing 2014-04-16 22:21:20 +02:00
8d0fc9023f update ewol main 2014-04-07 07:59:00 +02:00
4f0839221d [DEV] remove deprecated config 2014-03-13 21:50:14 +01:00
17101a38b0 [DEV] cmake file update 2014-03-04 21:18:41 +01:00
def986ab82 [DEV] add cmake missing file 2014-02-24 22:01:10 +01:00
7ebc20e936 [DEV] add CMake instance 2014-02-24 21:50:50 +01:00
f807faf55a [DEBUG ewol#2] set button in toggle mode 2014-02-13 21:27:21 +01:00
74 changed files with 1146 additions and 1181 deletions

4
CMakeLists.txt Normal file
View File

@@ -0,0 +1,4 @@
cmake_minimum_required(VERSION 2.8)
SUBDIRS(${CMAKE_CURRENT_SOURCE_DIR}/../ewol)
SUBDIRS(sources)

View File

@@ -46,8 +46,8 @@ download the software :
http://developer.android.com/tools/sdk/ndk/index.html http://developer.android.com/tools/sdk/ndk/index.html
http://developer.android.com/sdk/index.html http://developer.android.com/sdk/index.html
==> you need to download sub package of the NDK (refer to the NDK doccumentation) but only supported android version >4.0 ==> you need to download sub package of the NDK (refer to the NDK doccumentation) but only supported android version >4.0
cd ../edn cd ..
# generate .so # Generate package and install on Android device (in debug mode a generic key is set)
../ewol/build/lutin.py --color --target=Android --mode=debug edn-install ../ewol/build/lutin.py --color --target=Android --mode=debug edn-install
# to show the log : # to show the log :
../ewol/build/lutin.py --target=Android edn-log ../ewol/build/lutin.py --target=Android edn-log
@@ -55,8 +55,11 @@ download the software :
(Windows) Compile software & install (Windows) Compile software & install
cd yourDevFolder/edn cd yourDevFolder
../ewol/build/lutin.py --color --target=Windows --mode=debug ../ewol/build/lutin.py --color --target=Windows --mode=debug edn
#we have many problem for windows compilation now...
(MAC) All needed and some useful packages (MAC) All needed and some useful packages
@@ -65,8 +68,27 @@ download the software :
- Xcode ==> for all developement packages - Xcode ==> for all developement packages
- in Xcode : XCode->Setting->Download and install component: "Command Line Tools" - in Xcode : XCode->Setting->Download and install component: "Command Line Tools"
cd yourDevFolder/edn cd yourDevFolder
../ewol/build/lutin.py --color --mode=debug ../ewol/build/lutin.py --color --mode=debug edn
(IOs) All needed and some useful packages
- Git access (client you want or : http://code.google.com/p/git-osx-installer/ ==>need a ctrl+click to remove the normal installation control)
- Xcode ==> for all developement packages
- in Xcode : XCode->Setting->Download and install component: "Command Line Tools"
for porting on IOs you need a developper account
cd yourDevFolder
# compile and install on simulator (no developper account needed)
../ewol/build/lutin.py --color --target=IOs --mode=debug --simulation edn-intall
# launch IOs simulator in xcode, and your application will appear on the second page (32 bit mode only)
# compile and install on board
../ewol/build/lutin.py --color --target=IOs --mode=debug edn-intall
# compile and install on board and debug mode :
../ewol/build/lutin.py --color --target=IOs --mode=debug edn-log
On linux you can generate 3 board in one time On linux you can generate 3 board in one time

View File

@@ -1,68 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
CONFIG___EWOL_INTEGRATED_FONT__=y
#
# Android
#
CONFIG___EWOL_ANDROID_MINIMUM_SDK_VERSION__=9
# CONFIG___EWOL_ANDROID_SHOW_TITLE__ is not set
CONFIG___EWOL_ANDROID_ORIENTATION_AUTO__=y
# CONFIG___EWOL_ANDROID_ORIENTATION_LANDSCAPE__ is not set
# CONFIG___EWOL_ANDROID_ORIENTATION_PORTRAIT__ is not set
#
# Permissions
#
CONFIG___ANDROID_PERMISSION__WRITE_EXTERNAL_STORAGE__=y
# CONFIG___ANDROID_PERMISSION__CAMERA__ is not set
# CONFIG___ANDROID_PERMISSION__INTERNET__ is not set
# CONFIG___ANDROID_PERMISSION__MODIFY_AUDIO_SETTINGS__ is not set
# CONFIG___ANDROID_PERMISSION__READ_CALENDAR__ is not set
# CONFIG___ANDROID_PERMISSION__READ_CONTACTS__ is not set
# CONFIG___ANDROID_PERMISSION__READ_FRAME_BUFFER__ is not set
# CONFIG___ANDROID_PERMISSION__READ_PROFILE__ is not set
# CONFIG___ANDROID_PERMISSION__RECORD_AUDIO__ is not set
# CONFIG___ANDROID_PERMISSION__SET_ORIENTATION__ is not set
# CONFIG___ANDROID_PERMISSION__VIBRATE__ is not set
# CONFIG___ANDROID_PERMISSION__ACCESS_COARSE_LOCATION__ is not set
# CONFIG___ANDROID_PERMISSION__ACCESS_FINE_LOCATION__ is not set
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -1,49 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_PORTAUDIO is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
# CONFIG___EWOL_INTEGRATED_FONT__ is not set
#
# Linux
#
CONFIG___EWOL_LINUX_GUI_MODE_X11__=y
# CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__ is not set
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -1,48 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
CONFIG___EWOL_INTEGRATED_FONT__=y
#
# Linux
#
CONFIG___EWOL_LINUX_GUI_MODE_X11__=y
# CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__ is not set
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -1,43 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_GLEW is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Ewol Basic Title"
CONFIG___EWOL_INTEGRATED_FONT__=y
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -12,15 +12,15 @@
<button name="SEARCH:replace"> <button name="SEARCH:replace">
<image src="THEME:GUI:Replace.edf" fill="true" size="7,7mm" distance-field="true"/> <image src="THEME:GUI:Replace.edf" fill="true" size="7,7mm" distance-field="true"/>
</button> </button>
<button name="SEARCH:case"> <button name="SEARCH:case" toggle="true">
<image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/>
<image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/>
</button> </button>
<button name="SEARCH:wrap"> <button name="SEARCH:wrap" toggle="true">
<image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/>
<image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/>
</button> </button>
<button name="SEARCH:up-down"> <button name="SEARCH:up-down" toggle="true">
<image src="THEME:GUI:Up.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:Up.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/>
<image src="THEME:GUI:Down.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/> <image src="THEME:GUI:Down.edf" fill="true" size="7,7mm" hover="Close search bar" distance-field="true"/>
</button> </button>

0
data/lang/EN.json Normal file
View File

0
data/lang/FR.json Normal file
View File

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="C/C++">
<ext>CMakeLists.txt</ext>
<ext>CMakeCache.txt</ext>
<pass1>
<rule name="my comment doxygen">
<color>commentDoxygen</color>
<start>##</start>
<end>\n</end>
</rule>
<rule name="my todo comment">
<color>SYNTAX_ERROR</color>
<start>#[ \t]TODO[ \t]*:</start>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule>
<rule name="my comment">
<color>comment</color>
<start>#</start>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule>
<rule name="doubleQuteText">
<color>doubleQuoteText</color>
<start>"</start>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule>
</pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword">
<color>keyword</color>
<start>\@foreach|message|endforeach|if|else|endif|list|file|string\@</start>
</rule>
<rule name="my function keyword">
<color>systemFunction</color>
<start>\@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\@</start>
</rule>
<rule name="Variable">
<color>inputFunction</color>
<start>${</start>
<end>}</end>
</rule>
<rule name="numeric constant">
<color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start>
</rule>
<rule name="BIG LETTER">
<color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start>
</rule>
<rule name="Function name">
<color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start>
</rule>
</pass2>
</EdnLang>

110
sources/CMakeLists.txt Normal file
View File

@@ -0,0 +1,110 @@
cmake_minimum_required(VERSION 2.8)
# Declare the project
project(edn)
##
## Include C++ X11 dependency ... (check correct flags)
##
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
endif()
# set output path:
set(LIBRARY_OUTPUT_PATH lib/${CMAKE_BUILD_TYPE})
include_directories(.)
#Create src file list
set(src_files
appl/ctags/readtags.cpp
appl/debug.cpp
appl/global.cpp
appl/globalMsg.cpp
appl/init.cpp
appl/Gui/BufferView.cpp
appl/Gui/TextViewer.cpp
appl/Gui/ViewerManager.cpp
appl/Gui/MainWindows.cpp
appl/Gui/Search.cpp
appl/Gui/TagFileSelection.cpp
appl/Gui/TagFileList.cpp
appl/Gui/WorkerSaveFile.cpp
appl/Gui/WorkerSaveAllFile.cpp
appl/Gui/WorkerCloseFile.cpp
appl/Gui/WorkerCloseAllFile.cpp
appl/Buffer.cpp
appl/BufferManager.cpp
appl/TextPlugin.cpp
appl/TextPluginCopy.cpp
appl/TextPluginMultiLineTab.cpp
appl/TextPluginAutoIndent.cpp
appl/TextPluginHistory.cpp
appl/TextPluginRmLine.cpp
appl/TextPluginSelectAll.cpp
appl/TextPluginCtags.cpp
appl/TextPluginManager.cpp
appl/GlyphDecoration.cpp
appl/GlyphPainting.cpp
appl/HighlightPattern.cpp
appl/Highlight.cpp
appl/HighlightManager.cpp
)
add_definitions( -DDEBUG_LEVEL=3 )
add_definitions( -DDEBUG=1 )
add_definitions( -DPROJECT_NAME="edn" )
if (APPLE)
add_definitions( -D__TARGET_OS__MacOs )
elseif (UNIX)
add_definitions( -D__TARGET_OS__Linux )
elseif (WIN32)
add_definitions( -D__TARGET_OS__Windows )
endif ()
# read version :
file (STRINGS "tag" BUILD_VERSION)
add_definitions( -DAPPL_VERSION="${BUILD_VERSION}" )
#Create a static Lib:
add_executable(edn ${src_files} )
include_directories(${zlib_SOURCE_DIR}/contrib/)
include_directories(${linearmath_SOURCE_DIR}/bullet/src/)
include_directories(${etk_SOURCE_DIR})
include_directories(${freetype_SOURCE_DIR})
include_directories(${exml_SOURCE_DIR})
include_directories(${ejson_SOURCE_DIR})
include_directories(${egami_SOURCE_DIR})
include_directories(${edtaa3_SOURCE_DIR})
include_directories(${date_SOURCE_DIR})
include_directories(${agg_SOURCE_DIR})
include_directories(${ewol_SOURCE_DIR})
#target_link_libraries(edn ewol)
target_link_libraries(edn ewol linearmath zlib etk freetype exml ejson egami edtaa3 date esvg png)
if (APPLE)
target_link_libraries(edn
"-framework Cocoa"
"-framework OpenGL"
"-framework QuartzCore"
"-framework AppKit"
)
elseif (UNIX)
target_link_libraries(edn -lGL -lX11 -lpthread)
elseif (WIN32)
endif ()

View File

@@ -13,13 +13,15 @@
#include <ewol/context/clipBoard.h> #include <ewol/context/clipBoard.h>
#include <appl/HighlightManager.h> #include <appl/HighlightManager.h>
#undef __class__
#define __class__ "Buffer"
const char* const appl::Buffer::eventIsModify = "edn-is-modify"; const char* const appl::Buffer::eventIsModify = "edn-is-modify";
const char* const appl::Buffer::eventIsSave = "edn-is-save"; const char* const appl::Buffer::eventIsSave = "edn-is-save";
const char* const appl::Buffer::eventSelectChange = "edn-select-change"; const char* const appl::Buffer::eventSelectChange = "edn-select-change";
const char* const appl::Buffer::eventChangeName = "edn-buffer-name-change"; const char* const appl::Buffer::eventChangeName = "edn-buffer-name-change";
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ (void) { appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
m_value = u32char::Null; m_value = u32char::Null;
if (m_current < 0) { if (m_current < 0) {
m_current = 0; m_current = 0;
@@ -41,7 +43,7 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ (void) {
return *this; return *this;
} }
appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- (void) { appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- () {
m_value = u32char::Null; m_value = u32char::Null;
if (m_data != NULL) { if (m_data != NULL) {
if (m_current > 0) { if (m_current > 0) {
@@ -62,7 +64,7 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- (void) {
return *this; return *this;
} }
char32_t appl::Buffer::Iterator::operator* (void) { char32_t appl::Buffer::Iterator::operator* () {
if (m_value != u32char::Null) { if (m_value != u32char::Null) {
return m_value; return m_value;
} }
@@ -92,32 +94,32 @@ appl::Buffer::Iterator appl::Buffer::position(int64_t _pos) {
return appl::Buffer::Iterator(this, _pos); return appl::Buffer::Iterator(this, _pos);
} }
appl::Buffer::Iterator appl::Buffer::begin(void) { appl::Buffer::Iterator appl::Buffer::begin() {
return position(0); return position(0);
} }
appl::Buffer::Iterator appl::Buffer::end(void) { appl::Buffer::Iterator appl::Buffer::end() {
// TODO : chek the validity of the char ... // TODO : chek the validity of the char ...
return position( m_data.size() ); return position( m_data.size() );
} }
appl::Buffer::Iterator appl::Buffer::cursor(void) { appl::Buffer::Iterator appl::Buffer::cursor() {
if (m_cursorPos<= 0) { if (m_cursorPos<= 0) {
return begin(); return begin();
} }
return position( m_cursorPos ); return position( m_cursorPos );
} }
appl::Buffer::Iterator appl::Buffer::selectStart(void) { appl::Buffer::Iterator appl::Buffer::selectStart() {
return position( getStartSelectionPos() ); return position( getStartSelectionPos() );
} }
appl::Buffer::Iterator appl::Buffer::selectStop(void) { appl::Buffer::Iterator appl::Buffer::selectStop() {
return position( getStopSelectionPos() ); return position( getStopSelectionPos() );
} }
appl::Buffer::Buffer(void) : appl::Buffer::Buffer() :
m_hasFileName(false), m_hasFileName(false),
m_fileName(""), m_fileName(""),
m_isModify(false), m_isModify(false),
@@ -136,15 +138,16 @@ appl::Buffer::Buffer(void) :
addEventId(eventChangeName); addEventId(eventChangeName);
} }
appl::Buffer::~Buffer(void) { appl::Buffer::~Buffer() {
if (m_highlight == NULL) {
appl::Highlight::release(m_highlight);
}
} }
bool appl::Buffer::loadFile(const std::string& _name) { bool appl::Buffer::loadFile(const std::string& _name) {
APPL_DEBUG("Load file : '" << _name << "'"); APPL_DEBUG("Convert filename :'" << _name << "'");
m_fileName = _name; etk::FSNode file(_name);
std::string name = file.getName();
APPL_INFO("Load file : '" << name << "'");
m_fileName = name;
m_hasFileName = true; m_hasFileName = true;
m_isModify = true; m_isModify = true;
m_cursorPos = 0; m_cursorPos = 0;
@@ -160,16 +163,19 @@ bool appl::Buffer::loadFile(const std::string& _name) {
} }
void appl::Buffer::setFileName(const std::string& _name) { void appl::Buffer::setFileName(const std::string& _name) {
if (m_fileName == _name) { APPL_DEBUG("Convert filename :'" << _name << "'");
etk::FSNode file(_name);
std::string name = file.getName();
if (m_fileName == name) {
return; return;
} }
m_fileName = _name; m_fileName = name;
m_hasFileName = true; m_hasFileName = true;
generateEventId(eventChangeName); generateEventId(eventChangeName);
setModification(true); setModification(true);
} }
bool appl::Buffer::storeFile(void) { bool appl::Buffer::storeFile() {
if (m_data.dumpIn(m_fileName) == true) { if (m_data.dumpIn(m_fileName) == true) {
APPL_INFO("saving file : " << m_fileName); APPL_INFO("saving file : " << m_fileName);
setModification(false); setModification(false);
@@ -191,7 +197,7 @@ void appl::Buffer::setModification(bool _status) {
} }
// TODO : Naming error // TODO : Naming error
void appl::Buffer::countNumberofLine(void) { void appl::Buffer::countNumberofLine() {
m_nbLines = 1; m_nbLines = 1;
for (Iterator it = begin(); for (Iterator it = begin();
(bool)it == true; (bool)it == true;
@@ -293,7 +299,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
for (Iterator it = _pos; for (Iterator it = _pos;
(bool)it == true; (bool)it == true;
++it) { ++it) {
if (tolower(*it) == firstElement) { if ((char32_t)tolower(*it) == firstElement) {
// find the first char ==> check next... // find the first char ==> check next...
bool find = true; bool find = true;
Iterator tmp = it; Iterator tmp = it;
@@ -365,7 +371,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
(bool)it == true; (bool)it == true;
--it) { --it) {
//APPL_DEBUG("compare : " << *it << " ?= " << _search); //APPL_DEBUG("compare : " << *it << " ?= " << _search);
if (tolower(*it) == lastElement) { if ((char32_t)tolower(*it) == lastElement) {
// find the last char ==> check previous... // find the last char ==> check previous...
bool find = true; bool find = true;
_result = it; _result = it;
@@ -511,7 +517,7 @@ void appl::Buffer::setSelectionPos(const appl::Buffer::Iterator& _pos) {
generateEventId(eventSelectChange); generateEventId(eventSelectChange);
} }
void appl::Buffer::unSelect(void) { void appl::Buffer::unSelect() {
m_cursorSelectPos = -1; m_cursorSelectPos = -1;
generateEventId(eventSelectChange); generateEventId(eventSelectChange);
} }
@@ -619,8 +625,6 @@ bool appl::Buffer::copy(std::string& _data) {
void appl::Buffer::copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { void appl::Buffer::copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
_data.clear(); _data.clear();
int64_t startPos = getStartSelectionPos();
int64_t endPos = getStopSelectionPos();
for (Iterator it = _pos; for (Iterator it = _pos;
it != _posEnd && it != _posEnd &&
(bool)it == true; (bool)it == true;
@@ -634,7 +638,7 @@ bool appl::Buffer::write(const std::string& _data, const appl::Buffer::Iterator&
if (position < 0){ if (position < 0){
position = 0; position = 0;
} }
APPL_ERROR("writye at pos: " << (int64_t)_pos << " ==> " << position); APPL_VERBOSE("write at pos: " << (int64_t)_pos << " ==> " << position << " data : " << _data);
m_data.insert(position, (int8_t*)(_data.c_str()), _data.size()); m_data.insert(position, (int8_t*)(_data.c_str()), _data.size());
if (m_cursorPos < 0) { if (m_cursorPos < 0) {
m_cursorPos = 0; m_cursorPos = 0;
@@ -661,7 +665,7 @@ bool appl::Buffer::replace(const std::string& _data, const appl::Buffer::Iterato
return true; return true;
} }
void appl::Buffer::removeSelection(void) { void appl::Buffer::removeSelection() {
if (hasTextSelected() == false) { if (hasTextSelected() == false) {
return; return;
} }
@@ -675,7 +679,7 @@ void appl::Buffer::removeSelection(void) {
setModification(true); setModification(true);
} }
void appl::Buffer::tryFindHighlightType(void) { void appl::Buffer::tryFindHighlightType() {
etk::FSNode file(m_fileName); etk::FSNode file(m_fileName);
std::string type = appl::highlightManager::getTypeExtention(file.fileGetExtention()); std::string type = appl::highlightManager::getTypeExtention(file.fileGetExtention());
if (type.size() == 0) { if (type.size() == 0) {
@@ -688,9 +692,7 @@ void appl::Buffer::tryFindHighlightType(void) {
void appl::Buffer::setHighlightType(const std::string& _type) { void appl::Buffer::setHighlightType(const std::string& _type) {
m_highlightType = ""; m_highlightType = "";
cleanHighLight(); cleanHighLight();
if (m_highlight == NULL) { m_highlight.reset();
appl::Highlight::release(m_highlight);
}
std::string resourceName = appl::highlightManager::getFileWithTypeType(_type); std::string resourceName = appl::highlightManager::getFileWithTypeType(_type);
if (resourceName == "") { if (resourceName == "") {
return; return;
@@ -757,12 +759,12 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
} else { } else {
elemStart = startId+1; elemStart = startId+1;
} }
for (int64_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { for (auto it(m_HLDataPass1.begin()+elemStart); it != m_HLDataPass1.end(); ++it) {
//APPL_DEBUG("move element=" << i); //APPL_DEBUG("move element=" << i);
m_HLDataPass1[iii].beginStart += _nbAdded - _nbDeleted; it->beginStart += _nbAdded - _nbDeleted;
m_HLDataPass1[iii].beginStop += _nbAdded - _nbDeleted; it->beginStop += _nbAdded - _nbDeleted;
m_HLDataPass1[iii].endStart += _nbAdded - _nbDeleted; it->endStart += _nbAdded - _nbDeleted;
m_HLDataPass1[iii].endStop += _nbAdded - _nbDeleted; it->endStop += _nbAdded - _nbDeleted;
} }
//Regenerate Element inside range //Regenerate Element inside range
if ( startId == -1 if ( startId == -1
@@ -825,7 +827,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
------------ ------------- ---------- ------------ ------------- ----------
S=-1 *************** E S=-1 *************** E
*/ */
for (int32_t iii = 0; iii < m_HLDataPass1.size(); ++iii) { for (size_t iii = 0; iii < m_HLDataPass1.size(); ++iii) {
if (m_HLDataPass1[iii].endStop > _startPos) { if (m_HLDataPass1[iii].endStop > _startPos) {
break; break;
} }
@@ -846,7 +848,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
} else { } else {
elemStart = _startId+1; elemStart = _startId+1;
} }
for (int32_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { for (size_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) {
if (m_HLDataPass1[iii].beginStart > _endPos) { if (m_HLDataPass1[iii].beginStart > _endPos) {
_stopId = iii; _stopId = iii;
break; break;
@@ -862,7 +864,7 @@ void appl::Buffer::generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _a
m_highlight->parse(_pos, _endPos, m_HLDataPass1, _addingPos, m_data); m_highlight->parse(_pos, _endPos, m_HLDataPass1, _addingPos, m_data);
} }
void appl::Buffer::cleanHighLight(void) { void appl::Buffer::cleanHighLight() {
// remove all element in the list... // remove all element in the list...
m_HLDataPass1.clear(); m_HLDataPass1.clear();
} }
@@ -870,7 +872,7 @@ void appl::Buffer::cleanHighLight(void) {
appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64_t &_starPos) { appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64_t &_starPos) {
int32_t start = etk_max(0, _starPos-1); int32_t start = etk_max(0, _starPos-1);
for (int32_t iii = start; iii < m_HLDataPass1.size(); ++iii) { for (size_t iii = start; iii < m_HLDataPass1.size(); ++iii) {
_starPos = iii; _starPos = iii;
if ( m_HLDataPass1[iii].beginStart <= _pos if ( m_HLDataPass1[iii].beginStart <= _pos
&& m_HLDataPass1[iii].endStop > _pos) { && m_HLDataPass1[iii].endStop > _pos) {
@@ -974,7 +976,7 @@ appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(appl::DisplayHLData
return getElementColorAtPosition(_pos, _MData.posHLPass1); return getElementColorAtPosition(_pos, _MData.posHLPass1);
} }
uint32_t appl::Buffer::getCursorLinesId(void) { uint32_t appl::Buffer::getCursorLinesId() {
if (m_data.size() == 0) { if (m_data.size() == 0) {
return 0; return 0;
} }
@@ -987,4 +989,4 @@ uint32_t appl::Buffer::getCursorLinesId(void) {
} }
} }
return line; return line;
} }

View File

@@ -38,7 +38,7 @@ namespace appl {
/** /**
* @brief Basic itarator constructor with no link. * @brief Basic itarator constructor with no link.
*/ */
Iterator(void): Iterator():
m_current(0), m_current(0),
m_data(NULL), m_data(NULL),
m_value(u32char::Null) { m_value(u32char::Null) {
@@ -68,7 +68,7 @@ namespace appl {
/** /**
* @brief Basic destructor * @brief Basic destructor
*/ */
~Iterator(void) { virtual ~Iterator() {
m_current = 0; m_current = 0;
m_data = NULL; m_data = NULL;
m_value = u32char::Null; m_value = u32char::Null;
@@ -77,7 +77,7 @@ namespace appl {
* @brief basic boolean cast * @brief basic boolean cast
* @return true if the element is present in buffer * @return true if the element is present in buffer
*/ */
operator bool (void) const { operator bool () const {
if (m_data == NULL) { if (m_data == NULL) {
return false; return false;
} }
@@ -93,7 +93,7 @@ namespace appl {
* @brief basic boolean cast * @brief basic boolean cast
* @return true if the element is present in buffer * @return true if the element is present in buffer
*/ */
operator int64_t (void) const { operator int64_t () const {
if (m_data == NULL) { if (m_data == NULL) {
return 0; return 0;
} }
@@ -109,12 +109,12 @@ namespace appl {
* @brief Incremental operator * @brief Incremental operator
* @return Reference on the current iterator incremented * @return Reference on the current iterator incremented
*/ */
Iterator& operator++ (void); Iterator& operator++ ();
/** /**
* @brief Decremental operator * @brief Decremental operator
* @return Reference on the current iterator decremented * @return Reference on the current iterator decremented
*/ */
Iterator& operator-- (void); Iterator& operator-- ();
/** /**
* @brief Incremental operator * @brief Incremental operator
* @return Reference on a new iterator and increment the other one * @return Reference on a new iterator and increment the other one
@@ -211,12 +211,12 @@ namespace appl {
* @brief Get the value on the current element * @brief Get the value on the current element
* @return The request element value * @return The request element value
*/ */
char32_t operator* (void); char32_t operator* ();
/** /**
* @brief Get the position in the buffer * @brief Get the position in the buffer
* @return The requested position. * @return The requested position.
*/ */
int64_t getPos(void) const { int64_t getPos() const {
if (m_data == NULL) { if (m_data == NULL) {
return 0; return 0;
} }
@@ -248,7 +248,7 @@ namespace appl {
}; };
Iterator operator+ (const size_t _val) const { Iterator operator+ (const size_t _val) const {
Iterator tmpp(*this); Iterator tmpp(*this);
for (int64_t iii=0; iii<_val; ++iii) { for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
++tmpp; ++tmpp;
} }
return tmpp; return tmpp;
@@ -273,7 +273,7 @@ namespace appl {
}; };
Iterator operator- (const size_t _val) const { Iterator operator- (const size_t _val) const {
Iterator tmpp(*this); Iterator tmpp(*this);
for (int64_t iii=0; iii<_val; ++iii) { for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
--tmpp; --tmpp;
} }
return tmpp; return tmpp;
@@ -293,8 +293,8 @@ namespace appl {
static const char* const eventSelectChange; static const char* const eventSelectChange;
static const char* const eventChangeName; static const char* const eventChangeName;
public: public:
Buffer(void); Buffer();
~Buffer(void); virtual ~Buffer();
private: private:
bool m_hasFileName; //!< when new file, the buffer has no name ==> but it might be reference with a single name ... bool m_hasFileName; //!< when new file, the buffer has no name ==> but it might be reference with a single name ...
std::string m_fileName; //!< name of the file (with his path) std::string m_fileName; //!< name of the file (with his path)
@@ -302,14 +302,14 @@ namespace appl {
/** /**
* @brief get the curent filename of the Buffer * @brief get the curent filename of the Buffer
*/ */
const std::string& getFileName(void) { const std::string& getFileName() {
return m_fileName; return m_fileName;
} }
/** /**
* @brief Check if the buffer has a real filename. * @brief Check if the buffer has a real filename.
* @return the status of the existance of a name. * @return the status of the existance of a name.
*/ */
bool hasFileName(void) { bool hasFileName() {
return m_hasFileName; return m_hasFileName;
} }
/** /**
@@ -327,7 +327,7 @@ namespace appl {
* @brief save the file in the specify path. * @brief save the file in the specify path.
* @return true is saving well done * @return true is saving well done
*/ */
bool storeFile(void); bool storeFile();
protected: protected:
bool m_isModify; //!< true if the file is modify bool m_isModify; //!< true if the file is modify
public: public:
@@ -335,7 +335,7 @@ namespace appl {
* @breif get the status of file modification. * @breif get the status of file modification.
* @return true if file is modify. * @return true if file is modify.
*/ */
bool isModify(void) { bool isModify() {
return m_isModify; return m_isModify;
} }
/** /**
@@ -346,7 +346,7 @@ namespace appl {
protected: protected:
etk::Buffer m_data; //!< copy of the file buffer etk::Buffer m_data; //!< copy of the file buffer
public: public:
etk::Buffer& getData(void) { etk::Buffer& getData() {
return m_data; return m_data;
}; };
protected: protected:
@@ -364,30 +364,30 @@ namespace appl {
/** /**
* @brief Remove Selection of the buffer. * @brief Remove Selection of the buffer.
*/ */
void unSelect(void); void unSelect();
/** /**
* @brief Remove the selection of the buffer. (do nothing if no secection) * @brief Remove the selection of the buffer. (do nothing if no secection)
*/ */
void removeSelection(void); void removeSelection();
/** /**
* @brief Get the status of selection. * @brief Get the status of selection.
* @return true if we have a curent selection, false otherwise. * @return true if we have a curent selection, false otherwise.
*/ */
bool hasTextSelected(void) { bool hasTextSelected() {
return m_cursorSelectPos >= 0; return m_cursorSelectPos >= 0;
} }
/** /**
* @brief Get the Start position of the selection. * @brief Get the Start position of the selection.
* @return position of the start selection. * @return position of the start selection.
*/ */
int64_t getStartSelectionPos(void) { int64_t getStartSelectionPos() {
return etk_min(m_cursorPos, m_cursorSelectPos); return etk_min(m_cursorPos, m_cursorSelectPos);
} }
/** /**
* @brief Get the Stop position of the selection. * @brief Get the Stop position of the selection.
* @return position of the stop selection. * @return position of the stop selection.
*/ */
int64_t getStopSelectionPos(void) { int64_t getStopSelectionPos() {
return etk_max(m_cursorPos, m_cursorSelectPos); return etk_max(m_cursorPos, m_cursorSelectPos);
} }
protected: protected:
@@ -404,7 +404,7 @@ namespace appl {
* @brief Get the favorite distance from the left screen (For up and down moving). * @brief Get the favorite distance from the left screen (For up and down moving).
* @return The distance in pixels. * @return The distance in pixels.
*/ */
float getFavoriteUpDownPos(void) { float getFavoriteUpDownPos() {
return m_cursorPreferredCol; return m_cursorPreferredCol;
} }
protected: protected:
@@ -421,7 +421,7 @@ namespace appl {
* @brief Get the selection mode (if true, the move event creata a selection) * @brief Get the selection mode (if true, the move event creata a selection)
* @return The selecting mode. * @return The selecting mode.
*/ */
bool getSelectMode(void) { bool getSelectMode() {
return m_selectMode; return m_selectMode;
} }
public: public:
@@ -544,27 +544,27 @@ namespace appl {
* @brief Get an Iterator on the start position. * @brief Get an Iterator on the start position.
* @return The Iterator * @return The Iterator
*/ */
Iterator begin(void); Iterator begin();
/** /**
* @brief Get an Iterator on the end position. * @brief Get an Iterator on the end position.
* @return The Iterator * @return The Iterator
*/ */
Iterator end(void); Iterator end();
/** /**
* @brief Get an Iterator on the cursor position. * @brief Get an Iterator on the cursor position.
* @return The Iterator * @return The Iterator
*/ */
Iterator cursor(void); Iterator cursor();
/** /**
* @brief Get an Iterator on the start selection. * @brief Get an Iterator on the start selection.
* @return The Iterator * @return The Iterator
*/ */
Iterator selectStart(void); Iterator selectStart();
/** /**
* @brief Get an Iterator on the stop selection. * @brief Get an Iterator on the stop selection.
* @return The Iterator * @return The Iterator
*/ */
Iterator selectStop(void); Iterator selectStop();
protected: protected:
int32_t m_nbLines; //!< number of line in the buffer int32_t m_nbLines; //!< number of line in the buffer
public: public:
@@ -572,29 +572,29 @@ namespace appl {
* @brief Get the number of line in the buffer. * @brief Get the number of line in the buffer.
* @return number of line in the Buffer. * @return number of line in the Buffer.
*/ */
int32_t getNumberOfLines(void) { int32_t getNumberOfLines() {
return m_nbLines; return m_nbLines;
} }
/** /**
* @brief Get the cursor line numberin the buffer. * @brief Get the cursor line numberin the buffer.
* @return the line id in the Buffer. * @return the line id in the Buffer.
*/ */
uint32_t getCursorLinesId(void); uint32_t getCursorLinesId();
protected: protected:
/** /**
* @brief Count the number of line in the buffer * @brief Count the number of line in the buffer
*/ */
void countNumberofLine(void); void countNumberofLine();
protected: protected:
std::string m_highlightType; //!< Name of the highlight type std::string m_highlightType; //!< Name of the highlight type
appl::Highlight* m_highlight; //!< internal link with the Highlight system ewol::object::Shared<appl::Highlight> m_highlight; //!< internal link with the Highlight system
std::vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1 std::vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1
public: public:
/** /**
* @brief Find the Highligh capability * @brief Find the Highligh capability
*/ */
void tryFindHighlightType(void); void tryFindHighlightType();
/** /**
* @brief Set type of highlight * @brief Set type of highlight
* @param[in] _type type of the highlight * @param[in] _type type of the highlight
@@ -604,7 +604,7 @@ namespace appl {
* @brief Get type of highlight * @brief Get type of highlight
* @return Type of the highlight * @return Type of the highlight
*/ */
const std::string& setHighlightType(void) { const std::string& setHighlightType() {
return m_highlightType; return m_highlightType;
}; };
@@ -615,7 +615,7 @@ namespace appl {
int64_t& _stopId, int64_t& _stopId,
bool _backPreviousNotEnded); bool _backPreviousNotEnded);
void generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos=0); void generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos=0);
void cleanHighLight(void); void cleanHighLight();
appl::HighlightInfo* getElementColorAtPosition(int64_t _pos, int64_t &_starPos); appl::HighlightInfo* getElementColorAtPosition(int64_t _pos, int64_t &_starPos);
void hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines); void hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines);
appl::HighlightInfo* getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos); appl::HighlightInfo* getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos);

View File

@@ -6,10 +6,11 @@
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/types.h>
#include <etk/os/FSNode.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <etk/types.h>
#include <ewol/object/Object.h> #include <ewol/object/Object.h>
#include <ewol/object/Manager.h> #include <ewol/object/Manager.h>
#include <ewol/resource/Manager.h> #include <ewol/resource/Manager.h>
@@ -17,30 +18,19 @@
#undef __class__ #undef __class__
#define __class__ "BufferManager" #define __class__ "BufferManager"
appl::BufferManager::BufferManager(void) : appl::BufferManager::BufferManager() :
ewol::Resource("???BufferManager???"), ewol::Resource("???BufferManager???"),
m_bufferSelected(NULL) { m_bufferSelected(NULL) {
addObjectType("appl::BufferManager"); addObjectType("appl::BufferManager");
} }
appl::BufferManager::~BufferManager(void) { appl::BufferManager::~BufferManager() {
int32_t previousCount = m_list.size();
for (int32_t iii = m_list.size()-1; iii >= 0 ; --iii) {
if (m_list[iii] == NULL) {
continue;
}
delete(m_list[iii]);
if (previousCount == m_list.size()) {
APPL_ERROR("Error in removing buffer !! ");
}
previousCount = m_list.size();
}
m_list.clear(); m_list.clear();
} }
appl::Buffer* appl::BufferManager::createNewBuffer(void) { ewol::object::Shared<appl::Buffer> appl::BufferManager::createNewBuffer() {
appl::Buffer* tmp = new appl::Buffer(); ewol::object::Shared<appl::Buffer> tmp = ewol::object::makeShared(new appl::Buffer());
if (tmp == NULL) { if (tmp == NULL) {
APPL_ERROR("Can not allocate the Buffer (empty)."); APPL_ERROR("Can not allocate the Buffer (empty).");
return NULL; return NULL;
@@ -50,21 +40,23 @@ appl::Buffer* appl::BufferManager::createNewBuffer(void) {
return tmp; return tmp;
} }
appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) { ewol::object::Shared<appl::Buffer> appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) {
for (int32_t iii = 0; iii < m_list.size(); ++iii) { APPL_INFO("get(" << _fileName << "," << _createIfNeeded << ")");
if (m_list[iii] == NULL) { for (auto &it : m_list) {
if (it == NULL) {
continue; continue;
} }
if (m_list[iii]->getFileName() == _fileName) { if (it->getFileName() == _fileName) {
return m_list[iii]; return it;
} }
} }
if (_createIfNeeded == true) { if (_createIfNeeded == true) {
if (etk::FSNodeGetType(_fileName) == etk::FSN_FOLDER) { if (etk::FSNodeGetType(_fileName) == etk::FSN_FOLDER) {
APPL_INFO("try open a folder : " << _fileName); APPL_WARNING("try open a folder : " << _fileName);
APPL_CRITICAL("plop");
return NULL; return NULL;
} }
appl::Buffer* tmp = new appl::Buffer(); ewol::object::Shared<appl::Buffer> tmp = ewol::object::makeShared(new appl::Buffer());
if (tmp == NULL) { if (tmp == NULL) {
APPL_ERROR("Can not allocate the Buffer class : " << _fileName); APPL_ERROR("Can not allocate the Buffer class : " << _fileName);
return NULL; return NULL;
@@ -75,31 +67,42 @@ appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _creat
} }
return NULL; return NULL;
} }
void appl::BufferManager::setBufferSelected(appl::Buffer* _bufferSelected) { void appl::BufferManager::setBufferSelected(ewol::object::Shared<appl::Buffer> _bufferSelected) {
m_bufferSelected = _bufferSelected; m_bufferSelected = _bufferSelected;
sendMultiCast(appl::MsgSelectChange, ""); sendMultiCast(appl::MsgSelectChange, "");
} }
void appl::BufferManager::onObjectRemove(ewol::Object * _removeObject) { void appl::BufferManager::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
if (m_bufferSelected == _removeObject) { ewol::Resource::onObjectRemove(_object);
if (m_bufferSelected == _object) {
setBufferSelected(NULL); setBufferSelected(NULL);
} }
for (int32_t iii = 0; iii < m_list.size(); ++iii) { for (auto it(m_list.begin()); it!=m_list.end(); ++it) {
if (m_list[iii] != _removeObject) { if (*it != _object) {
continue; continue;
} }
m_list[iii] = NULL; m_list.erase(it);
m_list.erase(m_list.begin()+iii); it = m_list.begin();
return;
} }
} }
ewol::object::Shared<appl::Buffer> appl::BufferManager::get(int32_t _id) {
int32_t id = 0;
for (auto &it : m_list) {
if (id == _id) {
return it;
}
id++;
}
return m_list.back();
}
bool appl::BufferManager::exist(const std::string& _fileName) { bool appl::BufferManager::exist(const std::string& _fileName) {
for (int32_t iii = 0; iii < m_list.size(); ++iii) { for (auto &it : m_list) {
if (m_list[iii] == NULL) { if (it == nullptr) {
continue; continue;
} }
if (m_list[iii]->getFileName() == _fileName) { if (it->getFileName() == _fileName) {
return true; return true;
} }
} }
@@ -120,15 +123,14 @@ void appl::BufferManager::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_DEBUG("receive message !!! " << _msg); APPL_DEBUG("receive message !!! " << _msg);
} }
appl::BufferManager* appl::BufferManager::keep(void) { ewol::object::Shared<appl::BufferManager> appl::BufferManager::keep() {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); ewol::object::Shared<appl::BufferManager> object = ewol::dynamic_pointer_cast<appl::BufferManager>(getManager().localKeep("???BufferManager???"));
appl::BufferManager* object = static_cast<appl::BufferManager*>(getManager().localKeep("???BufferManager???"));
if (NULL != object) { if (NULL != object) {
return object; return object;
} }
// this element create a new one every time .... // this element create a new one every time ....
EWOL_INFO("CREATE : appl::BufferManager: ???BufferManager???"); EWOL_INFO("CREATE : appl::BufferManager: ???BufferManager???");
object = new appl::BufferManager(); object = ewol::object::makeShared(new appl::BufferManager());
if (NULL == object) { if (NULL == object) {
EWOL_ERROR("allocation error of a resource : ???BufferManager???"); EWOL_ERROR("allocation error of a resource : ???BufferManager???");
return NULL; return NULL;
@@ -137,11 +139,3 @@ appl::BufferManager* appl::BufferManager::keep(void) {
return object; return object;
} }
void appl::BufferManager::release(appl::BufferManager*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@@ -9,6 +9,7 @@
#ifndef __BUFFER_MANAGER_H__ #ifndef __BUFFER_MANAGER_H__
#define __BUFFER_MANAGER_H__ #define __BUFFER_MANAGER_H__
#include <list>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
#include <ewol/widget/Widget.h> #include <ewol/widget/Widget.h>
@@ -17,10 +18,11 @@
namespace appl { namespace appl {
class BufferManager : public ewol::Resource { class BufferManager : public ewol::Resource {
protected: protected:
BufferManager(void); BufferManager();
~BufferManager(void); public:
virtual ~BufferManager();
private: private:
std::vector<appl::Buffer*> m_list; // list of all buffer curently open std::list<ewol::object::Owner<appl::Buffer>> m_list; // list of all buffer curently open
public: public:
/** /**
* @brief Get a specific buffer with his name (can create a new buffer). * @brief Get a specific buffer with his name (can create a new buffer).
@@ -28,7 +30,7 @@ namespace appl {
* @param[in] _createIfNeeded Create the buffer if not existed. * @param[in] _createIfNeeded Create the buffer if not existed.
* @return a pointer on the buffer * @return a pointer on the buffer
*/ */
appl::Buffer* get(const std::string& _fileName, bool _createIfNeeded=false); ewol::object::Shared<appl::Buffer> get(const std::string& _fileName, bool _createIfNeeded=false);
/** /**
* @brief Load a specific file, event if it not existed: * @brief Load a specific file, event if it not existed:
* @param[in] _fileName Name of the file to open or create. * @param[in] _fileName Name of the file to open or create.
@@ -44,7 +46,7 @@ namespace appl {
* @brief Get count of all buffer availlable. * @brief Get count of all buffer availlable.
* @return Number of buffer * @return Number of buffer
*/ */
int32_t size(void) const { int32_t size() const {
return m_list.size(); return m_list.size();
} }
/** /**
@@ -52,32 +54,30 @@ namespace appl {
* @param[in] _id Number of buffer * @param[in] _id Number of buffer
* @return pointer on the buffer * @return pointer on the buffer
*/ */
appl::Buffer* get(int32_t _id) { ewol::object::Shared<appl::Buffer> get(int32_t _id);
return m_list[_id];
}
/** /**
* @brief Create a new buffer empty. * @brief Create a new buffer empty.
* @return Created buffer or NULL. * @return Created buffer or NULL.
*/ */
appl::Buffer* createNewBuffer(void); ewol::object::Shared<appl::Buffer> createNewBuffer();
private: private:
appl::Buffer* m_bufferSelected; ewol::object::Shared<appl::Buffer> m_bufferSelected;
public: public:
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
* @param[in] _bufferSelected Pointer on the buffer selected * @param[in] _bufferSelected Pointer on the buffer selected
*/ */
void setBufferSelected(appl::Buffer* _bufferSelected); void setBufferSelected(ewol::object::Shared<appl::Buffer> _bufferSelected);
/** /**
* @brief Get the current buffer selected * @brief Get the current buffer selected
* @return Pointer on the buffer selected * @return Pointer on the buffer selected
*/ */
appl::Buffer* getBufferSelected(void) { ewol::object::Shared<appl::Buffer> getBufferSelected() {
return m_bufferSelected; return m_bufferSelected;
}; };
public: // herited function public: // herited function
void onReceiveMessage(const ewol::object::Message& _msg); void onReceiveMessage(const ewol::object::Message& _msg);
void onObjectRemove(ewol::Object * _removeObject); void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
public: // resource manager public: // resource manager
/** /**
* @brief keep the resource pointer. * @brief keep the resource pointer.
@@ -85,12 +85,7 @@ namespace appl {
* @param[in] _filename Name of the configuration file. * @param[in] _filename Name of the configuration file.
* @return pointer on the resource or NULL if an error occured. * @return pointer on the resource or NULL if an error occured.
*/ */
static appl::BufferManager* keep(void); static ewol::object::Shared<appl::BufferManager> keep();
/**
* @brief release the keeped resources
* @param[in,out] reference on the object pointer
*/
static void release(appl::BufferManager*& _object);
}; };
}; };

View File

@@ -44,7 +44,7 @@ void appl::GlyphDecoration::setBold(bool _enable)
} }
} }
etk::CCout& appl::operator <<(etk::CCout& _os, const appl::GlyphDecoration& _obj) std::ostream& appl::operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj)
{ {
_os << "{fg=" << _obj.getForeground(); _os << "{fg=" << _obj.getForeground();
_os << ",bg=" << _obj.getBackground(); _os << ",bg=" << _obj.getBackground();

View File

@@ -17,7 +17,7 @@ namespace appl {
public: public:
// Constructeur // Constructeur
GlyphDecoration(const std::string& _newColorName = "no_name"); GlyphDecoration(const std::string& _newColorName = "no_name");
~GlyphDecoration(void) { virtual ~GlyphDecoration() {
// nothing to do ... // nothing to do ...
}; };
private: private:
@@ -34,7 +34,7 @@ namespace appl {
* @brief Get the color name. * @brief Get the color name.
* @return The name of the color. * @return The name of the color.
*/ */
const std::string& getName(void) const { const std::string& getName() const {
return m_colorName; return m_colorName;
}; };
private: private:
@@ -51,14 +51,14 @@ namespace appl {
* @brief Get the foreground color. * @brief Get the foreground color.
* @return The color. * @return The color.
*/ */
const etk::Color<>& getForeground(void) const { const etk::Color<>& getForeground() const {
return m_colorFG; return m_colorFG;
}; };
/** /**
* @brief Get the foreground color status. * @brief Get the foreground color status.
* @return true if the color is visible. * @return true if the color is visible.
*/ */
bool haveFg(void) const { bool haveFg() const {
return m_colorFG.a() != 0; return m_colorFG.a() != 0;
}; };
private: private:
@@ -75,14 +75,14 @@ namespace appl {
* @brief Get the background color. * @brief Get the background color.
* @return The color. * @return The color.
*/ */
const etk::Color<>& getBackground(void) const { const etk::Color<>& getBackground() const {
return m_colorBG; return m_colorBG;
}; };
/** /**
* @brief Get the background color status. * @brief Get the background color status.
* @return true if the color is visible. * @return true if the color is visible.
*/ */
bool haveBackground(void) const { bool haveBackground() const {
return m_colorBG.a()!=0; return m_colorBG.a()!=0;
}; };
private: private:
@@ -97,7 +97,7 @@ namespace appl {
* @brief Get the italic status. * @brief Get the italic status.
* @return true if the glyph might be display in italic. * @return true if the glyph might be display in italic.
*/ */
bool getItalic(void) const { bool getItalic() const {
return m_italic; return m_italic;
}; };
private: private:
@@ -112,11 +112,11 @@ namespace appl {
* @brief Get the bold status. * @brief Get the bold status.
* @return true if the glyph might be display in bold. * @return true if the glyph might be display in bold.
*/ */
bool getBold(void) const { bool getBold() const {
return m_bold; return m_bold;
}; };
}; };
etk::CCout& operator <<(etk::CCout& _os, const appl::GlyphDecoration& _obj); std::ostream& operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj);
} }
#endif #endif

View File

@@ -25,11 +25,11 @@ appl::GlyphPainting::GlyphPainting(const std::string& _filename) :
reload(); reload();
} }
appl::GlyphPainting::~GlyphPainting(void) { appl::GlyphPainting::~GlyphPainting() {
} }
void appl::GlyphPainting::reload(void) { void appl::GlyphPainting::reload() {
ejson::Document doc; ejson::Document doc;
if (false == doc.load(m_name)) { if (false == doc.load(m_name)) {
APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName()); APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName());
@@ -47,7 +47,7 @@ void appl::GlyphPainting::reload(void) {
APPL_ERROR("Can not get basic array : 'ednColor'"); APPL_ERROR("Can not get basic array : 'ednColor'");
return; return;
} }
for (int32_t iii = 0; iii < baseArray->size(); ++iii) { for (size_t iii = 0; iii < baseArray->size(); ++iii) {
ejson::Object* tmpObj = baseArray->getObject(iii); ejson::Object* tmpObj = baseArray->getObject(iii);
if (tmpObj == NULL) { if (tmpObj == NULL) {
APPL_DEBUG(" can not get object in 'ednColor' id=" << iii); APPL_DEBUG(" can not get object in 'ednColor' id=" << iii);
@@ -60,7 +60,7 @@ void appl::GlyphPainting::reload(void) {
bool bold = tmpObj->getBooleanValue("bold", false); bool bold = tmpObj->getBooleanValue("bold", false);
APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'"); APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'");
bool findElement = false; bool findElement = false;
for (int32_t jjj=0; jjj<m_list.size(); ++jjj) { for (size_t jjj=0; jjj<m_list.size(); ++jjj) {
if (m_list[jjj].getName() != name) { if (m_list[jjj].getName() != name) {
continue; continue;
} }
@@ -84,7 +84,7 @@ void appl::GlyphPainting::reload(void) {
int32_t appl::GlyphPainting::request(const std::string& _name) { int32_t appl::GlyphPainting::request(const std::string& _name) {
for (int32_t iii=0; iii<m_list.size(); ++iii) { for (size_t iii=0; iii<m_list.size(); ++iii) {
if (m_list[iii].getName() == _name) { if (m_list[iii].getName() == _name) {
return iii; return iii;
} }
@@ -95,15 +95,15 @@ int32_t appl::GlyphPainting::request(const std::string& _name) {
return m_list.size()-1; return m_list.size()-1;
} }
appl::GlyphPainting* appl::GlyphPainting::keep(const std::string& _filename) { ewol::object::Shared<appl::GlyphPainting> appl::GlyphPainting::keep(const std::string& _filename) {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); //EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
appl::GlyphPainting* object = static_cast<appl::GlyphPainting*>(getManager().localKeep(_filename)); ewol::object::Shared<appl::GlyphPainting> object = ewol::dynamic_pointer_cast<appl::GlyphPainting>(getManager().localKeep(_filename));
if (NULL != object) { if (NULL != object) {
return object; return object;
} }
// this element create a new one every time .... // this element create a new one every time ....
EWOL_INFO("CREATE : appl::GlyphPainting : file : \"" << _filename << "\""); EWOL_INFO("CREATE : appl::GlyphPainting : file : \"" << _filename << "\"");
object = new appl::GlyphPainting(_filename); object = ewol::object::makeShared(new appl::GlyphPainting(_filename));
if (NULL == object) { if (NULL == object) {
EWOL_ERROR("allocation error of a resource : ??GlyphPainting??"); EWOL_ERROR("allocation error of a resource : ??GlyphPainting??");
return NULL; return NULL;
@@ -111,13 +111,3 @@ appl::GlyphPainting* appl::GlyphPainting::keep(const std::string& _filename) {
getManager().localAdd(object); getManager().localAdd(object);
return object; return object;
} }
void appl::GlyphPainting::release(appl::GlyphPainting*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@@ -20,12 +20,13 @@ namespace appl {
std::vector<appl::GlyphDecoration> m_list; std::vector<appl::GlyphDecoration> m_list;
protected: protected:
GlyphPainting(const std::string& _filename); GlyphPainting(const std::string& _filename);
virtual ~GlyphPainting(void); public:
virtual ~GlyphPainting();
public: public:
/** /**
* @brief Load or reload data from config * @brief Load or reload data from config
*/ */
void reload(void); void reload();
/** /**
* @brief Register a decoration with his name and get the ref id. * @brief Register a decoration with his name and get the ref id.
* @param[in] _name Name of the deco. * @param[in] _name Name of the deco.
@@ -55,12 +56,7 @@ namespace appl {
* @param[in] _filename Name of the configuration file. * @param[in] _filename Name of the configuration file.
* @return pointer on the resource or NULL if an error occured. * @return pointer on the resource or NULL if an error occured.
*/ */
static appl::GlyphPainting* keep(const std::string& _filename); static ewol::object::Shared<appl::GlyphPainting> keep(const std::string& _filename);
/**
* @brief release the keeped resources
* @param[in,out] reference on the object pointer
*/
static void release(appl::GlyphPainting*& _object);
}; };
}; };

View File

@@ -20,12 +20,12 @@
static void SortElementList(std::vector<appl::dataBufferStruct*>& _list) { static void SortElementList(std::vector<appl::dataBufferStruct*>& _list) {
std::vector<appl::dataBufferStruct *> tmpList = _list; std::vector<appl::dataBufferStruct *> tmpList = _list;
_list.clear(); _list.clear();
for(int32_t iii=0; iii<tmpList.size(); iii++) { for(size_t iii=0; iii<tmpList.size(); iii++) {
if (NULL == tmpList[iii]) { if (NULL == tmpList[iii]) {
continue; continue;
} }
int32_t findPos = 0; size_t findPos = 0;
for(int32_t jjj=0; jjj<_list.size(); jjj++) { for(size_t jjj=0; jjj<_list.size(); jjj++) {
//EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\""); //EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\"");
if (_list[jjj] == NULL) { if (_list[jjj] == NULL) {
continue; continue;
@@ -39,7 +39,7 @@ static void SortElementList(std::vector<appl::dataBufferStruct*>& _list) {
} }
} }
BufferView::BufferView(void) : BufferView::BufferView() :
m_openOrderMode(false) { m_openOrderMode(false) {
addObjectType("appl::BufferView"); addObjectType("appl::BufferView");
setCanHaveFocus(true); setCanHaveFocus(true);
@@ -63,21 +63,16 @@ BufferView::BufferView(void) :
m_colorTextModify = m_paintingProperties->request("textModify"); m_colorTextModify = m_paintingProperties->request("textModify");
} }
BufferView::~BufferView(void) { BufferView::~BufferView() {
removeAllElement(); removeAllElement();
} }
void BufferView::removeAllElement(void) { void BufferView::removeAllElement() {
for(int32_t iii=0; iii<m_list.size(); iii++) { for(auto &it : m_list) {
if (NULL!=m_list[iii]) { delete(it);
delete(m_list[iii]); it = NULL;
m_list[iii] = NULL;
}
} }
m_list.clear(); m_list.clear();
if (m_bufferManager != NULL) {
appl::BufferManager::release(m_bufferManager);
}
} }
void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition) { void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition) {
@@ -110,7 +105,7 @@ void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _sel
void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
ewol::widget::List::onReceiveMessage(_msg); ewol::widget::List::onReceiveMessage(_msg);
if (_msg.getMessage() == appl::MsgSelectNewFile) { if (_msg.getMessage() == appl::MsgSelectNewFile) {
appl::Buffer* buffer = m_bufferManager->get(_msg.getData()); ewol::object::Shared<appl::Buffer> buffer = m_bufferManager->get(_msg.getData());
if (buffer == NULL) { if (buffer == NULL) {
APPL_ERROR("event on element nor exist : " << _msg.getData()); APPL_ERROR("event on element nor exist : " << _msg.getData());
return; return;
@@ -143,7 +138,7 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
appl::dataBufferStruct* tmp = m_list[iii]; appl::dataBufferStruct* tmp = m_list[iii];
m_list[iii] = NULL; m_list[iii] = NULL;
m_list.erase(m_list.begin() + iii); m_list.erase(m_list.begin() + iii);
insertAlphabetic(tmp, (iii == m_selectedID)); insertAlphabetic(tmp, ((int64_t)iii == m_selectedID));
break; break;
} }
} }
@@ -162,12 +157,12 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_DEBUG("message : " << _msg); APPL_DEBUG("message : " << _msg);
if (_msg.getMessage() == appl::MsgSelectChange) { if (_msg.getMessage() == appl::MsgSelectChange) {
m_selectedID = -1; m_selectedID = -1;
appl::Buffer* tmpBuffer = NULL; ewol::object::Shared<appl::Buffer> tmpBuffer;
if (m_bufferManager != NULL) { if (m_bufferManager != NULL) {
tmpBuffer = m_bufferManager->getBufferSelected(); tmpBuffer = m_bufferManager->getBufferSelected();
} }
if (tmpBuffer != NULL) { if (tmpBuffer != NULL) {
for (int32_t iii=0; iii<m_list.size(); iii++) { for (size_t iii=0; iii<m_list.size(); iii++) {
if (m_list[iii] == NULL) { if (m_list[iii] == NULL) {
continue; continue;
} }
@@ -185,8 +180,8 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
// clean The list // clean The list
removeAllElement(); removeAllElement();
// get all the buffer name and properties: // get all the buffer name and properties:
int32_t nbBufferOpen = 0; // BufferManager::size(); size_t nbBufferOpen = 0; // BufferManager::size();
for (int32_t iii=0; iii<nbBufferOpen; iii++) { for (size_t iii=0; iii<nbBufferOpen; iii++) {
/* /*
if (BufferManager::exist(iii)) { if (BufferManager::exist(iii)) {
BufferText* tmpBuffer = BufferManager::get(iii); BufferText* tmpBuffer = BufferManager::get(iii);
@@ -212,36 +207,39 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
markToRedraw(); markToRedraw();
}else if (_msg.getMessage() == ednMsgBufferState) { }else if (_msg.getMessage() == ednMsgBufferState) {
// update list of modify section ... // update list of modify section ...
for (int32_t iii=0; iii<m_list.size(); iii++) { for (auto &it : m_list) {
if (NULL!=m_list[iii]) { if (it != nullptr) {
//m_list[iii]->m_isModify = BufferManager::get(m_list[iii]->m_bufferID)->isModify(); //it->m_isModify = BufferManager::get(it->m_bufferID)->isModify();
} }
} }
markToRedraw(); markToRedraw();
} }
} }
void BufferView::onObjectRemove(ewol::Object* _removeObject) { void BufferView::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
ewol::widget::List::onObjectRemove(_removeObject); ewol::widget::List::onObjectRemove(_object);
for (int32_t iii=0; iii<m_list.size(); iii++) { auto it(m_list.begin());
if (m_list[iii] == NULL) { while (it != m_list.end()) {
continue; if ( *it != nullptr
&& (*it)->m_buffer == _object) {
m_list.erase(it);
markToRedraw();
it = m_list.begin();
} else {
++it;
} }
if (m_list[iii]->m_buffer != _removeObject) { }
continue; if (m_bufferManager == _object) {
} m_bufferManager.reset();
m_list.erase(m_list.begin()+iii);
markToRedraw();
return;
} }
} }
etk::Color<> BufferView::getBasicBG(void) { etk::Color<> BufferView::getBasicBG() {
return (*m_paintingProperties)[m_colorBackground1].getForeground(); return (*m_paintingProperties)[m_colorBackground1].getForeground();
} }
uint32_t BufferView::getNuberOfColomn(void) { uint32_t BufferView::getNuberOfColomn() {
return 1; return 1;
} }
@@ -250,14 +248,14 @@ bool BufferView::getTitle(int32_t _colomn, std::string &_myTitle, etk::Color<> &
return true; return true;
} }
uint32_t BufferView::getNuberOfRaw(void) { uint32_t BufferView::getNuberOfRaw() {
return m_list.size(); return m_list.size();
} }
bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) { bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) {
if( _raw >= 0 if( _raw >= 0
&& _raw<m_list.size() && _raw<(int64_t)m_list.size()
&& NULL != m_list[_raw]) { && m_list[_raw] != nullptr) {
_myTextToWrite = m_list[_raw]->m_bufferName.getNameFile(); _myTextToWrite = m_list[_raw]->m_bufferName.getNameFile();
if ( m_list[_raw]->m_buffer != NULL if ( m_list[_raw]->m_buffer != NULL
@@ -286,7 +284,7 @@ bool BufferView::onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent
if (1 == _IdInput && _typeEvent == ewol::key::statusSingle) { if (1 == _IdInput && _typeEvent == ewol::key::statusSingle) {
APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw );
if( _raw >= 0 if( _raw >= 0
&& _raw<m_list.size() && _raw<(int64_t)m_list.size()
&& NULL != m_list[_raw]) { && NULL != m_list[_raw]) {
if (m_list[_raw]->m_buffer != NULL) { if (m_list[_raw]->m_buffer != NULL) {
sendMultiCast(appl::MsgSelectNewFile, m_list[_raw]->m_buffer->getFileName()); sendMultiCast(appl::MsgSelectNewFile, m_list[_raw]->m_buffer->getFileName());

View File

@@ -15,28 +15,25 @@
#include <ewol/widget/List.h> #include <ewol/widget/List.h>
#include <ewol/widget/Windows.h> #include <ewol/widget/Windows.h>
namespace appl namespace appl {
{ class dataBufferStruct {
class dataBufferStruct
{
public: public:
etk::FSNode m_bufferName; etk::FSNode m_bufferName;
appl::Buffer* m_buffer; ewol::object::Shared<appl::Buffer> m_buffer;
dataBufferStruct(const std::string& _bufferName, appl::Buffer* _buffer) : dataBufferStruct(const std::string& _bufferName, const ewol::object::Shared<appl::Buffer>& _buffer) :
m_bufferName(_bufferName), m_bufferName(_bufferName),
m_buffer(_buffer) { m_buffer(_buffer) {
}; };
~dataBufferStruct(void) { }; virtual ~dataBufferStruct() { };
}; };
}; };
class BufferView : public ewol::widget::List class BufferView : public ewol::widget::List {
{
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
private: private:
appl::GlyphPainting* m_paintingProperties; //!< element painting property ewol::object::Shared<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground1; int32_t m_colorBackground1;
int32_t m_colorBackground2; int32_t m_colorBackground2;
int32_t m_colorBackgroundSelect; int32_t m_colorBackgroundSelect;
@@ -53,21 +50,21 @@ class BufferView : public ewol::widget::List
void insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition = false); void insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition = false);
public: public:
// Constructeur // Constructeur
BufferView(void); BufferView();
~BufferView(void); virtual ~BufferView();
// Derived function // Derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object* _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
private: private:
bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order
protected: protected:
// function call to display the list : // function call to display the list :
virtual etk::Color<> getBasicBG(void); virtual etk::Color<> getBasicBG();
void removeAllElement(void); void removeAllElement();
// Derived function // Derived function
virtual uint32_t getNuberOfColomn(void); virtual uint32_t getNuberOfColomn();
virtual bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg); virtual bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg);
virtual uint32_t getNuberOfRaw(void); virtual uint32_t getNuberOfRaw();
virtual bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg); virtual bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg);
virtual bool onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y); virtual bool onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y);
}; };

View File

@@ -38,7 +38,7 @@
#include <appl/Gui/WorkerCloseAllFile.h> #include <appl/Gui/WorkerCloseAllFile.h>
namespace appl { namespace appl {
std::string getVersion(void) { std::string getVersion() {
#define FIRST_YEAR (2010) #define FIRST_YEAR (2010)
std::string tmpOutput = std::to_string(date::getYear()-FIRST_YEAR); std::string tmpOutput = std::to_string(date::getYear()-FIRST_YEAR);
tmpOutput += "."; tmpOutput += ".";
@@ -59,11 +59,11 @@ namespace appl {
class ParameterAboutGui : public ewol::widget::Sizer { class ParameterAboutGui : public ewol::widget::Sizer {
public : public :
ParameterAboutGui(void) : ParameterAboutGui() :
ewol::widget::Sizer(ewol::widget::Sizer::modeVert) { ewol::widget::Sizer(ewol::widget::Sizer::modeVert) {
ewol::widget::Spacer* mySpacer = NULL; ewol::object::Shared<ewol::widget::Spacer> mySpacer = NULL;
mySpacer = new ewol::widget::Spacer(); mySpacer = ewol::object::makeShared(new ewol::widget::Spacer());
if (NULL == mySpacer) { if (NULL == mySpacer) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
@@ -93,7 +93,7 @@ class ParameterAboutGui : public ewol::widget::Sizer {
tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>"; tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>";
tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>"; tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>";
tmpLabel += "</left>"; tmpLabel += "</left>";
ewol::widget::Label* myLabel = new ewol::widget::Label(tmpLabel); ewol::object::Shared<ewol::widget::Label> myLabel = ewol::object::makeShared(new ewol::widget::Label(tmpLabel));
if (NULL == myLabel) { if (NULL == myLabel) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
@@ -102,7 +102,7 @@ class ParameterAboutGui : public ewol::widget::Sizer {
} }
}; };
~ParameterAboutGui(void) { ~ParameterAboutGui() {
}; };
}; };
@@ -119,39 +119,42 @@ const char* l_smoothMax = "tmpEvent_maxChange";
#undef __class__ #undef __class__
#define __class__ "MainWindows" #define __class__ "MainWindows"
MainWindows::MainWindows(void) { MainWindows::MainWindows() {
addObjectType("appl::MainWindows"); addObjectType("appl::MainWindows");
APPL_DEBUG("CREATE WINDOWS ... "); APPL_DEBUG("CREATE WINDOWS ... ");
ewol::widget::Sizer * mySizerVert = NULL; ewol::object::Shared<ewol::widget::Sizer> mySizerVert = NULL;
ewol::widget::Sizer * mySizerVert2 = NULL; ewol::object::Shared<ewol::widget::Sizer> mySizerVert2 = NULL;
ewol::widget::Sizer * mySizerHori = NULL; ewol::object::Shared<ewol::widget::Sizer> mySizerHori = NULL;
//ewol::Button * myButton = NULL; ewol::object::Shared<appl::TextViewer> myTextView = NULL;
appl::TextViewer * myTextView = NULL; ewol::object::Shared<BufferView> myBufferView = NULL;
BufferView * myBufferView = NULL; ewol::object::Shared<ewol::widget::Menu> myMenu = NULL;
ewol::widget::Menu * myMenu = NULL;
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::keep();
mySizerVert = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert); mySizerVert = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert));
mySizerVert->setName("plop 1111111");
setSubWidget(mySizerVert); setSubWidget(mySizerVert);
mySizerHori = new ewol::widget::Sizer(ewol::widget::Sizer::modeHori); mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori));
mySizerHori->setName("plop 222222222");
mySizerVert->subWidgetAdd(mySizerHori); mySizerVert->subWidgetAdd(mySizerHori);
myBufferView = new BufferView(); myBufferView = ewol::object::makeShared(new BufferView());
myBufferView->setName("plop 3333333");
myBufferView->setExpand(bvec2(false,true)); myBufferView->setExpand(bvec2(false,true));
myBufferView->setFill(bvec2(true,true)); myBufferView->setFill(bvec2(true,true));
mySizerHori->subWidgetAdd(myBufferView); mySizerHori->subWidgetAdd(myBufferView);
mySizerVert2 = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert); mySizerVert2 = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert));
mySizerHori->subWidgetAdd(mySizerVert2); mySizerHori->subWidgetAdd(mySizerVert2);
mySizerVert2->setName("plop 4444444");
// main buffer Area : // main buffer Area :
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 16); myTextView = ewol::object::makeShared(new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 16));
#else #else
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11); myTextView = ewol::object::makeShared(new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11));
#endif #endif
myTextView->setName("appl-text-viewer");
myTextView->setExpand(bvec2(true,true)); myTextView->setExpand(bvec2(true,true));
myTextView->setFill(bvec2(true,true)); myTextView->setFill(bvec2(true,true));
mySizerVert2->subWidgetAdd(myTextView); mySizerVert2->subWidgetAdd(myTextView);
@@ -162,90 +165,63 @@ MainWindows::MainWindows(void) {
mySizerVert2->subWidgetAdd(myTextView); mySizerVert2->subWidgetAdd(myTextView);
*/ */
// search area : // search area :
Search * mySearch = new Search(); ewol::object::Shared<appl::widget::Search> mySearch = ewol::object::makeShared(new appl::widget::Search());
mySizerVert2->subWidgetAdd(mySearch); mySizerVert2->subWidgetAdd(mySearch);
#ifdef APPL_BUFFER_FONT_DISTANCE_FIELD
{
ewol::widget::Sizer * mySizerHori2 = new widget::Sizer(ewol::widget::Sizer::modeHori);
mySizerVert2->subWidgetAdd(mySizerHori2);
ewol::widget::CheckBox* tmpCheck = new widget::CheckBox("smooth");
mySizerHori2->subWidgetAdd(tmpCheck);
tmpCheck->registerOnEvent(this, "clicked", l_smoothChick);
ewol::widget::Slider* tmpSlider = new widget::Slider();
mySizerHori2->subWidgetAdd(tmpSlider);
tmpSlider->registerOnEvent(this, "change", l_smoothMin);
tmpSlider->setExpand(bvec2(true,false));
tmpSlider->setMin(0);
tmpSlider->setMax(1000);
tmpSlider->setValue(0450);
tmpSliderMin = tmpSlider;
tmpSlider = new ewol::widget::Slider();
mySizerHori2->subWidgetAdd(tmpSlider);
tmpSlider->registerOnEvent(this, "change", l_smoothMax);
tmpSlider->setExpand(bvec2(true,false));
tmpSlider->setMin(0);
tmpSlider->setMax(1000);
tmpSlider->setValue(0550);
tmpSliderMax = tmpSlider;
}
#endif
mySizerHori = new ewol::widget::Sizer(ewol::widget::Sizer::modeHori); mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori));
mySizerHori->setName("plop 555555");
mySizerVert->subWidgetAdd(mySizerHori); mySizerVert->subWidgetAdd(mySizerHori);
myMenu = new ewol::widget::Menu(); myMenu = ewol::object::makeShared(new ewol::widget::Menu());
mySizerHori->subWidgetAdd(myMenu); mySizerHori->subWidgetAdd(myMenu);
int32_t idMenuFile = myMenu->addTitle("File"); int32_t idMenuFile = myMenu->addTitle("File");
(void)myMenu->add(idMenuFile, "New", "", ednMsgGuiNew); myMenu->add(idMenuFile, "New", "", ednMsgGuiNew);
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuFile, "Open", "THEME:GUI:Load.edf", ednMsgGuiOpen); myMenu->add(idMenuFile, "Open", "THEME:GUI:Load.edf", ednMsgGuiOpen);
(void)myMenu->add(idMenuFile, "Close", "THEME:GUI:Close.edf", ednMsgGuiClose, "current"); myMenu->add(idMenuFile, "Close", "THEME:GUI:Close.edf", ednMsgGuiClose, "current");
(void)myMenu->add(idMenuFile, "Close (all)", "", ednMsgGuiClose, "All"); myMenu->add(idMenuFile, "Close (all)", "", ednMsgGuiClose, "All");
(void)myMenu->add(idMenuFile, "Save", "THEME:GUI:Save.edf", ednMsgGuiSave, "current"); myMenu->add(idMenuFile, "Save", "THEME:GUI:Save.edf", ednMsgGuiSave, "current");
(void)myMenu->add(idMenuFile, "Save As ...", "", ednMsgGuiSaveAs); myMenu->add(idMenuFile, "Save As ...", "", ednMsgGuiSaveAs);
(void)myMenu->addSpacer(); myMenu->addSpacer();
//(void)myMenu->add(idMenuFile, "Exit", "", ednMsgGuiExit); //myMenu->add(idMenuFile, "Exit", "", ednMsgGuiExit);
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuFile, "Properties", "THEME:GUI:Parameter.edf", ednMsgProperties); myMenu->add(idMenuFile, "Properties", "THEME:GUI:Parameter.edf", ednMsgProperties);
int32_t idMenuEdit = myMenu->addTitle("Edit"); int32_t idMenuEdit = myMenu->addTitle("Edit");
(void)myMenu->add(idMenuEdit, "Undo", "THEME:GUI:Undo.edf", ednMsgGuiUndo); myMenu->add(idMenuEdit, "Undo", "THEME:GUI:Undo.edf", ednMsgGuiUndo);
(void)myMenu->add(idMenuEdit, "Redo", "THEME:GUI:Redo.edf", ednMsgGuiRedo); myMenu->add(idMenuEdit, "Redo", "THEME:GUI:Redo.edf", ednMsgGuiRedo);
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuEdit, "Copy", "", ednMsgGuiCopy, "STD"); myMenu->add(idMenuEdit, "Copy", "", ednMsgGuiCopy, "STD");
(void)myMenu->add(idMenuEdit, "Cut", "", ednMsgGuiCut, "STD"); myMenu->add(idMenuEdit, "Cut", "", ednMsgGuiCut, "STD");
(void)myMenu->add(idMenuEdit, "Paste", "", ednMsgGuiPaste, "STD"); myMenu->add(idMenuEdit, "Paste", "", ednMsgGuiPaste, "STD");
(void)myMenu->add(idMenuEdit, "Remove", "", ednMsgGuiRm); myMenu->add(idMenuEdit, "Remove", "", ednMsgGuiRm);
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuEdit, "Select All","", ednMsgGuiSelect, "ALL"); myMenu->add(idMenuEdit, "Select All","", ednMsgGuiSelect, "ALL");
(void)myMenu->add(idMenuEdit, "Un-Select","", ednMsgGuiSelect, "NONE"); myMenu->add(idMenuEdit, "Un-Select","", ednMsgGuiSelect, "NONE");
(void)myMenu->add(idMenuEdit, "Goto line ...","", ednMsgGuiGotoLine, "???"); myMenu->add(idMenuEdit, "Goto line ...","", ednMsgGuiGotoLine, "???");
int32_t idMenuSearch = myMenu->addTitle("Search"); int32_t idMenuSearch = myMenu->addTitle("Search");
(void)myMenu->add(idMenuSearch, "Search", "THEME:GUI:Search.edf", ednMsgGuiSearch); myMenu->add(idMenuSearch, "Search", "THEME:GUI:Search.edf", ednMsgGuiSearch);
(void)myMenu->add(idMenuSearch, "Replace", "THEME:GUI:Replace.edf", ednMsgGuiReplace); myMenu->add(idMenuSearch, "Replace", "THEME:GUI:Replace.edf", ednMsgGuiReplace);
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuSearch, "Find (previous)","", ednMsgGuiFind, "Previous"); myMenu->add(idMenuSearch, "Find (previous)","", ednMsgGuiFind, "Previous");
(void)myMenu->add(idMenuSearch, "Find (next)", "", ednMsgGuiFind, "Next"); myMenu->add(idMenuSearch, "Find (next)", "", ednMsgGuiFind, "Next");
(void)myMenu->add(idMenuSearch, "Find (all)", "", ednMsgGuiFind, "All"); myMenu->add(idMenuSearch, "Find (all)", "", ednMsgGuiFind, "All");
(void)myMenu->add(idMenuSearch, "Un-Select", "", ednMsgGuiFind, "None"); myMenu->add(idMenuSearch, "Un-Select", "", ednMsgGuiFind, "None");
/* ==> must be in the pluggin list control ... /* ==> must be in the pluggin list control ...
int32_t idMenuCTags = myMenu->addTitle("C-tags"); int32_t idMenuCTags = myMenu->addTitle("C-tags");
(void)myMenu->add(idMenuCTags, "Load", "", ednMsgGuiCtags, "Load"); myMenu->add(idMenuCTags, "Load", "", ednMsgGuiCtags, "Load");
(void)myMenu->add(idMenuCTags, "ReLoad", "", ednMsgGuiCtags, "ReLoad"); myMenu->add(idMenuCTags, "ReLoad", "", ednMsgGuiCtags, "ReLoad");
(void)myMenu->add(idMenuCTags, "Jump", "", ednMsgGuiCtags, "Jump"); myMenu->add(idMenuCTags, "Jump", "", ednMsgGuiCtags, "Jump");
(void)myMenu->add(idMenuCTags, "Back", "", ednMsgGuiCtags, "Back"); myMenu->add(idMenuCTags, "Back", "", ednMsgGuiCtags, "Back");
*/ */
int32_t idMenugDisplay = myMenu->addTitle("Display"); int32_t idMenugDisplay = myMenu->addTitle("Display");
(void)myMenu->add(idMenugDisplay, "Color Black", "", appl::MsgNameGuiChangeColor, "color/black/"); myMenu->add(idMenugDisplay, "Color Black", "", appl::MsgNameGuiChangeColor, "color/black/");
(void)myMenu->add(idMenugDisplay, "Color White", "", appl::MsgNameGuiChangeColor, "color/white/"); myMenu->add(idMenugDisplay, "Color White", "", appl::MsgNameGuiChangeColor, "color/white/");
(void)myMenu->add(idMenugDisplay, "Shape square", "", l_MsgNameGuiChangeShape, "shape/square/"); myMenu->add(idMenugDisplay, "Shape square", "", l_MsgNameGuiChangeShape, "shape/square/");
(void)myMenu->add(idMenugDisplay, "Shape round", "", l_MsgNameGuiChangeShape, "shape/round/"); myMenu->add(idMenugDisplay, "Shape round", "", l_MsgNameGuiChangeShape, "shape/round/");
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenugDisplay, "Reload openGl Shader", "", ednMsgGuiReloadShader); myMenu->add(idMenugDisplay, "Reload openGl Shader", "", ednMsgGuiReloadShader);
m_widgetLabelFileName = new ewol::widget::Label("FileName"); m_widgetLabelFileName = ewol::object::makeShared(new ewol::widget::Label("FileName"));
m_widgetLabelFileName->setExpand(bvec2(true,false)); m_widgetLabelFileName->setExpand(bvec2(true,false));
m_widgetLabelFileName->setFill(bvec2(true,false));; m_widgetLabelFileName->setFill(bvec2(true,false));;
mySizerHori->subWidgetAdd(m_widgetLabelFileName); mySizerHori->subWidgetAdd(m_widgetLabelFileName);
@@ -291,8 +267,8 @@ MainWindows::MainWindows(void) {
} }
MainWindows::~MainWindows(void) { MainWindows::~MainWindows() {
appl::BufferManager::release(m_bufferManager);
} }
@@ -318,7 +294,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
return; return;
} }
// Get a ref on the buffer selected (if null, no buffer was selected ...) // Get a ref on the buffer selected (if null, no buffer was selected ...)
appl::Buffer* tmpBuffer = m_bufferManager->getBufferSelected(); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->getBufferSelected();
if (tmpBuffer != NULL) { if (tmpBuffer != NULL) {
etk::FSNode tmpFile = tmpBuffer->getFileName(); etk::FSNode tmpFile = tmpBuffer->getFileName();
tmpWidget->setFolder(tmpFile.getNameFolder()); tmpWidget->setFolder(tmpFile.getNameFolder());
@@ -328,20 +304,51 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
tmpWidget->registerOnEvent(this, "validate", ednEventPopUpFileSelected); tmpWidget->registerOnEvent(this, "validate", ednEventPopUpFileSelected);
} else if (_msg.getMessage() == ednMsgProperties) { } else if (_msg.getMessage() == ednMsgProperties) {
// Request the parameter GUI // Request the parameter GUI
ewol::widget::Parameter* tmpWidget = new ewol::widget::Parameter(); ewol::object::Shared<ewol::widget::Parameter> tmpWidget = ewol::object::makeShared(new ewol::widget::Parameter());
if (NULL == tmpWidget) { if (NULL == tmpWidget) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
#ifdef SDGSDFGSDFGSDFGSDFGSTERGDHFGHFDS
std::string menuDescription = "<title>Properties</title>\n";
menuDescription += "<group>\n";
menuDescription += " <title>Editor</title>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Editor Interface</title>\n";
menuDescription += " <short-title>Editor</short-title>\n";
menuDescription += " <widget>appl-text-viewer</widget>\n";
menuDescription += " </menu>\n";
menuDescription += "</group>\n";
menuDescription += "<group>\n";
menuDescription += " <title>Gui</title>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Font selection</title>\n";
menuDescription += " <short-title>Font</short-title>\n";
menuDescription += " <widget></widget>\n";
menuDescription += " </menu>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Color selection</title>\n";
menuDescription += " <short-title>Color</short-title>\n";
menuDescription += " <widget></widget>\n";
menuDescription += " </menu>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Theme selection</title>\n";
menuDescription += " <short-title>Theme</short-title>\n";
menuDescription += " <widget></widget>\n";
menuDescription += " </menu>\n";
menuDescription += "</group>\n";
tmpWidget->setMenu(menuDescription);
#endif
tmpWidget->setTitle("Properties"); tmpWidget->setTitle("Properties");
popUpWidgetPush(tmpWidget); popUpWidgetPush(tmpWidget);
tmpWidget->menuAddGroup("Editor"); tmpWidget->menuAddGroup("Editor");
ewol::Widget* tmpSubWidget = new globals::ParameterGlobalsGui(); ewol::object::Shared<ewol::Widget> tmpSubWidget = ewol::object::makeShared(new globals::ParameterGlobalsGui());
tmpWidget->menuAdd("Editor", "", tmpSubWidget); tmpWidget->menuAdd("Editor", "", tmpSubWidget);
tmpWidget->menuAdd("Font & Color", "", NULL); tmpWidget->menuAdd("Font & Color", "", NULL);
tmpWidget->menuAdd("Highlight", "", NULL); tmpWidget->menuAdd("Highlight", "", NULL);
tmpWidget->menuAddGroup("General"); tmpWidget->menuAddGroup("General");
tmpWidget->menuAdd("Display", "", NULL); tmpWidget->menuAdd("Display", "", NULL);
tmpSubWidget = new ParameterAboutGui(); tmpSubWidget = ewol::object::makeShared(new ParameterAboutGui());
tmpWidget->menuAdd("About", "", tmpSubWidget); tmpWidget->menuAdd("About", "", tmpSubWidget);
} }
} else if (_msg.getMessage() == appl::MsgNameGuiChangeColor) { } else if (_msg.getMessage() == appl::MsgNameGuiChangeColor) {
@@ -368,7 +375,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
|| _msg.getMessage() == appl::Buffer::eventIsSave || _msg.getMessage() == appl::Buffer::eventIsSave
|| _msg.getMessage() == appl::Buffer::eventChangeName) { || _msg.getMessage() == appl::Buffer::eventChangeName) {
// select a new Buffer ==> change title: // select a new Buffer ==> change title:
appl::Buffer* tmpp = m_bufferManager->getBufferSelected(); ewol::object::Shared<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == NULL) { if (tmpp == NULL) {
setTitle("Edn"); setTitle("Edn");
if (m_widgetLabelFileName != NULL) { if (m_widgetLabelFileName != NULL) {
@@ -380,44 +387,45 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
tmpp->registerOnEvent(this, appl::Buffer::eventIsSave); tmpp->registerOnEvent(this, appl::Buffer::eventIsSave);
tmpp->registerOnEvent(this, appl::Buffer::eventChangeName); tmpp->registerOnEvent(this, appl::Buffer::eventChangeName);
} }
setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + tmpp->getFileName()); std::string nameFileSystem = etk::FSNode(tmpp->getFileName()).getFileSystemName();
setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + nameFileSystem);
if (m_widgetLabelFileName != NULL) { if (m_widgetLabelFileName != NULL) {
m_widgetLabelFileName->setLabel(tmpp->getFileName() + (tmpp->isModify()==true?" *":"")); m_widgetLabelFileName->setLabel(nameFileSystem + (tmpp->isModify()==true?" *":""));
} }
} }
} else if (_msg.getMessage() == ednMsgGuiNew) { } else if (_msg.getMessage() == ednMsgGuiNew) {
(void)m_bufferManager->createNewBuffer(); m_bufferManager->createNewBuffer();
} else if (_msg.getMessage() == ednEventPopUpFileSelected) { } else if (_msg.getMessage() == ednEventPopUpFileSelected) {
APPL_DEBUG("Request opening the file : " << _msg.getData()); APPL_DEBUG("Request opening the file : " << _msg.getData());
m_bufferManager->open(_msg.getData()); m_bufferManager->open(_msg.getData());
} else if (_msg.getMessage() == ednMsgGuiSave) { } else if (_msg.getMessage() == ednMsgGuiSave) {
APPL_DEBUG("Request saving the file : " << _msg.getData()); APPL_DEBUG("Request saving the file : " << _msg.getData());
if (std::tolower(_msg.getData()) == "current") { if (std::tolower(_msg.getData()) == "current") {
appl::WorkerSaveFile* tmpWorker = new appl::WorkerSaveFile("", false); new appl::WorkerSaveFile("", false);
return; return;
} else if (std::tolower(_msg.getData()) == "all") { } else if (std::tolower(_msg.getData()) == "all") {
appl::WorkerSaveAllFile* tmpWorker = new appl::WorkerSaveAllFile(); new appl::WorkerSaveAllFile();
return; return;
} else { } else {
APPL_ERROR("UNKNOW request : " << _msg); APPL_ERROR("UNKNOW request : " << _msg);
} }
} else if (_msg.getMessage() == ednMsgGuiSaveAs) { } else if (_msg.getMessage() == ednMsgGuiSaveAs) {
appl::WorkerSaveFile* tmpWorker = new appl::WorkerSaveFile("", true); new appl::WorkerSaveFile("", true);
} else if (_msg.getMessage() == ednMsgGuiClose) { } else if (_msg.getMessage() == ednMsgGuiClose) {
// Get a ref on the buffer selected (if null, no buffer was selected ...) // Get a ref on the buffer selected (if null, no buffer was selected ...)
if (_msg.getData() == "current") { if (_msg.getData() == "current") {
appl::WorkerCloseFile* tmpWorker = new appl::WorkerCloseFile(""); new appl::WorkerCloseFile("");
} else { } else {
appl::WorkerCloseAllFile* tmpWorker = new appl::WorkerCloseAllFile(); new appl::WorkerCloseAllFile();
} }
} else if (_msg.getMessage() == mainWindowsRequestSaveFile) { // return after a choice of close... } else if (_msg.getMessage() == mainWindowsRequestSaveFile) { // return after a choice of close...
if (m_bufferManager->exist(_msg.getData()) == false) { if (m_bufferManager->exist(_msg.getData()) == false) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) { if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
@@ -436,7 +444,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) { if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
@@ -447,7 +455,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) { if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
@@ -458,7 +466,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
return; return;
} }
void MainWindows::saveAsPopUp(appl::Buffer* _buffer) { void MainWindows::saveAsPopUp(const ewol::object::Shared<appl::Buffer>& _buffer) {
if (_buffer == NULL) { if (_buffer == NULL) {
APPL_ERROR("Call With NULL input..."); APPL_ERROR("Call With NULL input...");
return; return;
@@ -466,19 +474,19 @@ void MainWindows::saveAsPopUp(appl::Buffer* _buffer) {
appl::WorkerSaveFile* tmpObject = new appl::WorkerSaveFile(_buffer->getFileName()); appl::WorkerSaveFile* tmpObject = new appl::WorkerSaveFile(_buffer->getFileName());
} }
void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) { void MainWindows::closeNotSavedFile(const ewol::object::Shared<appl::Buffer>& _buffer) {
if (_buffer == NULL) { if (_buffer == NULL) {
APPL_ERROR("Call With NULL input..."); APPL_ERROR("Call With NULL input...");
return; return;
} }
ewol::widget::StdPopUp* tmpPopUp = new ewol::widget::StdPopUp(); ewol::object::Shared<ewol::widget::StdPopUp> tmpPopUp = ewol::object::makeShared(new ewol::widget::StdPopUp());
if (tmpPopUp == NULL) { if (tmpPopUp == NULL) {
APPL_ERROR("Can not create a simple pop-up"); APPL_ERROR("Can not create a simple pop-up");
return; return;
} }
tmpPopUp->setTitle("<bold>Close un-saved file:</bold>"); tmpPopUp->setTitle("<bold>Close un-saved file:</bold>");
tmpPopUp->setComment("The file named : <i>\"" + _buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost..."); tmpPopUp->setComment("The file named : <i>\"" + _buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost...");
ewol::Widget* bt = NULL; ewol::object::Shared<ewol::Widget> bt = NULL;
if (_buffer->hasFileName() == true) { if (_buffer->hasFileName() == true) {
bt = tmpPopUp->addButton("Save", true); bt = tmpPopUp->addButton("Save", true);
if (bt != NULL) { if (bt != NULL) {
@@ -502,7 +510,7 @@ void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) {
popUpWidgetPush(tmpPopUp); popUpWidgetPush(tmpPopUp);
} }
void MainWindows::onObjectRemove(ewol::Object* _removeObject) { void MainWindows::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
ewol::widget::Windows::onObjectRemove(_removeObject); ewol::widget::Windows::onObjectRemove(_removeObject);
if (m_widgetLabelFileName == _removeObject) { if (m_widgetLabelFileName == _removeObject) {
m_widgetLabelFileName = NULL; m_widgetLabelFileName = NULL;

View File

@@ -19,27 +19,26 @@
class MainWindows : public ewol::widget::Windows { class MainWindows : public ewol::widget::Windows {
private: private:
int32_t m_currentSavingAsIdBuffer; ewol::object::Shared<ewol::widget::Label> m_widgetLabelFileName;
ewol::widget::Label* m_widgetLabelFileName;
public: public:
// Constructeur // Constructeur
MainWindows(void); MainWindows();
~MainWindows(void); virtual ~MainWindows();
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
/** /**
* @brief Display a pop-up to the select the name of the file. * @brief Display a pop-up to the select the name of the file.
* @param[in] _buffer Buffer that might be saved with a new name. * @param[in] _buffer Buffer that might be saved with a new name.
*/ */
void saveAsPopUp(appl::Buffer* _buffer); void saveAsPopUp(const ewol::object::Shared<appl::Buffer>& _buffer);
/** /**
* @brief Display a pop-up to the user to confirm wat he want to do when he close a file not saved. * @brief Display a pop-up to the user to confirm wat he want to do when he close a file not saved.
* @param[in] _buffer Buffer that might be close. * @param[in] _buffer Buffer that might be close.
*/ */
void closeNotSavedFile(appl::Buffer* _buffer); void closeNotSavedFile(const ewol::object::Shared<appl::Buffer>& _buffer);
public: // Derived function public: // Derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object * _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
}; };

View File

@@ -28,7 +28,7 @@ const char* const l_eventWrapCb = "appl-wrap-CheckBox";
const char* const l_eventForwardCb = "appl-forward-CheckBox"; const char* const l_eventForwardCb = "appl-forward-CheckBox";
const char* const l_eventHideBt = "appl-hide-button"; const char* const l_eventHideBt = "appl-hide-button";
Search::Search(void) : appl::widget::Search::Search() :
ewol::widget::Composer(ewol::widget::Composer::file, "DATA:GUI-Search.xml"), ewol::widget::Composer(ewol::widget::Composer::file, "DATA:GUI-Search.xml"),
m_viewerManager(NULL), m_viewerManager(NULL),
m_forward(true), m_forward(true),
@@ -36,8 +36,8 @@ Search::Search(void) :
m_wrap(true), m_wrap(true),
m_searchEntry(NULL), m_searchEntry(NULL),
m_replaceEntry(NULL) { m_replaceEntry(NULL) {
addObjectType("appl::Search"); addObjectType("appl::widget::Search");
// load buffer manager: // load buffer manager:onObjectRemove
m_viewerManager = appl::ViewerManager::keep(); m_viewerManager = appl::ViewerManager::keep();
// link event // link event
registerOnEventNameWidget(this, "SEARCH:close", "pressed", l_eventHideBt); registerOnEventNameWidget(this, "SEARCH:close", "pressed", l_eventHideBt);
@@ -55,24 +55,24 @@ Search::Search(void) :
setConfigNamed("SEARCH:wrap", "value", std::to_string(m_wrap)); setConfigNamed("SEARCH:wrap", "value", std::to_string(m_wrap));
setConfigNamed("SEARCH:up-down", "value", std::to_string(m_forward)); setConfigNamed("SEARCH:up-down", "value", std::to_string(m_forward));
// get widget // get widget
m_searchEntry = dynamic_cast<ewol::widget::Entry*>(getWidgetNamed("SEARCH:search-entry")); m_searchEntry = ewol::dynamic_pointer_cast<ewol::widget::Entry>(getWidgetNamed("SEARCH:search-entry"));
m_replaceEntry = dynamic_cast<ewol::widget::Entry*>(getWidgetNamed("SEARCH:replace-entry")); m_replaceEntry = ewol::dynamic_pointer_cast<ewol::widget::Entry>(getWidgetNamed("SEARCH:replace-entry"));
// Display and hide event: // Display and hide event:
registerMultiCast(ednMsgGuiSearch); registerMultiCast(ednMsgGuiSearch);
// basicly hiden ... // basicly hiden ...
hide(); hide();
} }
Search::~Search(void) { appl::widget::Search::~Search() {
appl::ViewerManager::release(m_viewerManager);
} }
void Search::find(void) { void appl::widget::Search::find() {
if (m_viewerManager == NULL) { if (m_viewerManager == NULL) {
APPL_WARNING("No viewer manager selected!!!"); APPL_WARNING("No viewer manager selected!!!");
return; return;
} }
appl::TextViewer* viewer = m_viewerManager->getViewerSelected(); ewol::object::Shared<appl::TextViewer> viewer = m_viewerManager->getViewerSelected();
if (viewer == NULL) { if (viewer == NULL) {
APPL_INFO("No viewer selected!!!"); APPL_INFO("No viewer selected!!!");
return; return;
@@ -103,12 +103,12 @@ void Search::find(void) {
} }
} }
void Search::replace(void) { void appl::widget::Search::replace() {
if (m_viewerManager == NULL) { if (m_viewerManager == NULL) {
APPL_WARNING("No viewer manager selected!!!"); APPL_WARNING("No viewer manager selected!!!");
return; return;
} }
appl::TextViewer* viewer = m_viewerManager->getViewerSelected(); ewol::object::Shared<appl::TextViewer> viewer = m_viewerManager->getViewerSelected();
if (viewer == NULL) { if (viewer == NULL) {
APPL_INFO("No viewer selected!!!"); APPL_INFO("No viewer selected!!!");
return; return;
@@ -121,7 +121,7 @@ void Search::replace(void) {
} }
void Search::onReceiveMessage(const ewol::object::Message& _msg) { void appl::widget::Search::onReceiveMessage(const ewol::object::Message& _msg) {
ewol::widget::Composer::onReceiveMessage(_msg); ewol::widget::Composer::onReceiveMessage(_msg);
APPL_INFO("Search receive message : " << _msg); APPL_INFO("Search receive message : " << _msg);
if ( _msg.getMessage() == l_eventSearchEntry) { if ( _msg.getMessage() == l_eventSearchEntry) {
@@ -162,16 +162,16 @@ void Search::onReceiveMessage(const ewol::object::Message& _msg) {
} }
} }
void Search::onObjectRemove(ewol::Object * _removeObject) { void appl::widget::Search::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
ewol::widget::Composer::onObjectRemove(_removeObject); ewol::widget::Composer::onObjectRemove(_object);
if (_removeObject == m_searchEntry) { if (_object == m_searchEntry) {
m_searchEntry = NULL; m_searchEntry.reset();
} }
if (_removeObject == m_replaceEntry) { if (_object == m_replaceEntry) {
m_replaceEntry = NULL; m_replaceEntry.reset();
} }
if (_removeObject == m_viewerManager) { if (_object == m_viewerManager) {
m_viewerManager = NULL; m_viewerManager.reset();
} }
} }

View File

@@ -14,35 +14,37 @@
#include <ewol/widget/Entry.h> #include <ewol/widget/Entry.h>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
namespace appl {
class Search : public ewol::widget::Composer { namespace widget {
private: class Search : public ewol::widget::Composer {
appl::ViewerManager* m_viewerManager; //!< handle on the buffer manager private:
bool m_forward; ewol::object::Shared<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
bool m_caseSensitive; bool m_forward;
bool m_wrap; bool m_caseSensitive;
ewol::widget::Entry* m_searchEntry; bool m_wrap;
ewol::widget::Entry* m_replaceEntry; ewol::object::Shared<ewol::widget::Entry> m_searchEntry;
std::u32string m_searchData; ewol::object::Shared<ewol::widget::Entry> m_replaceEntry;
std::u32string m_replaceData; std::u32string m_searchData;
public: std::u32string m_replaceData;
// Constructeur public:
Search(void); // Constructeur
~Search(void); Search();
private: virtual ~Search();
/** private:
* @brief Find the next element that corespond at the search /**
*/ * @brief Find the next element that corespond at the search
void find(void); */
/** void find();
* @brief Replace the current selected text. /**
*/ * @brief Replace the current selected text.
void replace(void); */
public: // derived function void replace();
virtual void onReceiveMessage(const ewol::object::Message& _msg); public: // derived function
virtual void onObjectRemove(ewol::Object * _removeObject); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
};
};
}; };
#endif #endif

View File

@@ -16,29 +16,35 @@ extern const char * const applEventCtagsListSelect = "appl-event-ctags-list-
extern const char * const applEventCtagsListUnSelect = "appl-event-ctags-list-un-select"; extern const char * const applEventCtagsListUnSelect = "appl-event-ctags-list-un-select";
extern const char * const applEventCtagsListValidate = "appl-event-ctags-list-validate"; extern const char * const applEventCtagsListValidate = "appl-event-ctags-list-validate";
appl::TagFileList::TagFileList(void) { appl::TagFileList::TagFileList() {
addObjectType("appl::TagFileList"); addObjectType("appl::TagFileList");
m_selectedLine = -1; m_selectedLine = -1;
addEventId(applEventCtagsListSelect); addEventId(applEventCtagsListSelect);
addEventId(applEventCtagsListValidate); addEventId(applEventCtagsListValidate);
setMouseLimit(1); 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) {
appl::TagFileList::~TagFileList(void) { m_colorIdText = m_colorProperty->request("text");
for (int32_t iii=0; iii<m_list.size(); iii++) { m_colorIdBackground1 = m_colorProperty->request("background1");
if (NULL != m_list[iii]) { m_colorIdBackground2 = m_colorProperty->request("background2");
delete(m_list[iii]); m_colorIdBackgroundSelected = m_colorProperty->request("selected");
m_list[iii] = NULL;
}
} }
} }
etk::Color<> appl::TagFileList::getBasicBG(void) {
appl::TagFileList::~TagFileList() {
for (auto &it : m_list) {
delete(it);
it = NULL;
}
}
etk::Color<> appl::TagFileList::getBasicBG() {
return 0x00000010; return 0x00000010;
} }
uint32_t appl::TagFileList::getNuberOfColomn(void) { uint32_t appl::TagFileList::getNuberOfColomn() {
return 2; return 2;
} }
@@ -47,12 +53,12 @@ bool appl::TagFileList::getTitle(int32_t _colomn, std::string& _myTitle, etk::Co
return true; return true;
} }
uint32_t appl::TagFileList::getNuberOfRaw(void) { uint32_t appl::TagFileList::getNuberOfRaw() {
return m_list.size(); return m_list.size();
} }
bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) { bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) {
if (_raw >= 0 && _raw < m_list.size() && NULL != m_list[_raw]) { if (_raw >= 0 && (size_t)_raw < m_list.size() && NULL != m_list[_raw]) {
if (0 == _colomn) { if (0 == _colomn) {
_myTextToWrite = std::to_string(m_list[_raw]->fileLine); _myTextToWrite = std::to_string(m_list[_raw]->fileLine);
} else { } else {
@@ -61,26 +67,14 @@ bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _
} else { } else {
_myTextToWrite = "ERROR"; _myTextToWrite = "ERROR";
} }
_fg = etk::color::black; _fg = m_colorProperty->get(m_colorIdText);
if (_raw % 2) { if (_raw % 2) {
if (_colomn%2 == 0) { _bg = m_colorProperty->get(m_colorIdBackground1);
_bg = 0xFFFFFF00;
} else {
_bg = 0xFFFFFF10;
}
} else { } else {
if (_colomn%2 == 0) { _bg = m_colorProperty->get(m_colorIdBackground2);
_bg = 0xBFBFBFFF;
} else {
_bg = 0xCFCFCFFF;
}
} }
if (m_selectedLine == _raw) { if (m_selectedLine == _raw) {
if (_colomn%2 == 0) { _bg = m_colorProperty->get(m_colorIdBackgroundSelected);
_bg = 0x8F8FFFFF;
} else {
_bg = 0x7F7FFFFF;
}
} }
return true; return true;
}; };
@@ -91,7 +85,7 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _ty
EWOL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); EWOL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw );
if (_IdInput == 1) { if (_IdInput == 1) {
int32_t previousRaw = m_selectedLine; int32_t previousRaw = m_selectedLine;
if (_raw > m_list.size() ) { if (_raw > (int64_t)m_list.size() ) {
m_selectedLine = -1; m_selectedLine = -1;
} else { } else {
m_selectedLine = _raw; m_selectedLine = _raw;
@@ -101,7 +95,7 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _ty
event = applEventCtagsListSelect; event = applEventCtagsListSelect;
} }
if( m_selectedLine >= 0 if( m_selectedLine >= 0
&& m_selectedLine < m_list.size() && m_selectedLine < (int64_t)m_list.size()
&& NULL != m_list[m_selectedLine] ) { && NULL != m_list[m_selectedLine] ) {
generateEventId(event, std::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename); generateEventId(event, std::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename);
} else { } else {

View File

@@ -11,6 +11,7 @@
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/List.h> #include <ewol/widget/List.h>
#include <ewol/resource/ColorFile.h>
extern const char * const applEventCtagsListSelect; extern const char * const applEventCtagsListSelect;
@@ -27,7 +28,7 @@ namespace appl {
fileLine(_line) { fileLine(_line) {
}; };
~TagListElement(void) { virtual ~TagListElement() {
}; };
}; };
@@ -35,14 +36,20 @@ namespace appl {
private: private:
int32_t m_selectedLine; int32_t m_selectedLine;
std::vector<appl::TagListElement*> m_list; std::vector<appl::TagListElement*> m_list;
protected:
ewol::object::Shared<ewol::resource::ColorFile> 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: public:
TagFileList(void); TagFileList();
~TagFileList(void); virtual ~TagFileList();
// display API : // display API :
virtual etk::Color<> getBasicBG(void); virtual etk::Color<> getBasicBG();
uint32_t getNuberOfColomn(void); uint32_t getNuberOfColomn();
bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg); bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg);
uint32_t getNuberOfRaw(void); uint32_t getNuberOfRaw();
bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg); bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg);
bool onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y); bool onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y);
public: public:

View File

@@ -30,18 +30,14 @@ extern const char * const applEventctagsSelection = "appl-event-ctags-validate";
extern const char * const applEventctagsCancel = "appl-event-ctags-cancel"; extern const char * const applEventctagsCancel = "appl-event-ctags-cancel";
appl::TagFileSelection::TagFileSelection(void) { appl::TagFileSelection::TagFileSelection() {
addObjectType("appl::TagFileSelection"); addObjectType("appl::TagFileSelection");
addEventId(applEventctagsSelection); addEventId(applEventctagsSelection);
addEventId(applEventctagsCancel); addEventId(applEventctagsCancel);
ewol::widget::Label* myWidgetTitle = NULL; ewol::object::Shared<ewol::widget::Label> myWidgetTitle;
ewol::widget::Button* myWidgetValidate = NULL;
ewol::widget::Button* myWidgetCancel = NULL;
ewol::widget::Sizer * mySizerVert = NULL; ewol::object::Shared<ewol::widget::Sizer> mySizerVert;
ewol::widget::Sizer * mySizerHori = NULL;
ewol::widget::Spacer * mySpacer = NULL;
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
setMinSize(ewol::Dimension(vec2(90,90),ewol::Dimension::Pourcent)); setMinSize(ewol::Dimension(vec2(90,90),ewol::Dimension::Pourcent));
#elif defined(__TARGET_OS__Windows) #elif defined(__TARGET_OS__Windows)
@@ -50,7 +46,7 @@ appl::TagFileSelection::TagFileSelection(void) {
setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent)); setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent));
#endif #endif
mySizerVert = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert); mySizerVert = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert));
if (NULL == mySizerVert) { if (NULL == mySizerVert) {
EWOL_ERROR("Can not allocate widget == > display might be in error"); EWOL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
@@ -58,7 +54,7 @@ appl::TagFileSelection::TagFileSelection(void) {
mySizerVert->setExpand(bvec2(true,true)); mySizerVert->setExpand(bvec2(true,true));
// set it in the pop-up-system : // set it in the pop-up-system :
setSubWidget(mySizerVert); setSubWidget(mySizerVert);
ewol::widget::Composer* compose = new ewol::widget::Composer(ewol::widget::Composer::String, ewol::object::Shared<ewol::widget::Composer> compose = ewol::object::makeShared(new ewol::widget::Composer(ewol::widget::Composer::String,
"<sizer mode=\"hori\" expand=\"true,false\" lock=\"false,true\">\n" "<sizer mode=\"hori\" expand=\"true,false\" lock=\"false,true\">\n"
" <spacer expand=\"true,false\"/>\n" " <spacer expand=\"true,false\"/>\n"
" <button name=\"PLUGIN-CTAGS-jump\" expand=\"false\" fill=\"true\">" " <button name=\"PLUGIN-CTAGS-jump\" expand=\"false\" fill=\"true\">"
@@ -73,14 +69,14 @@ appl::TagFileSelection::TagFileSelection(void) {
" <label>Cancel</label>\n" " <label>Cancel</label>\n"
" </sizer>\n" " </sizer>\n"
" </button>\n" " </button>\n"
"</sizer>\n"); "</sizer>\n"));
compose->setExpand(bvec2(true,false)); compose->setExpand(bvec2(true,false));
compose->setFill(bvec2(true,true)); compose->setFill(bvec2(true,true));
mySizerVert->subWidgetAdd(compose); mySizerVert->subWidgetAdd(compose);
compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-jump", "pressed", applEventctagsSelection); compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-jump", "pressed", applEventctagsSelection);
compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-cancel", "pressed", applEventctagsCancel); compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-cancel", "pressed", applEventctagsCancel);
m_listTag = new appl::TagFileList(); m_listTag = ewol::object::makeShared(new appl::TagFileList());
if (NULL == m_listTag) { if (NULL == m_listTag) {
EWOL_ERROR("Can not allocate widget == > display might be in error"); EWOL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
@@ -102,7 +98,7 @@ appl::TagFileSelection::TagFileSelection(void) {
} }
appl::TagFileSelection::~TagFileSelection(void) { appl::TagFileSelection::~TagFileSelection() {
} }
@@ -143,7 +139,7 @@ void appl::TagFileSelection::addCtagsNewItem(std::string _file, int32_t _line) {
} }
} }
void appl::TagFileSelection::onObjectRemove(ewol::Object * _removeObject) { void appl::TagFileSelection::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
// First step call parrent : // First step call parrent :
ewol::widget::PopUp::onObjectRemove(_removeObject); ewol::widget::PopUp::onObjectRemove(_removeObject);
// second step find if in all the elements ... // second step find if in all the elements ...

View File

@@ -19,11 +19,11 @@ extern const char * const applEventctagsCancel;
namespace appl { namespace appl {
class TagFileSelection : public ewol::widget::PopUp { class TagFileSelection : public ewol::widget::PopUp {
private: private:
appl::TagFileList* m_listTag; ewol::object::Shared<appl::TagFileList> m_listTag;
std::string m_eventNamed; std::string m_eventNamed;
public: public:
TagFileSelection(void); TagFileSelection();
virtual ~TagFileSelection(void); virtual ~TagFileSelection();
/** /**
* @brief add a Ctags item on the curent list * @brief add a Ctags item on the curent list
* @param[in] file Compleate file name * @param[in] file Compleate file name
@@ -32,7 +32,7 @@ namespace appl {
void addCtagsNewItem(std::string file, int32_t line); void addCtagsNewItem(std::string file, int32_t line);
public: // herited function public: // herited function
void onReceiveMessage(const ewol::object::Message& _msg); void onReceiveMessage(const ewol::object::Message& _msg);
void onObjectRemove(ewol::Object * _removeObject); void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
}; };
}; };

View File

@@ -29,7 +29,6 @@
APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms"); APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms");
appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) : appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) :
m_buffer(NULL),
m_displayText(_fontName, _fontSize), m_displayText(_fontName, _fontSize),
m_insertMode(false) { m_insertMode(false) {
addObjectType("appl::TextViewer"); addObjectType("appl::TextViewer");
@@ -41,6 +40,7 @@ appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) :
registerMultiCast(appl::MsgSelectNewFile); registerMultiCast(appl::MsgSelectNewFile);
registerMultiCast(appl::MsgSelectGotoLineSelect); registerMultiCast(appl::MsgSelectGotoLineSelect);
setLimitScrolling(0.2); setLimitScrolling(0.2);
setSingleFinger(false);
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::keep();
@@ -62,11 +62,20 @@ appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) :
setCurrentSelect(); setCurrentSelect();
} }
appl::TextViewer::~TextViewer(void) { appl::TextViewer::~TextViewer() {
appl::textPluginManager::disconnect(*this); appl::textPluginManager::disconnect(*this);
appl::GlyphPainting::release(m_paintingProperties); }
appl::BufferManager::release(m_bufferManager);
appl::ViewerManager::release(m_viewerManager); std::string appl::TextViewer::getBufferPath() {
if (m_buffer == NULL) {
return "";
}
std::string filename = m_buffer->getFileName();
size_t pos = filename.rfind('/');
if (pos == std::string::npos) {
return "";
}
return std::string(filename, 0, pos);
} }
void appl::TextViewer::changeZoom(float _range) { void appl::TextViewer::changeZoom(float _range) {
@@ -74,19 +83,19 @@ void appl::TextViewer::changeZoom(float _range) {
markToRedraw(); markToRedraw();
} }
bool appl::TextViewer::calculateMinSize(void) { bool appl::TextViewer::calculateMinSize() {
m_minSize.setValue(50,50); m_minSize.setValue(50,50);
return true; return true;
} }
void appl::TextViewer::onDraw(void) { void appl::TextViewer::onDraw() {
m_displayDrawing.draw(); m_displayDrawing.draw();
m_displayText.draw(); m_displayText.draw();
WidgetScrolled::onDraw(); WidgetScrolled::onDraw();
} }
void appl::TextViewer::onRegenerateDisplay(void) { void appl::TextViewer::onRegenerateDisplay() {
if (false == needRedraw()) { if (false == needRedraw()) {
return; return;
} }
@@ -129,14 +138,11 @@ void appl::TextViewer::onRegenerateDisplay(void) {
vec3 tmpCursorPosition(0, 0, -1); vec3 tmpCursorPosition(0, 0, -1);
float tmpCursorLenght = -1.0; float tmpCursorLenght = -1.0;
// real display ... // real display ...
etk::Buffer& buf = m_buffer->getData();
m_displayText.setColor(etk::Color<>(0, 0, 0, 256)); m_displayText.setColor(etk::Color<>(0, 0, 0, 256));
float countNbLine = 1; float countNbLine = 1;
int32_t countColomn = 0; int32_t countColomn = 0;
// the siplay string : // the siplay string :
std::u32string stringToDisplay; std::u32string stringToDisplay;
int64_t bufferElementSize = 0;
bool isSelect = false;
appl::Buffer::Iterator selectPosStart = m_buffer->begin(); appl::Buffer::Iterator selectPosStart = m_buffer->begin();
appl::Buffer::Iterator selectPosStop = m_buffer->begin(); appl::Buffer::Iterator selectPosStop = m_buffer->begin();
if (m_buffer->hasTextSelected() == true) { if (m_buffer->hasTextSelected() == true) {
@@ -352,7 +358,8 @@ bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) {
m_buffer->setSelectMode(false); m_buffer->setSelectMode(false);
// normal adding char ... // normal adding char ...
char output[5]; char output[5];
int32_t nbElement = u32char::convertUtf8(localValue, output); output[0] = '0';
u32char::convertUtf8(localValue, output);
if ( m_buffer->hasTextSelected() == false if ( m_buffer->hasTextSelected() == false
&& _event.getSpecialKey().getInsert() == true) { && _event.getSpecialKey().getInsert() == true) {
appl::Buffer::Iterator pos = m_buffer->cursor(); appl::Buffer::Iterator pos = m_buffer->cursor();
@@ -368,7 +375,6 @@ bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) {
} }
// move events ... // move events ...
if (_event.getStatus() == ewol::key::statusDown) { if (_event.getStatus() == ewol::key::statusDown) {
bool needUpdatePosition = true;
// selection when shift is set: // selection when shift is set:
m_buffer->setSelectMode(_event.getSpecialKey().getShift()); m_buffer->setSelectMode(_event.getSpecialKey().getShift());
// check selection event ... // check selection event ...
@@ -418,7 +424,8 @@ bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) {
} }
bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) { bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
if (_event.getId() != 0) { if ( _event.getId() != 0
&& _event.getStatus() == ewol::key::statusDown) {
keepFocus(); keepFocus();
} }
//tic(); //tic();
@@ -426,15 +433,17 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
return false; return false;
} }
// First call the scrolling widget : // First call the scrolling widget :
if (WidgetScrolled::onEventInput(_event) == true) { if (ewol::widget::WidgetScrolled::onEventInput(_event) == true) {
markToRedraw(); markToRedraw();
return true; return true;
} }
APPL_VERBOSE("event : " << _event);
// Second call plugin // Second call plugin
if (appl::textPluginManager::onEventInput(*this, _event) == true) { if (appl::textPluginManager::onEventInput(*this, _event) == true) {
markToRedraw(); markToRedraw();
return true; return true;
} }
APPL_VERBOSE("event2 : " << _event);
vec2 relativePos = relativePosition(_event.getPos()); vec2 relativePos = relativePosition(_event.getPos());
// offset for the lineNumber: // offset for the lineNumber:
relativePos -= vec2(m_lastOffsetDisplay, 0); relativePos -= vec2(m_lastOffsetDisplay, 0);
@@ -537,7 +546,7 @@ bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
} }
void appl::TextViewer::mouseEventDouble(void) { void appl::TextViewer::mouseEventDouble() {
//m_selectMode = false; //m_selectMode = false;
appl::Buffer::Iterator beginPos, endPos; appl::Buffer::Iterator beginPos, endPos;
if (true == m_buffer->getPosAround(m_buffer->cursor(), beginPos, endPos)) { if (true == m_buffer->getPosAround(m_buffer->cursor(), beginPos, endPos)) {
@@ -546,7 +555,7 @@ void appl::TextViewer::mouseEventDouble(void) {
} }
} }
void appl::TextViewer::mouseEventTriple(void) { void appl::TextViewer::mouseEventTriple() {
//m_selectMode = false; //m_selectMode = false;
moveCursor(m_buffer->getEndLine(m_buffer->cursor())); moveCursor(m_buffer->getEndLine(m_buffer->cursor()));
m_buffer->setSelectionPos(m_buffer->getStartLine(m_buffer->cursor())); m_buffer->setSelectionPos(m_buffer->getStartLine(m_buffer->cursor()));
@@ -615,7 +624,7 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) {
ewol::widget::WidgetScrolled::onReceiveMessage(_msg); ewol::widget::WidgetScrolled::onReceiveMessage(_msg);
APPL_VERBOSE("receive msg: " << _msg); APPL_VERBOSE("receive msg: " << _msg);
// First call plugin // First call plugin
if (appl::textPluginManager::onReceiveMessage(*this, _msg) == true) { if (appl::textPluginManager::onReceiveMessageViewer(*this, _msg) == true) {
markToRedraw(); markToRedraw();
return; return;
} }
@@ -690,7 +699,7 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) {
} }
} }
void appl::TextViewer::onObjectRemove(ewol::Object* _removeObject) { void appl::TextViewer::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
ewol::widget::WidgetScrolled::onObjectRemove(_removeObject); ewol::widget::WidgetScrolled::onObjectRemove(_removeObject);
if (m_buffer == _removeObject) { if (m_buffer == _removeObject) {
m_buffer = NULL; m_buffer = NULL;
@@ -698,14 +707,14 @@ void appl::TextViewer::onObjectRemove(ewol::Object* _removeObject) {
} }
} }
void appl::TextViewer::onGetFocus(void) { void appl::TextViewer::onGetFocus() {
showKeyboard(); showKeyboard();
APPL_INFO("Focus - In"); APPL_INFO("Focus - In");
setCurrentSelect(); setCurrentSelect();
markToRedraw(); markToRedraw();
} }
void appl::TextViewer::onLostFocus(void) { void appl::TextViewer::onLostFocus() {
hideKeyboard(); hideKeyboard();
APPL_INFO("Focus - out"); APPL_INFO("Focus - out");
markToRedraw(); markToRedraw();
@@ -721,7 +730,7 @@ void appl::TextViewer::setFontName(const std::string& _fontName) {
} }
// TODO : Update process time ==> a little expensive (2->4ms) in end of file // TODO : Update process time ==> a little expensive (2->4ms) in end of file
void appl::TextViewer::updateScrolling(void) { void appl::TextViewer::updateScrolling() {
if (m_buffer == NULL) { if (m_buffer == NULL) {
return; return;
} }
@@ -816,7 +825,7 @@ bool appl::TextViewer::replace(const std::string& _data) {
return replace(_data, m_buffer->selectStart(), m_buffer->selectStop()); return replace(_data, m_buffer->selectStart(), m_buffer->selectStop());
} }
void appl::TextViewer::remove(void) { void appl::TextViewer::remove() {
if (m_buffer == NULL) { if (m_buffer == NULL) {
return; return;
} }
@@ -986,13 +995,13 @@ float appl::TextViewer::getScreenSize(const appl::Buffer::Iterator& _startLinePo
return ret; return ret;
} }
void appl::TextViewer::setCurrentSelect(void) { void appl::TextViewer::setCurrentSelect() {
if (m_viewerManager != NULL) { if (m_viewerManager != NULL) {
m_viewerManager->setViewerSelected(this, m_buffer); m_viewerManager->setViewerSelected(this, m_buffer);
} }
} }
bool appl::TextViewer::isSelectedLast(void) { bool appl::TextViewer::isSelectedLast() {
if (m_viewerManager != NULL) { if (m_viewerManager != NULL) {
return m_viewerManager->isLastSelected(this); return m_viewerManager->isLastSelected(this);
} }

View File

@@ -24,7 +24,7 @@
namespace appl { namespace appl {
class TextViewer : public ewol::widget::WidgetScrolled { class TextViewer : public ewol::widget::WidgetScrolled {
private: private:
appl::GlyphPainting* m_paintingProperties; //!< element painting property ewol::object::Shared<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground; int32_t m_colorBackground;
int32_t m_colorSpace; int32_t m_colorSpace;
int32_t m_colorTabulation; int32_t m_colorTabulation;
@@ -33,40 +33,40 @@ namespace appl {
int32_t m_colorSelection; int32_t m_colorSelection;
int32_t m_colorNormal; int32_t m_colorNormal;
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
appl::ViewerManager* m_viewerManager; //!< handle on the buffer manager ewol::object::Shared<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
public: public:
TextViewer(const std::string& _fontName="", int32_t _fontSize=-1); TextViewer(const std::string& _fontName="", int32_t _fontSize=-1);
virtual ~TextViewer(void); virtual ~TextViewer();
private: private:
appl::Buffer* m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) ewol::object::Shared<appl::Buffer> m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer)
public: public:
/** /**
* @brief Get the buffer property (only for the class : template <typename TYPE> class TextViewerPluginData) * @brief Get the buffer property (only for the class : template <typename TYPE> class TextViewerPluginData)
* @return pointer on buffer * @return pointer on buffer
*/ */
appl::Buffer* internalGetBuffer(void) { ewol::object::Shared<appl::Buffer> internalGetBuffer() {
return m_buffer; return m_buffer;
} }
private: private:
ewol::compositing::Text m_displayText; //!< Text display properties. ewol::compositing::Text m_displayText; //!< Text display properties.
ewol::compositing::Drawing m_displayDrawing; //!< Other diaplay requested. ewol::compositing::Drawing m_displayDrawing; //!< Other diaplay requested.
std::vector<std::pair<appl::Buffer*, vec2>> m_drawingRemenber; std::vector<std::pair<ewol::object::Shared<appl::Buffer>, vec2>> m_drawingRemenber;
public: public:
void setFontSize(int32_t _size); void setFontSize(int32_t _size);
void setFontName(const std::string& _fontName); void setFontName(const std::string& _fontName);
protected: // derived function protected: // derived function
virtual void onDraw(void); virtual void onDraw();
public: // Derived function public: // Derived function
virtual bool calculateMinSize(void); virtual bool calculateMinSize();
virtual void onRegenerateDisplay(void); virtual void onRegenerateDisplay();
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object* _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
virtual bool onEventInput(const ewol::event::Input& _event); virtual bool onEventInput(const ewol::event::Input& _event);
virtual bool onEventEntry(const ewol::event::Entry& _event); virtual bool onEventEntry(const ewol::event::Entry& _event);
virtual void onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID); virtual void onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID);
virtual void onGetFocus(void); virtual void onGetFocus();
virtual void onLostFocus(void); virtual void onLostFocus();
virtual void changeZoom(float _range); virtual void changeZoom(float _range);
private: private:
float m_lastOffsetDisplay; //!< Line number ofssed in the display float m_lastOffsetDisplay; //!< Line number ofssed in the display
@@ -77,7 +77,7 @@ namespace appl {
* @brief Update the scrolling position from the cursor position, * @brief Update the scrolling position from the cursor position,
* it might be be all time in the display screen. * it might be be all time in the display screen.
*/ */
void updateScrolling(void); void updateScrolling();
// TODO : Doc : write data on buffer // TODO : Doc : write data on buffer
bool moveCursor(const appl::Buffer::Iterator& _pos); bool moveCursor(const appl::Buffer::Iterator& _pos);
bool write(const std::string& _data); bool write(const std::string& _data);
@@ -90,11 +90,11 @@ namespace appl {
/** /**
* @brief Remove selected data ... * @brief Remove selected data ...
*/ */
void remove(void); void remove();
/** /**
* @brief Remove selected data ... (No plugin call) * @brief Remove selected data ... (No plugin call)
*/ */
void removeDirect(void) { void removeDirect() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return; return;
} }
@@ -156,8 +156,8 @@ namespace appl {
} }
appl::Buffer::Iterator getMousePosition(const vec2& _relativePos); appl::Buffer::Iterator getMousePosition(const vec2& _relativePos);
void mouseEventDouble(void); void mouseEventDouble();
void mouseEventTriple(void); void mouseEventTriple();
private: private:
enum moveMode { enum moveMode {
moveLetter, moveLetter,
@@ -191,25 +191,30 @@ namespace appl {
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
*/ */
void setCurrentSelect(void); void setCurrentSelect();
/** /**
* @brief Check if the current buffer is last selected * @brief Check if the current buffer is last selected
* @return true if selected last * @return true if selected last
*/ */
bool isSelectedLast(void); bool isSelectedLast();
public: public:
/**
* @brief get the path of the current buffer
* @return Path of the buffer (remove the ended name)
*/
virtual std::string getBufferPath();
/** /**
* @brief Check if the buffer is availlable * @brief Check if the buffer is availlable
* @return true if a display buffer is present, false otherwise. * @return true if a display buffer is present, false otherwise.
*/ */
virtual bool hasBuffer(void) { virtual bool hasBuffer() {
return m_buffer != NULL; return m_buffer != NULL;
} }
/** /**
* @brief Get the status of selection. * @brief Get the status of selection.
* @return true if we have a current selection, false otherwise. * @return true if we have a current selection, false otherwise.
*/ */
virtual bool hasTextSelected(void) { virtual bool hasTextSelected() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return false; return false;
} }
@@ -218,7 +223,7 @@ namespace appl {
/** /**
* @brief Remove Selection of the buffer. * @brief Remove Selection of the buffer.
*/ */
virtual void unSelect(void) { virtual void unSelect() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return; return;
} }
@@ -312,7 +317,7 @@ namespace appl {
* @brief Get the cursor position. * @brief Get the cursor position.
* @return The iterator on the cursor position * @return The iterator on the cursor position
*/ */
appl::Buffer::Iterator cursor(void) { appl::Buffer::Iterator cursor() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
@@ -322,7 +327,7 @@ namespace appl {
* @brief Get the begin position. * @brief Get the begin position.
* @return The iterator on the begin position * @return The iterator on the begin position
*/ */
appl::Buffer::Iterator begin(void) { appl::Buffer::Iterator begin() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
@@ -332,7 +337,7 @@ namespace appl {
* @brief Get the end position. * @brief Get the end position.
* @return The iterator on the end position * @return The iterator on the end position
*/ */
appl::Buffer::Iterator end(void) { appl::Buffer::Iterator end() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
@@ -342,7 +347,7 @@ namespace appl {
* @brief Get an Iterator on the start selection. * @brief Get an Iterator on the start selection.
* @return The Iterator * @return The Iterator
*/ */
appl::Buffer::Iterator selectStart(void) { appl::Buffer::Iterator selectStart() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
@@ -352,7 +357,7 @@ namespace appl {
* @brief Get an Iterator on the stop selection. * @brief Get an Iterator on the stop selection.
* @return The Iterator * @return The Iterator
*/ */
appl::Buffer::Iterator selectStop(void) { appl::Buffer::Iterator selectStop() {
if (m_buffer==NULL) { if (m_buffer==NULL) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
@@ -394,9 +399,9 @@ namespace appl {
* @param[in] _data Associate data wit the event * @param[in] _data Associate data wit the event
*/ */
virtual void ext_shortCutAdd(const char * _descriptiveString, virtual void ext_shortCutAdd(const char * _descriptiveString,
const char * _generateEventId, const char * _generateEventId,
std::string _data="", std::string _data="",
bool _broadcast=false) { bool _broadcast=false) {
shortCutAdd(_descriptiveString, _generateEventId, _data, _broadcast); shortCutAdd(_descriptiveString, _generateEventId, _data, _broadcast);
} }
}; };

View File

@@ -17,7 +17,7 @@
#undef __class__ #undef __class__
#define __class__ "ViewerManager" #define __class__ "ViewerManager"
appl::ViewerManager::ViewerManager(void) : appl::ViewerManager::ViewerManager() :
ewol::Resource("???ViewerManager???"), ewol::Resource("???ViewerManager???"),
m_viewer(NULL) { m_viewer(NULL) {
addObjectType("appl::ViewerManager"); addObjectType("appl::ViewerManager");
@@ -25,11 +25,15 @@ appl::ViewerManager::ViewerManager(void) :
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::keep();
} }
appl::ViewerManager::~ViewerManager(void) { appl::ViewerManager::~ViewerManager() {
appl::BufferManager::release(m_bufferManager);
} }
void appl::ViewerManager::setViewerSelected(appl::TextViewer* _viewer, appl::Buffer* _buffer) { bool appl::ViewerManager::isLastSelected(const ewol::object::Shared<appl::TextViewer>& _viewer) {
return m_viewer == _viewer;
}
void appl::ViewerManager::setViewerSelected(const ewol::object::Shared<appl::TextViewer>& _viewer, const ewol::object::Shared<appl::Buffer>& _buffer) {
if (m_viewer == _viewer) { if (m_viewer == _viewer) {
return; return;
} }
@@ -43,23 +47,23 @@ void appl::ViewerManager::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_DEBUG("receive message !!! " << _msg); APPL_DEBUG("receive message !!! " << _msg);
} }
void appl::ViewerManager::onObjectRemove(ewol::Object* _removeObject) { void appl::ViewerManager::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
ewol::Resource:: onObjectRemove(_removeObject); ewol::Resource:: onObjectRemove(_removeObject);
if (_removeObject == m_viewer) { if (_removeObject == m_viewer) {
m_viewer = NULL; m_viewer.reset();
return; return;
} }
} }
appl::ViewerManager* appl::ViewerManager::keep(void) { ewol::object::Shared<appl::ViewerManager> appl::ViewerManager::keep() {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); //EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
appl::ViewerManager* object = static_cast<appl::ViewerManager*>(getManager().localKeep("???ViewerManager???")); ewol::object::Shared<appl::ViewerManager> object = ewol::dynamic_pointer_cast<appl::ViewerManager>(getManager().localKeep("???ViewerManager???"));
if (NULL != object) { if (NULL != object) {
return object; return object;
} }
// this element create a new one every time .... // this element create a new one every time ....
EWOL_INFO("CREATE : appl::ViewerManager: ???ViewerManager???"); EWOL_INFO("CREATE : appl::ViewerManager: ???ViewerManager???");
object = new appl::ViewerManager(); object = ewol::object::makeShared(new appl::ViewerManager());
if (NULL == object) { if (NULL == object) {
EWOL_ERROR("allocation error of a resource : ???ViewerManager???"); EWOL_ERROR("allocation error of a resource : ???ViewerManager???");
return NULL; return NULL;
@@ -67,12 +71,3 @@ appl::ViewerManager* appl::ViewerManager::keep(void) {
getManager().localAdd(object); getManager().localAdd(object);
return object; return object;
} }
void appl::ViewerManager::release(appl::ViewerManager*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@@ -19,22 +19,23 @@ namespace appl {
class TextViewer; class TextViewer;
class ViewerManager : public ewol::Resource { class ViewerManager : public ewol::Resource {
protected: protected:
ViewerManager(void); ViewerManager();
~ViewerManager(void); public:
virtual ~ViewerManager();
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
appl::TextViewer* m_viewer; ewol::object::Shared<appl::TextViewer> m_viewer;
public: public:
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
* @param[in] _viewer Pointer on the viewer selected * @param[in] _viewer Pointer on the viewer selected
*/ */
void setViewerSelected(appl::TextViewer* _viewer, appl::Buffer* _buffer); void setViewerSelected(const ewol::object::Shared<appl::TextViewer>& _viewer, const ewol::object::Shared<appl::Buffer>& _buffer);
/** /**
* @brief Get the current buffer selected * @brief Get the current buffer selected
* @return Pointer on the buffer selected * @return Pointer on the buffer selected
*/ */
appl::TextViewer* getViewerSelected(void) { ewol::object::Shared<appl::TextViewer> getViewerSelected() {
return m_viewer; return m_viewer;
}; };
/** /**
@@ -42,12 +43,10 @@ namespace appl {
* @param[in] _viewer element selected. * @param[in] _viewer element selected.
* @return true if the element is selected * @return true if the element is selected
*/ */
bool isLastSelected(appl::TextViewer* _viewer) { bool isLastSelected(const ewol::object::Shared<appl::TextViewer>& _viewer);
return m_viewer == _viewer;
};
public: // herited function public: // herited function
void onReceiveMessage(const ewol::object::Message& _msg); void onReceiveMessage(const ewol::object::Message& _msg);
void onObjectRemove(ewol::Object* _removeObject); void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
public: // resource manager public: // resource manager
/** /**
* @brief keep the resource pointer. * @brief keep the resource pointer.
@@ -55,12 +54,7 @@ namespace appl {
* @param[in] _filename Name of the configuration file. * @param[in] _filename Name of the configuration file.
* @return pointer on the resource or NULL if an error occured. * @return pointer on the resource or NULL if an error occured.
*/ */
static appl::ViewerManager* keep(void); static ewol::object::Shared<appl::ViewerManager> keep();
/**
* @brief release the keeped resources
* @param[in,out] reference on the object pointer
*/
static void release(appl::ViewerManager*& _object);
}; };
}; };

View File

@@ -15,7 +15,7 @@
static const char* s_closeDone = "close-done"; static const char* s_closeDone = "close-done";
appl::WorkerCloseAllFile::WorkerCloseAllFile(void) : appl::WorkerCloseAllFile::WorkerCloseAllFile() :
m_worker(NULL), m_worker(NULL),
m_bufferManager(NULL) { m_bufferManager(NULL) {
addObjectType("appl::WorkerCloseAllFile"); addObjectType("appl::WorkerCloseAllFile");
@@ -29,7 +29,7 @@ appl::WorkerCloseAllFile::WorkerCloseAllFile(void) :
} }
// List all current open file : // List all current open file :
for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) { for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) {
appl::Buffer* tmpBuffer = m_bufferManager->get(iii); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->get(iii);
if (tmpBuffer == NULL) { if (tmpBuffer == NULL) {
continue; continue;
} }
@@ -45,7 +45,7 @@ appl::WorkerCloseAllFile::WorkerCloseAllFile(void) :
return; return;
} }
// create the worker : // create the worker :
m_worker = new appl::WorkerCloseFile(m_bufferNameList.front()); m_worker = ewol::object::makeShared(new appl::WorkerCloseFile(m_bufferNameList.front()));
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());
if (m_bufferNameList.size() == 0) { if (m_bufferNameList.size() == 0) {
@@ -55,8 +55,8 @@ appl::WorkerCloseAllFile::WorkerCloseAllFile(void) :
m_worker->registerOnEvent(this, appl::WorkerCloseFile::eventCloseDone, s_closeDone); m_worker->registerOnEvent(this, appl::WorkerCloseFile::eventCloseDone, s_closeDone);
} }
appl::WorkerCloseAllFile::~WorkerCloseAllFile(void) { appl::WorkerCloseAllFile::~WorkerCloseAllFile() {
appl::BufferManager::release(m_bufferManager);
} }
void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _msg) { void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _msg) {
@@ -70,7 +70,7 @@ void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _ms
return; return;
} }
// create the worker : // create the worker :
m_worker = new appl::WorkerCloseFile(m_bufferNameList.front()); m_worker = ewol::object::makeShared(new appl::WorkerCloseFile(m_bufferNameList.front()));
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());
if (m_bufferNameList.size() == 0) { if (m_bufferNameList.size() == 0) {
@@ -81,7 +81,7 @@ void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _ms
} }
} }
void appl::WorkerCloseAllFile::onObjectRemove(ewol::Object* _removeObject) { void appl::WorkerCloseAllFile::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
if (_removeObject == m_worker) { if (_removeObject == m_worker) {
m_worker = NULL; m_worker = NULL;
APPL_VERBOSE("AutoRemove After saving sub widget ..."); APPL_VERBOSE("AutoRemove After saving sub widget ...");

View File

@@ -15,15 +15,15 @@
namespace appl { namespace appl {
class WorkerCloseAllFile : public ewol::Object { class WorkerCloseAllFile : public ewol::Object {
public: public:
WorkerCloseAllFile(void); WorkerCloseAllFile();
virtual ~WorkerCloseAllFile(void); virtual ~WorkerCloseAllFile();
private: private:
std::vector<std::string> m_bufferNameList; std::vector<std::string> m_bufferNameList;
appl::WorkerCloseFile* m_worker; //! pop-up element that is open... ewol::object::Shared<appl::WorkerCloseFile> m_worker; //! pop-up element that is open...
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // derived function public: // derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object * _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
}; };
}; };

View File

@@ -38,7 +38,7 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) :
} }
if (m_bufferName == "") { if (m_bufferName == "") {
// need to find the curent file ... // need to find the curent file ...
appl::Buffer* tmpp = m_bufferManager->getBufferSelected(); ewol::object::Shared<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == NULL) { if (tmpp == NULL) {
APPL_ERROR("No selected buffer now ..."); APPL_ERROR("No selected buffer now ...");
autoDestroy(); autoDestroy();
@@ -63,14 +63,14 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) :
return; return;
} }
ewol::widget::StdPopUp* tmpPopUp = new ewol::widget::StdPopUp(); ewol::object::Shared<ewol::widget::StdPopUp> tmpPopUp = ewol::object::makeShared(new ewol::widget::StdPopUp());
if (tmpPopUp == NULL) { if (tmpPopUp == NULL) {
APPL_ERROR("Can not create a simple pop-up"); APPL_ERROR("Can not create a simple pop-up");
return; return;
} }
tmpPopUp->setTitle("<bold>Close un-saved file:</bold>"); tmpPopUp->setTitle("<bold>Close un-saved file:</bold>");
tmpPopUp->setComment("The file named : <i>\"" + m_buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost..."); tmpPopUp->setComment("The file named : <i>\"" + m_buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost...");
ewol::Widget* bt = NULL; ewol::object::Shared<ewol::Widget> bt = NULL;
if (m_buffer->hasFileName() == true) { if (m_buffer->hasFileName() == true) {
bt = tmpPopUp->addButton("Save", true); bt = tmpPopUp->addButton("Save", true);
if (bt != NULL) { if (bt != NULL) {
@@ -87,7 +87,7 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) :
} }
tmpPopUp->addButton("Cancel", true); tmpPopUp->addButton("Cancel", true);
tmpPopUp->setRemoveOnExternClick(true); tmpPopUp->setRemoveOnExternClick(true);
ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); ewol::object::Shared<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows();
if (tmpWindows == NULL) { if (tmpWindows == NULL) {
APPL_ERROR("Error to get the windows."); APPL_ERROR("Error to get the windows.");
autoDestroy(); autoDestroy();
@@ -96,8 +96,8 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) :
tmpWindows->popUpWidgetPush(tmpPopUp); tmpWindows->popUpWidgetPush(tmpPopUp);
} }
appl::WorkerCloseFile::~WorkerCloseFile(void) { appl::WorkerCloseFile::~WorkerCloseFile() {
appl::BufferManager::release(m_bufferManager);
} }
void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) { void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) {
@@ -107,7 +107,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg)
} }
APPL_DEBUG("have message : " << _msg); APPL_DEBUG("have message : " << _msg);
if (_msg.getMessage() == s_saveAsValidate) { if (_msg.getMessage() == s_saveAsValidate) {
m_worker = new appl::WorkerSaveFile(m_bufferName); m_worker = ewol::object::makeShared(new appl::WorkerSaveFile(m_bufferName));
if (m_worker != NULL) { if (m_worker != NULL) {
m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone);
} }
@@ -118,7 +118,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg)
return; return;
} }
if (m_buffer->storeFile() == false) { if (m_buffer->storeFile() == false) {
ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); ewol::object::Shared<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows();
if (tmpWindows == NULL) { if (tmpWindows == NULL) {
return; return;
} }
@@ -138,7 +138,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg)
} }
} }
void appl::WorkerCloseFile::onObjectRemove(ewol::Object* _removeObject) { void appl::WorkerCloseFile::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
if (_removeObject == m_worker) { if (_removeObject == m_worker) {
m_worker = NULL; m_worker = NULL;
APPL_VERBOSE("AutoRemove After closing sub widget ..."); APPL_VERBOSE("AutoRemove After closing sub widget ...");

View File

@@ -20,15 +20,15 @@ namespace appl {
public: public:
// note : if == "" ==> current ... // note : if == "" ==> current ...
WorkerCloseFile(const std::string& _bufferName); WorkerCloseFile(const std::string& _bufferName);
virtual ~WorkerCloseFile(void); virtual ~WorkerCloseFile();
private: private:
std::string m_bufferName; std::string m_bufferName;
appl::Buffer* m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer ewol::object::Shared<appl::Buffer> m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer
appl::WorkerSaveFile* m_worker; //! sub-worker element... ewol::object::Shared<appl::WorkerSaveFile> m_worker; //! sub-worker element...
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // derived function public: // derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object * _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
}; };
}; };

View File

@@ -15,7 +15,7 @@
static const char* s_saveAsDone = "save-as-done"; static const char* s_saveAsDone = "save-as-done";
appl::WorkerSaveAllFile::WorkerSaveAllFile(void) : appl::WorkerSaveAllFile::WorkerSaveAllFile() :
m_worker(NULL), m_worker(NULL),
m_bufferManager(NULL) { m_bufferManager(NULL) {
addObjectType("appl::WorkerSaveAllFile"); addObjectType("appl::WorkerSaveAllFile");
@@ -28,8 +28,8 @@ appl::WorkerSaveAllFile::WorkerSaveAllFile(void) :
return; return;
} }
// List all current open file : // List all current open file :
for (size_t iii=0; iii<m_bufferManager->size(); ++iii) { for (int32_t iii=0; iii<m_bufferManager->size(); ++iii) {
appl::Buffer* tmpBuffer = m_bufferManager->get(iii); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->get(iii);
if (tmpBuffer == NULL) { if (tmpBuffer == NULL) {
continue; continue;
} }
@@ -48,7 +48,7 @@ appl::WorkerSaveAllFile::WorkerSaveAllFile(void) :
return; return;
} }
// create the worker : // create the worker :
m_worker = new appl::WorkerSaveFile(m_bufferNameList.front()); m_worker = ewol::object::makeShared(new appl::WorkerSaveFile(m_bufferNameList.front()));
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());
if (m_bufferNameList.size() == 0) { if (m_bufferNameList.size() == 0) {
@@ -58,8 +58,8 @@ appl::WorkerSaveAllFile::WorkerSaveAllFile(void) :
m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone);
} }
appl::WorkerSaveAllFile::~WorkerSaveAllFile(void) { appl::WorkerSaveAllFile::~WorkerSaveAllFile() {
appl::BufferManager::release(m_bufferManager);
} }
void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg) { void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg) {
@@ -84,7 +84,7 @@ void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg
} }
} }
void appl::WorkerSaveAllFile::onObjectRemove(ewol::Object* _removeObject) { void appl::WorkerSaveAllFile::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
if (_removeObject == m_worker) { if (_removeObject == m_worker) {
m_worker = NULL; m_worker = NULL;
APPL_VERBOSE("AutoRemove After saving sub widget ..."); APPL_VERBOSE("AutoRemove After saving sub widget ...");

View File

@@ -15,15 +15,15 @@
namespace appl { namespace appl {
class WorkerSaveAllFile : public ewol::Object { class WorkerSaveAllFile : public ewol::Object {
public: public:
WorkerSaveAllFile(void); WorkerSaveAllFile();
virtual ~WorkerSaveAllFile(void); virtual ~WorkerSaveAllFile();
private: private:
std::vector<std::string> m_bufferNameList; std::vector<std::string> m_bufferNameList;
appl::WorkerSaveFile* m_worker; //! pop-up element that is open... ewol::object::Shared<appl::WorkerSaveFile> m_worker; //! pop-up element that is open...
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // derived function public: // derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object * _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
}; };
}; };

View File

@@ -33,7 +33,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force
} }
if (m_bufferName == "") { if (m_bufferName == "") {
// need to find the curent file ... // need to find the curent file ...
appl::Buffer* tmpp = m_bufferManager->getBufferSelected(); ewol::object::Shared<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == NULL) { if (tmpp == NULL) {
APPL_ERROR("No selected buffer now ..."); APPL_ERROR("No selected buffer now ...");
autoDestroy(); autoDestroy();
@@ -46,7 +46,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force
autoDestroy(); autoDestroy();
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(m_bufferName); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->get(m_bufferName);
if (tmpBuffer == NULL) { if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << m_bufferName); APPL_ERROR("Error to get the buffer : " << m_bufferName);
autoDestroy(); autoDestroy();
@@ -60,7 +60,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force
return; return;
} }
} }
m_chooser = new ewol::widget::FileChooser(); m_chooser = ewol::object::makeShared(new ewol::widget::FileChooser());
if (NULL == m_chooser) { if (NULL == m_chooser) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
autoDestroy(); autoDestroy();
@@ -71,7 +71,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force
etk::FSNode tmpName(m_bufferName); etk::FSNode tmpName(m_bufferName);
m_chooser->setFolder(tmpName.getNameFolder()); m_chooser->setFolder(tmpName.getNameFolder());
m_chooser->setFileName(tmpName.getNameFile()); m_chooser->setFileName(tmpName.getNameFile());
ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); ewol::object::Shared<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows();
if (tmpWindows == NULL) { if (tmpWindows == NULL) {
APPL_ERROR("Error to get the windows."); APPL_ERROR("Error to get the windows.");
autoDestroy(); autoDestroy();
@@ -81,8 +81,8 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force
m_chooser->registerOnEvent(this, ewol::widget::FileChooser::eventValidate, s_saveAsValidate); m_chooser->registerOnEvent(this, ewol::widget::FileChooser::eventValidate, s_saveAsValidate);
} }
appl::WorkerSaveFile::~WorkerSaveFile(void) { appl::WorkerSaveFile::~WorkerSaveFile() {
appl::BufferManager::release(m_bufferManager);
} }
void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) { void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) {
@@ -99,14 +99,14 @@ void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_ERROR("Try to save an non-existant file :" << m_bufferName); APPL_ERROR("Try to save an non-existant file :" << m_bufferName);
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(m_bufferName); ewol::object::Shared<appl::Buffer> tmpBuffer = m_bufferManager->get(m_bufferName);
if (tmpBuffer == NULL) { if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << m_bufferName); APPL_ERROR("Error to get the buffer : " << m_bufferName);
return; return;
} }
tmpBuffer->setFileName(_msg.getData()); tmpBuffer->setFileName(_msg.getData());
if (tmpBuffer->storeFile() == false) { if (tmpBuffer->storeFile() == false) {
ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); ewol::object::Shared<ewol::widget::Windows> tmpWindows = ewol::getContext().getWindows();
if (tmpWindows == NULL) { if (tmpWindows == NULL) {
return; return;
} }
@@ -117,7 +117,7 @@ void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) {
} }
} }
void appl::WorkerSaveFile::onObjectRemove(ewol::Object* _removeObject) { void appl::WorkerSaveFile::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
if (_removeObject == m_chooser) { if (_removeObject == m_chooser) {
m_chooser = NULL; m_chooser = NULL;
APPL_VERBOSE("AutoRemove After closing sub widget ..."); APPL_VERBOSE("AutoRemove After closing sub widget ...");

View File

@@ -18,14 +18,14 @@ namespace appl {
static const char* eventSaveDone; static const char* eventSaveDone;
public: public:
WorkerSaveFile(const std::string& _bufferName, bool _forceSaveAs=true); WorkerSaveFile(const std::string& _bufferName, bool _forceSaveAs=true);
virtual ~WorkerSaveFile(void); virtual ~WorkerSaveFile();
private: private:
std::string m_bufferName; std::string m_bufferName;
ewol::widget::FileChooser* m_chooser; //! pop-up element that is open... ewol::object::Shared<ewol::widget::FileChooser> m_chooser; //! pop-up element that is open...
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // derived function public: // derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object * _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
}; };
}; };

View File

@@ -25,19 +25,20 @@
#define HL2_DEBUG APPL_VERBOSE #define HL2_DEBUG APPL_VERBOSE
void appl::Highlight::parseRules(exml::Element* _child, void appl::Highlight::parseRules(exml::Element* _child,
std::vector<HighlightPattern*>& _mListPatern, std::vector<std::unique_ptr<HighlightPattern>>& _mListPatern,
int32_t _level) { int32_t _level) {
// Create the patern ... // Create the patern ...
HighlightPattern *myPattern = new HighlightPattern(m_paintingProperties); HighlightPattern *myPattern = new HighlightPattern(m_paintingProperties);
// parse under Element // parse under Element
myPattern->parseRules(_child, _level); myPattern->parseRules(_child, _level);
// add element in the list // add element in the list
_mListPatern.push_back(myPattern); _mListPatern.push_back(std::unique_ptr<HighlightPattern>(myPattern));
} }
appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _colorFile) : appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _colorFile) :
ewol::Resource(_xmlFilename), ewol::Resource(_xmlFilename),
m_typeName("") { m_typeName("") {
addObjectType("appl::Highlight");
// keep color propertiy file : // keep color propertiy file :
m_paintingProperties = appl::GlyphPainting::keep(_colorFile); m_paintingProperties = appl::GlyphPainting::keep(_colorFile);
@@ -55,7 +56,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _
int32_t level1 = 0; int32_t level1 = 0;
int32_t level2 = 0; int32_t level2 = 0;
// parse all the elements : // parse all the elements :
for(int32_t iii = 0; iii < root->size(); ++iii) { for(size_t iii = 0; iii < root->size(); ++iii) {
exml::Element* child = root->getElement(iii); exml::Element* child = root->getElement(iii);
if (child == NULL) { if (child == NULL) {
// trash here all that is not element ... // trash here all that is not element ...
@@ -69,7 +70,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _
} }
} else if (child->getValue() == "pass1") { } else if (child->getValue() == "pass1") {
// get sub Nodes ... // get sub Nodes ...
for(int32_t jjj=0; jjj< child->size(); jjj++) { for(size_t jjj=0; jjj< child->size(); jjj++) {
exml::Element* passChild = child->getElement(jjj); exml::Element* passChild = child->getElement(jjj);
if (passChild == NULL) { if (passChild == NULL) {
continue; continue;
@@ -82,7 +83,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _
} }
} else if (child->getValue() == "pass2") { } else if (child->getValue() == "pass2") {
// get sub Nodes ... // get sub Nodes ...
for(int32_t jjj=0; jjj< child->size(); jjj++) { for(size_t jjj=0; jjj< child->size(); jjj++) {
exml::Element* passChild = child->getElement(jjj); exml::Element* passChild = child->getElement(jjj);
if (passChild == NULL) { if (passChild == NULL) {
continue; continue;
@@ -99,26 +100,20 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _
} }
} }
appl::Highlight::~Highlight(void) { appl::Highlight::~Highlight() {
int32_t i;
// clean all Element
for (int32_t iii = 0; iii < m_listHighlightPass1.size(); ++iii) {
if (m_listHighlightPass1[iii] != NULL) {
delete(m_listHighlightPass1[iii]);
m_listHighlightPass1[iii] = NULL;
}
}
// clear the compleate list // clear the compleate list
m_listHighlightPass1.clear(); m_listHighlightPass1.clear();
// clear the compleate list // clear the compleate list
m_listHighlightPass2.clear();
// clear the compleate list
m_listExtentions.clear(); m_listExtentions.clear();
} }
bool appl::Highlight::hasExtention(const std::string& _ext) { bool appl::Highlight::hasExtention(const std::string& _ext) {
for (int32_t iii=0; iii<m_listExtentions.size(); iii++) { for (auto &it : m_listExtentions) {
APPL_VERBOSE(" check : " << m_listExtentions[iii] << "=?=" << _ext); APPL_VERBOSE(" check : " << it << "=?=" << _ext);
if ( m_listExtentions[iii] == "*." + _ext if ( it == "*." + _ext
|| m_listExtentions[iii] == _ext) { || it == _ext) {
return true; return true;
} }
} }
@@ -136,8 +131,8 @@ bool appl::Highlight::fileNameCompatible(const std::string& _fileName) {
} }
APPL_DEBUG(" try to find : in \"" << file << "\" extention:\"" << extention << "\" "); APPL_DEBUG(" try to find : in \"" << file << "\" extention:\"" << extention << "\" ");
for (int32_t iii=0; iii<m_listExtentions.size(); iii++) { for (auto &it : m_listExtentions) {
if (extention == m_listExtentions[iii] ) { if (extention == it ) {
return true; return true;
} }
} }
@@ -145,19 +140,19 @@ bool appl::Highlight::fileNameCompatible(const std::string& _fileName) {
} }
void appl::Highlight::display(void) { void appl::Highlight::display() {
APPL_INFO("List of ALL Highlight : "); APPL_INFO("List of ALL Highlight : ");
for (int32_t iii=0; iii< m_listExtentions.size(); iii++) { for (auto &it : m_listExtentions) {
APPL_INFO(" Extention : " << iii << " : " << m_listExtentions[iii] ); APPL_INFO(" Extention : " << it );
} }
// display all elements // display all elements
for (int32_t iii=0; iii< m_listHighlightPass1.size(); iii++) { for (auto &it : m_listHighlightPass1) {
APPL_INFO(" " << iii << " Pass 1 : " << m_listHighlightPass1[iii]->getName() ); APPL_INFO(" Pass 1 : " << it->getName() );
//m_listHighlightPass1[iii]->display(); //m_listHighlightPass1[iii]->display();
} }
// display all elements // display all elements
for (int32_t iii=0; iii< m_listHighlightPass2.size(); iii++) { for (auto &it : m_listHighlightPass2) {
APPL_INFO(" " << iii << " Pass 2 : " << m_listHighlightPass2[iii]->getName() ); APPL_INFO(" pass 2 : " << it->getName() );
//m_listHighlightPass2[iii]->display(); //m_listHighlightPass2[iii]->display();
} }
} }
@@ -180,7 +175,7 @@ void appl::Highlight::parse(int64_t _start,
while (elementStart <= elementStop) { while (elementStart <= elementStop) {
HL_DEBUG("Parse element in the buffer pos=" << elementStart); HL_DEBUG("Parse element in the buffer pos=" << elementStart);
//try to fond the HL in ALL of we have //try to fond the HL in ALL of we have
for (int64_t jjj=0; jjj<m_listHighlightPass1.size(); jjj++){ for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass1.size(); jjj++){
enum resultFind ret = HLP_FIND_OK; 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 << ")" );
// Stop the search to the end (to get the end of the pattern) // Stop the search to the end (to get the end of the pattern)
@@ -189,13 +184,13 @@ void appl::Highlight::parse(int64_t _start,
HL_DEBUG("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" ); HL_DEBUG("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" );
// remove element in the current List where the current Element have a end inside the next... // remove element in the current List where the current Element have a end inside the next...
int64_t kkk=_addingPos; int64_t kkk=_addingPos;
while(kkk < _metaData.size() ) { while(kkk < (int64_t)_metaData.size() ) {
if (_metaData[kkk].beginStart <= resultat.endStop) { if (_metaData[kkk].beginStart <= resultat.endStop) {
// remove element // remove element
HL_DEBUG("Erase element=" << kkk); HL_DEBUG("Erase element=" << kkk);
_metaData.erase(_metaData.begin()+kkk, _metaData.begin()+kkk+1); _metaData.erase(_metaData.begin()+kkk, _metaData.begin()+kkk+1);
// Increase the end of search // Increase the end of search
if (kkk < _metaData.size()) { if (kkk < (int64_t)_metaData.size()) {
// just befor the end of the next element // just befor the end of the next element
elementStop = _metaData[kkk].beginStart-1; elementStop = _metaData[kkk].beginStart-1;
} else { } else {
@@ -241,7 +236,7 @@ void appl::Highlight::parse2(int64_t _start,
while (elementStart < elementStop) { while (elementStart < elementStop) {
//HL2_DEBUG("Parse element in the buffer pos=" << elementStart << "," << _buffer.size() << ")" ); //HL2_DEBUG("Parse element in the buffer pos=" << elementStart << "," << _buffer.size() << ")" );
//try to fond the HL in ALL of we have //try to fond the HL in ALL of we have
for (int64_t jjj=0; jjj<m_listHighlightPass2.size(); jjj++){ for (int64_t jjj=0; jjj<(int64_t)m_listHighlightPass2.size(); jjj++){
enum resultFind ret = HLP_FIND_OK; enum resultFind ret = HLP_FIND_OK;
HL2_DEBUG("Parse HL id=" << jjj << " position search: (" << HL2_DEBUG("Parse HL id=" << jjj << " position search: (" <<
_start << "," << _buffer.size() << ")" ); _start << "," << _buffer.size() << ")" );
@@ -261,29 +256,20 @@ void appl::Highlight::parse2(int64_t _start,
} }
} }
appl::Highlight* appl::Highlight::keep(const std::string& _filename) { ewol::object::Shared<appl::Highlight> appl::Highlight::keep(const std::string& _filename) {
//EWOL_INFO("KEEP : appl::Highlight : file : \"" << _filename << "\""); //EWOL_INFO("KEEP : appl::Highlight : file : \"" << _filename << "\"");
appl::Highlight* object = static_cast<appl::Highlight*>(getManager().localKeep(_filename)); ewol::object::Shared<appl::Highlight> object = ewol::dynamic_pointer_cast<appl::Highlight>(getManager().localKeep(_filename));
if (NULL != object) { if (NULL != object) {
return object; return object;
} }
EWOL_INFO("CREATE : appl::Highlight : file : \"" << _filename << "\""); EWOL_INFO("CREATE : appl::Highlight : file : \"" << _filename << "\"");
// this element create a new one every time .... // this element create a new one every time ....
object = new appl::Highlight(_filename, "THEME:COLOR:textViewer.json"); object = ewol::object::makeShared(new appl::Highlight(_filename, "THEME:COLOR:textViewer.json"));
if (NULL == object) { if (NULL == object) {
EWOL_ERROR("allocation error of a resource : ??Highlight??"); EWOL_ERROR("allocation error of a resource : ??Highlight??");
return NULL; return NULL;
} }
getManager().localAdd(object); getManager().localAdd(object);
return object; return object;
} }
void appl::Highlight::release(appl::Highlight*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@@ -25,6 +25,7 @@ namespace appl {
}; };
}; };
#include <memory>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#include <appl/HighlightPattern.h> #include <appl/HighlightPattern.h>
#include <appl/GlyphPainting.h> #include <appl/GlyphPainting.h>
@@ -34,21 +35,22 @@ namespace appl {
namespace appl { namespace appl {
class Highlight : public ewol::Resource { class Highlight : public ewol::Resource {
private: private:
appl::GlyphPainting* m_paintingProperties; ewol::object::Shared<appl::GlyphPainting> m_paintingProperties;
protected: protected:
// Constructeur // Constructeur
Highlight(const std::string& _xmlFilename, const std::string& _colorFile); Highlight(const std::string& _xmlFilename, const std::string& _colorFile);
~Highlight(void); public:
virtual ~Highlight();
private: private:
std::string m_typeName; //!< descriptive string type like "C/C++" std::string m_typeName; //!< descriptive string type like "C/C++"
public: public:
const std::string& getTypeName(void) { const std::string& getTypeName() {
return m_typeName; return m_typeName;
} }
public: public:
bool hasExtention(const std::string& _ext); bool hasExtention(const std::string& _ext);
bool fileNameCompatible(const std::string& _fileName); bool fileNameCompatible(const std::string& _fileName);
void display(void); void display();
void parse(int64_t _start, void parse(int64_t _start,
int64_t _stop, int64_t _stop,
std::vector<appl::HighlightInfo> &_metaData, std::vector<appl::HighlightInfo> &_metaData,
@@ -60,12 +62,12 @@ namespace appl {
etk::Buffer &_buffer); etk::Buffer &_buffer);
private: private:
void parseRules(exml::Element* _child, void parseRules(exml::Element* _child,
std::vector<HighlightPattern*> &_mListPatern, std::vector<std::unique_ptr<HighlightPattern>> &_mListPatern,
int32_t _level); int32_t _level);
std::string m_styleName; //!< curent style name (like "c++" or "c" or "script Bash") std::string m_styleName; //!< curent style name (like "c++" or "c" or "script Bash")
std::vector<std::string> m_listExtentions; //!< List of possible extention for this high-light, like : ".c", ".cpp", ".h" std::vector<std::string> m_listExtentions; //!< List of possible extention for this high-light, like : ".c", ".cpp", ".h"
std::vector<HighlightPattern*> m_listHighlightPass1; //!< List of ALL hightlight modules (pass 1 == > when we load and wride data on the buffer) std::vector<std::unique_ptr<HighlightPattern>> m_listHighlightPass1; //!< List of ALL hightlight modules (pass 1 == > when we load and wride data on the buffer)
std::vector<HighlightPattern*> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) ) std::vector<std::unique_ptr<HighlightPattern>> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) )
public: public:
/** /**
* @brief keep the resource pointer. * @brief keep the resource pointer.
@@ -73,14 +75,9 @@ namespace appl {
* @param[in] _filename Name of the configuration file. * @param[in] _filename Name of the configuration file.
* @return pointer on the resource or NULL if an error occured. * @return pointer on the resource or NULL if an error occured.
*/ */
static appl::Highlight* keep(const std::string& _filename); static ewol::object::Shared<appl::Highlight> keep(const std::string& _filename);
/**
* @brief release the keeped resources
* @param[in,out] reference on the object pointer
*/
static void release(appl::Highlight*& _object);
public: // herited function : public: // herited function :
virtual void updateContext(void) { virtual void updateContext() {
// no upfate to do ... // no upfate to do ...
}; };
}; };

View File

@@ -15,14 +15,16 @@
#undef __class__ #undef __class__
#define __class__ "highlightManager" #define __class__ "highlightManager"
static std::vector<appl::Highlight*>& s_list(void) { // TODO : Review this in a generic unique resource ...
static std::vector<appl::Highlight*> list;
static std::vector<ewol::object::Shared<appl::Highlight>>& s_list() {
static std::vector<ewol::object::Shared<appl::Highlight>> list;
return list; return list;
} }
void appl::highlightManager::init(void) { void appl::highlightManager::init() {
std::vector<appl::Highlight*>& hlList = s_list(); std::vector<ewol::object::Shared<appl::Highlight>>& hlList = s_list();
if (hlList.size() != 0) { if (hlList.size() != 0) {
APPL_ERROR("HighlightManager == > already exist, just unlink the previous ..."); APPL_ERROR("HighlightManager == > already exist, just unlink the previous ...");
hlList.clear(); hlList.clear();
@@ -31,16 +33,16 @@ void appl::highlightManager::init(void) {
etk::FSNode myFile("DATA:languages/"); etk::FSNode myFile("DATA:languages/");
// get the subfolder list : // get the subfolder list :
std::vector<etk::FSNode *> list = myFile.folderGetSubList(false, true, false,false); std::vector<etk::FSNode *> list = myFile.folderGetSubList(false, true, false,false);
for (int32_t iii = 0; iii < list.size(); ++iii) { for (auto &it : list) {
if (list[iii] == NULL) { if (it == NULL) {
continue; continue;
} }
if (list[iii]->getNodeType() != etk::FSN_FOLDER) { if (it->getNodeType() != etk::FSN_FOLDER) {
continue; continue;
} }
std::string filename = list[iii]->getName() + "/highlight.xml"; std::string filename = it->getName() + "/highlight.xml";
APPL_DEBUG("Load xml name : " << filename); APPL_DEBUG("Load xml name : " << filename);
appl::Highlight *myHightLine = appl::Highlight::keep(filename); ewol::object::Shared<appl::Highlight> myHightLine = appl::Highlight::keep(filename);
if (myHightLine != NULL) { if (myHightLine != NULL) {
hlList.push_back(myHightLine); hlList.push_back(myHightLine);
} else { } else {
@@ -49,29 +51,22 @@ void appl::highlightManager::init(void) {
} }
// display : // display :
/* /*
for (int32_t iii = 0; iii < hlList.size(); ++iii) { for (auto &it : hlList) {
if (hlList[iii] == NULL) { if (it == NULL) {
continue; continue;
} }
hlList[iii]->display(); it->display();
} }
*/ */
} }
void appl::highlightManager::unInit(void) { void appl::highlightManager::unInit() {
std::vector<Highlight*>& hlList = s_list(); std::vector<ewol::object::Shared<Highlight>>& hlList = s_list();
if (hlList.size() == 0) { if (hlList.size() == 0) {
APPL_DEBUG("HighlightManager ==> no highlight"); APPL_DEBUG("HighlightManager ==> no highlight");
hlList.clear(); hlList.clear();
return; return;
} }
for (int32_t iii = 0; iii < hlList.size(); ++iii) {
if (hlList[iii] == NULL) {
continue;
}
appl::Highlight::release(hlList[iii]);
hlList[iii] = NULL;
}
hlList.clear(); hlList.clear();
} }
@@ -80,16 +75,16 @@ std::string appl::highlightManager::getTypeExtention(const std::string& _extenti
return ""; return "";
} }
APPL_DEBUG("Try to find type for extention : '" << _extention << "' in " << s_list().size() << " types"); APPL_DEBUG("Try to find type for extention : '" << _extention << "' in " << s_list().size() << " types");
std::vector<Highlight*>& hlList = s_list(); std::vector<ewol::object::Shared<Highlight>>& hlList = s_list();
for (int32_t iii = 0; iii < hlList.size(); ++iii) { for (auto &it : hlList) {
if (hlList[iii] == NULL) { if (it == NULL) {
continue; continue;
} }
APPL_DEBUG(" check : " << hlList[iii]->getTypeName()); APPL_DEBUG(" check : " << it->getTypeName());
if (hlList[iii]->hasExtention(_extention) == true) { if (it->hasExtention(_extention) == true) {
APPL_DEBUG("Find type for extention : " << _extention APPL_DEBUG("Find type for extention : " << _extention
<< " type : " << hlList[iii]->getTypeName()); << " type : " << it->getTypeName());
return hlList[iii]->getTypeName(); return it->getTypeName();
} }
} }
return ""; return "";
@@ -99,19 +94,18 @@ std::string appl::highlightManager::getFileWithTypeType(const std::string& _type
if (_type.size() == 0) { if (_type.size() == 0) {
return ""; return "";
} }
std::vector<Highlight*>& hlList = s_list(); for (auto &it : s_list()) {
for (int32_t iii = 0; iii < hlList.size(); ++iii) { if (it == NULL) {
if (hlList[iii] == NULL) {
continue; continue;
} }
if (hlList[iii]->getTypeName() == _type) { if (it->getTypeName() == _type) {
return hlList[iii]->getName(); return it->getName();
} }
} }
return ""; return "";
} }
std::vector<std::string> appl::highlightManager::getTypeList(void) { std::vector<std::string> appl::highlightManager::getTypeList() {
std::vector<std::string> ret; std::vector<std::string> ret;
return ret; return ret;
} }

View File

@@ -20,11 +20,11 @@ namespace appl {
/** /**
* @brief Init the Highlight manager * @brief Init the Highlight manager
*/ */
void init(void); void init();
/** /**
* @brief Un-Init the Highlight manager * @brief Un-Init the Highlight manager
*/ */
void unInit(void); void unInit();
/** /**
* @brief Un-Init the Highlight manager * @brief Un-Init the Highlight manager
* @param[in] extention of the file * @param[in] extention of the file
@@ -41,7 +41,7 @@ namespace appl {
* @brief Get the list of extention type * @brief Get the list of extention type
* @return the requested list. * @return the requested list.
*/ */
std::vector<std::string> getTypeList(void); std::vector<std::string> getTypeList();
}; };
}; };

View File

@@ -13,27 +13,20 @@
#undef __class__ #undef __class__
#define __class__ "HighlightPattern" #define __class__ "HighlightPattern"
appl::HighlightPattern::HighlightPattern(appl::GlyphPainting*& _glyphPainting) : appl::HighlightPattern::HighlightPattern(const ewol::object::Shared<appl::GlyphPainting>& _glyphPainting) :
m_glyphPainting(_glyphPainting), m_glyphPainting(_glyphPainting),
m_paternName(""), m_paternName(""),
m_regExpStart(NULL), m_regExpStart(nullptr),
m_regExpStop(NULL), m_regExpStop(nullptr),
m_colorName(""), m_colorName(""),
m_escapeChar(u32char::Null), m_escapeChar(u32char::Null),
m_multiline(false), m_multiline(false),
m_level(0) { m_level(0) {
m_regExpStart = new etk::RegExp<etk::Buffer>(); m_regExpStart = std::unique_ptr<etk::RegExp<etk::Buffer>>(new etk::RegExp<etk::Buffer>());
} }
appl::HighlightPattern::~HighlightPattern(void) { appl::HighlightPattern::~HighlightPattern() {
if (m_regExpStart != NULL) {
delete(m_regExpStart);
m_regExpStart = NULL;
}
if (m_regExpStop != NULL) {
delete(m_regExpStop);
m_regExpStop = NULL;
}
} }
void appl::HighlightPattern::setPaternStart(std::string& _regExp) { void appl::HighlightPattern::setPaternStart(std::string& _regExp) {
@@ -44,12 +37,9 @@ void appl::HighlightPattern::setPaternStart(std::string& _regExp) {
} }
void appl::HighlightPattern::setPaternStop(std::string& _regExp) { void appl::HighlightPattern::setPaternStop(std::string& _regExp) {
if (m_regExpStop != NULL) { m_regExpStop.reset();
delete(m_regExpStop);
m_regExpStop = NULL;
}
if (_regExp.size() != 0) { if (_regExp.size() != 0) {
m_regExpStop = new etk::RegExp<etk::Buffer>(); m_regExpStop = std::unique_ptr<etk::RegExp<etk::Buffer>>(new etk::RegExp<etk::Buffer>());
if (m_regExpStop != NULL) { if (m_regExpStop != NULL) {
m_regExpStop->compile(_regExp); m_regExpStop->compile(_regExp);
} else { } else {
@@ -68,7 +58,7 @@ void appl::HighlightPattern::setColorGlyph(std::string& _colorName) {
APPL_VERBOSE("Resuest color name '" << m_colorName << "' => id=" << m_colorId); APPL_VERBOSE("Resuest color name '" << m_colorName << "' => id=" << m_colorId);
} }
void appl::HighlightPattern::display(void) { void appl::HighlightPattern::display() {
APPL_INFO("patern : \"" << m_paternName << "\" level=" << m_level ); APPL_INFO("patern : \"" << m_paternName << "\" level=" << m_level );
APPL_INFO(" == > colorName \"" << m_colorName << "\""); APPL_INFO(" == > colorName \"" << m_colorName << "\"");
APPL_INFO(" == > regExpStart \"" << m_regExpStart->getRegExp() << "\""); APPL_INFO(" == > regExpStart \"" << m_regExpStart->getRegExp() << "\"");

View File

@@ -29,26 +29,26 @@ enum resultFind {
namespace appl { namespace appl {
class HighlightPattern { class HighlightPattern {
private: private:
appl::GlyphPainting*& m_glyphPainting; ewol::object::Shared<appl::GlyphPainting> m_glyphPainting;
public: public:
// Constructeur // Constructeur
HighlightPattern(appl::GlyphPainting*& _glyphPainting); HighlightPattern(const ewol::object::Shared<appl::GlyphPainting>& _glyphPainting);
~HighlightPattern(void); virtual ~HighlightPattern();
private: private:
std::string m_paternName; //!< Current style name (like "c++" or "c" or "script Bash") std::string m_paternName; //!< Current style name (like "c++" or "c" or "script Bash")
public: public:
void setName(std::string& _name) { void setName(std::string& _name) {
m_paternName = _name; m_paternName = _name;
}; };
std::string getName(void) { std::string getName() {
return m_paternName; return m_paternName;
}; };
private: private:
etk::RegExp<etk::Buffer>* m_regExpStart; //!< Start of Regular expression std::unique_ptr<etk::RegExp<etk::Buffer>> m_regExpStart; //!< Start of Regular expression
public: public:
void setPaternStart(std::string& _regExp); void setPaternStart(std::string& _regExp);
private: private:
etk::RegExp<etk::Buffer>* m_regExpStop; //!< Stop of Regular Expression std::unique_ptr<etk::RegExp<etk::Buffer>> m_regExpStop; //!< Stop of Regular Expression
public: public:
void setPaternStop(std::string& _regExp); void setPaternStop(std::string& _regExp);
private: private:
@@ -56,7 +56,7 @@ namespace appl {
int32_t m_colorId; //!< Id of the the glyph painting int32_t m_colorId; //!< Id of the the glyph painting
public: public:
void setColorGlyph(std::string& _colorName); void setColorGlyph(std::string& _colorName);
const appl::GlyphDecoration& getColorGlyph(void) { const appl::GlyphDecoration& getColorGlyph() {
return (*m_glyphPainting)[m_colorId]; return (*m_glyphPainting)[m_colorId];
}; };
private: private:
@@ -75,13 +75,13 @@ namespace appl {
void setLevel(int32_t _newLevel) { void setLevel(int32_t _newLevel) {
m_level = _newLevel; m_level = _newLevel;
}; };
int32_t getLevel(void) { int32_t getLevel() {
return m_level; return m_level;
}; };
private: private:
public: public:
void display(void); void display();
/** /**
* @brief find Element only in the specify start characters and find the end with the range done * @brief find Element only in the specify start characters and find the end with the range done
* @param[in] _start First character to search data (if recognise it start here) * @param[in] _start First character to search data (if recognise it start here)

View File

@@ -14,7 +14,7 @@
#define __class__ "TextViewerPlugin" #define __class__ "TextViewerPlugin"
appl::TextViewerPlugin::TextViewerPlugin(void) : appl::TextViewerPlugin::TextViewerPlugin() :
m_isEnable(true), m_isEnable(true),
m_activateOnEventEntry(false), m_activateOnEventEntry(false),
m_activateOnEventInput(false), m_activateOnEventInput(false),
@@ -23,10 +23,10 @@ appl::TextViewerPlugin::TextViewerPlugin(void) :
m_activateOnRemove(false), m_activateOnRemove(false),
m_activateOnReceiveMessage(false), m_activateOnReceiveMessage(false),
m_activateOnCursorMove(false) { m_activateOnCursorMove(false) {
addObjectType("appl::TextViewerPlugin");
} }
appl::TextViewerPlugin::~TextViewerPlugin(void) { appl::TextViewerPlugin::~TextViewerPlugin() {
if (m_isEnable == false) { if (m_isEnable == false) {
return; return;
} }

View File

@@ -18,8 +18,8 @@ namespace appl {
class TextViewerPlugin : public ewol::Object { class TextViewerPlugin : public ewol::Object {
friend class appl::TextViewer; friend class appl::TextViewer;
public: public:
TextViewerPlugin(void); TextViewerPlugin();
virtual ~TextViewerPlugin(void); virtual ~TextViewerPlugin();
private: private:
bool m_isEnable; //!< The plugin is enable or not (for all viewer). bool m_isEnable; //!< The plugin is enable or not (for all viewer).
public: public:
@@ -32,20 +32,20 @@ namespace appl {
* @brief Get the activity status. * @brief Get the activity status.
* @return true if the plugin is active, false otherwise. * @return true if the plugin is active, false otherwise.
*/ */
bool isEnable(void) { bool isEnable() {
return m_isEnable; return m_isEnable;
}; };
public: public:
/** /**
* @brief On plugin global enable. * @brief On plugin global enable.
*/ */
virtual void onPluginEnable(void) { virtual void onPluginEnable() {
// nothing to do here ... // nothing to do here ...
}; };
/** /**
* @brief On plugin global disable. * @brief On plugin global disable.
*/ */
virtual void onPluginDisable(void) { virtual void onPluginDisable() {
// nothing to do here ... // nothing to do here ...
}; };
/** /**
@@ -69,7 +69,7 @@ namespace appl {
* @brief Get the availlability of a callback * @brief Get the availlability of a callback
* @return true if availlable * @return true if availlable
*/ */
bool isAvaillableOnEventEntry(void) { bool isAvaillableOnEventEntry() {
return m_activateOnEventEntry; return m_activateOnEventEntry;
} }
/** /**
@@ -89,7 +89,7 @@ namespace appl {
* @brief Get the availlability of a callback * @brief Get the availlability of a callback
* @return true if availlable * @return true if availlable
*/ */
bool isAvaillableOnEventInput(void) { bool isAvaillableOnEventInput() {
return m_activateOnEventInput; return m_activateOnEventInput;
} }
/** /**
@@ -109,7 +109,7 @@ namespace appl {
* @brief Get the availlability of a callback * @brief Get the availlability of a callback
* @return true if availlable * @return true if availlable
*/ */
bool isAvaillableOnWrite(void) { bool isAvaillableOnWrite() {
return m_activateOnWrite; return m_activateOnWrite;
} }
/** /**
@@ -131,7 +131,7 @@ namespace appl {
* @brief Get the availlability of a callback * @brief Get the availlability of a callback
* @return true if availlable * @return true if availlable
*/ */
bool isAvaillableOnReplace(void) { bool isAvaillableOnReplace() {
return m_activateOnReplace; return m_activateOnReplace;
} }
/** /**
@@ -155,7 +155,7 @@ namespace appl {
* @brief Get the availlability of a callback * @brief Get the availlability of a callback
* @return true if availlable * @return true if availlable
*/ */
bool isAvaillableOnRemove(void) { bool isAvaillableOnRemove() {
return m_activateOnRemove; return m_activateOnRemove;
} }
/** /**
@@ -177,7 +177,7 @@ namespace appl {
* @brief Get the availlability of a callback * @brief Get the availlability of a callback
* @return true if availlable * @return true if availlable
*/ */
bool isAvaillableOnReceiveMessage(void) { bool isAvaillableOnReceiveMessage() {
return m_activateOnReceiveMessage; return m_activateOnReceiveMessage;
} }
/** /**
@@ -186,8 +186,8 @@ namespace appl {
* @param[in] _msg Generic message. * @param[in] _msg Generic message.
* @return true if the event might not propagate anymore * @return true if the event might not propagate anymore
*/ */
virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg) { const ewol::object::Message& _msg) {
return false; return false;
} }
protected: protected:
@@ -197,7 +197,7 @@ namespace appl {
* @brief Get the availlability of a callback * @brief Get the availlability of a callback
* @return true if availlable * @return true if availlable
*/ */
bool isAvaillableOnCursorMove(void) { bool isAvaillableOnCursorMove() {
return m_activateOnCursorMove; return m_activateOnCursorMove;
} }
/** /**

View File

@@ -15,8 +15,9 @@
#define __class__ "TextPluginAutoIndent" #define __class__ "TextPluginAutoIndent"
appl::TextPluginAutoIndent::TextPluginAutoIndent(void) { appl::TextPluginAutoIndent::TextPluginAutoIndent() {
m_activateOnEventEntry = true; m_activateOnEventEntry = true;
addObjectType("appl::TextPluginAutoIndent");
} }
bool appl::TextPluginAutoIndent::onEventEntry(appl::TextViewer& _textDrawer, bool appl::TextPluginAutoIndent::onEventEntry(appl::TextViewer& _textDrawer,

View File

@@ -18,8 +18,8 @@
namespace appl { namespace appl {
class TextPluginAutoIndent : public appl::TextViewerPlugin { class TextPluginAutoIndent : public appl::TextViewerPlugin {
public: public:
TextPluginAutoIndent(void); TextPluginAutoIndent();
~TextPluginAutoIndent(void) { virtual ~TextPluginAutoIndent() {
// nothing to do ... // nothing to do ...
}; };
public: public:

View File

@@ -15,8 +15,9 @@
#define __class__ "TextPluginCopy" #define __class__ "TextPluginCopy"
appl::TextPluginCopy::TextPluginCopy(void) { appl::TextPluginCopy::TextPluginCopy() {
m_activateOnReceiveMessage = true; m_activateOnReceiveMessage = true;
addObjectType("appl::TextPluginCopy");
} }
void appl::TextPluginCopy::onPluginEnable(appl::TextViewer& _textDrawer) { void appl::TextPluginCopy::onPluginEnable(appl::TextViewer& _textDrawer) {
@@ -33,8 +34,8 @@ void appl::TextPluginCopy::onPluginDisable(appl::TextViewer& _textDrawer) {
// TODO : unknow function ... // TODO : unknow function ...
} }
bool appl::TextPluginCopy::onReceiveMessage(appl::TextViewer& _textDrawer, bool appl::TextPluginCopy::onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg) { const ewol::object::Message& _msg) {
if (isEnable() == false) { if (isEnable() == false) {
return false; return false;
} }

View File

@@ -18,14 +18,14 @@
namespace appl { namespace appl {
class TextPluginCopy : public appl::TextViewerPlugin { class TextPluginCopy : public appl::TextViewerPlugin {
public: public:
TextPluginCopy(void); TextPluginCopy();
~TextPluginCopy(void) { virtual ~TextPluginCopy() {
// nothing to do ... // nothing to do ...
}; };
public: public:
virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginEnable(appl::TextViewer& _textDrawer);
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg); virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg);
}; };
}; };

View File

@@ -18,16 +18,17 @@
#define __class__ "TextPluginCtags" #define __class__ "TextPluginCtags"
appl::TextPluginCtags::TextPluginCtags(void) : appl::TextPluginCtags::TextPluginCtags() :
m_tagFilename(""),
m_tagFolderBase(""), m_tagFolderBase(""),
m_tagFilename(""),
m_ctagFile(NULL) { m_ctagFile(NULL) {
m_activateOnReceiveMessage = true; m_activateOnReceiveMessage = true;
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::keep();
addObjectType("appl::TextPluginCtags");
} }
appl::TextPluginCtags::~TextPluginCtags(void) { appl::TextPluginCtags::~TextPluginCtags() {
appl::BufferManager::release(m_bufferManager);
} }
const char* eventJumpDestination = "event-plugin-ctags-jump-destination"; const char* eventJumpDestination = "event-plugin-ctags-jump-destination";
@@ -78,17 +79,17 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) {
if (tagsFindNext (m_ctagFile, &entry) == TagSuccess) { if (tagsFindNext (m_ctagFile, &entry) == TagSuccess) {
APPL_INFO("Multiple file destination ..."); APPL_INFO("Multiple file destination ...");
appl::TagFileSelection* tmpWidget = new appl::TagFileSelection(); ewol::object::Shared<appl::TagFileSelection> tmpWidget = ewol::object::makeShared(new appl::TagFileSelection());
if (NULL == tmpWidget) { if (NULL == tmpWidget) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
tmpWidget->addCtagsNewItem(myfile.getName(), lineID); tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID);
do { do {
tmpFile = m_tagFolderBase + "/" + entry.file; tmpFile = m_tagFolderBase + "/" + entry.file;
myfile = tmpFile; myfile = tmpFile;
lineID = entry.address.lineNumber; lineID = entry.address.lineNumber;
printTag(&entry); printTag(&entry);
tmpWidget->addCtagsNewItem(myfile.getName(), lineID); tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID);
} while (tagsFindNext (m_ctagFile, &entry) == TagSuccess); } while (tagsFindNext (m_ctagFile, &entry) == TagSuccess);
ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget); ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget);
tmpWidget->registerOnEvent(this, applEventctagsSelection, eventOpenCtagsSelectReturn); tmpWidget->registerOnEvent(this, applEventctagsSelection, eventOpenCtagsSelectReturn);
@@ -108,7 +109,7 @@ void appl::TextPluginCtags::jumpFile(const std::string& _filename, int64_t _line
sendMultiCast(appl::MsgSelectGotoLineSelect, std::to_string(_lineId)); sendMultiCast(appl::MsgSelectGotoLineSelect, std::to_string(_lineId));
} }
void appl::TextPluginCtags::loadTagFile(void) { void appl::TextPluginCtags::loadTagFile() {
tagFileInfo info; tagFileInfo info;
// close previous tag file // close previous tag file
if (NULL != m_ctagFile) { if (NULL != m_ctagFile) {
@@ -156,7 +157,7 @@ void appl::TextPluginCtags::onReceiveMessage(const ewol::object::Message& _msg)
etk::FSNode tmpFilename = _msg.getData(); etk::FSNode tmpFilename = _msg.getData();
m_tagFilename = tmpFilename.getNameFile(); m_tagFilename = tmpFilename.getNameFile();
m_tagFolderBase = tmpFilename.getNameFolder(); m_tagFolderBase = tmpFilename.getNameFolder();
APPL_DEBUG("Receive load Ctags file : " << m_tagFolderBase << "/" << m_tagFilename << " "); APPL_INFO("Receive load Ctags file : " << m_tagFolderBase << "/" << m_tagFilename << " ");
loadTagFile(); loadTagFile();
} else if (_msg.getMessage() == eventOpenCtagsSelectReturn) { } else if (_msg.getMessage() == eventOpenCtagsSelectReturn) {
// parse the input data // parse the input data
@@ -167,22 +168,28 @@ void appl::TextPluginCtags::onReceiveMessage(const ewol::object::Message& _msg)
jumpFile(tmp, lineID - 1); jumpFile(tmp, lineID - 1);
} }
} }
bool appl::TextPluginCtags::onReceiveMessage(appl::TextViewer& _textDrawer, bool appl::TextPluginCtags::onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg) { const ewol::object::Message& _msg) {
if (isEnable() == false) { if (isEnable() == false) {
return false; return false;
} }
if (_msg.getMessage() == eventOpenCtagsFile) { if (_msg.getMessage() == eventOpenCtagsFile) {
APPL_INFO("Request opening ctag file"); APPL_INFO("Request opening ctag file");
ewol::widget::FileChooser* tmpWidget = new ewol::widget::FileChooser(); ewol::object::Shared<ewol::widget::FileChooser> tmpWidget = ewol::object::makeShared(new ewol::widget::FileChooser());
if (NULL == tmpWidget) { if (NULL == tmpWidget) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { return true;
tmpWidget->setTitle("Open Exuberant Ctags file");
tmpWidget->setValidateLabel("Open");
ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget);
tmpWidget->registerOnEvent(this, "validate", eventOpenCtagsOpenFileReturn);
} }
tmpWidget->setTitle("Open Exuberant Ctags file");
tmpWidget->setValidateLabel("Open");
// try to get the current folder :
std::string path = _textDrawer.getBufferPath();
APPL_ERROR("get path : '" << path << "'");
if (path != "") {
tmpWidget->setFolder(path);
}
ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget);
tmpWidget->registerOnEvent(this, "validate", eventOpenCtagsOpenFileReturn);
return true; return true;
} else if (_msg.getMessage() == eventJumpDestination) { } else if (_msg.getMessage() == eventJumpDestination) {
if (_textDrawer.hasBuffer() == false) { if (_textDrawer.hasBuffer() == false) {

View File

@@ -16,6 +16,9 @@
#include <appl/TextPlugin.h> #include <appl/TextPlugin.h>
#include <appl/ctags/readtags.h> #include <appl/ctags/readtags.h>
// create ctags file : "ctags-exuberant --fields=n -R"
// --fields=n add the line number needed for this software version ..
namespace appl { namespace appl {
class TextPluginCtags : public appl::TextViewerPlugin { class TextPluginCtags : public appl::TextViewerPlugin {
private: private:
@@ -26,19 +29,19 @@ namespace appl {
std::string m_tagFolderBase; std::string m_tagFolderBase;
std::string m_tagFilename; std::string m_tagFilename;
tagFile* m_ctagFile; tagFile* m_ctagFile;
void loadTagFile(void); void loadTagFile();
void printTag(const tagEntry *_entry); void printTag(const tagEntry *_entry);
void jumpTo(const std::string& _name); void jumpTo(const std::string& _name);
void jumpFile(const std::string& _filename, int64_t _lineId); void jumpFile(const std::string& _filename, int64_t _lineId);
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: public:
TextPluginCtags(void); TextPluginCtags();
~TextPluginCtags(void); virtual ~TextPluginCtags();
public: public:
virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginEnable(appl::TextViewer& _textDrawer);
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg); const ewol::object::Message& _msg);
// internal message : // internal message :
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
}; };

View File

@@ -18,10 +18,11 @@
namespace appl { namespace appl {
template <typename TYPE> class TextViewerPluginData : public appl::TextViewerPlugin { template <typename TYPE> class TextViewerPluginData : public appl::TextViewerPlugin {
public: public:
TextViewerPluginData(void) { TextViewerPluginData() {
// nothing to do ... // nothing to do ...
addObjectType("appl::TextViewerPluginData");
} }
virtual ~TextViewerPluginData(void) { virtual ~TextViewerPluginData() {
for (size_t iii = 0; iii < m_specificData.size() ; ++iii) { for (size_t iii = 0; iii < m_specificData.size() ; ++iii) {
if (m_specificData[iii].second != NULL) { if (m_specificData[iii].second != NULL) {
remove(*m_specificData[iii].second); remove(*m_specificData[iii].second);
@@ -32,7 +33,7 @@ namespace appl {
m_specificData.clear(); m_specificData.clear();
} }
private: private:
std::vector<std::pair<appl::Buffer* ,TYPE* >> m_specificData; std::vector<std::pair<ewol::object::Shared<appl::Buffer> ,TYPE* >> m_specificData;
protected: protected:
TYPE* getDataRef(appl::TextViewer& _textDrawer) { TYPE* getDataRef(appl::TextViewer& _textDrawer) {
for (size_t iii = 0; iii < m_specificData.size() ; ++iii) { for (size_t iii = 0; iii < m_specificData.size() ; ++iii) {
@@ -49,13 +50,13 @@ namespace appl {
return data; return data;
} }
protected: // Wrap all element with their internal data: (do not use theses function) protected: // Wrap all element with their internal data: (do not use theses function)
bool onReceiveMessage(appl::TextViewer& _textDrawer, bool onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg) { const ewol::object::Message& _msg) {
TYPE* data = getDataRef(_textDrawer); TYPE* data = getDataRef(_textDrawer);
if (data == NULL) { if (data == NULL) {
return false; return false;
} }
return onReceiveMessage(_textDrawer, _msg, *data); return onReceiveMessageViewer(_textDrawer, _msg, *data);
} }
bool onWrite(appl::TextViewer& _textDrawer, bool onWrite(appl::TextViewer& _textDrawer,
const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _pos,
@@ -87,9 +88,9 @@ namespace appl {
} }
public: public:
virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg, const ewol::object::Message& _msg,
TYPE& _data) { TYPE& _data) {
return false; return false;
} }
virtual bool onWrite(appl::TextViewer& _textDrawer, virtual bool onWrite(appl::TextViewer& _textDrawer,
@@ -115,8 +116,14 @@ namespace appl {
return; return;
}; };
public: public:
virtual void onObjectRemove(ewol::Object* _removeObject) { virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
// TODO : plop 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();
}
}
}; };
}; };
}; };

View File

@@ -15,11 +15,12 @@
#undef __class__ #undef __class__
#define __class__ "TextPluginHistory" #define __class__ "TextPluginHistory"
appl::TextPluginHistory::TextPluginHistory(void) { appl::TextPluginHistory::TextPluginHistory() {
m_activateOnReceiveMessage = true; m_activateOnReceiveMessage = true;
m_activateOnWrite = true; m_activateOnWrite = true;
m_activateOnReplace = true; m_activateOnReplace = true;
m_activateOnRemove = true; m_activateOnRemove = true;
addObjectType("appl::TextPluginHistory");
} }
void appl::TextPluginHistory::onPluginEnable(appl::TextViewer& _textDrawer) { void appl::TextPluginHistory::onPluginEnable(appl::TextViewer& _textDrawer) {
@@ -34,9 +35,9 @@ void appl::TextPluginHistory::onPluginDisable(appl::TextViewer& _textDrawer) {
// TODO : unknow function ... // TODO : unknow function ...
} }
bool appl::TextPluginHistory::onReceiveMessage(appl::TextViewer& _textDrawer, bool appl::TextPluginHistory::onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg, const ewol::object::Message& _msg,
appl::PluginHistoryData& _data) { appl::PluginHistoryData& _data) {
if (isEnable() == false) { if (isEnable() == false) {
return false; return false;
} }
@@ -176,7 +177,8 @@ bool appl::TextPluginHistory::onRemove(appl::TextViewer& _textDrawer,
} }
void appl::TextPluginHistory::onObjectRemove(ewol::Object* _removeObject) { void appl::TextPluginHistory::onObjectRemove(const ewol::object::Shared<ewol::Object>& _object) {
appl::TextViewerPluginData<appl::PluginHistoryData>::onObjectRemove(_object);
// TODO : Dependence with buffer removing ... // TODO : Dependence with buffer removing ...
} }

View File

@@ -18,7 +18,7 @@
namespace appl { namespace appl {
class History { class History {
public: public:
History(void) : History() :
m_posAdded(0), m_posAdded(0),
m_endPosAdded(0), m_endPosAdded(0),
m_endPosRemoved(0) { m_endPosRemoved(0) {
@@ -37,15 +37,15 @@ namespace appl {
}; };
class TextPluginHistory : public appl::TextViewerPluginData<appl::PluginHistoryData> { class TextPluginHistory : public appl::TextViewerPluginData<appl::PluginHistoryData> {
public: public:
TextPluginHistory(void); TextPluginHistory();
virtual ~TextPluginHistory(void) { }; virtual ~TextPluginHistory() { };
private: private:
public: public:
virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginEnable(appl::TextViewer& _textDrawer);
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg, const ewol::object::Message& _msg,
appl::PluginHistoryData& _data); appl::PluginHistoryData& _data);
virtual bool onWrite(appl::TextViewer& _textDrawer, virtual bool onWrite(appl::TextViewer& _textDrawer,
const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _pos,
const std::string& _strData, const std::string& _strData,
@@ -67,7 +67,7 @@ namespace appl {
void clearRedo(appl::PluginHistoryData& _data); void clearRedo(appl::PluginHistoryData& _data);
void clearUndo(appl::PluginHistoryData& _data); void clearUndo(appl::PluginHistoryData& _data);
public: public:
virtual void onObjectRemove(ewol::Object* _removeObject); virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _object);
}; };
}; };

View File

@@ -19,74 +19,66 @@
#undef __class__ #undef __class__
#define __class__ "textPluginManager" #define __class__ "textPluginManager"
static std::vector<appl::TextViewerPlugin *>& getList(void) { static std::list<ewol::object::Owner<appl::TextViewerPlugin>>& getList() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::list<ewol::object::Owner<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
static std::vector<appl::TextViewerPlugin *>& getListOnEventEntry(void) { static std::vector<ewol::object::Shared<appl::TextViewerPlugin>>& getListOnEventEntry() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::vector<ewol::object::Shared<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
static std::vector<appl::TextViewerPlugin *>& getListOnEventInput(void) { static std::vector<ewol::object::Shared<appl::TextViewerPlugin>>& getListOnEventInput() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::vector<ewol::object::Shared<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
static std::vector<appl::TextViewerPlugin *>& getListOnWrite(void) { static std::vector<ewol::object::Shared<appl::TextViewerPlugin>>& getListOnWrite() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::vector<ewol::object::Shared<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
static std::vector<appl::TextViewerPlugin *>& getListOnReplace(void) { static std::vector<ewol::object::Shared<appl::TextViewerPlugin>>& getListOnReplace() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::vector<ewol::object::Shared<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
static std::vector<appl::TextViewerPlugin *>& getListOnRemove(void) { static std::vector<ewol::object::Shared<appl::TextViewerPlugin>>& getListOnRemove() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::vector<ewol::object::Shared<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
static std::vector<appl::TextViewerPlugin *>& getListOnReceiveMessage(void) { static std::vector<ewol::object::Shared<appl::TextViewerPlugin>>& getListonReceiveMessageViewer() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::vector<ewol::object::Shared<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
static std::vector<appl::TextViewerPlugin *>& getListOnCursorMove(void) { static std::vector<ewol::object::Shared<appl::TextViewerPlugin>>& getListOnCursorMove() {
static std::vector<appl::TextViewerPlugin *> s_list; static std::vector<ewol::object::Shared<appl::TextViewerPlugin>> s_list;
return s_list; return s_list;
} }
void appl::textPluginManager::init(void) { void appl::textPluginManager::init() {
} }
void appl::textPluginManager::unInit(void) { void appl::textPluginManager::unInit() {
// remove all sub plugin class: // remove all sub plugin class:
getListOnEventEntry().clear(); getListOnEventEntry().clear();
getListOnEventInput().clear(); getListOnEventInput().clear();
getListOnWrite().clear(); getListOnWrite().clear();
getListOnReplace().clear(); getListOnReplace().clear();
getListOnRemove().clear(); getListOnRemove().clear();
getListOnReceiveMessage().clear(); getListonReceiveMessageViewer().clear();
getListOnCursorMove().clear(); getListOnCursorMove().clear();
// remove all plugin:
for (int32_t iii=0; iii<getList().size(); ++iii) {
if (getList()[iii] == NULL) {
continue;
}
delete(getList()[iii]);
getList()[iii] = NULL;
}
getList().clear(); getList().clear();
} }
void appl::textPluginManager::addDefaultPlugin(void) { void appl::textPluginManager::addDefaultPlugin() {
appl::textPluginManager::addPlugin(new appl::TextPluginCopy()); appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginCopy()));
appl::textPluginManager::addPlugin(new appl::TextPluginMultiLineTab()); appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginMultiLineTab()));
appl::textPluginManager::addPlugin(new appl::TextPluginAutoIndent()); appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginAutoIndent()));
appl::textPluginManager::addPlugin(new appl::TextPluginHistory()); appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginHistory()));
appl::textPluginManager::addPlugin(new appl::TextPluginRmLine()); appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginRmLine()));
appl::textPluginManager::addPlugin(new appl::TextPluginSelectAll()); appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginSelectAll()));
appl::textPluginManager::addPlugin(new appl::TextPluginCtags()); appl::textPluginManager::addPlugin(ewol::object::makeShared(new appl::TextPluginCtags()));
} }
void appl::textPluginManager::addPlugin(appl::TextViewerPlugin* _plugin) { void appl::textPluginManager::addPlugin(const ewol::object::Shared<appl::TextViewerPlugin>& _plugin) {
if (_plugin == NULL) { if (_plugin == NULL) {
return; return;
} }
@@ -107,7 +99,7 @@ void appl::textPluginManager::addPlugin(appl::TextViewerPlugin* _plugin) {
getListOnRemove().push_back(_plugin); getListOnRemove().push_back(_plugin);
} }
if (_plugin->isAvaillableOnReceiveMessage() == true) { if (_plugin->isAvaillableOnReceiveMessage() == true) {
getListOnReceiveMessage().push_back(_plugin); getListonReceiveMessageViewer().push_back(_plugin);
} }
if (_plugin->isAvaillableOnCursorMove() == true) { if (_plugin->isAvaillableOnCursorMove() == true) {
getListOnCursorMove().push_back(_plugin); getListOnCursorMove().push_back(_plugin);
@@ -115,31 +107,30 @@ void appl::textPluginManager::addPlugin(appl::TextViewerPlugin* _plugin) {
} }
void appl::textPluginManager::connect(appl::TextViewer& _widget) { void appl::textPluginManager::connect(appl::TextViewer& _widget) {
for (int32_t iii=0; iii<getList().size(); ++iii) { for (auto &it : getList()) {
if (getList()[iii] == NULL) { if (it == NULL) {
continue; continue;
} }
getList()[iii]->onPluginEnable(_widget); it->onPluginEnable(_widget);
} }
} }
void appl::textPluginManager::disconnect(appl::TextViewer& _widget) { void appl::textPluginManager::disconnect(appl::TextViewer& _widget) {
for (int32_t iii=0; iii<getList().size(); ++iii) { for (auto &it : getList()) {
if (getList()[iii] == NULL) { if (it == NULL) {
continue; continue;
} }
getList()[iii]->onPluginDisable(_widget); it->onPluginDisable(_widget);
} }
} }
bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer,
const ewol::event::Entry& _event) { const ewol::event::Entry& _event) {
std::vector<appl::TextViewerPlugin *>& list = getListOnEventEntry(); for (auto &it : getListOnEventEntry()) {
for (int32_t iii=0; iii<list.size(); ++iii) { if (it == NULL) {
if (list[iii] == NULL) {
continue; continue;
} }
if (list[iii]->onEventEntry(_textDrawer, _event) == true ) { if (it->onEventEntry(_textDrawer, _event) == true ) {
return true; return true;
} }
} }
@@ -148,12 +139,11 @@ bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer,
bool appl::textPluginManager::onEventInput(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onEventInput(appl::TextViewer& _textDrawer,
const ewol::event::Input& _event) { const ewol::event::Input& _event) {
std::vector<appl::TextViewerPlugin *>& list = getListOnEventInput(); for (auto &it : getListOnEventInput()) {
for (int32_t iii=0; iii<list.size(); ++iii) { if (it == NULL) {
if (list[iii] == NULL) {
continue; continue;
} }
if (list[iii]->onEventInput(_textDrawer, _event) == true ) { if (it->onEventInput(_textDrawer, _event) == true ) {
return true; return true;
} }
} }
@@ -163,12 +153,11 @@ bool appl::textPluginManager::onEventInput(appl::TextViewer& _textDrawer,
bool appl::textPluginManager::onWrite(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onWrite(appl::TextViewer& _textDrawer,
const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _pos,
const std::string& _data) { const std::string& _data) {
std::vector<appl::TextViewerPlugin *>& list = getListOnWrite(); for (auto &it : getListOnWrite()) {
for (int32_t iii=0; iii<list.size(); ++iii) { if (it == NULL) {
if (list[iii] == NULL) {
continue; continue;
} }
if (list[iii]->onWrite(_textDrawer, _pos, _data) == true ) { if (it->onWrite(_textDrawer, _pos, _data) == true ) {
return true; return true;
} }
} }
@@ -179,12 +168,11 @@ bool appl::textPluginManager::onReplace(appl::TextViewer& _textDrawer,
const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _pos,
const std::string& _data, const std::string& _data,
const appl::Buffer::Iterator& _posEnd) { const appl::Buffer::Iterator& _posEnd) {
std::vector<appl::TextViewerPlugin *>& list = getListOnReplace(); for (auto &it : getListOnReplace()) {
for (int32_t iii=0; iii<list.size(); ++iii) { if (it == NULL) {
if (list[iii] == NULL) {
continue; continue;
} }
if (list[iii]->onReplace(_textDrawer, _pos, _data, _posEnd) == true ) { if (it->onReplace(_textDrawer, _pos, _data, _posEnd) == true ) {
return true; return true;
} }
} }
@@ -194,26 +182,24 @@ bool appl::textPluginManager::onReplace(appl::TextViewer& _textDrawer,
bool appl::textPluginManager::onRemove(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onRemove(appl::TextViewer& _textDrawer,
const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _pos,
const appl::Buffer::Iterator& _posEnd) { const appl::Buffer::Iterator& _posEnd) {
std::vector<appl::TextViewerPlugin *>& list = getListOnRemove(); for (auto &it : getListOnRemove()) {
for (int32_t iii=0; iii<list.size(); ++iii) { if (it == NULL) {
if (list[iii] == NULL) {
continue; continue;
} }
if (list[iii]->onRemove(_textDrawer, _pos, _posEnd) == true ) { if (it->onRemove(_textDrawer, _pos, _posEnd) == true ) {
return true; return true;
} }
} }
return false; return false;
} }
bool appl::textPluginManager::onReceiveMessage(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg) { const ewol::object::Message& _msg) {
std::vector<appl::TextViewerPlugin *>& list = getListOnReceiveMessage(); for (auto &it : getListonReceiveMessageViewer()) {
for (int32_t iii=0; iii<list.size(); ++iii) { if (it == NULL) {
if (list[iii] == NULL) {
continue; continue;
} }
if (list[iii]->onReceiveMessage(_textDrawer, _msg) == true ) { if (it->onReceiveMessageViewer(_textDrawer, _msg) == true ) {
return true; return true;
} }
} }
@@ -222,12 +208,11 @@ bool appl::textPluginManager::onReceiveMessage(appl::TextViewer& _textDrawer,
bool appl::textPluginManager::onCursorMove(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onCursorMove(appl::TextViewer& _textDrawer,
const appl::Buffer::Iterator& _pos) { const appl::Buffer::Iterator& _pos) {
std::vector<appl::TextViewerPlugin *>& list = getListOnCursorMove(); for (auto &it : getListOnCursorMove()) {
for (int32_t iii=0; iii<list.size(); ++iii) { if (it == NULL) {
if (list[iii] == NULL) {
continue; continue;
} }
if (list[iii]->onCursorMove(_textDrawer, _pos) == true ) { if (it->onCursorMove(_textDrawer, _pos) == true ) {
return true; return true;
} }
} }

View File

@@ -20,20 +20,20 @@ namespace appl {
/** /**
* @brief Init the plugin manager for writer. * @brief Init the plugin manager for writer.
*/ */
void init(void); void init();
/** /**
* @brief UnInit the plugin manager for writer. * @brief UnInit the plugin manager for writer.
*/ */
void unInit(void); void unInit();
/** /**
* @brief Add default plugin list * @brief Add default plugin list
*/ */
void addDefaultPlugin(void); void addDefaultPlugin();
/** /**
* @brief Add a plugin. * @brief Add a plugin.
* @param[in] _plugin Plugin pointer to add. * @param[in] _plugin Plugin pointer to add.
*/ */
void addPlugin(appl::TextViewerPlugin* _plugin); void addPlugin(const ewol::object::Shared<appl::TextViewerPlugin>& _plugin);
/** /**
* @brief connect a new widget to the plugin. * @brief connect a new widget to the plugin.
* @param[in] _widget Reference on the widget caller. * @param[in] _widget Reference on the widget caller.
@@ -98,8 +98,8 @@ namespace appl {
* @param[in] _msg Generic message. * @param[in] _msg Generic message.
* @return true if the event might not propagate anymore * @return true if the event might not propagate anymore
*/ */
bool onReceiveMessage(appl::TextViewer& _textDrawer, bool onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg); const ewol::object::Message& _msg);
/** /**
* @brief Called when Cursor move of position. * @brief Called when Cursor move of position.
* @param[in] _widget Reference on the widget caller. * @param[in] _widget Reference on the widget caller.

View File

@@ -14,8 +14,9 @@
#undef __class__ #undef __class__
#define __class__ "TextPluginMultiLineTab" #define __class__ "TextPluginMultiLineTab"
appl::TextPluginMultiLineTab::TextPluginMultiLineTab(void) { appl::TextPluginMultiLineTab::TextPluginMultiLineTab() {
m_activateOnEventEntry = true; m_activateOnEventEntry = true;
addObjectType("appl::TextPluginMultiLineTab");
} }
bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer, bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer,
@@ -47,22 +48,22 @@ bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer,
_textDrawer.copy(data, itStart, itStop); _textDrawer.copy(data, itStart, itStop);
// TODO : Change this ... // TODO : Change this ...
bool m_useTabs = true; bool m_useTabs = true;
int32_t m_tabDist = 4; size_t m_tabDist = 4;
if (true == _event.getSpecialKey().getShift() ) { if (true == _event.getSpecialKey().getShift() ) {
// un-indent // un-indent
data.insert(0, 1, u32char::Return); data.insert(0, 1, u32char::Return);
for (int32_t iii=1; iii<data.size(); ++iii) { for (size_t iii=1; iii<data.size(); ++iii) {
if (data[iii-1] != u32char::Return) { if ((char32_t)data[iii-1] != u32char::Return) {
continue; continue;
} }
if(data[iii] == u32char::Tabulation) { if((char32_t)data[iii] == u32char::Tabulation) {
data.erase(iii, 1); data.erase(iii, 1);
} else if(data[iii] == u32char::Space) { } else if((char32_t)data[iii] == u32char::Space) {
for (int32_t jjj=0; jjj<m_tabDist && jjj+iii<data.size() ; jjj++) { for (size_t jjj=0; jjj<m_tabDist && jjj+iii<data.size() ; jjj++) {
if(data[iii] == u32char::Space) { if((char32_t)data[iii] == u32char::Space) {
data.erase(iii, 1); data.erase(iii, 1);
} else if(data[iii] == u32char::Tabulation) { } else if((char32_t)data[iii] == u32char::Tabulation) {
data.erase(iii, 1); data.erase(iii, 1);
break; break;
} else { } else {
@@ -75,8 +76,8 @@ bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer,
} else { } else {
// indent // indent
data.insert(0, 1, u32char::Return); data.insert(0, 1, u32char::Return);
for (int32_t iii=1; iii<data.size(); iii++) { for (size_t iii=1; iii<data.size(); iii++) {
if (data[iii-1] != u32char::Return) { if ((char32_t)data[iii-1] != u32char::Return) {
continue; continue;
} }
if (true == _event.getSpecialKey().getCtrl() ) { if (true == _event.getSpecialKey().getCtrl() ) {

View File

@@ -18,8 +18,8 @@
namespace appl { namespace appl {
class TextPluginMultiLineTab : public appl::TextViewerPlugin { class TextPluginMultiLineTab : public appl::TextViewerPlugin {
public: public:
TextPluginMultiLineTab(void); TextPluginMultiLineTab();
~TextPluginMultiLineTab(void) { virtual ~TextPluginMultiLineTab() {
// nothing to do ... // nothing to do ...
}; };
public: public:

View File

@@ -15,8 +15,9 @@
#define __class__ "TextPluginRmLine" #define __class__ "TextPluginRmLine"
appl::TextPluginRmLine::TextPluginRmLine(void) { appl::TextPluginRmLine::TextPluginRmLine() {
m_activateOnReceiveMessage = true; m_activateOnReceiveMessage = true;
addObjectType("appl::TextPluginRmLine");
} }
void appl::TextPluginRmLine::onPluginEnable(appl::TextViewer& _textDrawer) { void appl::TextPluginRmLine::onPluginEnable(appl::TextViewer& _textDrawer) {
@@ -29,8 +30,8 @@ void appl::TextPluginRmLine::onPluginDisable(appl::TextViewer& _textDrawer) {
// TODO : unknow function ... // TODO : unknow function ...
} }
bool appl::TextPluginRmLine::onReceiveMessage(appl::TextViewer& _textDrawer, bool appl::TextPluginRmLine::onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg) { const ewol::object::Message& _msg) {
if (isEnable() == false) { if (isEnable() == false) {
return false; return false;
} }

View File

@@ -18,14 +18,14 @@
namespace appl { namespace appl {
class TextPluginRmLine : public appl::TextViewerPlugin { class TextPluginRmLine : public appl::TextViewerPlugin {
public: public:
TextPluginRmLine(void); TextPluginRmLine();
~TextPluginRmLine(void) { virtual ~TextPluginRmLine() {
// nothing to do ... // nothing to do ...
}; };
public: public:
virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginEnable(appl::TextViewer& _textDrawer);
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg); virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg);
}; };
}; };

View File

@@ -15,8 +15,9 @@
#define __class__ "TextPluginSelectAll" #define __class__ "TextPluginSelectAll"
appl::TextPluginSelectAll::TextPluginSelectAll(void) { appl::TextPluginSelectAll::TextPluginSelectAll() {
m_activateOnReceiveMessage = true; m_activateOnReceiveMessage = true;
addObjectType("appl::TextPluginSelectAll");
} }
static const char* eventSelectAll = "plugin-select-all"; static const char* eventSelectAll = "plugin-select-all";
@@ -31,8 +32,8 @@ void appl::TextPluginSelectAll::onPluginDisable(appl::TextViewer& _textDrawer) {
// TODO : unknow function ... // TODO : unknow function ...
} }
bool appl::TextPluginSelectAll::onReceiveMessage(appl::TextViewer& _textDrawer, bool appl::TextPluginSelectAll::onReceiveMessageViewer(appl::TextViewer& _textDrawer,
const ewol::object::Message& _msg) { const ewol::object::Message& _msg) {
if (isEnable() == false) { if (isEnable() == false) {
return false; return false;
} }

View File

@@ -18,14 +18,14 @@
namespace appl { namespace appl {
class TextPluginSelectAll : public appl::TextViewerPlugin { class TextPluginSelectAll : public appl::TextViewerPlugin {
public: public:
TextPluginSelectAll(void); TextPluginSelectAll();
~TextPluginSelectAll(void) { virtual ~TextPluginSelectAll() {
// nothing to do ... // nothing to do ...
}; };
public: public:
virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginEnable(appl::TextViewer& _textDrawer);
virtual void onPluginDisable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer);
virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg); virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg);
}; };
}; };

View File

@@ -846,7 +846,7 @@ static void findTag (const char *const name, const int options)
} }
} }
static void listTags (void) static void listTags ()
{ {
tagFileInfo info; tagFileInfo info;
tagEntry entry; tagEntry entry;

View File

@@ -8,4 +8,8 @@
#include <appl/debug.h> #include <appl/debug.h>
const char * applLog = "edn "; int32_t appl::getLogId() {
static int32_t g_val = etk::log::registerInstance("edn");
return g_val;
}

View File

@@ -9,19 +9,43 @@
#ifndef __APPL_DEBUG_H__ #ifndef __APPL_DEBUG_H__
#define __APPL_DEBUG_H__ #define __APPL_DEBUG_H__
#include <etk/types.h> #include <etk/log.h>
#include <etk/debugGeneric.h>
extern const char * applLog; namespace appl {
int32_t getLogId();
};
// TODO : Review this problem of multiple intanciation of "std::stringbuf sb"
#define APPL_BASE(info,data) \
do { \
if (info <= etk::log::getLevel(appl::getLogId())) { \
std::stringbuf sb; \
std::ostream tmpStream(&sb); \
tmpStream << data; \
etk::log::logStream(appl::getLogId(), info, __LINE__, __class__, __func__, tmpStream); \
} \
} while(0)
#define APPL_CRITICAL(data) ETK_CRITICAL(applLog, data) #define APPL_CRITICAL(data) APPL_BASE(1, data)
#define APPL_WARNING(data) ETK_WARNING(applLog, data) #define APPL_ERROR(data) APPL_BASE(2, data)
#define APPL_ERROR(data) ETK_ERROR(applLog, data) #define APPL_WARNING(data) APPL_BASE(3, data)
#define APPL_INFO(data) ETK_INFO(applLog, data) #ifdef DEBUG
#define APPL_DEBUG(data) ETK_DEBUG(applLog, data) #define APPL_INFO(data) APPL_BASE(4, data)
#define APPL_VERBOSE(data) ETK_VERBOSE(applLog, data) #define APPL_DEBUG(data) APPL_BASE(5, data)
#define APPL_ASSERT(cond, data) ETK_ASSERT(applLog, cond, data) #define APPL_VERBOSE(data) APPL_BASE(6, data)
#define APPL_CHECK_INOUT(cond) ETK_CHECK_INOUT(applLog, cond) #define APPL_TODO(data) APPL_BASE(4, "TODO : " << data)
#define APPL_TODO(cond) ETK_TODO(applLog, cond) #else
#define APPL_INFO(data) do { } while(false)
#define APPL_DEBUG(data) do { } while(false)
#define APPL_VERBOSE(data) do { } while(false)
#define APPL_TODO(data) do { } while(false)
#endif
#define APPL_ASSERT(cond,data) \
do { \
if (!(cond)) { \
APPL_CRITICAL(data); \
assert(!#cond); \
} \
} while (0)
#endif #endif

View File

@@ -28,7 +28,7 @@ class myParamGlobal : public ewol::Object {
bool m_displayTabChar; bool m_displayTabChar;
bool m_displaySpaceChar; bool m_displaySpaceChar;
public : public :
myParamGlobal(void) { myParamGlobal() {
m_static = true; // Note : set the object static notification( Must be set or assert at the end of process) m_static = true; // Note : set the object static notification( Must be set or assert at the end of process)
setName("edn_global_param"); setName("edn_global_param");
m_displayEOL=false; m_displayEOL=false;
@@ -104,22 +104,22 @@ const char * const myParamGlobal::configAutoIndent = "auto-indent";
const char * const myParamGlobal::configShowTabChar = "display-tab"; const char * const myParamGlobal::configShowTabChar = "display-tab";
const char * const myParamGlobal::configShowSpaceChar = "display-space"; const char * const myParamGlobal::configShowSpaceChar = "display-space";
static myParamGlobal& l_obj(void) { static myParamGlobal& l_obj() {
static myParamGlobal s_obj; static myParamGlobal s_obj;
return s_obj; return s_obj;
} }
void globals::init(void) { void globals::init() {
//ewol::userConfig::addUserConfig(&l_obj()); //ewol::userConfig::addUserConfig(&l_obj());
} }
void globals::UnInit(void) { void globals::UnInit() {
// nothing to do ... // nothing to do ...
//ewol::userConfig::RmUserConfig(&l_obj()); //ewol::userConfig::RmUserConfig(&l_obj());
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
bool globals::isSetDisplayEndOfLine(void) { bool globals::isSetDisplayEndOfLine() {
return l_obj().m_displayEOL; return l_obj().m_displayEOL;
} }
@@ -129,7 +129,7 @@ void globals::setDisplayEndOfLine(bool newVal) {
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
bool globals::isSetDisplaySpaceChar(void) { bool globals::isSetDisplaySpaceChar() {
return l_obj().m_displaySpaceChar; return l_obj().m_displaySpaceChar;
} }
@@ -138,7 +138,7 @@ void globals::setDisplaySpaceChar(bool _newVal) {
//ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange); //ewol::widgetMessageMultiCast::Send(-1, ednMsgUserDisplayChange);
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
bool globals::isSetDisplayTabChar(void) { bool globals::isSetDisplayTabChar() {
return l_obj().m_displayTabChar; return l_obj().m_displayTabChar;
} }
@@ -148,7 +148,7 @@ void globals::setDisplayTabChar(bool _newVal) {
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
bool globals::isSetAutoIndent(void) { bool globals::isSetAutoIndent() {
return l_obj().m_AutoIndent; return l_obj().m_AutoIndent;
} }
@@ -157,16 +157,16 @@ void globals::setAutoIndent(bool _newVal) {
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
bool globals::OrderTheBufferList(void) { bool globals::OrderTheBufferList() {
return true; return true;
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
int32_t globals::getNbColoneBorder(void) { int32_t globals::getNbColoneBorder() {
return 6; return 6;
} }
int32_t globals::getNbLineBorder(void) { int32_t globals::getNbLineBorder() {
return 3; return 3;
} }
@@ -179,7 +179,7 @@ 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_changeEndOfLine = "edn-event-change-endOfLine";
static const char * const l_changeRounded = "edn-event-change-rounded"; static const char * const l_changeRounded = "edn-event-change-rounded";
globals::ParameterGlobalsGui::ParameterGlobalsGui(void) : globals::ParameterGlobalsGui::ParameterGlobalsGui() :
ewol::widget::Sizer(ewol::widget::Sizer::modeVert) { ewol::widget::Sizer(ewol::widget::Sizer::modeVert) {
ewol::widget::CheckBox* myCheckbox = NULL; ewol::widget::CheckBox* myCheckbox = NULL;
ewol::widget::Spacer* mySpacer = NULL; ewol::widget::Spacer* mySpacer = NULL;
@@ -238,7 +238,7 @@ globals::ParameterGlobalsGui::ParameterGlobalsGui(void) :
} }
} }
globals::ParameterGlobalsGui::~ParameterGlobalsGui(void) { globals::ParameterGlobalsGui::~ParameterGlobalsGui() {
} }

View File

@@ -15,31 +15,31 @@
namespace globals namespace globals
{ {
void init(void); void init();
void UnInit(void); void UnInit();
int32_t getNbColoneBorder(void); int32_t getNbColoneBorder();
int32_t getNbLineBorder(void); int32_t getNbLineBorder();
bool isSetDisplayEndOfLine(void); bool isSetDisplayEndOfLine();
void setDisplayEndOfLine(bool _newVal); void setDisplayEndOfLine(bool _newVal);
bool isSetDisplaySpaceChar(void); bool isSetDisplaySpaceChar();
void setDisplaySpaceChar(bool _newVal); void setDisplaySpaceChar(bool _newVal);
bool isSetDisplayTabChar(void); bool isSetDisplayTabChar();
void setDisplayTabChar(bool _newVal); void setDisplayTabChar(bool _newVal);
bool isSetAutoIndent(void); bool isSetAutoIndent();
void setAutoIndent(bool _newVal); void setAutoIndent(bool _newVal);
void init2(void); void init2();
bool OrderTheBufferList(void); bool OrderTheBufferList();
class ParameterGlobalsGui : public ewol::widget::Sizer { class ParameterGlobalsGui : public ewol::widget::Sizer {
public : public :
ParameterGlobalsGui(void); ParameterGlobalsGui();
~ParameterGlobalsGui(void); virtual ~ParameterGlobalsGui();
// herited function // herited function
virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onReceiveMessage(const ewol::object::Message& _msg);
}; };

View File

@@ -37,12 +37,13 @@ int main(int _argc, const char *_argv[]) {
// only one things to do: // only one things to do:
return ewol::run(_argc, _argv); return ewol::run(_argc, _argv);
} }
appl::BufferManager* bufferManager = NULL; ewol::object::Shared<appl::BufferManager> bufferManager = NULL;
/** /**
* @brief main application function initialisation * @brief main application function initialisation
*/ */
bool APP_Init(ewol::Context& _context) { 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() << ")"); APPL_INFO(" == > init APPL v" << APPL_VERSION << " (START) [" << ewol::getBoardType() << "] (" << ewol::getCompilationMode() << ")");
etk::theme::setName("COLOR", "color/black/"); etk::theme::setName("COLOR", "color/black/");
@@ -65,7 +66,7 @@ bool APP_Init(ewol::Context& _context) {
globals::init(); globals::init();
// init ALL Singleton : // init ALL Singleton :
//(void)CTagsManager::getInstance(); //()CTagsManager::getInstance();
bufferManager = appl::BufferManager::keep(); bufferManager = appl::BufferManager::keep();
appl::highlightManager::init(); appl::highlightManager::init();
@@ -83,9 +84,9 @@ bool APP_Init(ewol::Context& _context) {
cCurrentPath[FILENAME_MAX - 1] = '\0'; cCurrentPath[FILENAME_MAX - 1] = '\0';
//APPL_INFO("The current working directory is " << cCurrentPath); //APPL_INFO("The current working directory is " << cCurrentPath);
MainWindows* basicWindows = new MainWindows(); ewol::object::Shared<MainWindows> basicWindows = ewol::object::makeShared(new MainWindows());
if (NULL == basicWindows) { if (basicWindows == nullptr) {
APPL_ERROR("Can not allocate the basic windows"); APPL_ERROR("Can not allocate the basic windows");
_context.stop(); _context.stop();
return false; return false;
@@ -102,12 +103,16 @@ bool APP_Init(ewol::Context& _context) {
if (tmpppp == "-t") { if (tmpppp == "-t") {
ctagDetected = true; ctagDetected = true;
} else if (true == ctagDetected) { } else if (true == ctagDetected) {
APPL_INFO("Load ctag file : \"" << tmpppp << "\"" ); etk::FSNode file(tmpppp);
std::string name = file.getName();
APPL_INFO("Load ctag file : \"" << name << "\"" );
ctagDetected = false; ctagDetected = false;
_context.getEObjectManager().multiCast().anonymousSend(ednMsgCtagsLoadFile, tmpppp); _context.getEObjectManager().multiCast().anonymousSend(ednMsgCtagsLoadFile, name);
} else { } else {
APPL_INFO("need load file : \"" << tmpppp << "\"" ); etk::FSNode file(tmpppp);
bufferManager->open(tmpppp); std::string name = file.getName();
APPL_INFO("need load file : \"" << name << "\"" );
bufferManager->open(name);
} }
} }
@@ -121,24 +126,11 @@ bool APP_Init(ewol::Context& _context) {
*/ */
void APP_UnInit(ewol::Context& _context) { void APP_UnInit(ewol::Context& _context) {
APPL_INFO(" == > Un-Init " PROJECT_NAME " (START)"); APPL_INFO(" == > Un-Init " PROJECT_NAME " (START)");
ewol::widget::Windows* tmpWindows = _context.getWindows();
_context.setWindows(NULL);
if (NULL != tmpWindows) {
delete(tmpWindows);
tmpWindows = NULL;
}
appl::textPluginManager::unInit(); appl::textPluginManager::unInit();
APPL_INFO("Stop Hightlight"); APPL_INFO("Stop Hightlight");
appl::highlightManager::unInit(); appl::highlightManager::unInit();
//Kill all singleton //Kill all singleton
if (bufferManager != NULL) { bufferManager.reset();
APPL_INFO("Stop BufferManager");
appl::BufferManager::release(bufferManager);
bufferManager = NULL;
}
APPL_INFO(" == > Un-Init " PROJECT_NAME " (END)"); APPL_INFO(" == > Un-Init " PROJECT_NAME " (END)");
} }

View File

@@ -12,6 +12,7 @@ def create(target):
# module name is 'edn' and type binary. # module name is 'edn' and type binary.
myModule = module.Module(__file__, 'edn', 'PACKAGE') myModule = module.Module(__file__, 'edn', 'PACKAGE')
myModule.add_extra_compile_flags()
# add the file to compile: # add the file to compile:
myModule.add_src_file([ myModule.add_src_file([
'appl/ctags/readtags.cpp']) 'appl/ctags/readtags.cpp'])
@@ -74,6 +75,7 @@ def create(target):
myModule.copy_folder('../data/languages/bash/*.xml','languages/bash/') myModule.copy_folder('../data/languages/bash/*.xml','languages/bash/')
myModule.copy_folder('../data/languages/boo/*.xml','languages/boo/') myModule.copy_folder('../data/languages/boo/*.xml','languages/boo/')
myModule.copy_folder('../data/languages/c/*.xml','languages/c/') myModule.copy_folder('../data/languages/c/*.xml','languages/c/')
myModule.copy_folder('../data/languages/cmake/*.xml','languages/cmake/')
myModule.copy_folder('../data/languages/glsl/*.xml','languages/glsl/') myModule.copy_folder('../data/languages/glsl/*.xml','languages/glsl/')
myModule.copy_folder('../data/languages/in/*.xml','languages/in/') myModule.copy_folder('../data/languages/in/*.xml','languages/in/')
myModule.copy_folder('../data/languages/java/*.xml','languages/java/') myModule.copy_folder('../data/languages/java/*.xml','languages/java/')

View File

@@ -1 +1 @@
1.1.1 1.2.0