Compare commits
107 Commits
Author | SHA1 | Date | |
---|---|---|---|
f0cda0de78 | |||
e21e7e7c21 | |||
cd84475aea | |||
71fa38d61e | |||
fdd4ddf978 | |||
f610c23638 | |||
610afddc9d | |||
4038dd74af | |||
8ba3e2e3d4 | |||
7734a8ce36 | |||
d088866891 | |||
0341795cbb | |||
9e0720b476 | |||
8bce8893e8 | |||
d2cb4a47b7 | |||
65b288813e | |||
7bad5d42f2 | |||
fda95289bd | |||
102e11b74a | |||
ee80871434 | |||
43c3092fe3 | |||
d05d82ba7b | |||
6052df85dc | |||
a9eb976b48 | |||
411bf03e74 | |||
a53903d628 | |||
f3bf0b557c | |||
6f6b0a6f7f | |||
43d8aaef48 | |||
9c9eac7d37 | |||
c61876b919 | |||
10ceb14268 | |||
8c014312c6 | |||
01868a2114 | |||
bd7aa98324 | |||
70837bd769 | |||
2d355d05c6 | |||
a6e583f8c9 | |||
870e127932 | |||
a351fe72bd | |||
9b7707cf9a | |||
![]() |
a03fb96dc9 | ||
863fab113b | |||
83dd23b8a9 | |||
2714560c38 | |||
e48c75df72 | |||
1de1f787e7 | |||
1b3dd3ce98 | |||
0e6c34d2a0 | |||
325034bbc0 | |||
fc9b98f09e | |||
a497b028ca | |||
88b76c074d | |||
28b709bfb8 | |||
1c01dbd7cd | |||
948240f05f | |||
990828c69c | |||
72f63a8990 | |||
4d2eced7a0 | |||
6598a22981 | |||
01276b581f | |||
fd13467832 | |||
643f2e38b3 | |||
c30f57b3f7 | |||
514a5cf003 | |||
0c1f6004eb | |||
c02747d8fb | |||
80dae2dab9 | |||
bd8c11a9da | |||
1f08a99ac1 | |||
0eeb214369 | |||
f5911d5463 | |||
1f8d3cf045 | |||
54cc9da39f | |||
7562c45aa7 | |||
d96a133c6a | |||
5a47446a09 | |||
a196c615bf | |||
2c6f280c58 | |||
722dafaaef | |||
45b4dca615 | |||
322120a3f3 | |||
f5993b3f8b | |||
82af3768b0 | |||
4c5f3a0424 | |||
7b303d2aad | |||
ff055b88d4 | |||
55681d1dac | |||
ab74a7c516 | |||
1fa86b3b03 | |||
dbade0e4e6 | |||
356d7621ae | |||
896beaa4fd | |||
7b476ebc49 | |||
83f1e2e5b5 | |||
396b03bd42 | |||
e3e868f351 | |||
0fe575e432 | |||
45aad6b2e2 | |||
f9418d665e | |||
a751e602ad | |||
d92945717d | |||
4da853c367 | |||
dad2057818 | |||
088f89d421 | |||
5ff5525c6b | |||
b3d776b723 |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -4,9 +4,14 @@
|
||||
###################################
|
||||
CVS
|
||||
.svn
|
||||
.gitk-tmp.*
|
||||
Object/
|
||||
doxygen/API/
|
||||
doxygen/ALL/
|
||||
bin/
|
||||
gen/
|
||||
linux/
|
||||
obj/
|
||||
|
||||
###################################
|
||||
# backup files
|
||||
@@ -26,7 +31,9 @@ doxygen/ALL/
|
||||
*.o
|
||||
*.so
|
||||
*.pyc
|
||||
tags
|
||||
edn
|
||||
out
|
||||
edn_debug
|
||||
edn_release
|
||||
|
||||
|
21
AndroidManifest.xml
Normal file
21
AndroidManifest.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.heeroyui.ednpackage"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
<application android:label="Edn"
|
||||
android:icon="@drawable/ic_luncher_edn">
|
||||
<!--android:hasCode="false"-->
|
||||
<!-- classpath-->
|
||||
<activity android:name=".edn"
|
||||
android:label="Edn Text-Editor"
|
||||
android:icon="@drawable/ic_luncher_edn"
|
||||
android:configChanges="orientation">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
<uses-sdk android:minSdkVersion="4" />
|
||||
</manifest>
|
2
Application.mk
Normal file
2
Application.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
APP_BUILD_SCRIPT=$PROJECT/Sources/Android.mk
|
||||
|
315
Makefile
315
Makefile
@@ -1,290 +1,59 @@
|
||||
##################################################################################################################
|
||||
# #
|
||||
# Fichier : Makefile #
|
||||
# #
|
||||
# Type : Makefile d'un programme complet #
|
||||
# #
|
||||
# Auteur : Heero Yui #
|
||||
# #
|
||||
# Evolutions : Date Auteur Raison #
|
||||
# 2010-01-29 Heero Yui Mise en place d'un makefile ultra simple #
|
||||
# 2011-07-14 Heero Yui Rework the current dorder includion (simplification) #
|
||||
# #
|
||||
# Notes : This makefile might be edited with an editor compatible with escape char and carrer return #
|
||||
# char #
|
||||
# #
|
||||
# Concu Pour le projet edn #
|
||||
# #
|
||||
##################################################################################################################
|
||||
export F_GRAS=[1m
|
||||
export F_INVERSER=[7m
|
||||
export F_SOUSLIGNER=[4m
|
||||
export F_NORMALE=[m
|
||||
export F_NOIR=[31m
|
||||
export F_ROUGE=[31m
|
||||
export F_VERT=[32m
|
||||
export F_MARRON=[33m
|
||||
export F_BLUE=[34m
|
||||
export F_VIOLET=[35m
|
||||
export F_CYAN=[36m
|
||||
export F_GRIS=[37m
|
||||
export CADRE_HAUT_BAS=' $(F_INVERSER) $(F_NORMALE)'
|
||||
export CADRE_COTERS='
|
||||
$(F_INVERSER) $(F_NORMALE) $(F_INVERSER) $(F_NORMALE)'
|
||||
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
### Some Preject properties : ###
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
CXX=g++
|
||||
CC=gcc
|
||||
|
||||
PROJECT_PATH=$(shell pwd)
|
||||
ifeq ($(PLATFORM), Linux)
|
||||
PROJECT_NDK?=$(PROJECT_PATH)/../ewol/
|
||||
else ifeq ($(PLATFORM), Android)
|
||||
PROJECT_NDK?=$(PROJECT_PATH)/../android/ndk-r7/
|
||||
PROJECT_SDK?=$(PROJECT_PATH)/../android/sdk-r15/
|
||||
endif
|
||||
|
||||
|
||||
PROJECT_MODULE?=$(PROJECT_PATH)/../
|
||||
|
||||
EWOL_FOLDER=$(PROJECT_MODULE)ewol
|
||||
|
||||
# group name or constructor ... (no dot, no MAJ no Numerical char)
|
||||
PROJECT_VENDOR=heeroyui
|
||||
# Binary name ... (no dot, no MAJ no Numerical char)
|
||||
PROJECT_NAME=edn
|
||||
|
||||
#dependence of the librairies :
|
||||
#PROJECT_LIB_DEPENDENCY= ewol
|
||||
|
||||
PROJECT_FILE_DIRECTORY=jni
|
||||
|
||||
# get the tag of the current project :
|
||||
PROJECT_VERSION_TAG=$(shell git describe --tags)
|
||||
#$(info Project version TAG : $(PROJECT_VERSION_TAG))
|
||||
|
||||
PROJECT_VERSION_TAG_SHORT=$(shell git describe --tags --abbrev=0)
|
||||
#$(info Project version TAG Short: $(PROJECT_VERSION_TAG_SHORT))
|
||||
|
||||
# enable or disable debug :
|
||||
DEBUG:=1
|
||||
|
||||
###############################################################################
|
||||
### Compilation Define ###
|
||||
###############################################################################
|
||||
ifeq ("$(DEBUG)", "0")
|
||||
ifeq ("$(DEBUG)", "0")
|
||||
PROJECT_CXXFLAGS = -DPROJECT_DEBUG_LEVEL=1
|
||||
PROJECT_CXXFLAGS+= -DPROJECT_NDEBUG
|
||||
PROJECT_CXXFLAGS+= -DPROJECT_VERSION_TAG_NAME="\"$(VERSION_TAG)-release\""
|
||||
else
|
||||
else
|
||||
PROJECT_CXXFLAGS = -DPROJECT_DEBUG_LEVEL=3
|
||||
PROJECT_CXXFLAGS+= -DPROJECT_VERSION_TAG_NAME="\"$(VERSION_TAG)-debug\""
|
||||
endif
|
||||
PROJECT_CXXFLAGS+= -DPROJECT_VERSION_BUILD_TIME="\"$(VERSION_BUILD_TIME)\""
|
||||
|
||||
|
||||
GTKFLAGS=
|
||||
ifeq ($(shell if `pkg-config --exists gtk+-3.0` ; then echo "yes"; else echo "no"; fi), yes)
|
||||
GTKFLAGS= `pkg-config --cflags --libs gtk+-3.0` -DUSE_GTK_VERSION_3_0
|
||||
else
|
||||
ifeq ($(shell if `pkg-config --exists gtk+-2.0` ; then echo "yes"; else echo "no"; fi), yes)
|
||||
GTKFLAGS= `pkg-config --cflags --libs gtk+-2.0` -DUSE_GTK_VERSION_2_0
|
||||
else
|
||||
$(error No GTK 3.0 or 2.0 librairies ...)
|
||||
endif
|
||||
PROJECT_CXXFLAGS+= -I$(EWOL_FOLDER)/Sources/
|
||||
|
||||
|
||||
###############################################################################
|
||||
### Basic Cfags ###
|
||||
###############################################################################
|
||||
|
||||
# basic GTK librairy
|
||||
CXXFLAGS= $(GTKFLAGS)
|
||||
# Linux thread system
|
||||
CXXFLAGS+= -lpthread
|
||||
# Enable debug (cgdb edn)
|
||||
CXXFLAGS+= -g -O0
|
||||
#CXXFLAGS+= -O2
|
||||
# display all flags
|
||||
CXXFLAGS+= -Wall
|
||||
# ...
|
||||
CXXFLAGS+= -D_REENTRANT
|
||||
# internal defines
|
||||
CXXFLAGS+= $(DEFINE)
|
||||
|
||||
CFLAGS= $(CXXFLAGS) -std=c99
|
||||
|
||||
# basic GTK librairy
|
||||
LDFLAGS= $(GTKFLAGS)
|
||||
# Linux thread system
|
||||
LDFLAGS+= -lpthread
|
||||
# Dynamic connection of the CALLBACK of the GUI
|
||||
LDFLAGS+= -Wl,--export-dynamic
|
||||
|
||||
###############################################################################
|
||||
### Project Name ###
|
||||
###############################################################################
|
||||
PROG_NAME=edn
|
||||
|
||||
###############################################################################
|
||||
### Basic Project description Files ###
|
||||
###############################################################################
|
||||
FILE_DIRECTORY=Sources
|
||||
OUTPUT_NAME_RELEASE=$(PROG_NAME)_release
|
||||
OUTPUT_NAME_DEBUG=$(PROG_NAME)_debug
|
||||
OBJECT_DIR=Object
|
||||
|
||||
ifeq ("$(DEBUG)", "0")
|
||||
OBJECT_DIRECTORY=$(OBJECT_DIR)/release
|
||||
OUTPUT_NAME = $(OUTPUT_NAME_RELEASE)
|
||||
else
|
||||
OBJECT_DIRECTORY=$(OBJECT_DIR)/debug
|
||||
OUTPUT_NAME = $(OUTPUT_NAME_DEBUG)
|
||||
endif
|
||||
|
||||
|
||||
|
||||
###############################################################################
|
||||
### Generique dependency ###
|
||||
###############################################################################
|
||||
MAKE_DEPENDENCE=Makefile
|
||||
|
||||
###############################################################################
|
||||
### Files Listes ###
|
||||
###############################################################################
|
||||
|
||||
# tiny XML (extern OPEN Sources) :
|
||||
CXXFILES = tools/tinyXML/tinyxml.cpp \
|
||||
tools/tinyXML/tinyxmlparser.cpp \
|
||||
tools/tinyXML/tinyxmlerror.cpp \
|
||||
tools/tinyXML/tinystr.cpp
|
||||
|
||||
# ExuberantCtags reading file tools (extern OPEN Sources) :
|
||||
CXXFILES+= ctags/readtags.cpp \
|
||||
ctags/CTagsManager.cpp
|
||||
|
||||
|
||||
# Globals debug tool:
|
||||
CXXFILES+= tools/debug/tools_debug.cpp \
|
||||
tools/globals/tools_globals.cpp \
|
||||
tools/memory/toolsMemory.cpp
|
||||
|
||||
# Buffers internal:
|
||||
CXXFILES+= tools/EdnTemplate/EdnVectorBuf.cpp \
|
||||
tools/EdnBuf/EdnBuf.cpp \
|
||||
tools/EdnBuf/EdnBuf_HighLight.cpp \
|
||||
tools/EdnBuf/EdnBuf_History.cpp \
|
||||
tools/EdnBuf/EdnBuf_Selection.cpp \
|
||||
tools/EdnBuf/EdnBufHistory.cpp
|
||||
|
||||
|
||||
# Tools internal:
|
||||
CXXFILES+= tools/AL/AL_Mutex.cpp \
|
||||
tools/Display/Display.cpp \
|
||||
tools/ClipBoard/ClipBoard.cpp \
|
||||
tools/MsgBroadcast/MsgBroadcast.cpp \
|
||||
tools/MsgBroadcast/AccelKey.cpp \
|
||||
tools/charset/charsetTable.cpp \
|
||||
tools/charset/charset.cpp \
|
||||
tools/EdnRegExp/EdnRegExp.cpp \
|
||||
tools/NameSpaceEdn/File.cpp \
|
||||
tools/NameSpaceEdn/String.cpp
|
||||
|
||||
# Gui:
|
||||
CXXFILES+= CustumWidget/BufferView/BufferView.cpp \
|
||||
CustumWidget/CodeView/CodeView.cpp \
|
||||
GuiTools/WindowsManager/WindowsManager.cpp \
|
||||
GuiTools/MainWindows/MainWindows.cpp \
|
||||
GuiTools/MainWindows/StatusBar.cpp \
|
||||
GuiTools/MainWindows/MenuBar.cpp \
|
||||
GuiTools/MainWindows/ToolBar.cpp \
|
||||
GuiTools/Search/Search.cpp \
|
||||
GuiTools/Search/SearchData.cpp
|
||||
|
||||
# Basic Interface :
|
||||
CXXFILES+= Buffer/Buffer.cpp \
|
||||
Buffer/BufferText.cpp \
|
||||
Buffer/BufferEmpty.cpp \
|
||||
Buffer/BufferManager.cpp \
|
||||
Colorize/Colorize.cpp \
|
||||
Colorize/ColorizeManager.cpp \
|
||||
Highlight/HighlightPattern.cpp \
|
||||
Highlight/Highlight.cpp \
|
||||
Highlight/HighlightManager.cpp
|
||||
|
||||
# Main entry file :
|
||||
CXXFILES+= init.cpp
|
||||
|
||||
|
||||
###############################################################################
|
||||
### Liste of folder where .h can be ###
|
||||
###############################################################################
|
||||
LISTE_MODULES = $(dir $(CXXFILES))
|
||||
INCLUDE_DIRECTORY = $(addprefix -I$(FILE_DIRECTORY)/, $(LISTE_MODULES))
|
||||
|
||||
###############################################################################
|
||||
### Build Object Files List ###
|
||||
###############################################################################
|
||||
OBJ = $(addprefix $(OBJECT_DIRECTORY)/, $(CXXFILES:.cpp=.o))
|
||||
|
||||
|
||||
|
||||
###############################################################################
|
||||
### Main Part of Makefile ###
|
||||
###############################################################################
|
||||
all: build
|
||||
|
||||
-include $(OBJ:.o=.d)
|
||||
|
||||
build: .encadrer $(OUTPUT_NAME)
|
||||
|
||||
|
||||
.encadrer:
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo $(CADRE_COTERS)
|
||||
@echo '
|
||||
DEBUT DE COMPILATION DU PROGRAMME :'$(CADRE_COTERS)
|
||||
@echo '
|
||||
Repertoire Sources : $(FILE_DIRECTORY)/'$(CADRE_COTERS)
|
||||
@echo '
|
||||
Repertoire object : $(OBJECT_DIRECTORY)/'$(CADRE_COTERS)
|
||||
@echo '
|
||||
Binaire de sortie : $(F_VIOLET)$(OUTPUT_NAME) / $(OUTPUT_NAME)-stripped$(F_NORMALE)'$(CADRE_COTERS)
|
||||
@echo $(CADRE_COTERS)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@mkdir -p $(addprefix $(OBJECT_DIRECTORY)/, $(LISTE_MODULES))
|
||||
@mkdir -p ~/.bin
|
||||
|
||||
|
||||
FILE_IMAGES= data/imagesSources/*.png
|
||||
|
||||
# Tool used to create a binary version of every element png or other needed by the application
|
||||
pngToCpp: tools/pngToCpp/pngToCpp.c
|
||||
@echo $(F_ROUGE)"
|
||||
(bin) $@"$(F_NORMALE)
|
||||
@$(CXX) $< -o $@
|
||||
@strip -s $@
|
||||
|
||||
# Generate basic
|
||||
$(FILE_DIRECTORY)/GuiTools/myImage.cpp: $(FILE_IMAGES) $(MAKE_DEPENDENCE) pngToCpp
|
||||
@echo $(F_BLUE)"
|
||||
(.cpp) *.png ==> $@"$(F_NORMALE)
|
||||
@#echo ./pngToCpp $@ $(FILE_IMAGES)
|
||||
@./pngToCpp $@ $(FILE_IMAGES)
|
||||
|
||||
|
||||
# build C++
|
||||
$(OBJECT_DIRECTORY)/%.o: $(FILE_DIRECTORY)/%.cpp $(MAKE_DEPENDENCE)
|
||||
@echo $(F_VERT)"
|
||||
(.o) $<"$(F_NORMALE)
|
||||
@#echo $(CXX) $< -c -o $@ $(INCLUDE_DIRECTORY) $(CXXFLAGS) -MMD
|
||||
@$(CXX) $< -c -o $@ $(INCLUDE_DIRECTORY) $(CXXFLAGS) -MMD
|
||||
|
||||
# build binary Release Mode
|
||||
$(OUTPUT_NAME_RELEASE): $(OBJ) $(MAKE_DEPENDENCE)
|
||||
@echo $(F_ROUGE)"
|
||||
(bin) $@ "$(F_NORMALE)
|
||||
@$(CXX) $(OBJ) $(LDFLAGS) -o $@
|
||||
@cp $@ $(PROG_NAME)
|
||||
|
||||
# build binary Debug Mode
|
||||
$(OUTPUT_NAME_DEBUG): $(OBJ) $(MAKE_DEPENDENCE)
|
||||
@echo $(F_ROUGE)"
|
||||
(bin) $@ "$(F_NORMALE)
|
||||
@$(CXX) $(OBJ) $(LDFLAGS) -o $@
|
||||
@cp $@ $(PROG_NAME)
|
||||
|
||||
clean:
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo ' CLEANING : $(F_VIOLET)$(OUTPUT_NAME)$(F_NORMALE)'$(CADRE_COTERS)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo Remove Folder : $(OBJECT_DIR)
|
||||
@rm -rf $(OBJECT_DIR)
|
||||
@echo Remove File : $(PROG_NAME) $(OUTPUT_NAME_DEBUG) $(OUTPUT_NAME_RELEASE)
|
||||
@rm -f $(PROG_NAME) $(OUTPUT_NAME_DEBUG) $(OUTPUT_NAME_RELEASE)
|
||||
@echo Remove File : pngToCpp
|
||||
@rm -f pngToCpp
|
||||
@echo Remove File : $(FILE_DIRECTORY)/GuiTools/myImage.*
|
||||
@rm -f $(FILE_DIRECTORY)/GuiTools/myImage.*
|
||||
@echo Remove doxygen files : doxygen/*
|
||||
@rm -rf doxygen
|
||||
@rm -f doxygen.log
|
||||
@echo Remove temporary files *.bck
|
||||
@rm -f `find . -name "*.bck"`
|
||||
|
||||
count:
|
||||
wc -l Makefile `find $(FILE_DIRECTORY)/ -name "*.cpp"` `find $(FILE_DIRECTORY)/ -name "*.h"`
|
||||
|
||||
install: .encadrer $(OUTPUT_NAME_RELEASE)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
PROJECT_LDFLAGS= -L$(EWOL_FOLDER)
|
||||
|
||||
#include the specific platefom makefile
|
||||
include $(EWOL_FOLDER)/Build/Makefile.$(PLATFORM).mk
|
||||
|
||||
|
||||
|
340
Makefile_old
Normal file
340
Makefile_old
Normal file
@@ -0,0 +1,340 @@
|
||||
##################################################################################################################
|
||||
# #
|
||||
# Fichier : Makefile #
|
||||
# #
|
||||
# Type : Makefile d'un programme complet #
|
||||
# #
|
||||
# Auteur : Heero Yui #
|
||||
# #
|
||||
# Evolutions : Date Auteur Raison #
|
||||
# 2010-01-29 Heero Yui Mise en place d'un makefile ultra simple #
|
||||
# 2011-07-14 Heero Yui Rework the current dorder includion (simplification) #
|
||||
# #
|
||||
# Notes : This makefile might be edited with an editor compatible with escape char and carrer return #
|
||||
# char #
|
||||
# #
|
||||
# Concu Pour le projet edn #
|
||||
# #
|
||||
##################################################################################################################
|
||||
export F_GRAS=[1m
|
||||
export F_INVERSER=[7m
|
||||
export F_SOUSLIGNER=[4m
|
||||
export F_NORMALE=[m
|
||||
export F_NOIR=[31m
|
||||
export F_ROUGE=[31m
|
||||
export F_VERT=[32m
|
||||
export F_MARRON=[33m
|
||||
export F_BLUE=[34m
|
||||
export F_VIOLET=[35m
|
||||
export F_CYAN=[36m
|
||||
export F_GRIS=[37m
|
||||
export CADRE_HAUT_BAS=' $(F_INVERSER) $(F_NORMALE)'
|
||||
export CADRE_COTERS='
|
||||
$(F_INVERSER) $(F_NORMALE) $(F_INVERSER) $(F_NORMALE)'
|
||||
|
||||
VERSION_TAG=$(shell git describe --tags)
|
||||
#$(info $(VERSION_TAG))
|
||||
|
||||
VERSION_TAG_SHORT=$(shell git describe --tags --abbrev=0)
|
||||
#$(info $(VERSION_TAG_SHORT))
|
||||
|
||||
VERSION_BUILD_TIME=$(shell date)
|
||||
#$(info $(VERSION_BUILD_TIME))
|
||||
|
||||
###############################################################################
|
||||
### Compilateur base system ###
|
||||
###############################################################################
|
||||
CXX=g++
|
||||
CC=gcc
|
||||
AR=ar
|
||||
|
||||
DEBUG:=1
|
||||
|
||||
###############################################################################
|
||||
### Compilation Define ###
|
||||
###############################################################################
|
||||
ifeq ("$(DEBUG)", "0")
|
||||
DEFINE= -DEDN_DEBUG_LEVEL=1 -DNDEBUG -DVERSION_TAG_NAME="\"$(VERSION_TAG)-release\""
|
||||
else
|
||||
DEFINE= -DEDN_DEBUG_LEVEL=3 -DVERSION_TAG_NAME="\"$(VERSION_TAG)-debug\""
|
||||
endif
|
||||
DEFINE+= -DVERSION_BUILD_TIME="\"$(VERSION_BUILD_TIME)\""
|
||||
|
||||
GTKFLAGS=
|
||||
ifeq ($(shell if `pkg-config --exists gtk+-3.0` ; then echo "yes"; else echo "no"; fi), yes)
|
||||
GTKFLAGS= `pkg-config --cflags --libs gtk+-3.0` -DUSE_GTK_VERSION_3_0
|
||||
else
|
||||
ifeq ($(shell if `pkg-config --exists gtk+-2.0` ; then echo "yes"; else echo "no"; fi), yes)
|
||||
GTKFLAGS= `pkg-config --cflags --libs gtk+-2.0` -DUSE_GTK_VERSION_2_0
|
||||
else
|
||||
$(error No GTK 3.0 or 2.0 librairies ...)
|
||||
endif
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
### Basic Cfags ###
|
||||
###############################################################################
|
||||
|
||||
# basic GTK librairy
|
||||
CXXFLAGS= $(GTKFLAGS)
|
||||
# Linux thread system
|
||||
CXXFLAGS+= -lpthread
|
||||
# Enable debug (cgdb edn)
|
||||
CXXFLAGS+= -g -O0
|
||||
#CXXFLAGS+= -O2
|
||||
# display all flags
|
||||
CXXFLAGS+= -Wall
|
||||
# ...
|
||||
CXXFLAGS+= -D_REENTRANT
|
||||
# internal defines
|
||||
CXXFLAGS+= $(DEFINE)
|
||||
|
||||
CFLAGS= $(CXXFLAGS) -std=c99
|
||||
|
||||
# basic GTK librairy
|
||||
LDFLAGS= $(GTKFLAGS)
|
||||
# Linux thread system
|
||||
LDFLAGS+= -lpthread
|
||||
# Dynamic connection of the CALLBACK of the GUI
|
||||
LDFLAGS+= -Wl,--export-dynamic
|
||||
|
||||
###############################################################################
|
||||
### Project Name ###
|
||||
###############################################################################
|
||||
PROG_NAME=edn
|
||||
|
||||
###############################################################################
|
||||
### Basic Project description Files ###
|
||||
###############################################################################
|
||||
FILE_DIRECTORY=Sources
|
||||
OUTPUT_NAME_RELEASE=$(PROG_NAME)_release
|
||||
OUTPUT_NAME_DEBUG=$(PROG_NAME)_debug
|
||||
OBJECT_DIR=Object
|
||||
|
||||
ifeq ("$(DEBUG)", "0")
|
||||
OBJECT_DIRECTORY=$(OBJECT_DIR)/release
|
||||
OUTPUT_NAME = $(OUTPUT_NAME_RELEASE)
|
||||
else
|
||||
OBJECT_DIRECTORY=$(OBJECT_DIR)/debug
|
||||
OUTPUT_NAME = $(OUTPUT_NAME_DEBUG)
|
||||
endif
|
||||
|
||||
|
||||
|
||||
###############################################################################
|
||||
### Generique dependency ###
|
||||
###############################################################################
|
||||
MAKE_DEPENDENCE=Makefile
|
||||
|
||||
###############################################################################
|
||||
### Files Listes ###
|
||||
###############################################################################
|
||||
|
||||
# tiny XML (extern OPEN Sources) :
|
||||
CXXFILES = tools/tinyXML/tinyxml.cpp \
|
||||
tools/tinyXML/tinyxmlparser.cpp \
|
||||
tools/tinyXML/tinyxmlerror.cpp \
|
||||
tools/tinyXML/tinystr.cpp
|
||||
|
||||
# ExuberantCtags reading file tools (extern OPEN Sources) :
|
||||
CXXFILES+= ctags/readtags.cpp \
|
||||
ctags/CTagsManager.cpp
|
||||
|
||||
|
||||
# Globals debug tool:
|
||||
CXXFILES+= tools/debug/tools_debug.cpp \
|
||||
tools/globals/tools_globals.cpp \
|
||||
tools/memory/toolsMemory.cpp
|
||||
|
||||
# Buffers internal:
|
||||
CXXFILES+= tools/EdnTemplate/EdnVectorBuf.cpp \
|
||||
tools/EdnBuf/EdnBuf.cpp \
|
||||
tools/EdnBuf/EdnBuf_HighLight.cpp \
|
||||
tools/EdnBuf/EdnBuf_History.cpp \
|
||||
tools/EdnBuf/EdnBuf_Selection.cpp \
|
||||
tools/EdnBuf/EdnBufHistory.cpp
|
||||
|
||||
|
||||
# Tools internal:
|
||||
CXXFILES+= tools/Display/Display.cpp \
|
||||
tools/ClipBoard/ClipBoard.cpp \
|
||||
tools/MsgBroadcast/MsgBroadcast.cpp \
|
||||
tools/MsgBroadcast/AccelKey.cpp \
|
||||
tools/charset/charsetTable.cpp \
|
||||
tools/charset/charset.cpp \
|
||||
tools/NameSpaceEdn/File.cpp \
|
||||
tools/NameSpaceEdn/String.cpp \
|
||||
tools/NameSpaceEdn/RegExp.cpp
|
||||
|
||||
# Gui:
|
||||
CXXFILES+= CustumWidget/BufferView/BufferView.cpp \
|
||||
CustumWidget/CodeView/CodeView.cpp \
|
||||
GuiTools/WindowsManager/WindowsManager.cpp \
|
||||
GuiTools/MainWindows/MainWindows.cpp \
|
||||
GuiTools/MainWindows/StatusBar.cpp \
|
||||
GuiTools/MainWindows/MenuBar.cpp \
|
||||
GuiTools/MainWindows/ToolBar.cpp \
|
||||
GuiTools/Search/Search.cpp \
|
||||
GuiTools/Search/SearchData.cpp
|
||||
|
||||
# Basic Interface :
|
||||
CXXFILES+= Buffer/Buffer.cpp \
|
||||
Buffer/BufferText.cpp \
|
||||
Buffer/BufferEmpty.cpp \
|
||||
Buffer/BufferManager.cpp \
|
||||
Colorize/Colorize.cpp \
|
||||
Colorize/ColorizeManager.cpp \
|
||||
Highlight/HighlightPattern.cpp \
|
||||
Highlight/Highlight.cpp \
|
||||
Highlight/HighlightManager.cpp
|
||||
|
||||
# Main entry file :
|
||||
CXXFILES+= init.cpp
|
||||
|
||||
|
||||
###############################################################################
|
||||
### Liste of folder where .h can be ###
|
||||
###############################################################################
|
||||
LISTE_MODULES = $(dir $(CXXFILES))
|
||||
INCLUDE_DIRECTORY = $(addprefix -I$(FILE_DIRECTORY)/, $(LISTE_MODULES))
|
||||
|
||||
###############################################################################
|
||||
### Build Object Files List ###
|
||||
###############################################################################
|
||||
OBJ = $(addprefix $(OBJECT_DIRECTORY)/, $(CXXFILES:.cpp=.o))
|
||||
|
||||
|
||||
|
||||
###############################################################################
|
||||
### Main Part of Makefile ###
|
||||
###############################################################################
|
||||
all: build
|
||||
|
||||
-include $(OBJ:.o=.d)
|
||||
|
||||
build: .encadrer .versionFile $(OUTPUT_NAME)
|
||||
|
||||
|
||||
.encadrer:
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo $(CADRE_COTERS)
|
||||
@echo '
|
||||
DEBUT DE COMPILATION DU PROGRAMME :'$(CADRE_COTERS)
|
||||
@echo '
|
||||
Repertoire Sources : $(FILE_DIRECTORY)/'$(CADRE_COTERS)
|
||||
@echo '
|
||||
Repertoire object : $(OBJECT_DIRECTORY)/'$(CADRE_COTERS)
|
||||
@echo '
|
||||
Binaire de sortie : $(F_VIOLET)$(OUTPUT_NAME) $(F_NORMALE)'$(CADRE_COTERS)
|
||||
@echo $(CADRE_COTERS)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@mkdir -p $(addprefix $(OBJECT_DIRECTORY)/, $(LISTE_MODULES))
|
||||
|
||||
|
||||
FILE_IMAGES= data/imagesSources/*.png
|
||||
|
||||
|
||||
.versionFile :
|
||||
@rm -f $(OBJECT_DIRECTORY)/GuiTools/WindowsManager/WindowsManager.o
|
||||
|
||||
|
||||
# Tool used to create a binary version of every element png or other needed by the application
|
||||
pngToCpp: tools/pngToCpp/pngToCpp.c
|
||||
@echo $(F_ROUGE)"
|
||||
(bin) $@"$(F_NORMALE)
|
||||
@$(CXX) $< -o $@
|
||||
@strip -s $@
|
||||
|
||||
# Generate basic
|
||||
$(FILE_DIRECTORY)/GuiTools/myImage.cpp: $(FILE_IMAGES) $(MAKE_DEPENDENCE) pngToCpp
|
||||
@echo $(F_BLUE)"
|
||||
(.cpp) *.png ==> $@"$(F_NORMALE)
|
||||
@./pngToCpp $@ $(FILE_IMAGES)
|
||||
|
||||
|
||||
# build C++
|
||||
$(OBJECT_DIRECTORY)/%.o: $(FILE_DIRECTORY)/%.cpp $(MAKE_DEPENDENCE)
|
||||
@echo $(F_VERT)"
|
||||
(.o) $<"$(F_NORMALE)
|
||||
@$(CXX) $< -c -o $@ $(INCLUDE_DIRECTORY) $(CXXFLAGS) -MMD
|
||||
|
||||
# build binary Release Mode
|
||||
$(OUTPUT_NAME_RELEASE): $(OBJ) $(MAKE_DEPENDENCE)
|
||||
@echo $(F_ROUGE)"
|
||||
(bin) $@ "$(F_NORMALE)
|
||||
@$(CXX) $(OBJ) $(LDFLAGS) -o $@
|
||||
@cp $@ $(PROG_NAME)
|
||||
|
||||
# build binary Debug Mode
|
||||
$(OUTPUT_NAME_DEBUG): $(OBJ) $(MAKE_DEPENDENCE)
|
||||
@echo $(F_ROUGE)"
|
||||
(bin) $@ "$(F_NORMALE)
|
||||
@$(CXX) $(OBJ) $(LDFLAGS) -o $@
|
||||
@cp $@ $(PROG_NAME)
|
||||
|
||||
clean:
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo ' CLEANING : $(F_VIOLET)$(OUTPUT_NAME)$(F_NORMALE)'$(CADRE_COTERS)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo Remove Folder : $(OBJECT_DIR)
|
||||
@rm -rf $(OBJECT_DIR)
|
||||
@echo Remove File : $(PROG_NAME) $(OUTPUT_NAME_DEBUG) $(OUTPUT_NAME_RELEASE)
|
||||
@rm -f $(PROG_NAME) $(OUTPUT_NAME_DEBUG) $(OUTPUT_NAME_RELEASE)
|
||||
@echo Remove File : pngToCpp
|
||||
@rm -f pngToCpp
|
||||
@echo Remove File : $(FILE_DIRECTORY)/GuiTools/myImage.*
|
||||
@rm -f $(FILE_DIRECTORY)/GuiTools/myImage.*
|
||||
@echo Remove doxygen files : doxygen/*
|
||||
@rm -rf doxygen
|
||||
@rm -f doxygen.log
|
||||
@echo Remove temporary files *.bck
|
||||
@rm -f `find . -name "*.bck"`
|
||||
|
||||
count:
|
||||
wc -l Makefile `find $(FILE_DIRECTORY)/ -name "*.cpp"` `find $(FILE_DIRECTORY)/ -name "*.h"`
|
||||
|
||||
install: .encadrer .versionFile $(OUTPUT_NAME_RELEASE)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo ' INSTALL : $(F_VIOLET)$(OUTPUT_NAME_RELEASE)=>$(PROG_NAME)$(F_NORMALE)'$(CADRE_COTERS)
|
||||
@echo $(CADRE_HAUT_BAS)
|
||||
@echo $(F_ROUGE)"
|
||||
(stripped) $(OUTPUT_NAME_RELEASE) => $(PROG_NAME) "$(F_NORMALE)
|
||||
@cp $(OUTPUT_NAME_RELEASE) $(PROG_NAME)
|
||||
@strip -s $(PROG_NAME)
|
||||
@echo $(F_VERT)"
|
||||
(copy) $(PROG_NAME) /usr/bin/ "$(F_NORMALE)
|
||||
@cp -vf $(PROG_NAME) /usr/bin/
|
||||
@echo $(F_VERT)"
|
||||
(data) data/* ==> /usr/share/edn/ "$(F_NORMALE)
|
||||
@mkdir -p /usr/share/edn/
|
||||
@rm -rf /usr/share/edn/*
|
||||
@cp -vf data/*.xml /usr/share/edn/
|
||||
@mkdir -p /usr/share/edn/images/
|
||||
@cp -vf data/imagesSources/icone.png /usr/share/edn/images/
|
||||
@cp -vf data/imagesSources/delete-24px.png /usr/share/edn/images/
|
||||
# gnome adding for the program at the list (manage icone in .xpm)
|
||||
@cp -vf data/edn.desktop /usr/share/applications/
|
||||
@cp -vf data/imagesSources/icone.png /usr/share/app-install/icons/Edn.png
|
||||
@cp -vf data/imagesSources/icone.xpm /usr/share/pixmaps/Edn.xpm
|
||||
|
||||
|
||||
# http://alp.developpez.com/tutoriels/debian/creer-paquet/
|
||||
package: .encadrer
|
||||
@echo 'Create Folders ...'
|
||||
@mkdir -p package/$(PROG_NAME)/DEBIAN/
|
||||
@mkdir -p package/$(PROG_NAME)/usr/bin/
|
||||
@mkdir -p package/$(PROG_NAME)/usr/share/doc/
|
||||
@mkdir -p package/$(PROG_NAME)/usr/share/edn/
|
||||
# Create the control file
|
||||
@echo "Package: "$(PROG_NAME) > package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "Version: "$(VERSION_TAG_SHORT) >> package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "Section: Development,Editors" >> package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "Priority: optional" >>package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "Architecture: all" >> package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "Depends: bash" >> package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "Maintainer: Mr DUPIN Edouard <yui.heero@gmail.com>" >> package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "Description: Text editor for sources code with ctags management" >> package/$(PROG_NAME)/DEBIAN/control
|
||||
@echo "" >> package/$(PROG_NAME)/DEBIAN/control
|
||||
# Create the PostRm
|
||||
@echo "#!/bin/bash" > package/$(PROG_NAME)/DEBIAN/postrm
|
||||
@echo "rm ~/."$(PROG_NAME) >> package/$(PROG_NAME)/DEBIAN/postrm
|
22
README
22
README
@@ -1,22 +0,0 @@
|
||||
Edn (Editeur De N'ours) is a FREE software.
|
||||
|
||||
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
|
||||
|
||||
Terms of license:
|
||||
|
||||
You can:
|
||||
- Redistribute the sources code and binaries.
|
||||
- Modify the Sources code.
|
||||
- Use a part of the sources (less than 50%) in an other software, just write somewhere "Edn is great" visible by the user (on your product or on your website with a link to my page).
|
||||
- Redistribute the modification only if you want.
|
||||
- Send me the bug-fix (it could be great).
|
||||
- Pay me a beer or some other things.
|
||||
- Print the source code on WC paper ...
|
||||
You can NOT:
|
||||
- Earn money with this Software (But I can).
|
||||
- Add malware in the Sources.
|
||||
- Do something bad with the sources.
|
||||
- Use it to travel in the space with a toaster.
|
||||
- Write Java sources code with this software.
|
||||
|
||||
I reserve the right to change this licence. If it change the version of the copy you have keep its own license
|
41
README.md
Normal file
41
README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
Edn
|
||||
====
|
||||
|
||||
`Edn` (Editeur De N'ours) is a FREE software.
|
||||
|
||||
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
|
||||
|
||||
Instructions
|
||||
============
|
||||
|
||||
download the software :
|
||||
|
||||
git clone git://github.com/HeeroYui/edn.git
|
||||
cd edn
|
||||
|
||||
Compile software and install :
|
||||
|
||||
sudo make DEBUG=0 install
|
||||
|
||||
Run Software :
|
||||
|
||||
edn exemple.txt
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
You can:
|
||||
- Redistribute the sources code and binaries.
|
||||
- Modify the Sources code.
|
||||
- Use a part of the sources (less than 50%) in an other software, just write somewhere "Edn is great" visible by the user (on your product or on your website with a link to my page).
|
||||
- Redistribute the modification only if you want.
|
||||
- Send me the bug-fix (it could be great).
|
||||
- Pay me a beer or some other things.
|
||||
- Print the source code on WC paper ...
|
||||
You can NOT:
|
||||
- Earn money with this Software (But I can).
|
||||
- Add malware in the Sources.
|
||||
- Do something bad with the sources.
|
||||
- Use it to travel in the space with a toaster.
|
||||
|
||||
I reserve the right to change this licence. If it change the version of the copy you have keep its own license
|
@@ -1,98 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file BufferEmpty.cpp
|
||||
* @brief Editeur De N'ours : Text Buffer (edit For No buffer Display)
|
||||
* @author Edouard DUPIN
|
||||
* @date 19/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "BufferEmpty.h"
|
||||
#include "ColorizeManager.h"
|
||||
#include "MainWindows.h"
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "BufferEmpty"
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferEmpty::BufferEmpty()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferEmpty::~BufferEmpty(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
int32_t BufferEmpty::Display(DrawerManager &drawer)
|
||||
{
|
||||
|
||||
ColorizeManager * myColorManager = ColorizeManager::getInstance();
|
||||
// Get color :
|
||||
Colorize *myColor = NULL;
|
||||
// Clean Buffer
|
||||
drawer.Clean(myColorManager->Get(COLOR_CODE_BASIC_BG) );
|
||||
|
||||
myColor = myColorManager->Get("normal");
|
||||
// Draw the 2 comments Lines :
|
||||
drawer.Text(myColor, 20,20, "edn - Editeur De N'ours, l'Editeur Desoxyribo-Nucleique");
|
||||
//drawer.Flush();
|
||||
myColor = myColorManager->Get("commentDoxygen");
|
||||
drawer.Text(myColor, 20,25 + Display::GetFontHeight(), "No Buffer Availlable to display");
|
||||
drawer.Flush();
|
||||
/*
|
||||
myColor = myColorManager->Get(("SelectedText"));
|
||||
drawer.Cursor(20, 50);
|
||||
drawer.EndOfLine(20, 70);
|
||||
drawer.Tabulation(myColor, 20, 90, 5);
|
||||
drawer.UTF8UnknownElement(myColor, 20, 120, 3, false);
|
||||
drawer.Flush();
|
||||
*/
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1,288 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file BufferManager.cpp
|
||||
* @brief Editeur De N'ours : Text Buffer manager (sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 08/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "BufferManager.h"
|
||||
//#include "MsgBroadcast.h"
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "BufferManager"
|
||||
|
||||
// Constructeur
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferManager::BufferManager(void) : MsgBroadcast("Buffer Manager", EDN_CAT_BUFFER_MANAGER)
|
||||
{
|
||||
// nothing to do ...
|
||||
BufferNotExiste = new BufferEmpty();
|
||||
m_idSelected = -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferManager::~BufferManager(void)
|
||||
{
|
||||
//clean All Buffer
|
||||
EDN_INFO("~BufferManager::RemoveAll();");
|
||||
RemoveAll();
|
||||
// clear The list of Buffer
|
||||
EDN_INFO("~BufferManager::listBuffer.clear();");
|
||||
listBuffer.clear();
|
||||
EDN_INFO("~BufferManager::delete(BufferNotExiste);");
|
||||
delete(BufferNotExiste);
|
||||
}
|
||||
|
||||
|
||||
void BufferManager::OnMessage(int32_t id, int32_t dataID)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case EDN_MSG__NEW:
|
||||
{
|
||||
int32_t newOne = Create();
|
||||
if (-1 != newOne) {
|
||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, newOne);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Remove all buffer opened
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void BufferManager::RemoveAll(void)
|
||||
{
|
||||
int32_t i;
|
||||
for (i=0; i<(int32_t)listBuffer.size(); i++) {
|
||||
Remove(i);
|
||||
}
|
||||
SendMessage(EDN_MSG__BUFFER_REMOVE_ALL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Create a new buffer with no name and empty
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return The ID of the curent buffer where the file is loaded
|
||||
*
|
||||
*/
|
||||
int32_t BufferManager::Create(void)
|
||||
{
|
||||
// allocate a new Buffer
|
||||
Buffer *myBuffer = new BufferText();
|
||||
// Add at the list of element
|
||||
listBuffer.push_back(myBuffer);
|
||||
int32_t basicID = (int32_t)listBuffer.size() - 1;
|
||||
SendMessage(EDN_MSG__BUFFER_ADD, basicID);
|
||||
return basicID;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief open a file with the name set in parameters
|
||||
*
|
||||
* @param[in] filename curent filename
|
||||
*
|
||||
* @return The ID of the curent buffer where the file is loaded
|
||||
*
|
||||
* @todo : check if this file is not curently open and return the old ID
|
||||
*
|
||||
*/
|
||||
int32_t BufferManager::Open(Edn::String &filename)
|
||||
{
|
||||
// allocate a new Buffer
|
||||
Buffer *myBuffer = new BufferText(filename);
|
||||
// Add at the list of element
|
||||
listBuffer.push_back(myBuffer);
|
||||
int32_t basicID = (int32_t)listBuffer.size() - 1;
|
||||
SendMessage(EDN_MSG__BUFFER_ADD, basicID);
|
||||
return basicID;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Buffer * BufferManager::Get(int32_t BufferID)
|
||||
{
|
||||
// possible special case : -1;
|
||||
if (-1 >= BufferID) {
|
||||
return BufferNotExiste;
|
||||
}
|
||||
// check if the Buffer existed
|
||||
if (BufferID < (int32_t)listBuffer.size()) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[BufferID]) {
|
||||
return listBuffer[BufferID];
|
||||
} else {
|
||||
EDN_ERROR("non existing Buffer " << BufferID);
|
||||
}
|
||||
} else {
|
||||
EDN_ERROR("call an non existing Buffer number too hight : " << BufferID << " > " << listBuffer.size());
|
||||
}
|
||||
return BufferNotExiste;
|
||||
}
|
||||
|
||||
|
||||
bool BufferManager::Exist(int32_t BufferID)
|
||||
{
|
||||
if (-1 >= BufferID) {
|
||||
return false;
|
||||
}
|
||||
// check if the Buffer existed
|
||||
if (BufferID < (int32_t)listBuffer.size()) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[BufferID]) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
int32_t BufferManager::GetId(Edn::String &filename)
|
||||
{
|
||||
int32_t iii;
|
||||
// check if the Buffer existed
|
||||
for (iii=0; iii < (int32_t)listBuffer.size(); iii++) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[iii]) {
|
||||
if ( listBuffer[iii]->GetName() == filename) {
|
||||
return iii;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool BufferManager::Exist(Edn::String &filename)
|
||||
{
|
||||
if (-1 == GetId(filename)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5
|
||||
uint32_t BufferManager::Size(void)
|
||||
{
|
||||
return listBuffer.size();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
bool BufferManager::Remove(int32_t BufferID)
|
||||
{
|
||||
if (-1 >= BufferID) {
|
||||
return false;
|
||||
}
|
||||
// check if the Buffer existed
|
||||
if (BufferID < (int32_t)listBuffer.size()) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[BufferID]) {
|
||||
// TODO : Check if it saved...
|
||||
/*
|
||||
if (false == IsSaved(BufferID) ) {
|
||||
EDN_INFO("Buffer " << BufferID << " : Not Saved", BufferID);
|
||||
}
|
||||
*/
|
||||
// Delete the Buffer
|
||||
delete( listBuffer[BufferID] );
|
||||
listBuffer[BufferID] = NULL;
|
||||
SendMessage(EDN_MSG__BUFFER_REMOVE, BufferID);
|
||||
return true;
|
||||
} else {
|
||||
EDN_INFO("non existing Buffer " << BufferID);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
EDN_INFO("call an non existing Buffer number too hight : " << BufferID << " > " << listBuffer.size());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief to get the element 14 in the buffer
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
int32_t BufferManager::WitchBuffer(int32_t iEmeElement)
|
||||
{
|
||||
int32_t i;
|
||||
for (i=0; i<(int32_t)listBuffer.size(); i++) {
|
||||
if (NULL != listBuffer[i]) {
|
||||
iEmeElement--;
|
||||
// find the element :
|
||||
if (0 == iEmeElement) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1,72 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file BufferView.h
|
||||
* @brief Editeur De N'ours : main List Buffer Viewer (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 09/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __BUFFER_VIEW_H__
|
||||
#define __BUFFER_VIEW_H__
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "Singleton.h"
|
||||
#include "CodeView.h"
|
||||
#include "BufferManager.h"
|
||||
#include "Display.h"
|
||||
#include "MsgBroadcast.h"
|
||||
|
||||
|
||||
class BufferView : public MsgBroadcast
|
||||
{
|
||||
public:
|
||||
// Constructeur
|
||||
BufferView(void);
|
||||
~BufferView(void);
|
||||
GtkWidget *GetMainWidget(void);
|
||||
void OnMessage(int32_t id, int32_t dataID);
|
||||
// sur : GTK+ callback :
|
||||
static gboolean CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, gpointer data);
|
||||
static gboolean CB_displayInit( GtkWidget *widget, gpointer data);
|
||||
static gint CB_focusGet( GtkWidget *widget, GdkEventFocus *event, gpointer data);
|
||||
static gint CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data);
|
||||
static gint CB_keyboardEvent( GtkWidget *widget, GdkEventKey *event, gpointer data);
|
||||
static gint CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data);
|
||||
static gint CB_mouseMotionEvent( GtkWidget *widget, GdkEventMotion *event, gpointer data);
|
||||
static void CB_EventOnBufferManager(gpointer data);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
// main windows widget :
|
||||
GtkWidget * m_widget;
|
||||
// r<>cup<75>ration des proprieter g<>n<EFBFBD>ral...
|
||||
BufferManager * m_bufferManager;
|
||||
ColorizeManager * m_colorManager;
|
||||
int32_t m_shawableAreaX;
|
||||
int32_t m_shawableAreaY;
|
||||
int32_t m_selectedID;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -1,424 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file CodeView.cpp
|
||||
* @brief Editeur De N'ours : Code Viewer Widget
|
||||
* This is an abstraction
|
||||
* @author Edouard DUPIN
|
||||
* @date 05/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "CodeView.h"
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "Display.h"
|
||||
#include "CodeView.h"
|
||||
#include "BufferManager.h"
|
||||
#include "ColorizeManager.h"
|
||||
#include "ClipBoard.h"
|
||||
#include "SearchData.h"
|
||||
|
||||
|
||||
CodeView::CodeView(void) : MsgBroadcast("Code View", EDN_CAT_WORK_AREA)
|
||||
{
|
||||
m_bufferID = -1;
|
||||
m_buttunOneSelected = false;
|
||||
m_shawableAreaX = 0;
|
||||
m_shawableAreaY = 0;
|
||||
|
||||
// Init link with the buffer Manager
|
||||
m_bufferManager = BufferManager::getInstance();
|
||||
m_colorManager = ColorizeManager::getInstance();
|
||||
|
||||
m_widget = gtk_drawing_area_new();
|
||||
gtk_widget_set_size_request( m_widget, 200, 100);
|
||||
|
||||
gtk_widget_add_events( m_widget,
|
||||
GDK_KEY_PRESS_MASK
|
||||
| GDK_BUTTON_PRESS_MASK
|
||||
| GDK_BUTTON_RELEASE_MASK
|
||||
| GDK_POINTER_MOTION_MASK
|
||||
| GDK_POINTER_MOTION_HINT_MASK);
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
g_object_set(m_widget,"can-focus", TRUE, NULL);
|
||||
# elif defined( USE_GTK_VERSION_2_0 )
|
||||
GTK_WIDGET_SET_FLAGS(m_widget, GTK_CAN_FOCUS);
|
||||
# endif
|
||||
// Focus Event
|
||||
g_signal_connect( G_OBJECT(m_widget), "focus_in_event", G_CALLBACK(CB_focusGet), this);
|
||||
g_signal_connect( G_OBJECT(m_widget), "focus_out_event", G_CALLBACK(CB_focusLost), this);
|
||||
// Keyboard Event
|
||||
g_signal_connect_after( G_OBJECT(m_widget), "key_press_event", G_CALLBACK(CB_keyboardEvent), this);
|
||||
g_signal_connect_after( G_OBJECT(m_widget), "key_release_event", G_CALLBACK(CB_keyboardEvent), this);
|
||||
// Mouse Event
|
||||
g_signal_connect( G_OBJECT(m_widget), "button_press_event", G_CALLBACK(CB_mouseButtonEvent), this);
|
||||
g_signal_connect( G_OBJECT(m_widget), "button_release_event", G_CALLBACK(CB_mouseButtonEvent), this);
|
||||
g_signal_connect( G_OBJECT(m_widget), "motion_notify_event", G_CALLBACK(CB_mouseMotionEvent), this);
|
||||
g_signal_connect( G_OBJECT(m_widget), "scroll-event", G_CALLBACK(CB_mouseScrollEvent), this);
|
||||
// Display Event
|
||||
g_signal_connect( G_OBJECT(m_widget), "realize", G_CALLBACK(CB_displayInit), this);
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
g_signal_connect( G_OBJECT(m_widget), "draw", G_CALLBACK(CB_displayDraw), this);
|
||||
# elif defined( USE_GTK_VERSION_2_0 )
|
||||
g_signal_connect( G_OBJECT(m_widget), "expose_event", G_CALLBACK(CB_displayDraw), this);
|
||||
# endif
|
||||
}
|
||||
|
||||
CodeView::~CodeView(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GtkWidget * CodeView::GetMainWidget(void)
|
||||
{
|
||||
return m_widget;
|
||||
}
|
||||
|
||||
|
||||
void CodeView::OnMessage(int32_t id, int32_t dataID)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case EDN_MSG__CURRENT_CHANGE_BUFFER_ID:
|
||||
//EDN_INFO("Select a new Buffer ... " << dataID);
|
||||
m_bufferID = dataID;
|
||||
m_bufferManager->Get(m_bufferID)->ForceReDraw(true);
|
||||
// request the dispplay of the curent Editor
|
||||
SendMessage(EDN_MSG__BUFFER_CHANGE_CURRENT, m_bufferID);
|
||||
break;
|
||||
case EDN_MSG__CURRENT_SAVE:
|
||||
if (m_bufferManager->Get(m_bufferID)->HaveName() == false) {
|
||||
SendMessage(EDN_MSG__GUI_SHOW_SAVE_AS, m_bufferID);
|
||||
} else {
|
||||
m_bufferManager->Get(m_bufferID)->Save();
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__CURRENT_SAVE_AS:
|
||||
SendMessage(EDN_MSG__GUI_SHOW_SAVE_AS, m_bufferID);
|
||||
break;
|
||||
case EDN_MSG__CURRENT_REMOVE_LINE:
|
||||
m_bufferManager->Get(m_bufferID)->RemoveLine();
|
||||
break;
|
||||
case EDN_MSG__CURRENT_SELECT_ALL:
|
||||
m_bufferManager->Get(m_bufferID)->SelectAll();
|
||||
break;
|
||||
case EDN_MSG__CURRENT_UN_SELECT:
|
||||
m_bufferManager->Get(m_bufferID)->SelectNone();
|
||||
break;
|
||||
case EDN_MSG__CURRENT_COPY:
|
||||
if (dataID == -1) {
|
||||
dataID = COPY_STD;
|
||||
}
|
||||
m_bufferManager->Get(m_bufferID)->Copy(dataID);
|
||||
break;
|
||||
case EDN_MSG__CURRENT_CUT:
|
||||
if (dataID == -1) {
|
||||
dataID = COPY_STD;
|
||||
}
|
||||
m_bufferManager->Get(m_bufferID)->Cut(dataID);
|
||||
break;
|
||||
case EDN_MSG__CURRENT_PASTE:
|
||||
if (dataID == -1) {
|
||||
dataID = COPY_STD;
|
||||
}
|
||||
m_bufferManager->Get(m_bufferID)->Paste(dataID);
|
||||
break;
|
||||
case EDN_MSG__CURRENT_FIND_PREVIOUS:
|
||||
{
|
||||
Edn::String myDataString;
|
||||
SearchData::GetSearch(myDataString);
|
||||
m_bufferManager->Get(m_bufferID)->Search(myDataString, true, SearchData::GetCase(), SearchData::GetWrap(), SearchData::GetRegExp() );
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__CURRENT_FIND_NEXT:
|
||||
{
|
||||
Edn::String myDataString;
|
||||
SearchData::GetSearch(myDataString);
|
||||
m_bufferManager->Get(m_bufferID)->Search(myDataString, false, SearchData::GetCase(), SearchData::GetWrap(), SearchData::GetRegExp() );
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__CURRENT_REPLACE:
|
||||
{
|
||||
Edn::String myDataString;
|
||||
SearchData::GetReplace(myDataString);
|
||||
m_bufferManager->Get(m_bufferID)->Replace(myDataString);
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__CURRENT_REPLACE_ALL:
|
||||
break;
|
||||
case EDN_MSG__CURRENT_CLOSE:
|
||||
m_bufferManager->Remove(m_bufferID);
|
||||
m_bufferID = -1;
|
||||
SendMessage(EDN_MSG__BUFFER_CHANGE_CURRENT, m_bufferID);
|
||||
break;
|
||||
case EDN_MSG__CURRENT_UNDO:
|
||||
m_bufferManager->Get(m_bufferID)->Undo();
|
||||
break;
|
||||
case EDN_MSG__CURRENT_REDO:
|
||||
m_bufferManager->Get(m_bufferID)->Redo();
|
||||
break;
|
||||
case EDN_MSG__CURRENT_GOTO_LINE:
|
||||
if (dataID<0) {
|
||||
dataID = 0;
|
||||
}
|
||||
m_bufferManager->Get(m_bufferID)->JumpAtLine(dataID);
|
||||
break;
|
||||
case EDN_MSG__REFRESH_DISPLAY:
|
||||
break;
|
||||
case EDN_MSG__CURRENT_SET_CHARSET:
|
||||
m_bufferManager->Get(m_bufferID)->SetCharset((charset_te)dataID);
|
||||
break;
|
||||
}
|
||||
// Force redraw of the widget
|
||||
gtk_widget_queue_draw(m_widget);
|
||||
}
|
||||
|
||||
|
||||
|
||||
gboolean CodeView::CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
|
||||
//EDN_INFO("displayDraw_cb");
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
GtkAllocation allocation;
|
||||
gtk_widget_get_allocation(widget, &allocation);
|
||||
bool needRedrawAll = false;
|
||||
if (self->m_shawableAreaX != allocation.width) {
|
||||
needRedrawAll = true;
|
||||
self->m_shawableAreaX = allocation.width;
|
||||
}
|
||||
if (self->m_shawableAreaY != allocation.height) {
|
||||
needRedrawAll = true;
|
||||
self->m_shawableAreaY = allocation.height;
|
||||
}
|
||||
# elif defined( USE_GTK_VERSION_2_0)
|
||||
bool needRedrawAll = false;
|
||||
if (self->m_shawableAreaX != widget->allocation.width) {
|
||||
needRedrawAll = true;
|
||||
self->m_shawableAreaX = widget->allocation.width;
|
||||
}
|
||||
if (self->m_shawableAreaY != widget->allocation.height) {
|
||||
needRedrawAll = true;
|
||||
self->m_shawableAreaY = widget->allocation.height;
|
||||
}
|
||||
# endif
|
||||
if (true == needRedrawAll) {
|
||||
//updateScrollElement();
|
||||
self->m_bufferManager->Get(self->m_bufferID)->ForceReDraw(true);
|
||||
}
|
||||
EDN_INFO("Request a display of : " << self->m_shawableAreaX << "px * "<< self->m_shawableAreaY<<"px");
|
||||
/*
|
||||
EDN_INFO("widget width=%d", widget->allocation.width);
|
||||
EDN_INFO("widget height=%d", widget->allocation.height);
|
||||
*/
|
||||
|
||||
//EDN_INFO("BufferView Display");
|
||||
// Get the color Manager :
|
||||
ColorizeManager *myColorManager = NULL;
|
||||
myColorManager = ColorizeManager::getInstance();
|
||||
|
||||
//(void)m_bufferManager->Get(m_bufferID)->Display(m_displayParameters, m_shawableAreaX, m_shawableAreaY);
|
||||
DrawerManager monDrawer(widget, self->m_shawableAreaX, self->m_shawableAreaY);
|
||||
//EDN_INFO("Display buffer ID = " << m_bufferID);
|
||||
(void)self->m_bufferManager->Get(self->m_bufferID)->Display(monDrawer);
|
||||
// EDN_WARNING("Must display here ... ");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// sur : émis lors du premier affichage de la GtkDrawingArea
|
||||
gboolean CodeView::CB_displayInit( GtkWidget *widget, gpointer data)
|
||||
{
|
||||
CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
# ifdef USE_GTK_VERSION_3_0
|
||||
GtkAllocation allocation;
|
||||
gtk_widget_get_allocation(widget, &allocation);
|
||||
int32_t size_x = allocation.width;
|
||||
int32_t size_y = allocation.height;
|
||||
|
||||
self->m_shawableAreaX = allocation.width;
|
||||
self->m_shawableAreaY = allocation.height;
|
||||
# elif defined( USE_GTK_VERSION_2_0)
|
||||
int32_t size_x = widget->allocation.width;
|
||||
int32_t size_y = widget->allocation.height;
|
||||
|
||||
self->m_shawableAreaX = widget->allocation.width;
|
||||
self->m_shawableAreaY = widget->allocation.height;
|
||||
# endif
|
||||
EDN_INFO("Request a diplay of : "<< size_x <<"px * "<< size_y <<"px");
|
||||
|
||||
gtk_widget_queue_draw( widget );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gint CodeView::CB_focusGet( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
||||
{
|
||||
CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
# ifdef USE_GTK_VERSION_2_0
|
||||
GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
|
||||
# endif
|
||||
self->SendMessage(EDN_MSG__BUFFER_CHANGE_CURRENT, self->m_bufferID);
|
||||
EDN_INFO("Focus - In");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gint CodeView::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
||||
{
|
||||
//CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
|
||||
# ifdef USE_GTK_VERSION_2_0
|
||||
GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
|
||||
# endif
|
||||
EDN_INFO("Focus - out");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gint CodeView::CB_keyboardEvent(GtkWidget *widget, GdkEventKey *event, gpointer data)
|
||||
{
|
||||
CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
|
||||
char Utf8Out[10];
|
||||
bool controlKey;
|
||||
bool moveKey;
|
||||
int32_t key;
|
||||
// Convert input key :
|
||||
ConvertInput(event, Utf8Out, controlKey, moveKey, key);
|
||||
|
||||
if(event->type == GDK_KEY_PRESS) {
|
||||
if(false==controlKey) {
|
||||
self->m_bufferManager->Get(self->m_bufferID)->AddChar(Utf8Out);
|
||||
gtk_widget_queue_draw( widget );
|
||||
} else if (true == moveKey) {
|
||||
self->m_bufferManager->Get(self->m_bufferID)->cursorMove(key);
|
||||
gtk_widget_queue_draw( widget );
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
gint CodeView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
||||
{
|
||||
|
||||
CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
|
||||
// get focus on the widget
|
||||
gtk_widget_grab_focus(widget);
|
||||
if (event->button == 1) {
|
||||
if (event->type == GDK_BUTTON_PRESS) {
|
||||
//EDN_INFO("mouse-event BT1 ==> One Clicked %d, %d", (uint32_t)event->x, (uint32_t)event->y);
|
||||
self->m_bufferManager->Get(self->m_bufferID)->MouseEvent(event->x, event->y);
|
||||
gtk_widget_queue_draw( widget );
|
||||
self->m_buttunOneSelected = true;
|
||||
}else if (event->type == GDK_2BUTTON_PRESS) {
|
||||
//EDN_INFO("mouse-event BT1 ==> Double Clicked %d, %d", (uint32_t)event->x, (uint32_t)event->y);
|
||||
self->m_bufferManager->Get(self->m_bufferID)->MouseEventDouble();
|
||||
gtk_widget_queue_draw( widget );
|
||||
self->m_buttunOneSelected = true;
|
||||
}else if (event->type == GDK_3BUTTON_PRESS) {
|
||||
//EDN_INFO("mouse-event BT1 ==> Triple Clicked");
|
||||
self->m_bufferManager->Get(self->m_bufferID)->MouseEventTriple();
|
||||
gtk_widget_queue_draw( widget );
|
||||
self->m_buttunOneSelected = true;
|
||||
}else if (event->type == GDK_BUTTON_RELEASE) {
|
||||
//EDN_INFO("mouse-event BT1 ==> Realease");
|
||||
self->m_buttunOneSelected = false;
|
||||
self->m_bufferManager->Get(self->m_bufferID)->Copy(COPY_MIDDLE_BUTTON);
|
||||
}
|
||||
} else if (event->button == 2) {
|
||||
if (event->type == GDK_BUTTON_PRESS) {
|
||||
EDN_INFO("mouse-event BT2 PRESS");
|
||||
self->m_bufferManager->Get(self->m_bufferID)->MouseEvent(event->x, event->y);
|
||||
self->m_bufferManager->Get(self->m_bufferID)->Paste(COPY_MIDDLE_BUTTON);
|
||||
gtk_widget_queue_draw(widget);
|
||||
}
|
||||
} else if (event->button == 3) {
|
||||
if (event->type == GDK_BUTTON_PRESS) {
|
||||
EDN_INFO("mouse-event BT3 PRESS");
|
||||
}
|
||||
} else {
|
||||
EDN_INFO("mouse-event BT? PRESS");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
gint CodeView::CB_mouseMotionEvent( GtkWidget *widget, GdkEventMotion *event, gpointer data)
|
||||
{
|
||||
CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
|
||||
if (true == self->m_buttunOneSelected) {
|
||||
int x, y;
|
||||
GdkModifierType state;
|
||||
|
||||
if (event->is_hint) {
|
||||
gdk_window_get_pointer(event->window, &x, &y, &state);
|
||||
} else {
|
||||
x = event->x;
|
||||
y = event->y;
|
||||
state = (GdkModifierType)event->state;
|
||||
}
|
||||
if (x<0) {
|
||||
x = 0;
|
||||
}
|
||||
if (y<0) {
|
||||
y = 0;
|
||||
}
|
||||
//EDN_INFO("mouse-motion BT1 %d, %d", x, y);
|
||||
self->m_bufferManager->Get(self->m_bufferID)->MouseSelectFromCursorTo(x, y);
|
||||
gtk_widget_queue_draw( widget );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
gint CodeView::CB_mouseScrollEvent( GtkWidget *widget, GdkEventScroll *event, gpointer data)
|
||||
{
|
||||
CodeView * self = reinterpret_cast<CodeView*>(data);
|
||||
|
||||
if (event->direction == GDK_SCROLL_UP)
|
||||
{
|
||||
// up code
|
||||
//EDN_INFO("mouse-event GDK_SCROLL_UP");
|
||||
self->m_bufferManager->Get(self->m_bufferID)->ScrollUp();
|
||||
gtk_widget_queue_draw( widget );
|
||||
}
|
||||
else if (event->direction == GDK_SCROLL_DOWN)
|
||||
{
|
||||
// down code
|
||||
//EDN_INFO("mouse-event GDK_SCROLL_DOWN");
|
||||
self->m_bufferManager->Get(self->m_bufferID)->ScrollDown();
|
||||
gtk_widget_queue_draw( widget );
|
||||
} else {
|
||||
EDN_INFO("mouse-event SCROLL");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1,67 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file CodeView.h
|
||||
* @brief Editeur De N'ours : Code Viewer Widget (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 05/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __CODE_VIEW_H__
|
||||
#define __CODE_VIEW_H__
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "Singleton.h"
|
||||
#include "CodeView.h"
|
||||
#include "BufferManager.h"
|
||||
#include "Display.h"
|
||||
#include "MsgBroadcast.h"
|
||||
|
||||
class CodeView : public MsgBroadcast
|
||||
{
|
||||
public:
|
||||
// Constructeur
|
||||
CodeView(void);
|
||||
~CodeView(void);
|
||||
void OnMessage(int32_t id, int32_t dataID);
|
||||
GtkWidget *GetMainWidget(void);
|
||||
// sur : GTK+ callback :
|
||||
static gboolean CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, gpointer data);
|
||||
static gboolean CB_displayInit( GtkWidget *widget, gpointer data);
|
||||
static gint CB_focusGet( GtkWidget *widget, GdkEventFocus *event, gpointer data);
|
||||
static gint CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data);
|
||||
static gint CB_keyboardEvent( GtkWidget *widget, GdkEventKey *event, gpointer data);
|
||||
static gint CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data);
|
||||
static gint CB_mouseMotionEvent( GtkWidget *widget, GdkEventMotion *event, gpointer data);
|
||||
static gint CB_mouseScrollEvent( GtkWidget *widget, GdkEventScroll *event, gpointer data);
|
||||
|
||||
private:
|
||||
// main windows widget :
|
||||
GtkWidget * m_widget;
|
||||
// récupération des proprieter général...
|
||||
BufferManager * m_bufferManager;
|
||||
ColorizeManager * m_colorManager;
|
||||
int32_t m_shawableAreaX;
|
||||
int32_t m_shawableAreaY;
|
||||
int32_t m_bufferID;
|
||||
bool m_buttunOneSelected;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@@ -1,60 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file Search.h
|
||||
* @brief Editeur De N'ours : Search system (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 03/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __SEARCH_H__
|
||||
#define __SEARCH_H__
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "Singleton.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
||||
class MainAreaView: public Singleton<MainAreaView>
|
||||
{
|
||||
friend class Singleton<MainAreaView>;
|
||||
// specific for sigleton system...
|
||||
private:
|
||||
// Constructeur
|
||||
MainAreaView(void);
|
||||
~MainAreaView(void);
|
||||
|
||||
public:
|
||||
GtkWidget * GetWidget(void);
|
||||
void SplitV(void); // split current window vertically (max 1 by section)
|
||||
void SplitH(void); // split current window horizontaly (max 3)
|
||||
void Remove(void); // remove current selected element
|
||||
//ViewArea * GetCurent(void); // Get a pointer on the current displayed area
|
||||
|
||||
|
||||
private:
|
||||
GtkWidget * m_localDialog; //!< local dialog element
|
||||
ViewArea * m_EntrySearch[6];
|
||||
uint8_t m_CurentSelected
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,191 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file MainWindows.cpp
|
||||
* @brief Editeur De N'ours : main Windows diplayer (Sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 04/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "MainWindows.h"
|
||||
#include "CodeView.h"
|
||||
#include "ClipBoard.h"
|
||||
#include "BufferView.h"
|
||||
#include "AccelKey.h"
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "MainWindows"
|
||||
|
||||
MainWindows::MainWindows(void) : MsgBroadcast("Main Windows", EDN_CAT_GUI)
|
||||
{
|
||||
|
||||
m_mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
// select the program icone
|
||||
gtk_window_set_default_icon_name("text-editor");
|
||||
|
||||
// Default size open windows
|
||||
gtk_window_set_default_size(GTK_WINDOW(m_mainWindow), 800, 600);
|
||||
|
||||
// enable the close signal of the windows
|
||||
g_signal_connect(G_OBJECT(m_mainWindow), "delete-event", G_CALLBACK(OnQuit), this);
|
||||
//g_signal_connect(G_OBJECT(m_mainWindow), "destroy", G_CALLBACK(OnQuit), this);
|
||||
|
||||
// Create a vertical box for stacking the menu and editor widgets in.
|
||||
GtkWidget *vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(m_mainWindow), vbox);
|
||||
|
||||
// Set key Accelerator :
|
||||
AccelKey::getInstance()->LinkCommonAccel(GTK_WINDOW(m_mainWindow));
|
||||
|
||||
// Create the menu bar.
|
||||
gtk_box_pack_start( GTK_BOX (vbox), m_MenuBar.GetWidget(), FALSE, FALSE, 0);
|
||||
|
||||
// **********************************************************
|
||||
// * Horizontal ELEMENTS : *
|
||||
// **********************************************************
|
||||
// Create a vertical box for stacking the menu and editor widgets in.
|
||||
GtkWidget *hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER (vbox), hbox);
|
||||
// create the toolbar :
|
||||
# if USE_GTK_VERSION_2_0
|
||||
gtk_box_pack_start(GTK_BOX(hbox), m_ToolBar.GetWidget(), FALSE, FALSE, 0);
|
||||
# endif
|
||||
// TreeView :
|
||||
gtk_box_pack_start(GTK_BOX(hbox), m_BufferView.GetMainWidget(), FALSE, TRUE, 1);
|
||||
|
||||
// Tex displayer :
|
||||
gtk_box_pack_start( GTK_BOX (hbox), m_CodeView.GetMainWidget(), TRUE, TRUE, 0);
|
||||
|
||||
// Create the status bar
|
||||
gtk_box_pack_end(GTK_BOX(vbox), m_StatusBar.GetWidget(), FALSE, FALSE, 0);
|
||||
|
||||
// recursive version of gtk_widget_show
|
||||
gtk_widget_show_all(m_mainWindow);
|
||||
|
||||
}
|
||||
|
||||
MainWindows::~MainWindows(void)
|
||||
{
|
||||
/*
|
||||
if (NULL != m_DlgSearch) {
|
||||
delete m_DlgSearch;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void MainWindows::SetTitle(Edn::String &fileName, bool isModify)
|
||||
{
|
||||
Edn::String tmp = "";
|
||||
if (fileName != "") {
|
||||
tmp += fileName;
|
||||
tmp += " - ";
|
||||
}
|
||||
tmp += "Edn";
|
||||
gtk_window_set_title(GTK_WINDOW(m_mainWindow), tmp.c_str());
|
||||
}
|
||||
|
||||
void MainWindows::OnMessage(int32_t id, int32_t dataID)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case EDN_MSG__BUFFER_CHANGE_CURRENT:
|
||||
// change Title :
|
||||
// TODO : String error when remove the error with -1;
|
||||
if (-1 == dataID) {
|
||||
Edn::String plop = "";
|
||||
SetTitle(plop, false );
|
||||
} else {
|
||||
Buffer *mybuf = BufferManager::getInstance()->Get(dataID);
|
||||
if (NULL != mybuf) {
|
||||
Edn::String plop = mybuf->GetName();
|
||||
SetTitle(plop, mybuf->IsModify() );
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__QUIT:
|
||||
OnQuit(m_mainWindow, this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool MainWindows::OnQuit(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
EDN_INFO("quit requested");
|
||||
// dlg to confirm the quit event :
|
||||
GtkWidget *p_dialog = gtk_dialog_new_with_buttons("Exit",
|
||||
GTK_WINDOW(widget),
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_YES, GTK_RESPONSE_YES,
|
||||
GTK_STOCK_NO, GTK_RESPONSE_NO,
|
||||
NULL);
|
||||
GtkWidget *p_label = gtk_label_new ("Do you want exit Edn?");
|
||||
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area( GTK_DIALOG(p_dialog) )), p_label, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(p_label);
|
||||
|
||||
switch (gtk_dialog_run (GTK_DIALOG (p_dialog)))
|
||||
{
|
||||
case GTK_RESPONSE_YES:
|
||||
gtk_widget_destroy (p_dialog);
|
||||
|
||||
break;
|
||||
case GTK_RESPONSE_NO:
|
||||
gtk_widget_destroy (p_dialog);
|
||||
// do not close the windows
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
gtk_main_quit();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
void MainWindows::OnMenuAbout(wxCommandEvent & WXUNUSED(event))
|
||||
{
|
||||
//EDN_INFO("MainWindows::OnMenuAbout (event)");
|
||||
wxAboutDialogInfo info;
|
||||
info.SetName(wxT("edn"));
|
||||
info.SetVersion(wxT("0.1.0 pre-Beta"));
|
||||
info.SetDescription(wxT("Editeur De N'ours, l'Editeur Desoxyribo-Nucleique\n"
|
||||
"Source Code Editor"));
|
||||
info.SetCopyright(wxT( "Copyright 2010 Edouard DUPIN, all right reserved\n"
|
||||
"This software is distributed in the hope that it will be useful, but WITHOUT\n"
|
||||
"ANY WARRANTY\n\n"
|
||||
"Licence summary : \n"
|
||||
" You can modify and redistribute the sources code and binaries.\n"
|
||||
" You can send me the bug-fix\n"
|
||||
" You can not earn money with this Software (if the source extract from Edn\n"
|
||||
" represent less than 50% of original Sources)\n"
|
||||
"Term of the licence in in the file licence.txt"));
|
||||
wxAboutBox(info);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
@@ -1,183 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file WindowsManager.cpp
|
||||
* @brief Editeur De N'ours : Windows creation, pop up, destruction ... (Sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 20/06/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "WindowsManager.h"
|
||||
#include "MainWindows.h"
|
||||
#include "Edn.h"
|
||||
#include "Search.h"
|
||||
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "WindowsManager"
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
WindowsManager::WindowsManager(void) : MsgBroadcast("Windows Manager", EDN_CAT_GUI_MANAGER)
|
||||
{
|
||||
m_currentBufferID = -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
WindowsManager::~WindowsManager(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void WindowsManager::OnMessage(int32_t id, int32_t dataID)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case EDN_MSG__BUFFER_CHANGE_CURRENT:
|
||||
m_currentBufferID = dataID;
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_MAIN_WINDOWS:
|
||||
EDN_INFO("Request opening MAIN_WINDOWS");
|
||||
m_mainWindow = MainWindows::getInstance();
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_SEARCH:
|
||||
EDN_INFO("Request opening SEARCH");
|
||||
{
|
||||
Search *myInstance = Search::getInstance();
|
||||
myInstance->Display();
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_PREFERENCE:
|
||||
EDN_INFO("Request opening PREFERENCE");
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_REPLACE:
|
||||
EDN_INFO("Request opening REPLACE");
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_OPEN_FILE:
|
||||
EDN_INFO("Request opening OPEN_FILE");
|
||||
{
|
||||
BufferManager *myBufferManager = NULL;
|
||||
myBufferManager = BufferManager::getInstance();
|
||||
|
||||
GtkWidget *dialog = gtk_file_chooser_dialog_new( "Open File", NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL, // button text
|
||||
GTK_RESPONSE_CANCEL, // response id
|
||||
GTK_STOCK_OPEN, // button text
|
||||
GTK_RESPONSE_ACCEPT, // response id
|
||||
NULL); // end button/response list
|
||||
if( -1 != m_currentBufferID
|
||||
&& true == myBufferManager->Exist(m_currentBufferID) )
|
||||
{
|
||||
Edn::String fileFolder = myBufferManager->Get(m_currentBufferID)->GetFolder();
|
||||
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER(dialog), fileFolder.c_str());
|
||||
//gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER(dialog), "Untitled document");
|
||||
}
|
||||
if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
Edn::String myfilename;
|
||||
myfilename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog));
|
||||
|
||||
if (false == myBufferManager->Exist(myfilename) ) {
|
||||
int32_t openID = myBufferManager->Open(myfilename);
|
||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, openID);
|
||||
} else {
|
||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, myBufferManager->GetId(myfilename));
|
||||
}
|
||||
}
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_SAVE_AS:
|
||||
EDN_INFO("Request opening SAVE_AS");
|
||||
// save only if one element is selected
|
||||
if (BufferManager::getInstance()->Size() > 0) {
|
||||
int32_t idSelected;
|
||||
if(-1 == dataID) {
|
||||
idSelected = BufferManager::getInstance()->GetSelected();
|
||||
} else {
|
||||
idSelected = dataID;
|
||||
}
|
||||
Buffer *myBuffer = BufferManager::getInstance()->Get(idSelected);
|
||||
Edn::String tmpString = "Save as file : ";
|
||||
tmpString += myBuffer->GetShortName().c_str();
|
||||
GtkWidget *dialog = gtk_file_chooser_dialog_new( tmpString.c_str(), NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
GTK_STOCK_CANCEL, // button text
|
||||
GTK_RESPONSE_CANCEL, // response id
|
||||
GTK_STOCK_SAVE, // button text
|
||||
GTK_RESPONSE_ACCEPT, // response id
|
||||
NULL); // end button/response list
|
||||
if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
Edn::String myfilename;
|
||||
myfilename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog));
|
||||
|
||||
myBuffer->SetName(myfilename);
|
||||
myBuffer->Save();
|
||||
|
||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, idSelected);
|
||||
}
|
||||
gtk_widget_destroy(dialog); // implicitly hides dialog
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__GUI_SHOW_ABOUT:
|
||||
{
|
||||
// dlg to confirm the quit event :
|
||||
GtkWidget *p_dialog = gtk_dialog_new_with_buttons("About",
|
||||
NULL,
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_YES, GTK_RESPONSE_YES,
|
||||
GTK_STOCK_NO, GTK_RESPONSE_NO,
|
||||
NULL);
|
||||
GtkWidget *p_label = gtk_label_new ("Do you want exit Edn?");
|
||||
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area( GTK_DIALOG(p_dialog) )), p_label, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(p_label);
|
||||
int32_t result = gtk_dialog_run (GTK_DIALOG (p_dialog));
|
||||
gtk_widget_destroy(p_dialog);
|
||||
switch (result)
|
||||
{
|
||||
case GTK_RESPONSE_YES:
|
||||
gtk_main_quit();
|
||||
break;
|
||||
case GTK_RESPONSE_NO:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
@@ -1,297 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file Highlight.c
|
||||
* @brief Editeur De N'ours : Hightlightning Specific
|
||||
* @author Edouard DUPIN
|
||||
* @date 14/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "Highlight.h"
|
||||
#include "tinyxml.h"
|
||||
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "Highlight"
|
||||
|
||||
|
||||
void Highlight::ParseRules(TiXmlNode *child, std::vector<HighlightPattern*> &mListPatern, int32_t level)
|
||||
{
|
||||
// Create the patern ...
|
||||
HighlightPattern *myPattern = new HighlightPattern();
|
||||
// parse under Element
|
||||
myPattern->ParseRules(child, level);
|
||||
// add element in the list
|
||||
mListPatern.push_back(myPattern);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Highlight::Highlight(Edn::String &xmlFilename)
|
||||
{
|
||||
|
||||
TiXmlDocument XmlDocument;
|
||||
// open the curent File
|
||||
bool loadError = XmlDocument.LoadFile(xmlFilename.c_str());
|
||||
if (false == loadError) {
|
||||
EDN_ERROR( "can not load Hightlight XML: PARSING error: \"" << xmlFilename.c_str() << "\"");
|
||||
return;
|
||||
}
|
||||
TiXmlElement* root = XmlDocument.FirstChildElement( "EdnLang" );
|
||||
if (NULL == root) {
|
||||
EDN_ERROR( "can not load Hightlight XML: main node not find: \"EdnLang\"");
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t level1 = 0;
|
||||
int32_t level2 = 0;
|
||||
TiXmlNode * child = root->FirstChild();
|
||||
while(NULL != child)
|
||||
{
|
||||
if (child->Type()==TiXmlNode::TINYXML_COMMENT) {
|
||||
// nothing to do ...
|
||||
} else if (!strcmp(child->Value(), "ext")) {
|
||||
const char *myData = child->ToElement()->GetText();
|
||||
if (NULL != myData) {
|
||||
//EDN_INFO(PFX"(l %d) node fined : %s=\"%s\"", child->Row(), child->Value() , myData);
|
||||
Edn::String myEdnData = myData;
|
||||
m_listExtentions.push_back(myEdnData);
|
||||
}
|
||||
} else if (!strcmp(child->Value(), "pass1")) {
|
||||
// Get sub Nodes ...
|
||||
TiXmlNode *passChild = child->FirstChild();
|
||||
while (NULL != passChild) {
|
||||
if (passChild->Type()==TiXmlNode::TINYXML_COMMENT) {
|
||||
// nothing to do ...
|
||||
} else if (!strcmp(passChild->Value(), "rule")) {
|
||||
ParseRules(passChild, m_listHighlightPass1, level1++);
|
||||
} else {
|
||||
EDN_ERROR("(l "<< passChild->Row() << ") node not suported : \""<< passChild->Value() << "\" must be [rule]" );
|
||||
}
|
||||
// get the next node element :
|
||||
passChild = passChild->NextSibling();
|
||||
}
|
||||
} else if (!strcmp(child->Value(), "pass2")) {
|
||||
// Get sub Nodes ...
|
||||
TiXmlNode *passChild = child->FirstChild();
|
||||
while (NULL != passChild) {
|
||||
if (passChild->Type()==TiXmlNode::TINYXML_COMMENT) {
|
||||
// nothing to do ...
|
||||
} else if (!strcmp(passChild->Value(), "rule")) {
|
||||
ParseRules(passChild, m_listHighlightPass2, level2++);
|
||||
} else {
|
||||
EDN_ERROR("(l "<< passChild->Row() << ") node not suported : \""<< passChild->Value() << "\" must be [rule]" );
|
||||
}
|
||||
// get the next node element :
|
||||
passChild = passChild->NextSibling();
|
||||
}
|
||||
} else {
|
||||
EDN_ERROR("(l "<< child->Row() << ") node not suported : \""<< child->Value() << "\" must be [ext,pass1,pass2]" );
|
||||
}
|
||||
// get the next node element :
|
||||
child = child->NextSibling();
|
||||
}
|
||||
}
|
||||
|
||||
Highlight::~Highlight(void)
|
||||
{
|
||||
uint32_t i;
|
||||
// clean all Element
|
||||
for (i=0; i< m_listHighlightPass1.size(); i++) {
|
||||
delete(m_listHighlightPass1[i]);
|
||||
}
|
||||
// clear the compleate list
|
||||
m_listHighlightPass1.clear();
|
||||
}
|
||||
|
||||
|
||||
bool Highlight::HasExtention(Edn::String &ext)
|
||||
{
|
||||
uint32_t i;
|
||||
for (i=0; i<m_listExtentions.size(); i++) {
|
||||
if (ext == m_listExtentions[i] ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Highlight::FileNameCompatible(Edn::String &fileName)
|
||||
{
|
||||
uint32_t i;
|
||||
int32_t posCopy = fileName.FindBack('/');
|
||||
Edn::String shortFilename;
|
||||
if (-1 != posCopy) {
|
||||
shortFilename = fileName.Extract(posCopy+1);
|
||||
} else {
|
||||
shortFilename = fileName;
|
||||
}
|
||||
posCopy = shortFilename.FindBack('.');
|
||||
Edn::String extention;
|
||||
if (-1 != posCopy) {
|
||||
extention = shortFilename.Extract(posCopy);
|
||||
} else {
|
||||
extention = shortFilename;
|
||||
}
|
||||
EDN_DEBUG(" try to find : in \"" << fileName.c_str() << "\" shortfilename\"" << shortFilename.c_str() << "\" extention:\"" << extention.c_str() << "\" ");
|
||||
|
||||
for (i=0; i<m_listExtentions.size(); i++) {
|
||||
if (extention == m_listExtentions[i] ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void Highlight::Display(void)
|
||||
{
|
||||
uint32_t i;
|
||||
EDN_INFO("List of ALL Highlight : ");
|
||||
for (i=0; i< m_listExtentions.size(); i++) {
|
||||
EDN_INFO(" Extention : " << i << " : " << m_listExtentions[i].c_str() );
|
||||
}
|
||||
// Display all elements
|
||||
for (i=0; i< m_listHighlightPass1.size(); i++) {
|
||||
EDN_INFO(" " << i << " Pass 1 : " << m_listHighlightPass1[i]->GetName().c_str() );
|
||||
//m_listHighlightPass1[i]->Display();
|
||||
}
|
||||
// Display all elements
|
||||
for (i=0; i< m_listHighlightPass2.size(); i++) {
|
||||
EDN_INFO(" " << i << " Pass 2 : " << m_listHighlightPass2[i]->GetName().c_str() );
|
||||
//m_listHighlightPass2[i]->Display();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Highlight::Parse(int32_t start, int32_t stop, std::vector<colorInformation_ts> &metaData, int32_t &addingPos, EdnVectorBuf &buffer, int32_t elementID)
|
||||
{
|
||||
if (0 > addingPos) {
|
||||
addingPos = 0;
|
||||
}
|
||||
/*int32_t emptyId = -1;
|
||||
for (i=0; i< (int32_t)metaData.size(); i++) {
|
||||
|
||||
}*/
|
||||
//EDN_DEBUG("Parse element " << elementID << " / " << m_listHighlightPass1.size() << " ==> position search: (" << start << "," << stop << ")" );
|
||||
if (elementID >= (int32_t)m_listHighlightPass1.size() ){
|
||||
//EDN_DEBUG("Return at " << elementID << " / " << m_listHighlightPass1.size() );
|
||||
return;
|
||||
}
|
||||
int32_t elementStart = start;
|
||||
int32_t elementStop = stop;
|
||||
resultFind_te ret = HLP_FIND_OK;
|
||||
colorInformation_ts resultat;
|
||||
while (HLP_FIND_ERROR != ret && elementStart<elementStop) {
|
||||
ret = m_listHighlightPass1[elementID]->Find(elementStart, elementStop, resultat, buffer);
|
||||
if (HLP_FIND_ERROR != ret) {
|
||||
//EDN_INFO("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" );
|
||||
// Add curent element in the list ...
|
||||
if (HLP_FIND_OK_NO_END == ret) {
|
||||
// find if we have a next element with th save Pointer and not higher the this one
|
||||
int32_t findNextElement = -1;
|
||||
int32_t i;
|
||||
int32_t curentLevel = ((HighlightPattern*)resultat.patern)->GetLevel();
|
||||
for (i=addingPos; i< (int32_t)metaData.size(); i++) {
|
||||
if (curentLevel > ((HighlightPattern*)metaData[i].patern)->GetLevel() ) {
|
||||
//EDN_DEBUG(" -> Find upper element at "<< i );
|
||||
break;
|
||||
} else if (curentLevel < ((HighlightPattern*)metaData[i].patern)->GetLevel() ) {
|
||||
findNextElement = i;
|
||||
//EDN_DEBUG(" -> Find under element at "<< i );
|
||||
}
|
||||
if (metaData[i].patern == resultat.patern)
|
||||
{
|
||||
findNextElement = i;
|
||||
//EDN_DEBUG(" -> Find a same element at "<< i );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (-1 != findNextElement) {
|
||||
// if not find a end, we need to search the end of this one and parse all data inside...
|
||||
int32_t newEnd = buffer.Size();
|
||||
if (findNextElement >= (int32_t)metaData.size()-1) {
|
||||
// Remove old element :
|
||||
//EDN_DEBUG(" --> Remove : " << addingPos << "==>" << (int32_t)metaData.size() << " (end)" );
|
||||
metaData.erase(metaData.begin()+addingPos,metaData.end());
|
||||
} else {
|
||||
// Remove old element :
|
||||
//EDN_DEBUG(" --> Remove : " << addingPos << "==>" << findNextElement+1 );
|
||||
metaData.erase(metaData.begin()+addingPos,metaData.begin()+findNextElement+1);
|
||||
newEnd = metaData[addingPos].beginStart-1;
|
||||
}
|
||||
// Regenerate a local parsing : in a higher range of text
|
||||
Parse(elementStart, edn_max(newEnd, stop), metaData, addingPos, buffer, elementID);
|
||||
// Break the curent process, beacause we reparse the data in all range...
|
||||
return;
|
||||
} else {
|
||||
//EDN_DEBUG(" --> No element removed " );
|
||||
metaData.insert(metaData.begin() + addingPos, resultat);
|
||||
//EDN_DEBUG("INSERT at "<< addingPos << " S=" << resultat.beginStart << " E=" << resultat.endStop );
|
||||
}
|
||||
} else {
|
||||
metaData.insert(metaData.begin() + addingPos, resultat);
|
||||
//EDN_DEBUG("INSERT at "<< addingPos << " S=" << resultat.beginStart << " E=" << resultat.endStop );
|
||||
}
|
||||
// parse the under element :
|
||||
Parse(elementStart, resultat.beginStart-1, metaData, addingPos, buffer, elementID+1);
|
||||
addingPos++;
|
||||
elementStart = resultat.endStop;
|
||||
}
|
||||
}
|
||||
// parse the under element :
|
||||
Parse(elementStart, elementStop, metaData, addingPos, buffer, elementID+1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief second pass of the hightlight
|
||||
*
|
||||
*/
|
||||
void Highlight::Parse2(int32_t start, int32_t stop, std::vector<colorInformation_ts> &metaData, EdnVectorBuf &buffer, int32_t elementID)
|
||||
{
|
||||
if (elementID >= (int32_t)m_listHighlightPass2.size() ){
|
||||
return;
|
||||
}
|
||||
int32_t elementStart = start;
|
||||
int32_t elementStop = stop;
|
||||
resultFind_te ret = HLP_FIND_OK;
|
||||
colorInformation_ts resultat;
|
||||
while (HLP_FIND_ERROR != ret && elementStart<elementStop) {
|
||||
if (m_listHighlightPass2[elementID]!=NULL) {
|
||||
ret = m_listHighlightPass2[elementID]->Find(elementStart, elementStop, resultat, buffer);
|
||||
} else {
|
||||
ret = HLP_FIND_ERROR;
|
||||
}
|
||||
if (HLP_FIND_ERROR != ret) {
|
||||
//EDN_INFO("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" );
|
||||
// parse the under element :
|
||||
Parse2(elementStart, resultat.beginStart, metaData, buffer, elementID+1);
|
||||
// Add curent element in the list ...
|
||||
metaData.push_back(resultat);
|
||||
elementStart = resultat.endStop;
|
||||
}
|
||||
}
|
||||
// parse the under element :
|
||||
Parse2(elementStart, elementStop, metaData, buffer, elementID+1);
|
||||
}
|
||||
|
||||
|
@@ -1,77 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file Highlight.h
|
||||
* @brief Editeur De N'ours : Hightlightning Specific (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 14/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __HIGHLIGHT_H__
|
||||
#define __HIGHLIGHT_H__
|
||||
|
||||
|
||||
class Highlight;
|
||||
class HighlightPattern;
|
||||
|
||||
extern "C" {
|
||||
typedef struct
|
||||
{
|
||||
int32_t beginStart;
|
||||
int32_t beginStop;
|
||||
int32_t endStart;
|
||||
int32_t endStop;
|
||||
bool notEnded;
|
||||
HighlightPattern * patern; // pointer on class :
|
||||
} colorInformation_ts;
|
||||
}
|
||||
|
||||
#include <vector>
|
||||
#include "HighlightPattern.h"
|
||||
#include "Colorize.h"
|
||||
#include "Edn.h"
|
||||
#include "EdnVectorBuf.h"
|
||||
#include "tinyxml.h"
|
||||
|
||||
class Highlight {
|
||||
public:
|
||||
// Constructeur
|
||||
Highlight(Edn::String &xmlFilename);
|
||||
~Highlight(void);
|
||||
bool HasExtention(Edn::String &ext);
|
||||
bool FileNameCompatible(Edn::String &fileName);
|
||||
void Display(void);
|
||||
void Parse( int32_t start, int32_t stop, std::vector<colorInformation_ts> &metaData, int32_t &addingPos, EdnVectorBuf &buffer, int32_t elementID=0);
|
||||
void Parse2(int32_t start, int32_t stop, std::vector<colorInformation_ts> &metaData, EdnVectorBuf &buffer, int32_t elementID=0);
|
||||
|
||||
private:
|
||||
void ParseRules(TiXmlNode *child, std::vector<HighlightPattern*> &mListPatern, int32_t level);
|
||||
Edn::String m_styleName; //!< curent style name (like "c++" or "c" or "script Bash")
|
||||
std::vector<Edn::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<HighlightPattern*> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 ==> When we display the buffer( only the display area (100 lines)) )
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -1,104 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file HighlightManager.cpp
|
||||
* @brief Editeur De N'ours : Hightlining Manager
|
||||
* @author Edouard DUPIN
|
||||
* @date 16/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "HighlightManager.h"
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "HighlightManager"
|
||||
|
||||
HighlightManager::HighlightManager(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
HighlightManager::~HighlightManager(void)
|
||||
{
|
||||
listHighlight.clear();
|
||||
}
|
||||
|
||||
|
||||
Highlight *HighlightManager::Get(Edn::String &fileName)
|
||||
{
|
||||
uint32_t i;
|
||||
for (i=0; i<listHighlight.size(); i++) {
|
||||
if (true == listHighlight[i]->FileNameCompatible(fileName) ) {
|
||||
return listHighlight[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool HighlightManager::Exist(Edn::String &fileName)
|
||||
{
|
||||
uint32_t i;
|
||||
for (i=0; i<listHighlight.size(); i++) {
|
||||
if (true == listHighlight[i]->FileNameCompatible(fileName) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void HighlightManager::loadLanguages(void)
|
||||
{
|
||||
Edn::String homedir;
|
||||
#ifdef NDEBUG
|
||||
homedir = getenv("HOME");
|
||||
homedir += "/.edn/";
|
||||
#else
|
||||
homedir = "./";
|
||||
#endif
|
||||
|
||||
Edn::String xmlFilename = homedir;
|
||||
xmlFilename += "data/lang_c.xml";
|
||||
Highlight *myHightline = new Highlight(xmlFilename);
|
||||
listHighlight.push_back(myHightline);
|
||||
|
||||
xmlFilename = homedir;
|
||||
xmlFilename += "data/lang_boo.xml";
|
||||
myHightline = new Highlight(xmlFilename);
|
||||
listHighlight.push_back(myHightline);
|
||||
|
||||
xmlFilename = homedir;
|
||||
xmlFilename += "data/lang_Makefile.xml";
|
||||
myHightline = new Highlight(xmlFilename);
|
||||
listHighlight.push_back(myHightline);
|
||||
|
||||
xmlFilename = homedir;
|
||||
xmlFilename += "data/lang_asm.xml";
|
||||
myHightline = new Highlight(xmlFilename);
|
||||
listHighlight.push_back(myHightline);
|
||||
|
||||
xmlFilename = homedir;
|
||||
xmlFilename += "data/lang_xml.xml";
|
||||
myHightline = new Highlight(xmlFilename);
|
||||
listHighlight.push_back(myHightline);
|
||||
|
||||
myHightline->Display();
|
||||
}
|
||||
|
@@ -1,85 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file HighlightPattern.h
|
||||
* @brief Editeur De N'ours : Hightlight Patern (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 14/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __HIGHLIGHT_PATTERN_H__
|
||||
#define __HIGHLIGHT_PATTERN_H__
|
||||
|
||||
class HighlightPattern;
|
||||
|
||||
#include "Edn.h"
|
||||
#include "EdnRegExp.h"
|
||||
#include "Colorize.h"
|
||||
#include "EdnVectorBin.h"
|
||||
#include "tinyxml.h"
|
||||
|
||||
typedef enum {
|
||||
HLP_FIND_ERROR,
|
||||
HLP_FIND_OK,
|
||||
HLP_FIND_OK_NO_END,
|
||||
}resultFind_te;
|
||||
|
||||
class HighlightPattern;
|
||||
|
||||
class HighlightPattern {
|
||||
public:
|
||||
// Constructeur
|
||||
HighlightPattern(void);
|
||||
~HighlightPattern(void);
|
||||
|
||||
void SetName(Edn::String &name) { m_paternName = name;};
|
||||
Edn::String GetName(void) { return m_paternName;};
|
||||
|
||||
void SetPaternStart(Edn::String ®Exp);
|
||||
void SetPaternStop(Edn::String ®Exp);
|
||||
void SetColor(Edn::String &colorName);
|
||||
void SetEscapeChar(Edn::String &EscapeChar);
|
||||
void SetMultiline(bool enable) { m_multiline = enable; };
|
||||
|
||||
void SetLevel(int32_t newLevel) { m_level = newLevel; };
|
||||
int32_t GetLevel(void) { return m_level; };
|
||||
|
||||
bool IsEnable(void);
|
||||
void Display(void);
|
||||
resultFind_te Find(int32_t start, int32_t stop, colorInformation_ts &resultat, EdnVectorBuf &buffer);
|
||||
Colorize * GetColor(void) { return m_color; };
|
||||
void ParseRules(TiXmlNode *child, int32_t level);
|
||||
|
||||
private:
|
||||
int32_t m_level; //!< Level of the pattern ==> this is to overwrite next pattern when we create an higher ....
|
||||
Edn::String m_paternName; //!< Current style name (like "c++" or "c" or "script Bash")
|
||||
Edn::String m_colorName; //!< Current color name
|
||||
Colorize * m_color; //!< Link to the color manager
|
||||
EdnRegExp * m_regExpStart; //!< Start of Regular expression
|
||||
EdnRegExp * m_regExpStop; //!< Stop of Regular Expression
|
||||
bool m_haveStopPatern; //!< Stop patern presence
|
||||
bool m_multiline; //!< The patern is multiline
|
||||
char m_escapeChar; //!< Escape char to prevent exeit of patern ....
|
||||
EdnVectorBin<HighlightPattern *> m_subPatern; //!< Under patern of this one
|
||||
// EdnVectorBin<HighlightPattern *> m_subColor; //!< Under Color in the start RegExp ...
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -1,235 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file CTagsManager.cpp
|
||||
* @brief Editeur De N'ours : Ctags manager : acces to the ctags file (Sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 15/07/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "Edn.h"
|
||||
#include "CTagsManager.h"
|
||||
#include "ClipBoard.h"
|
||||
#include "BufferManager.h"
|
||||
|
||||
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "CTagsManager"
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
CTagsManager::CTagsManager(void) : MsgBroadcast("C-Tags Manager", EDN_CAT_CTAGS)
|
||||
{
|
||||
m_tagFilename = "";
|
||||
m_tagFolderBase = "";
|
||||
m_ctagFile = NULL;
|
||||
m_historyPos = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
CTagsManager::~CTagsManager(void)
|
||||
{
|
||||
if(0 != m_historyList.Size()) {
|
||||
for (int32_t iii=0; iii< m_historyList.Size(); iii++) {
|
||||
delete(m_historyList[iii]);
|
||||
}
|
||||
m_historyList.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
Edn::String CTagsManager::GetFolder(Edn::String &inputString)
|
||||
{
|
||||
char tmpVal[4096];
|
||||
strncpy(tmpVal, inputString.c_str(), 4096);
|
||||
tmpVal[4096-1] = '\0';
|
||||
char *ptr = strrchr(tmpVal, '/');
|
||||
if (NULL == ptr) {
|
||||
ptr = strrchr(tmpVal, '\\');
|
||||
}
|
||||
Edn::String out = "./";
|
||||
if (NULL != ptr) {
|
||||
*ptr = '\0';
|
||||
out = tmpVal;
|
||||
out+= '/';
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
void CTagsManager::OnMessage(int32_t id, int32_t dataID)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case EDN_MSG__BUFFER_CHANGE_CURRENT:
|
||||
m_currentSelectedID = dataID;
|
||||
break;
|
||||
case EDN_MSG__OPEN_CTAGS:
|
||||
EDN_INFO("Request opening ctag file");
|
||||
{
|
||||
GtkWidget *dialog = gtk_file_chooser_dialog_new( "Open Exuberant Ctags File", NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL, // button text
|
||||
GTK_RESPONSE_CANCEL, // response id
|
||||
GTK_STOCK_OPEN, // button text
|
||||
GTK_RESPONSE_ACCEPT, // response id
|
||||
NULL); // end button/response list
|
||||
if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
|
||||
{
|
||||
// open the new one :
|
||||
m_tagFilename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog));
|
||||
m_tagFolderBase = GetFolder(m_tagFilename);
|
||||
LoadTagFile();
|
||||
}
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
break;
|
||||
case EDN_MSG__RELOAD_CTAGS:
|
||||
LoadTagFile();
|
||||
break;
|
||||
case EDN_MSG__JUMP_TO_CURRENT_SELECTION:
|
||||
JumpTo();
|
||||
break;
|
||||
case EDN_MSG__JUMP_BACK:
|
||||
EDN_INFO("TODO .... jump back");
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CTagsManager::LoadTagFile(void)
|
||||
{
|
||||
tagFileInfo info;
|
||||
|
||||
// close previous tag file
|
||||
if (NULL != m_ctagFile) {
|
||||
tagsClose(m_ctagFile);
|
||||
m_ctagFile = NULL;
|
||||
}
|
||||
if (m_tagFilename == "") {
|
||||
return;
|
||||
}
|
||||
// load (open) the tag file :
|
||||
EDN_INFO("try to open tag file : " << m_tagFilename.c_str());
|
||||
m_ctagFile = tagsOpen(m_tagFilename.c_str(), &info);
|
||||
if (NULL != m_ctagFile) {
|
||||
EDN_INFO("open exuberant Ctags file is OK ...");
|
||||
} else {
|
||||
EDN_INFO("Error to open ctags file ...");
|
||||
}
|
||||
}
|
||||
|
||||
void CTagsManager::AddToHistory(int32_t bufferID)
|
||||
{
|
||||
// check tho history position : remove if needed
|
||||
if (m_historyPos < edn_max(m_historyList.Size()-1, 0) ) {
|
||||
for(int32_t iii= m_historyPos; iii < m_historyList.Size(); iii++) {
|
||||
delete(m_historyList[iii]);
|
||||
}
|
||||
m_historyList.Erase(m_historyPos, m_historyList.Size() - m_historyPos);
|
||||
}
|
||||
// add the current element
|
||||
BufferManager *myBufferManager = BufferManager::getInstance();
|
||||
Edn::String currentFilename = myBufferManager->Get(bufferID)->GetName();
|
||||
int32_t currentLineId = 0;
|
||||
Edn::File * currentFile = new Edn::File(currentFilename);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CTagsManager::JumpTo(void)
|
||||
{
|
||||
if (NULL != m_ctagFile) {
|
||||
EdnVectorBin<int8_t> data;
|
||||
// get the middle button of the clipboard ==> represent the current selection ...
|
||||
ClipBoard::Get(COPY_MIDDLE_BUTTON, data);
|
||||
if (data.Size() == 0) {
|
||||
EDN_INFO("No current S<>lection");
|
||||
}
|
||||
tagEntry entry;
|
||||
data.PushBack('\0');
|
||||
EDN_INFO("try to find the tag : " << (const char *)&data[0]);
|
||||
if (tagsFind (m_ctagFile, &entry, (const char *)&data[0], 0) == TagSuccess) {
|
||||
//EDN_INFO("find the tag");
|
||||
BufferManager *myBufferManager = BufferManager::getInstance();
|
||||
Edn::String destinationFilename = m_tagFolderBase;
|
||||
destinationFilename += entry.file;
|
||||
EDN_INFO(" OPEN the TAG file Destination : " << destinationFilename.c_str() );
|
||||
if (false == myBufferManager->Exist(destinationFilename) ) {
|
||||
// need to open the file :
|
||||
int32_t openID = myBufferManager->Open(destinationFilename);
|
||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, openID);
|
||||
} else {
|
||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, myBufferManager->GetId(destinationFilename));
|
||||
}
|
||||
int32_t localId = myBufferManager->GetId(destinationFilename);
|
||||
Edn::String pattern = entry.address.pattern;
|
||||
EDN_DEBUG("try to find line with : \"" << pattern.c_str() << "\"" );
|
||||
if (pattern.Size() > 4) {
|
||||
pattern.Remove(0,2);
|
||||
pattern.Remove(pattern.Size()-1,2);
|
||||
}
|
||||
// TODO : remove '\' char when needed ...
|
||||
EDN_DEBUG("try to find line with : \"" << pattern.c_str() << "\"" );
|
||||
int32_t destLine = myBufferManager->Get(localId)->FindLine(pattern);
|
||||
SendMessage(EDN_MSG__CURRENT_GOTO_LINE, destLine);
|
||||
/*
|
||||
do {
|
||||
PrintTag (&entry);
|
||||
} while (tagsFindNext (m_ctagFile, &entry) == TagSuccess);
|
||||
*/
|
||||
} else {
|
||||
EDN_INFO("no tag find ...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTagsManager::PrintTag (const tagEntry *entry)
|
||||
{
|
||||
int i;
|
||||
EDN_INFO("find Tag file : name=\"" << entry->name << "\" in file=\"" << entry->file
|
||||
<< "\" pattern=\"" <<entry->address.pattern
|
||||
<< "\" at line="<<entry->address.lineNumber);
|
||||
|
||||
EDN_INFO("Extention field : ");
|
||||
if (entry->kind != NULL && entry->kind [0] != '\0') {
|
||||
EDN_INFO(" kind : " << entry->kind);
|
||||
}
|
||||
if (entry->fileScope) {
|
||||
EDN_INFO(" file : ");
|
||||
}
|
||||
for (i = 0 ; i < entry->fields.count ; ++i) {
|
||||
EDN_INFO(" " << entry->fields.list[i].key << ":" << entry->fields.list[i].value );
|
||||
}
|
||||
}
|
149
Sources/init.cpp
149
Sources/init.cpp
@@ -1,149 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file init.cpp
|
||||
* @brief Editeur De N'ours : main fonction
|
||||
* @author Edouard DUPIN
|
||||
* @date 26/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "Display.h"
|
||||
#include "BufferManager.h"
|
||||
#include "ColorizeManager.h"
|
||||
#include "HighlightManager.h"
|
||||
#include "ClipBoard.h"
|
||||
#include <string>
|
||||
#include "WindowsManager.h"
|
||||
#include "Search.h"
|
||||
#include <unistd.h>
|
||||
#include "readtags.h"
|
||||
#include "CTagsManager.h"
|
||||
|
||||
|
||||
#include "Edn.h"
|
||||
|
||||
|
||||
/**
|
||||
* @brief Main start function of the system
|
||||
*
|
||||
* @param[in] argc number of argument when called
|
||||
* @param[in] argv sus nomer arguments
|
||||
*
|
||||
* @return EXIT_SUCCESS, all time
|
||||
*
|
||||
*/
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
EDN_INFO("Start Edn");
|
||||
|
||||
//Edn::TestUntaire_String();
|
||||
//return 0;
|
||||
|
||||
|
||||
// Use and remove GTK arguments from the application argument list.
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
// init internal global value
|
||||
globals::init();
|
||||
ClipBoard::Init();
|
||||
Display::Init();
|
||||
|
||||
//MainWindows *window = MainWindows::getInstance();
|
||||
|
||||
|
||||
// init ALL Singleton :
|
||||
(void)MsgBroadcastCore::getInstance();
|
||||
(void)AccelKey::getInstance();
|
||||
(void)WindowsManager::getInstance();
|
||||
(void)CTagsManager::getInstance();
|
||||
BufferManager *myBufferManager = BufferManager::getInstance();
|
||||
|
||||
// set color and other trucs...
|
||||
ColorizeManager *myColorManager = NULL;
|
||||
myColorManager = ColorizeManager::getInstance();
|
||||
Edn::String homedir;
|
||||
#ifdef NDEBUG
|
||||
homedir = getenv("HOME");
|
||||
homedir += "/.edn/";
|
||||
#else
|
||||
homedir = "./";
|
||||
#endif
|
||||
homedir += "data/color_black.xml";
|
||||
myColorManager->LoadFile( homedir.c_str() );
|
||||
myColorManager->DisplayListOfColor();
|
||||
|
||||
HighlightManager *myHighlightManager = NULL;
|
||||
myHighlightManager = HighlightManager::getInstance();
|
||||
myHighlightManager->loadLanguages();
|
||||
|
||||
// open display
|
||||
MsgBroadcastCore::getInstance()->SendMessage(NULL, EDN_MSG__GUI_SHOW_MAIN_WINDOWS);
|
||||
|
||||
// get the curent program folder
|
||||
char cCurrentPath[FILENAME_MAX];
|
||||
if (!getcwd(cCurrentPath, FILENAME_MAX)) {
|
||||
return -1;
|
||||
}
|
||||
cCurrentPath[FILENAME_MAX - 1] = '\0';
|
||||
//EDN_INFO("The current working directory is " << cCurrentPath);
|
||||
|
||||
|
||||
// add files
|
||||
EDN_INFO("show list of files : ");
|
||||
for( int32_t i=1 ; i<argc; i++) {
|
||||
EDN_INFO("need load file : \"" << argv[i] << "\"" );
|
||||
Edn::String myfile = "";
|
||||
// Special case for the root file origin
|
||||
if ('/' != argv[i][0]) {
|
||||
myfile+=cCurrentPath;
|
||||
myfile+="/";
|
||||
}
|
||||
myfile+=(char *)argv[i];
|
||||
if (false == myBufferManager->Exist(myfile) ) {
|
||||
int32_t idBuffOpened = myBufferManager->Open(myfile);
|
||||
if (1==i) {
|
||||
MsgBroadcastCore::getInstance()->SendMessage(NULL, EDN_MSG__CURRENT_CHANGE_BUFFER_ID, idBuffOpened);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EDN_INFO("Start gtk main");
|
||||
gtk_main();
|
||||
EDN_INFO("Stop gtk main");
|
||||
|
||||
//Kill all singleton
|
||||
EDN_INFO("Stop BufferManager");
|
||||
BufferManager::kill();
|
||||
EDN_INFO("Stop ColorizeManager");
|
||||
ColorizeManager::kill();
|
||||
EDN_INFO("Stop Search");
|
||||
Search::kill();
|
||||
EDN_INFO("Stop Accel key");
|
||||
AccelKey::kill();
|
||||
EDN_INFO("Stop Display");
|
||||
Display::UnInit();
|
||||
|
||||
|
||||
|
||||
EDN_INFO("Stop Edn");
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
@@ -1,179 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file AL_Mutex.c
|
||||
* @brief Editeur De N'ours : Abstraction Layer Mutex
|
||||
* @author Edouard DUPIN
|
||||
* @date 04/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "AL_Mutex.h"
|
||||
// /usr/include/pthread.h
|
||||
|
||||
|
||||
/**
|
||||
* @brief initialize the curent Mutex
|
||||
*
|
||||
* @param[in,out] pointerMutex Pointer on the mutex that might be init
|
||||
* @param[in] recursive Enable the possibility that one thread can lock multiple time the same Mutex
|
||||
*
|
||||
* @return an standard Error Code (ERR_NONE / ERR_FAIL)
|
||||
*
|
||||
*/
|
||||
erreurCode_te AL_mutex_init(AL_MUTEX * pointerMutex,bool recursive)
|
||||
{
|
||||
int systemRet;
|
||||
pthread_mutexattr_t mutexattr;
|
||||
erreurCode_te myError= ERR_NONE;
|
||||
EDN_CHECK_INOUT(pointerMutex);
|
||||
// init mutex attributes
|
||||
systemRet = pthread_mutexattr_init(&mutexattr);
|
||||
if (0 == systemRet) {
|
||||
if (true == recursive) {
|
||||
systemRet = pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||
EDN_ASSERT(!systemRet, "pthread_mutexattr_settype Error");
|
||||
}
|
||||
else {
|
||||
systemRet = pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_ERRORCHECK_NP);
|
||||
EDN_ASSERT(!systemRet, "pthread_mutexattr_settype Error");
|
||||
}
|
||||
}
|
||||
if (0 == systemRet) {
|
||||
systemRet = pthread_mutex_init(pointerMutex, &mutexattr);
|
||||
EDN_ASSERT(!systemRet, "pthread_mutex_init Error Mutex Init");
|
||||
if (systemRet) {
|
||||
myError = ERR_FAIL;
|
||||
}
|
||||
}
|
||||
systemRet = pthread_mutexattr_destroy(&mutexattr);
|
||||
EDN_ASSERT(0 == systemRet, "pthread_mutexattr_destroy Error");
|
||||
return myError;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Destroy the current Mutex
|
||||
*
|
||||
* @param[in,out] pointerMutex Pointer on the mutex that might be init
|
||||
*
|
||||
* @return an standard Error Code (ERR_NONE / ERR_FAIL)
|
||||
*
|
||||
*/
|
||||
erreurCode_te AL_mutex_destroy(AL_MUTEX * pointerMutex)
|
||||
{
|
||||
int systemRet;
|
||||
EDN_CHECK_INOUT(pointerMutex);
|
||||
systemRet = pthread_mutex_destroy(pointerMutex);
|
||||
EDN_ASSERT(!systemRet, "pthread_mutex_destroy Error Mutex Destroy");
|
||||
if (systemRet) {
|
||||
return ERR_FAIL;
|
||||
}
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Lock the curent Mutex. Lock call
|
||||
*
|
||||
* @param[in,out] pointerMutex Pointer on the mutex that might be init
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void AL_mutex_lock(AL_MUTEX * pointerMutex)
|
||||
{
|
||||
int systemRet;
|
||||
EDN_CHECK_INOUT(pointerMutex);
|
||||
systemRet = pthread_mutex_lock(pointerMutex);
|
||||
EDN_ASSERT(!systemRet, "pthread_mutex_lock Error Mutex lock");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Unlock the current Mutex
|
||||
*
|
||||
* @param[in,out] pointerMutex Pointer on the mutex that might be init
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void AL_mutex_unlock(AL_MUTEX * pointerMutex)
|
||||
{
|
||||
int systemRet;
|
||||
EDN_CHECK_INOUT(pointerMutex);
|
||||
systemRet = pthread_mutex_unlock(pointerMutex);
|
||||
EDN_ASSERT(!systemRet, "pthread_mutex_unlock Error Mutex unlock");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Try the lock of the curent Mutex
|
||||
*
|
||||
* @param[in,out] pointerMutex Pointer on the mutex that might be init
|
||||
*
|
||||
* @return an standard Error Code (ERR_NONE / ERR_BUSY)
|
||||
*
|
||||
*/
|
||||
erreurCode_te AL_mutex_trylock(AL_MUTEX * pointerMutex)
|
||||
{
|
||||
int systemRet;
|
||||
EDN_CHECK_INOUT(pointerMutex);
|
||||
systemRet = pthread_mutex_trylock(pointerMutex);
|
||||
EDN_ASSERT(0==systemRet || EBUSY==systemRet, "pthread_mutex_trylock Error Mutex unlock");
|
||||
if (EBUSY==systemRet) {
|
||||
return ERR_BUSY;
|
||||
}
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief try lock in a periode of time
|
||||
*
|
||||
* @param[in,out] pointerMutex Pointer on the mutex that might be init
|
||||
*
|
||||
* @return an standard Error Code (ERR_NONE / ERR_TIMEOUT)
|
||||
*
|
||||
*/
|
||||
erreurCode_te AL_mutex_timedlock(AL_MUTEX * pointerMutex, int32_t delay)
|
||||
{
|
||||
/*
|
||||
int systemRet;
|
||||
EDN_CHECK_INOUT(pointerMutex);
|
||||
if (0 == delay) {
|
||||
return ERR_NONE;
|
||||
}
|
||||
// TODO ... check is it OK...
|
||||
systemRet = pthread_mutex_timedlock(pointerMutex, delay);
|
||||
EDN_ASSERT(0 == systemRet || ETIMEDOUT == systemRet, "pthread_mutex_timedlock Error");
|
||||
if (ETIMEDOUT == systemRet) {
|
||||
return ERR_TIMEOUT;
|
||||
}
|
||||
*/
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1,623 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file Display.cpp
|
||||
* @brief Editeur De N'ours : Basic Pixbuf display function
|
||||
* @author Edouard DUPIN
|
||||
* @date 21/01/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "Display.h"
|
||||
#include "ColorizeManager.h"
|
||||
#include "charset.h"
|
||||
#include <string>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "Display"
|
||||
|
||||
|
||||
#define FONT_BOLD_NO (0)
|
||||
#define FONT_BOLD_YES (1)
|
||||
#define FONT_ITALIC_NO (0)
|
||||
#define FONT_ITALIC_YES (1)
|
||||
|
||||
|
||||
// Variables privé du namespace
|
||||
#define POLICE_NAME "Monospace"
|
||||
|
||||
#ifdef USE_GTK_VERSION_3_0
|
||||
#define POLICE_SIZE 15
|
||||
static int32_t m_pangoFontWidth = 9;
|
||||
static int32_t m_pangoFontHeight = 19;
|
||||
#elif USE_GTK_VERSION_2_0
|
||||
#define POLICE_SIZE 12
|
||||
static int32_t m_pangoFontWidth = 7;
|
||||
static int32_t m_pangoFontHeight = 15;
|
||||
#endif
|
||||
/*
|
||||
#define POLICE_SIZE 11
|
||||
static int32_t m_pangoFontWidth = 7;
|
||||
static int32_t m_pangoFontHeight = 11;
|
||||
static cairo_font_face_t * m_cairoFont[2][2] = {{NULL, NULL},{ NULL, NULL}};
|
||||
*/
|
||||
static cairo_font_face_t * m_cairoFont[2][2] = {{NULL, NULL},{ NULL, NULL}};
|
||||
void Display::Init(void)
|
||||
{
|
||||
/*
|
||||
charWidth = gdk_char_width(myFont[FONT_ITALIC_YES][FONT_BOLD_NO], 'Z');
|
||||
EDN_INFO("Font Width = %d", charWidth);
|
||||
charHeignt = gdk_char_height(myFont[FONT_ITALIC_YES][FONT_BOLD_NO], 'Z');
|
||||
EDN_INFO("Font Height = %d", charHeignt);
|
||||
*/
|
||||
|
||||
m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_NORMAL);
|
||||
m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES] = cairo_toy_font_face_create(POLICE_NAME, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_BOLD);
|
||||
if ( NULL == m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO]) {
|
||||
EDN_ASSERT(FALSE, "basic font ERROR");
|
||||
}
|
||||
if ( NULL == m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO]) {
|
||||
EDN_ERROR("Italic font error ... link with basic font");
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO] = m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO];
|
||||
}
|
||||
if ( NULL == m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES]) {
|
||||
EDN_ERROR("Bold font error ... link with basic font");
|
||||
m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES] = m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO];
|
||||
}
|
||||
if ( NULL == m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES]) {
|
||||
EDN_ERROR("Italic & Bold font error ... link with basic font");
|
||||
m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES] = m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Display::UnInit(void)
|
||||
{
|
||||
// clean the builder...
|
||||
free(m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO]);
|
||||
free(m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO]);
|
||||
free(m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES]);
|
||||
free(m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES]);
|
||||
}
|
||||
|
||||
|
||||
int32_t Display::GetFontHeight(void)
|
||||
{
|
||||
return m_pangoFontHeight;
|
||||
}
|
||||
|
||||
int32_t Display::GetFontWidth(void)
|
||||
{
|
||||
return m_pangoFontWidth;
|
||||
}
|
||||
|
||||
|
||||
|
||||
cairo_font_face_t * Display::GetFont(bool bold, bool italic)
|
||||
{
|
||||
if( false == bold
|
||||
&& false == italic) {
|
||||
return m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_NO];
|
||||
} else if( true == bold
|
||||
&& false == italic) {
|
||||
return m_cairoFont[FONT_ITALIC_NO][FONT_BOLD_YES];
|
||||
} else if ( false == bold
|
||||
&& true == italic) {
|
||||
return m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_NO];
|
||||
}
|
||||
return m_cairoFont[FONT_ITALIC_YES][FONT_BOLD_YES];
|
||||
}
|
||||
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "DrawerManager"
|
||||
|
||||
/**
|
||||
* @brief DrawerManager constructor : generate a memoryDC where we can draw everything...
|
||||
*
|
||||
* @param [in] window Current windows where the memoryDC must be paint
|
||||
* @param [in] x Current width of the Display
|
||||
* @param [in] y Current Height of the Display
|
||||
*
|
||||
* @note : No exeption
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
DrawerManager::DrawerManager(GtkWidget * widget, int32_t x, int32_t y)
|
||||
{
|
||||
|
||||
m_size.x = x;
|
||||
m_size.y = y;
|
||||
m_haveWork = false;
|
||||
// Create the Cairo Element
|
||||
# if USE_GTK_VERSION_3_0
|
||||
m_cairo = gdk_cairo_create(gtk_widget_get_window(widget));
|
||||
# elif USE_GTK_VERSION_2_0
|
||||
m_cairo = gdk_cairo_create(widget->window);
|
||||
# endif
|
||||
//cairo_translate(m_cairo, 0, 7);
|
||||
cairo_set_source_rgb(m_cairo, 0, 0, 0);
|
||||
cairo_paint(m_cairo);
|
||||
cairo_set_font_size(m_cairo, POLICE_SIZE);
|
||||
m_dataToDisplay[0] = '\0';
|
||||
|
||||
cairo_scale(m_cairo, 1.0, 1.0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief main DrawerManager destructor : Copy data on the curent screen
|
||||
*
|
||||
* @param ---
|
||||
*
|
||||
* @note : No exeption
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
DrawerManager::~DrawerManager()
|
||||
{
|
||||
cairo_destroy(m_cairo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Draw Text with the specify color
|
||||
*
|
||||
* This function does not display the text directly, it save it while a flush appare or the y position differ, or the color differ.
|
||||
* This is for the char by char writing ==> more efficient when we write multiple char.
|
||||
*
|
||||
* @param [in] SelectColor Color that is used to display data
|
||||
* @param [in] x Horizontal position to display data
|
||||
* @param [in] y Vertical position to display data
|
||||
* @param [in] myText Text to write in UTF8 ...
|
||||
* @param [in] displayBG unused
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::Text(Colorize *SelectColor, int32_t x, int32_t y,const char *myUTF8Text, int32_t len)
|
||||
{
|
||||
EDN_CHECK_INOUT(NULL!=SelectColor);
|
||||
// check if flush is needed :
|
||||
if (true == m_haveWork) {
|
||||
if( m_pos.y != y
|
||||
|| m_selectColor != SelectColor)
|
||||
{
|
||||
Flush();
|
||||
}
|
||||
}
|
||||
|
||||
// check change
|
||||
if (false == m_haveWork) {
|
||||
m_pos.x = x;
|
||||
m_pos.y = y;
|
||||
m_selectColor = SelectColor;
|
||||
}
|
||||
//EDN_WARNING("add data : \"" << myText << "\" x=" << x << " y=" << y );
|
||||
// process :
|
||||
m_haveWork = true;
|
||||
strcat(m_dataToDisplay, myUTF8Text);
|
||||
if (len != -1 ) {
|
||||
m_nbElement+=len;
|
||||
} else {
|
||||
m_nbElement+=strUtf8Len(myUTF8Text);
|
||||
}
|
||||
}
|
||||
|
||||
void DrawerManager::Text(color_ts & SelectColorFg, color_ts & SelectColorBg, int32_t x, int32_t y,const char *myText)
|
||||
{
|
||||
Flush();
|
||||
cairo_set_font_face(m_cairo, Display::GetFont(false, false));
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
int32_t letterWidth = Display::GetFontWidth();
|
||||
int32_t stringLen = strUtf8Len(myText);
|
||||
DirectRectangle(SelectColorBg, x, y, letterWidth*strlen(myText), letterHeight);
|
||||
cairo_fill(m_cairo);
|
||||
cairo_move_to(m_cairo, x, y+letterHeight-4);
|
||||
cairo_set_source_rgb(m_cairo, SelectColorFg.red, SelectColorFg.green, SelectColorFg.blue);
|
||||
cairo_show_text(m_cairo, myText);
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
|
||||
void DrawerManager::Text(color_ts & SelectColorFg, int32_t x, int32_t y,const char *myText)
|
||||
{
|
||||
Flush();
|
||||
cairo_set_font_face(m_cairo, Display::GetFont(false, false));
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
cairo_move_to(m_cairo, x, y+letterHeight-4);
|
||||
cairo_set_source_rgb(m_cairo, SelectColorFg.red, SelectColorFg.green, SelectColorFg.blue);
|
||||
cairo_show_text(m_cairo, myText);
|
||||
cairo_fill(m_cairo);
|
||||
|
||||
}
|
||||
|
||||
void DrawerManager::SpaceText(color_ts & SelectColor, int32_t x, int32_t y,int32_t nbChar)
|
||||
{
|
||||
Flush();
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
int32_t letterWidth = Display::GetFontWidth();
|
||||
DirectRectangle(SelectColor, x, y, letterWidth*nbChar, letterHeight);
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Force de display of the curent Text
|
||||
*
|
||||
* The flush is to be more performent with the Pango display methode...
|
||||
*
|
||||
* @param ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::Flush(void)
|
||||
{
|
||||
if (true == m_haveWork) {
|
||||
//EDN_WARNING("flush : \"" << m_dataToDisplay << "\"");
|
||||
m_haveWork = false;
|
||||
|
||||
cairo_set_font_face(m_cairo, Display::GetFont(m_selectColor->GetBold(), m_selectColor->GetItalic()));
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
if (true == m_selectColor->HaveBg() ) {
|
||||
int32_t letterWidth = Display::GetFontWidth();
|
||||
int32_t stringLen = m_nbElement;
|
||||
// generate Clean BG:
|
||||
DirectRectangle(m_selectColor, m_pos.x, m_pos.y, letterWidth*stringLen, letterHeight);
|
||||
}
|
||||
cairo_move_to(m_cairo, m_pos.x, m_pos.y+letterHeight-4);
|
||||
m_selectColor->ApplyFG(m_cairo);
|
||||
cairo_show_text(m_cairo, m_dataToDisplay);
|
||||
cairo_fill(m_cairo);
|
||||
|
||||
m_dataToDisplay[0] = '\0';
|
||||
m_nbElement = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief display a rectangle with the curent bgColor and no border
|
||||
*
|
||||
* This function in the open API to drow the rectangle, it flush the curent Text in the buffer
|
||||
*
|
||||
* @param [in] SelectColor Color that is used to display rectangle
|
||||
* @param [in] x Horizontal position to display rectangle
|
||||
* @param [in] y Vertical position to display rectangle
|
||||
* @param [in] width Width of the rectangle
|
||||
* @param [in] height Height of the rectangle
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::Rectangle(Colorize *SelectColor, int32_t x, int32_t y, int32_t width, int32_t height)
|
||||
{
|
||||
Flush();
|
||||
DirectRectangle(SelectColor, x, y, width, height);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Real function to display the rectangle (no flush done (expectially for the Background display)
|
||||
*
|
||||
* @param [in] SelectColor Color that is used to display rectangle
|
||||
* @param [in] x Horizontal position to display rectangle
|
||||
* @param [in] y Vertical position to display rectangle
|
||||
* @param [in] width Width of the rectangle
|
||||
* @param [in] height Height of the rectangle
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::DirectRectangle(Colorize *SelectColor, int32_t x, int32_t y, int32_t width, int32_t height)
|
||||
{
|
||||
EDN_CHECK_INOUT(NULL!=SelectColor);
|
||||
//EDN_INFO("x="<< x <<" y="<< y <<" width="<< width <<" height="<< height);
|
||||
//gdk_draw_rectangle( p_pixmap, SelectColor->GetColorBG(), TRUE, x, y, width, height);
|
||||
// set color
|
||||
SelectColor->ApplyBG(m_cairo);
|
||||
// set postion
|
||||
cairo_rectangle(m_cairo, x, y, width, height);
|
||||
//cairo_stroke(m_cairo);
|
||||
// flush
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
void DrawerManager::DirectRectangle(color_ts &SelectColor, int32_t x, int32_t y, int32_t width, int32_t height)
|
||||
{
|
||||
|
||||
cairo_set_source_rgb(m_cairo, SelectColor.red, SelectColor.green, SelectColor.blue);
|
||||
// set postion
|
||||
cairo_rectangle(m_cairo, x, y, width, height);
|
||||
//cairo_stroke(m_cairo);
|
||||
// flush
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Clean the curent Windows with the curent color
|
||||
*
|
||||
* @param [in] SelectColor Color that is used to display background
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::Clean(Colorize *SelectColor)
|
||||
{
|
||||
m_haveWork = false;
|
||||
DirectRectangle(SelectColor, 0, 0, m_size.x, m_size.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Clean the curent Windows with the curent color
|
||||
*
|
||||
* @param [in] SelectColor Color that is used to display background
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::Clean(color_ts & SelectColor)
|
||||
{
|
||||
m_haveWork = false;
|
||||
DirectRectangle(SelectColor, 0, 0, m_size.x, m_size.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Display a cursor with the cortect form.
|
||||
*
|
||||
* Automatic selection of the XML color "cursorColor"
|
||||
*
|
||||
* @param [in] x Horizontal position to display cursor
|
||||
* @param [in] y Vertical position to display cursor
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
#define CURSOR_WIDTH (4)
|
||||
void DrawerManager::Cursor(int32_t x, int32_t y)
|
||||
{
|
||||
Flush();
|
||||
// get the cursor Color :
|
||||
color_ts myColor = ColorizeManager::getInstance()->Get(COLOR_CODE_CURSOR);
|
||||
cairo_set_source_rgb(m_cairo, myColor.red, myColor.green, myColor.blue);
|
||||
|
||||
// draw cursor
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
int32_t letterWidth = Display::GetFontWidth();
|
||||
// depending on the inserting mode
|
||||
if (false == globals::IsSetInsert()) {
|
||||
cairo_set_line_width(m_cairo, 2);
|
||||
cairo_move_to(m_cairo, x-CURSOR_WIDTH, y - letterHeight+1);
|
||||
cairo_rel_line_to(m_cairo, CURSOR_WIDTH*2, 0);
|
||||
cairo_rel_move_to(m_cairo, -CURSOR_WIDTH, 0);
|
||||
cairo_rel_line_to(m_cairo, 0, letterHeight-2);
|
||||
cairo_rel_move_to(m_cairo, -CURSOR_WIDTH, 0);
|
||||
cairo_rel_line_to(m_cairo, CURSOR_WIDTH*2, 0);
|
||||
} else {
|
||||
cairo_set_line_width(m_cairo, 1);
|
||||
cairo_move_to(m_cairo, x, y - letterHeight + 1);
|
||||
cairo_rel_line_to(m_cairo, letterWidth, 0);
|
||||
cairo_rel_line_to(m_cairo, 0, letterHeight);
|
||||
cairo_rel_line_to(m_cairo, -letterWidth, 0);
|
||||
cairo_rel_line_to(m_cairo, 0, -letterHeight);
|
||||
}
|
||||
cairo_stroke(m_cairo);
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Display a end of the curent line ...
|
||||
*
|
||||
* Automatic draw the end of line with the curent XML color "cursorColor"
|
||||
*
|
||||
* @param [in] x Horizontal position to display cursor
|
||||
* @param [in] y Vertical position to display cursor
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::EndOfLine(int32_t x, int32_t y)
|
||||
{
|
||||
if (true == globals::IsSetDisplayEndOfLine() ) {
|
||||
Flush();
|
||||
// get the cursor Color :
|
||||
color_ts myColor = ColorizeManager::getInstance()->Get(COLOR_CODE_CURSOR);
|
||||
cairo_set_source_rgb(m_cairo, myColor.red, myColor.green, myColor.blue);
|
||||
// draw cursor
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
// depending on the inserting mode
|
||||
/*
|
||||
x1 x2
|
||||
y1 | |-----
|
||||
| |-----
|
||||
| |
|
||||
y2 | |
|
||||
*/
|
||||
cairo_set_line_width(m_cairo, 2);
|
||||
cairo_move_to(m_cairo, x, y - letterHeight+1);
|
||||
cairo_rel_line_to(m_cairo, 0, letterHeight);
|
||||
cairo_move_to(m_cairo, x+2, y - letterHeight+1);
|
||||
cairo_rel_line_to(m_cairo, 0, letterHeight);
|
||||
cairo_arc(m_cairo, x+3, y - letterHeight/4*3, 3.0, -3.149/2, 3.149/2);
|
||||
cairo_stroke(m_cairo);
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Display a Tabulation with the user form selection.
|
||||
*
|
||||
* @param [in] SelectColor Color that is used to display Tabulation
|
||||
* @param [in] x Horizontal position to display cursor
|
||||
* @param [in] y Vertical position to display cursor
|
||||
* @param [in] mbColomn Width of the current Tabulation caracter (in number of Char)
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::Tabulation(Colorize *SelectColor, int32_t x, int32_t y, int32_t mbColomn)
|
||||
{
|
||||
Flush();
|
||||
int32_t letterWidth = Display::GetFontWidth();
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
|
||||
// generate Clean BG:
|
||||
DirectRectangle(SelectColor, x, y-letterHeight, letterWidth*mbColomn, letterHeight);
|
||||
|
||||
// set the pen for the display
|
||||
SelectColor->ApplyFG(m_cairo);
|
||||
|
||||
uint32_t yCalc = y - (letterHeight+1)/2;
|
||||
|
||||
cairo_move_to(m_cairo, x + 3, yCalc);
|
||||
cairo_line_to(m_cairo, x + letterWidth*mbColomn - 2 , yCalc);
|
||||
cairo_rel_line_to(m_cairo, -6 , -2);
|
||||
cairo_move_to(m_cairo, x + letterWidth*mbColomn - 2 , yCalc);
|
||||
cairo_rel_line_to(m_cairo, -6 , +2);
|
||||
|
||||
cairo_stroke(m_cairo);
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Display an unknow UTF8 character (a special rectangle)
|
||||
*
|
||||
* @param [in] SelectColor Color that is used to display Tabulation
|
||||
* @param [in] x Horizontal position to display cursor
|
||||
* @param [in] y Vertical position to display cursor
|
||||
* @param [in] utf8Size number of char used by the UTF8 character
|
||||
* @param [in] ValidUtf8 true if the character UTF8 is well encoded
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void DrawerManager::UTF8UnknownElement(Colorize *SelectColor, int32_t x, int32_t y, int8_t utf8Size, bool ValidUtf8)
|
||||
{
|
||||
Flush();
|
||||
int32_t letterWidth = Display::GetFontWidth();
|
||||
int32_t letterHeight = Display::GetFontHeight();
|
||||
|
||||
// generate Clean BG:
|
||||
DirectRectangle(SelectColor, x, y-letterHeight, letterWidth*2, letterHeight);
|
||||
|
||||
SelectColor->ApplyFG(m_cairo);
|
||||
|
||||
/*
|
||||
y1 y2
|
||||
x1 |-------|
|
||||
| |
|
||||
| |
|
||||
x2 |-------|
|
||||
*/
|
||||
uint32_t x1 = x + 2;
|
||||
uint32_t x2 = x + letterWidth*2 - 2;
|
||||
uint32_t y1 = y - letterHeight + 2;
|
||||
uint32_t y2 = y - 2;
|
||||
// Box
|
||||
cairo_move_to(m_cairo, x1 , y1);
|
||||
cairo_line_to(m_cairo, x2 , y1);
|
||||
cairo_line_to(m_cairo, x2 , y2);
|
||||
cairo_line_to(m_cairo, x1 , y2);
|
||||
cairo_line_to(m_cairo, x1 , y1);
|
||||
// croix in the middle
|
||||
switch(utf8Size)
|
||||
{
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
cairo_line_to(m_cairo, x2 , y2);
|
||||
break;
|
||||
case 3:
|
||||
cairo_move_to(m_cairo, x1 , y2);
|
||||
cairo_line_to(m_cairo, x2 , y1);
|
||||
break;
|
||||
default:
|
||||
cairo_line_to(m_cairo, x2 , y2);
|
||||
cairo_move_to(m_cairo, x1 , y2);
|
||||
cairo_line_to(m_cairo, x2 , y1);
|
||||
break;
|
||||
}
|
||||
if (false == ValidUtf8) {
|
||||
cairo_move_to(m_cairo, x1 , y2-2);
|
||||
cairo_line_to(m_cairo, x2 , y2-2);
|
||||
}
|
||||
cairo_stroke(m_cairo);
|
||||
cairo_fill(m_cairo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Basic axample with cairo and pango...
|
||||
cairo_t *cr;
|
||||
|
||||
cr = gdk_cairo_create(widget->window);
|
||||
|
||||
cairo_translate(cr, 0, 7);
|
||||
|
||||
cairo_set_source_rgb(cr, 0, 0, 0);
|
||||
cairo_paint(cr);
|
||||
|
||||
gint pos = 18;//GTK_CPU(widget)->sel;
|
||||
gint rect = pos / 5;
|
||||
|
||||
cairo_set_source_rgb(cr, 0.2, 0.4, 0);
|
||||
|
||||
gint i;
|
||||
for ( i = 1; i <= 20; i++) {
|
||||
if (i > 20 - rect) {
|
||||
cairo_set_source_rgb(cr, 0.6, 1.0, 0);
|
||||
} else {
|
||||
cairo_set_source_rgb(cr, 0.2, 0.4, 0);
|
||||
}
|
||||
cairo_rectangle(cr, 8, i*4, 30, 3);
|
||||
cairo_rectangle(cr, 42, i*4, 30, 3);
|
||||
cairo_fill(cr);
|
||||
}
|
||||
//----
|
||||
PangoLayout *layout;
|
||||
PangoFontDescription *desc;
|
||||
|
||||
cairo_translate(cr, 10, 20);
|
||||
layout = pango_cairo_create_layout(cr);
|
||||
pango_layout_set_text(layout, "Hello World!", -1);
|
||||
desc = pango_font_description_from_string("Sans Bold 12");
|
||||
pango_layout_set_font_description(layout, desc);
|
||||
pango_font_description_free(desc);
|
||||
|
||||
cairo_set_source_rgb(cr, 0.0, 0.0, 1.0);
|
||||
pango_cairo_update_layout(cr, layout);
|
||||
pango_cairo_show_layout(cr, layout);
|
||||
|
||||
g_object_unref(layout);
|
||||
//-----
|
||||
cairo_destroy(cr);
|
||||
*/
|
@@ -1,95 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file Display.h
|
||||
* @brief Editeur De N'ours : Basic Pixbuf display function (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 21/01/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __TOOLS_DISPLAY_H__
|
||||
#define __TOOLS_DISPLAY_H__
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "Colorize.h"
|
||||
#include "ColorizeManager.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
||||
/**
|
||||
* Basic namespace for the font display system
|
||||
*/
|
||||
namespace Display
|
||||
{
|
||||
void Init(void);
|
||||
void UnInit(void);
|
||||
cairo_font_face_t * GetFont(bool bold, bool italic);
|
||||
int32_t GetFontHeight(void);
|
||||
int32_t GetFontWidth(void);
|
||||
};
|
||||
|
||||
#define MAX_CARACTER_CYCLE (512)
|
||||
/**
|
||||
* class to abstrate the writing on the curent GUI (INTEFACE to be no dependent of the one chosen)
|
||||
*/
|
||||
class DrawerManager;
|
||||
|
||||
class DrawerManager {
|
||||
public:
|
||||
// Constructeur
|
||||
DrawerManager(GtkWidget * widget, int32_t x, int32_t y);
|
||||
~DrawerManager();
|
||||
|
||||
void Rectangle(Colorize *SelectColor, int32_t x, int32_t y, int32_t width, int32_t height);
|
||||
void Rectangle(color_ts & SelectColor, int32_t x, int32_t y, int32_t width, int32_t height) {
|
||||
DirectRectangle(SelectColor, x, y, width, height);
|
||||
}
|
||||
void Clean(Colorize *SelectColor);
|
||||
void Clean(color_ts & SelectColor);
|
||||
void Text(Colorize *SelectColor, int32_t x, int32_t y,const char *myUTF8Text, int32_t len = -1);
|
||||
void Text(color_ts & SelectColorFg, color_ts & SelectColorBg, int32_t x, int32_t y,const char *myText);
|
||||
void Text(color_ts & SelectColorFg, int32_t x, int32_t y,const char *myText);
|
||||
void SpaceText(color_ts & SelectColor, int32_t x, int32_t y,int32_t nbChar);
|
||||
void Cursor(int32_t x, int32_t y);
|
||||
void EndOfLine(int32_t x, int32_t y);
|
||||
void Tabulation(Colorize *SelectColor, int32_t x, int32_t y, int32_t mbColomn);
|
||||
void UTF8UnknownElement(Colorize *SelectColor, int32_t x, int32_t y, int8_t utf8Size, bool ValidUtf8);
|
||||
void Flush(void);
|
||||
int32_t GetWidth(void) { return m_size.x; };
|
||||
int32_t GetHeight(void) { return m_size.y; };
|
||||
|
||||
private:
|
||||
void DirectRectangle(Colorize *SelectColor, int32_t x, int32_t y, int32_t width, int32_t height);
|
||||
void DirectRectangle(color_ts & SelectColor, int32_t x, int32_t y, int32_t width, int32_t height);
|
||||
|
||||
bool m_haveWork; //!< if data might be print (true)
|
||||
char m_dataToDisplay[MAX_CARACTER_CYCLE]; //!< curent string to display
|
||||
uint32_t m_nbElement; //!< nb element in the string
|
||||
position_ts m_pos; //!< position where start the string display (X,Y)
|
||||
Colorize * m_selectColor; //!< curent color to display
|
||||
|
||||
position_ts m_size; //!< Total size
|
||||
cairo_t * m_cairo; //!< Cairo Layout pointer
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,212 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file EdnBuf.h
|
||||
* @brief Editeur De N'ours : Buffer for internal Data (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 23/03/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __EDN_BUF_H__
|
||||
#define __EDN_BUF_H__
|
||||
|
||||
/* Maximum length in characters of a tab or control character expansion
|
||||
of a single buffer character */
|
||||
#define MAX_EXP_CHAR_LEN 20*4
|
||||
|
||||
class EdnBuf;
|
||||
|
||||
#include "EdnVectorBuf.h"
|
||||
#include "EdnBufHistory.h"
|
||||
#include "HighlightManager.h"
|
||||
#include "charset.h"
|
||||
|
||||
/*
|
||||
|
||||
rectStart rectStart
|
||||
start ************* *************
|
||||
********** * xxxx*xxxxxx *
|
||||
* ******** xxxx*xxxxxxxxxxx*xxxxx
|
||||
end *************** *************
|
||||
rectEnd rectEnd
|
||||
|
||||
|
||||
|
||||
*/
|
||||
typedef struct {
|
||||
bool selected; //!< True if the selection is active
|
||||
bool rectangular; //!< True if the selection is rectangular
|
||||
bool zeroWidth; //!< Width 0 selections aren't "real" selections, but they can be useful when creating rectangular selections from the keyboard.
|
||||
int32_t start; //!< Pos. of start of selection, or if rectangular start of line containing it.
|
||||
int32_t end; //!< Pos. of end of selection, or if rectangular end of line containing it.
|
||||
int32_t rectStart; //!< Indent of left edge of rect. selection
|
||||
int32_t rectEnd; //!< Indent of right edge of rect. selection
|
||||
} selection;
|
||||
|
||||
typedef enum{
|
||||
SELECTION_PRIMARY,
|
||||
SELECTION_SECONDARY,
|
||||
SELECTION_HIGHTLIGHT,
|
||||
SELECTION_SIZE
|
||||
}selectionType_te;
|
||||
|
||||
|
||||
typedef struct {
|
||||
std::vector<colorInformation_ts> HLData;
|
||||
int32_t idSequence;
|
||||
int32_t posHLPass1;
|
||||
int32_t posHLPass2;
|
||||
}displayHLData_ts;
|
||||
|
||||
|
||||
|
||||
class EdnBuf {
|
||||
public:
|
||||
// constructer
|
||||
EdnBuf(void);
|
||||
// destructer
|
||||
~EdnBuf(void);
|
||||
// public function :
|
||||
void GetAll( EdnVectorBin<int8_t> &text);
|
||||
void SetAll( EdnVectorBin<int8_t> &text);
|
||||
void GetRange( int32_t start, int32_t end, EdnVectorBin<int8_t> &output);
|
||||
bool DumpIn( FILE *myFile);
|
||||
bool DumpFrom( FILE *myFile);
|
||||
// replace with operator [] ...
|
||||
int8_t operator[] (int32_t);
|
||||
void Insert( int32_t pos, EdnVectorBin<int8_t> &insertText);
|
||||
void Replace( int32_t start, int32_t end, EdnVectorBin<int8_t> &insertText);
|
||||
void Remove( int32_t start, int32_t end);
|
||||
int32_t Indent( selectionType_te select);
|
||||
int32_t UnIndent( selectionType_te select);
|
||||
|
||||
|
||||
void GetLineText( int32_t pos, EdnVectorBin<int8_t> &text);
|
||||
int32_t StartOfLine( int32_t pos);
|
||||
int32_t EndOfLine( int32_t pos);
|
||||
|
||||
int32_t GetExpandedChar( int32_t &pos, int32_t indent, char outUTF8[MAX_EXP_CHAR_LEN], uint32_t ¤tChar);
|
||||
int32_t ExpandCharacter( char c, int32_t indent, char outUTF8[MAX_EXP_CHAR_LEN]); // TODO : rework this
|
||||
int32_t CharWidth( char c, int32_t indent); // TODO : rework this
|
||||
int32_t CountDispChars( int32_t lineStartPos, int32_t targetPos);
|
||||
int32_t CountForwardDispChars( int32_t lineStartPos, int32_t nChars);
|
||||
int32_t CountLines( int32_t startPos, int32_t endPos);
|
||||
int32_t CountLines( void);
|
||||
int32_t CountLines( EdnVectorBin<int8_t> &data);
|
||||
int32_t CountForwardNLines( int32_t startPos, int32_t nLines);
|
||||
int32_t CountBackwardNLines( int32_t startPos, int32_t nLines);
|
||||
|
||||
bool SearchForward( int32_t startPos, EdnVectorBin<int8_t> &searchVect, int32_t *foundPos, bool caseSensitive = true);
|
||||
bool SearchBackward( int32_t startPos, EdnVectorBin<int8_t> &searchVect, int32_t *foundPos, bool caseSensitive = true);
|
||||
bool SearchForward( int32_t startPos, char searchChar, int32_t *foundPos);
|
||||
bool SearchBackward( int32_t startPos, char searchChar, int32_t *foundPos);
|
||||
bool SelectAround( int32_t startPos, int32_t &beginPos, int32_t &endPos);
|
||||
|
||||
// Buffer Size system :
|
||||
int32_t Size(void) { return m_data.Size(); };
|
||||
int32_t NumberOfLines(void) {return m_nbLine;};
|
||||
|
||||
// -----------------------------------------
|
||||
// selection remember...
|
||||
// -----------------------------------------
|
||||
public:
|
||||
bool SelectHasSelection( selectionType_te select);
|
||||
void Select( selectionType_te select, int32_t start, int32_t end);
|
||||
void Unselect( selectionType_te select);
|
||||
void RectSelect( selectionType_te select, int32_t start, int32_t end, int32_t rectStart, int32_t rectEnd);
|
||||
bool GetSelectionPos( selectionType_te select, int32_t &start, int32_t &end, bool &isRect, int32_t &rectStart, int32_t &rectEnd);
|
||||
void GetSelectionText( selectionType_te select, EdnVectorBin<int8_t> &text);
|
||||
void RemoveSelected( selectionType_te select);
|
||||
void ReplaceSelected( selectionType_te select, EdnVectorBin<int8_t> &text);
|
||||
private:
|
||||
// current selection of the buffer
|
||||
selection m_selectionList[SELECTION_SIZE]; //!< Selection area of the buffer
|
||||
void UpdateSelection( selectionType_te select, int32_t pos, int32_t nDeleted, int32_t nInserted);
|
||||
void UpdateSelections( int32_t pos, int32_t nDeleted, int32_t nInserted);
|
||||
|
||||
// -----------------------------------------
|
||||
// History section :
|
||||
// -----------------------------------------
|
||||
public:
|
||||
int32_t Undo( void);
|
||||
int32_t Redo( void);
|
||||
private:
|
||||
bool m_isUndoProcessing;
|
||||
bool m_isRedoProcessing;
|
||||
EdnVectorBin<EdnBufHistory*> m_historyUndo;
|
||||
EdnVectorBin<EdnBufHistory*> m_historyRedo;
|
||||
|
||||
// -----------------------------------------
|
||||
// hightlight section :
|
||||
// -----------------------------------------
|
||||
private:
|
||||
Highlight * m_Highlight; //!< internal link with the Highlight system
|
||||
std::vector<colorInformation_ts> m_HLDataPass1; //!< colorisation position in the current buffer pass 1
|
||||
int32_t m_HLDataSequence; //!< position of the start of line requested by the screen viewer
|
||||
void RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdded);
|
||||
void GenerateHighLightAt(int32_t pos, int32_t endPos, int32_t addinPos=0);
|
||||
void CleanHighLight(void);
|
||||
void FindMainHighLightPosition(int32_t startPos, int32_t endPos, int32_t &startId, int32_t &stopId, bool backPreviousNotEnded);
|
||||
public:
|
||||
void SetHLSystem( Highlight * newHLSystem);
|
||||
void HightlightGenerateLines(displayHLData_ts & MData, int32_t startPos, int32_t nbLines);
|
||||
colorInformation_ts * GetElementColorAtPosition(displayHLData_ts & MData, int32_t pos);
|
||||
private:
|
||||
colorInformation_ts * GetElementColorAtPosition(int32_t pos, int32_t &starPos);
|
||||
|
||||
private:
|
||||
EdnVectorBuf m_data; //!< buffer of the data in the mode int8_t
|
||||
void CountNumberOfLines(void);
|
||||
int32_t m_nbLine; //!< Number of line in the biffer
|
||||
|
||||
// -----------------------------------------
|
||||
// Display property and charset ...
|
||||
// -----------------------------------------
|
||||
public:
|
||||
int32_t GetTabDistance(void) { return m_tabDist; } ;
|
||||
void SetTabDistance(int32_t tabDist) { m_tabDist = tabDist; };
|
||||
charset_te GetCharsetType(void) { return m_charsetType; };
|
||||
void SetCharsetType(charset_te newOne) { m_charsetType = newOne; if (EDN_CHARSET_UTF8==newOne){m_isUtf8=true;} else {m_isUtf8=false;} };
|
||||
bool GetUTF8Mode(void) { return m_isUtf8; };
|
||||
void SetUTF8Mode(bool newOne) { m_isUtf8 = newOne; m_charsetType=EDN_CHARSET_UTF8; };
|
||||
private:
|
||||
// Special mode of the buffer :
|
||||
bool m_isUtf8; //!< true if we are in UTF8 mode ==> if true the size of a char is 0, otherwise .. 1->4 ( TODO : not now)
|
||||
charset_te m_charsetType; //!< if UTF8 mode is at false : the charset type of the buffer
|
||||
// Local Tabulation policies
|
||||
int32_t m_tabDist; //!< equiv. number of characters in a tab
|
||||
bool m_useTabs; //!< True if buffer routines are allowed to use tabs for padding in rectangular operations
|
||||
|
||||
// -----------------------------------------
|
||||
// Local function :
|
||||
// -----------------------------------------
|
||||
private:
|
||||
void findRectSelBoundariesForCopy( int32_t lineStartPos, int32_t rectStart, int32_t rectEnd, int32_t *selStart, int32_t *selEnd);
|
||||
char *getSelectionText( selection &sel);
|
||||
void removeSelected( selection &sel);
|
||||
void replaceSelected( selection &sel, const char *text);
|
||||
|
||||
void eventModification( int32_t pos, int32_t nInserted, EdnVectorBin<int8_t> &deletedText);
|
||||
|
||||
|
||||
int32_t insert( int32_t pos, EdnVectorBin<int8_t> &insertText);
|
||||
|
||||
bool charMatch( char first, char second, bool caseSensitive = true);
|
||||
};
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@@ -1,261 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file EdnRegExp.h
|
||||
* @brief Editeur De N'ours : Regular expression annalyser (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 04/04/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __EDN_REG_EXP_H__
|
||||
#define __EDN_REG_EXP_H__
|
||||
|
||||
class EdnRegExp;
|
||||
|
||||
#include "EdnTree.h"
|
||||
#include "EdnBuf.h"
|
||||
#include "EdnVectorBin.h"
|
||||
#include "EdnVectorBuf.h"
|
||||
|
||||
|
||||
/*
|
||||
normal mode :
|
||||
(...) sub element is separate with |
|
||||
\d Digits [0-9]
|
||||
\D NOT a digit [^0-9]
|
||||
\l Letters [a-zA-Z]
|
||||
\L NOT a Letter [^a-zA-Z]
|
||||
\s Whitespace [ \t\n\r\f\v]
|
||||
\S NOT Whitespace [^ \t\n\r\f\v]
|
||||
\w "Word" character [a-zA-Z0-9_]
|
||||
\W NOT a "Word" character [^a-zA-Z0-9_]
|
||||
\@ at the start or the end not in the parsing of element ==> check if \w is not present (other regExp will be <> ...)
|
||||
[anjdi] or [a-gt-j] range
|
||||
. dot [^\x00-\x08\x0A-\x1F\x7F]
|
||||
==> TODO :
|
||||
$ End / Start of line of line ==> ce sera un truc supl<70>mentaire comme le \@
|
||||
^in the [] invertion of the range element
|
||||
|
||||
multiplicity :
|
||||
* ==> {0, 2147483647}
|
||||
? ==> {0, 1}
|
||||
+ ==> {1, 2147483647}
|
||||
{x} ==> {x, x}
|
||||
{x,y} ==> {x, y}
|
||||
*/
|
||||
|
||||
class RegExpNode;
|
||||
|
||||
/**
|
||||
* @brief Node Elements for every-one
|
||||
*/
|
||||
class RegExpNode{
|
||||
public :
|
||||
RegExpNode(void);
|
||||
virtual ~RegExpNode(void) { };
|
||||
virtual int32_t Generate(EdnVectorBin<int16_t> &data, int32_t startPos, int32_t nbElement);
|
||||
virtual bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
virtual void Display(int32_t level);
|
||||
void SetMult(int32_t min, int32_t max);
|
||||
protected:
|
||||
int32_t GetMultMin(void) { return m_multipleMin; };
|
||||
int32_t GetMultMax(void) { return m_multipleMax; };
|
||||
protected :
|
||||
int32_t m_multipleMin; //!< minimum repetition (included)
|
||||
int32_t m_multipleMax; //!< maximum repetition (included)
|
||||
// Data Section ... (can have no data...)
|
||||
EdnVectorBin<int16_t> m_RegExpData; //!< data to parse and compare in some case ...
|
||||
};
|
||||
|
||||
|
||||
class RegExpNodePThese : public RegExpNode {
|
||||
public :
|
||||
RegExpNodePThese(void) { };
|
||||
~RegExpNodePThese(void);
|
||||
int32_t Generate(EdnVectorBin<int16_t> &data);
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
protected :
|
||||
// SubNodes :
|
||||
EdnVectorBin<RegExpNode*> m_subNode;
|
||||
//int32_t m_posPthese; //!< position of the element is detected in the output element
|
||||
};
|
||||
|
||||
class RegExpNodePTheseElem : public RegExpNode {
|
||||
public :
|
||||
RegExpNodePTheseElem(void) { };
|
||||
~RegExpNodePTheseElem(void);
|
||||
int32_t Generate(EdnVectorBin<int16_t> &data);
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
protected :
|
||||
// SubNodes :
|
||||
EdnVectorBin<RegExpNode*> m_subNode;
|
||||
private :
|
||||
bool SetMultiplicityOnLastNode(int32_t min, int32_t max);
|
||||
};
|
||||
|
||||
|
||||
class RegExpNodeValue : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeValue(void) { };
|
||||
~RegExpNodeValue(void) { };
|
||||
int32_t Generate(EdnVectorBin<int16_t> &data);
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
protected :
|
||||
// SubNodes :
|
||||
EdnVectorBin<char> m_data;
|
||||
};
|
||||
|
||||
class RegExpNodeBracket : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeBracket(void) { };
|
||||
~RegExpNodeBracket(void) { };
|
||||
int32_t Generate(EdnVectorBin<int16_t> &data);
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
protected :
|
||||
// SubNodes :
|
||||
EdnVectorBin<char> m_data;
|
||||
};
|
||||
|
||||
class RegExpNodeDigit : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeDigit(void) { };
|
||||
~RegExpNodeDigit(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeDigitNot : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeDigitNot(void) { };
|
||||
~RegExpNodeDigitNot(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeLetter : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeLetter(void) { };
|
||||
~RegExpNodeLetter(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeLetterNot : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeLetterNot(void) { };
|
||||
~RegExpNodeLetterNot(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeWhiteSpace : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeWhiteSpace(void) { };
|
||||
~RegExpNodeWhiteSpace(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeWhiteSpaceNot : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeWhiteSpaceNot(void) { };
|
||||
~RegExpNodeWhiteSpaceNot(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeWordChar : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeWordChar(void) { };
|
||||
~RegExpNodeWordChar(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeWordCharNot : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeWordCharNot(void) { };
|
||||
~RegExpNodeWordCharNot(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
class RegExpNodeDot : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeDot(void) { };
|
||||
~RegExpNodeDot(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
|
||||
class RegExpNodeSOL : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeSOL(void) { };
|
||||
~RegExpNodeSOL(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
|
||||
class RegExpNodeEOL : public RegExpNode {
|
||||
public :
|
||||
RegExpNodeEOL(void) { };
|
||||
~RegExpNodeEOL(void) { };
|
||||
bool Parse(EdnVectorBuf &data, int32_t currentPos, int32_t lenMax, int32_t &findLen);
|
||||
void Display(int32_t level);
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
int32_t start;
|
||||
int32_t stop;
|
||||
}elementPos_ts;
|
||||
|
||||
|
||||
// Regular expression manager
|
||||
class EdnRegExp {
|
||||
// public API :
|
||||
public:
|
||||
// create the regular expression
|
||||
EdnRegExp(const char *exp);
|
||||
EdnRegExp(Edn::String &exp);
|
||||
EdnRegExp(void);
|
||||
~EdnRegExp(void);
|
||||
void SetRegExp(const char *exp);
|
||||
void SetRegExp(Edn::String &exp);
|
||||
Edn::String GetRegExp(void) { return m_expressionRequested;};
|
||||
bool GetStatus(void) { return m_isOk;};
|
||||
// process the regular expression
|
||||
bool Process( EdnVectorBuf &SearchIn,
|
||||
int32_t startPos,
|
||||
int32_t endPos,
|
||||
char escapeChar=0);
|
||||
int32_t Start(void) { return m_areaFind.start; };
|
||||
int32_t Stop(void) { return m_areaFind.stop; };
|
||||
void Display(void);
|
||||
// internal parameters
|
||||
private:
|
||||
Edn::String m_expressionRequested; // TODO : Remove ...
|
||||
elementPos_ts m_areaFind; //!< position around selection
|
||||
RegExpNodePThese m_exprRootNode; //!< The tree where data is set
|
||||
bool m_isOk; //!< Known if we can process with this regExp
|
||||
bool m_notBeginWithChar; //!< The regular expression must not have previously a char [a-zA-Z0-9_]
|
||||
bool m_notEndWithChar; //!< The regular expression must not have after the end a char [a-zA-Z0-9_]
|
||||
// internal access
|
||||
private:
|
||||
bool CheckGoodPosition(EdnVectorBin<int16_t> tmpExp, int32_t &pos);
|
||||
bool CheckGoodPosition(EdnVectorBin<int16_t> tmpExp);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@@ -1,29 +0,0 @@
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
|
||||
#include "EdnVectorBin.h"
|
||||
|
||||
void TestTemplate(void)
|
||||
{
|
||||
|
||||
EDN_WARNING("Start Template Test ...");
|
||||
EdnVectorBin<int32_t> plop;
|
||||
EdnVectorBin<int8_t> plop2;
|
||||
|
||||
plop.PushBack(15365);
|
||||
plop.PushBack(1);
|
||||
plop.PushBack(2);
|
||||
plop.PushBack(3);
|
||||
plop.PushBack(4);
|
||||
|
||||
EDN_INFO("data is : " << plop[0]);
|
||||
EDN_INFO("data is : " << plop[1]);
|
||||
EDN_INFO("data is : " << plop[2]);
|
||||
EDN_INFO("data is : " << plop[3]);
|
||||
|
||||
plop2.PushBack(65);
|
||||
|
||||
EDN_INFO("data is : " << plop2[0]);
|
||||
|
||||
}
|
@@ -1,186 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file EdnTree.h
|
||||
* @brief Editeur De N'ours : Basic tree in a vector For none expensive tree (template)
|
||||
* @author Edouard DUPIN
|
||||
* @date 04/04/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __EDN_TREE_H__
|
||||
#define __EDN_TREE_H__
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "EdnTreeElement"
|
||||
|
||||
template < class T > class EdnTreeElement
|
||||
{
|
||||
public:
|
||||
EdnTreeElement(int32_t parent, int32_t id, T &maNouvelleClass) : elementPtr(NULL), m_parent(parent), m_id(id)
|
||||
{
|
||||
elementPtr = new T(maNouvelleClass);
|
||||
};
|
||||
~EdnTreeElement(void)
|
||||
{
|
||||
delete(elementPtr);
|
||||
};
|
||||
EdnTreeElement(const EdnTreeElement &mustCopy ) : elementPtr(NULL), m_parent(mustCopy.m_parent), m_id(mustCopy.m_id)
|
||||
{
|
||||
elementPtr = new T(*mustCopy.elementPtr);
|
||||
}
|
||||
int32_t GetParrent(void) { return m_parent;};
|
||||
int32_t GetId(void) { return m_id;};
|
||||
T* GetPtr() const
|
||||
{
|
||||
return elementPtr;
|
||||
};
|
||||
|
||||
private:
|
||||
T* elementPtr; // pointer on the curent element
|
||||
int32_t m_parent;
|
||||
int32_t m_id;
|
||||
};
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "EdnTree"
|
||||
|
||||
#define ROOT_NODE_ID (-1)
|
||||
|
||||
template < class T > class EdnTree
|
||||
{
|
||||
public:
|
||||
// constructeur et destructeur
|
||||
EdnTree(void)
|
||||
{
|
||||
m_LastId = 0;
|
||||
};
|
||||
|
||||
~EdnTree(void)
|
||||
{
|
||||
|
||||
};
|
||||
// Common function ...
|
||||
int32_t GetNumberNode(void)
|
||||
{
|
||||
return m_listElement.size();
|
||||
};
|
||||
|
||||
int32_t GetDepth(void)
|
||||
{
|
||||
// TODO : ...
|
||||
return 0;
|
||||
};
|
||||
//!< add an element in the tree
|
||||
int32_t Add(T &maNouvelleClass, int32_t parent=-1)
|
||||
{
|
||||
if (true == CheckPresenceParrent(parent)) {
|
||||
// create the local element
|
||||
EdnTreeElement<T> nouvelElement(parent, m_LastId, maNouvelleClass);
|
||||
// add it in the list
|
||||
m_listElement.push_back(nouvelElement);
|
||||
// increment the ID of the element
|
||||
m_LastId++;
|
||||
// Add is Ok, in theory ...
|
||||
return m_LastId-1;
|
||||
}
|
||||
return -2;
|
||||
};
|
||||
|
||||
bool Remove(int32_t id)
|
||||
{
|
||||
return false;
|
||||
};
|
||||
|
||||
bool Clear(void)
|
||||
{
|
||||
return false;
|
||||
};
|
||||
|
||||
T* Get(int32_t id)
|
||||
{
|
||||
// try to find ID
|
||||
int32_t realID = FindElementWithId(id);
|
||||
// when we find it, check it
|
||||
if (0 > realID || realID >= m_LastId) {
|
||||
return NULL;
|
||||
}
|
||||
// Return the element :
|
||||
return m_listElement[realID].GetPtr();
|
||||
};
|
||||
|
||||
std::vector<int32_t> GetListSubNode( int32_t parentId = ROOT_NODE_ID)
|
||||
{
|
||||
std::vector<int32_t> res;
|
||||
int32_t i;
|
||||
for (i=0; i<(int32_t)m_listElement.size(); i++) {
|
||||
if (m_listElement[i].GetParrent() == parentId) {
|
||||
// Add the element ID in the list ...
|
||||
res.push_back(m_listElement[i].GetId());
|
||||
}
|
||||
}
|
||||
return res;
|
||||
};
|
||||
|
||||
std::vector<int32_t> Root(void)
|
||||
{
|
||||
return GetListSubNode(ROOT_NODE_ID);
|
||||
};
|
||||
|
||||
|
||||
private:
|
||||
int32_t m_LastId;
|
||||
std::vector< EdnTreeElement<T> > m_listElement; //!< list of element...
|
||||
|
||||
bool CheckPresence(int32_t id)
|
||||
{
|
||||
int32_t i;
|
||||
for (i=0; i<(int32_t)m_listElement.size(); i++) {
|
||||
if (m_listElement[i].GetId() == id) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
bool CheckPresenceParrent(int32_t parrentId)
|
||||
{
|
||||
if (ROOT_NODE_ID == parrentId) {
|
||||
return true;
|
||||
}
|
||||
return CheckPresence(parrentId);
|
||||
};
|
||||
|
||||
int32_t FindElementWithId(int32_t id)
|
||||
{
|
||||
int32_t i;
|
||||
for (i=0; i<(int32_t)m_listElement.size(); i++) {
|
||||
if (m_listElement[i].GetId() == id) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return ROOT_NODE_ID;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
#undef __class__
|
||||
#define __class__ NULL
|
||||
|
||||
#endif
|
||||
|
@@ -1,497 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file EdnEdnVector.h
|
||||
* @brief Editeur De N'ours : Basic EdnVector (template)
|
||||
* @author Edouard DUPIN
|
||||
* @date 07/04/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __EDN_EdnVector_H__
|
||||
#define __EDN_EdnVector_H__
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "EdnEdnVector"
|
||||
|
||||
/**
|
||||
* @brief EdnVector classes ...
|
||||
*
|
||||
* @tparam[in] T The type of objects to store.
|
||||
* @tparam[in] INC Incrementation mode (0 : Exponential to 200 and increment by stemp of 200)
|
||||
*
|
||||
* @todo : Need to add : popBack / Assign / Insert / Erase / Swap / Clear
|
||||
*
|
||||
* m_data
|
||||
* ---------- |-----------------------|
|
||||
* | 0 |-------->| Class Data |
|
||||
* |--------| |-----------------------|
|
||||
* | 1 |----|
|
||||
* |--------| |
|
||||
* | 2 |====|==============| |-----------------------|
|
||||
* |--------| | --->| Class Data |
|
||||
* m_count | 3 |-| | |-----------------------|
|
||||
* |--------| | |
|
||||
* | x | | | |-----------------------|
|
||||
* |--------| | -------->| Class Data |
|
||||
* | x | | |-----------------------|
|
||||
* |--------| |
|
||||
* | x | |
|
||||
* |--------| | |-----------------------|
|
||||
* | x | --------------------->| Class Data |
|
||||
* |--------| |-----------------------|
|
||||
* | x |
|
||||
* |--------|
|
||||
* | x |
|
||||
* |--------|
|
||||
* m_size | x |
|
||||
* ----------
|
||||
*
|
||||
*/
|
||||
template<class T, int32_t INC=0> class EdnVector:
|
||||
{
|
||||
public:
|
||||
class Iterator:
|
||||
{
|
||||
// Private data :
|
||||
private:
|
||||
int32_t m_current; // curent Id on the vector
|
||||
EdnVector<T> * m_EdnVector; // Pointer on the curent element of the vector
|
||||
public:
|
||||
/**
|
||||
* @brief Basic itarator constructor with no link with an EdnVector
|
||||
*/
|
||||
Iterator():
|
||||
m_current(-1),
|
||||
m_EdnVector(NULL)
|
||||
{
|
||||
// nothing to do ...
|
||||
}
|
||||
/**
|
||||
* @brief Recopy constructor on a specific EdnVector.
|
||||
* @param[in] otherIterator The Iterator that might be copy
|
||||
*/
|
||||
Iterator(const Iterator & otherIterator):
|
||||
m_current(otherIterator.m_current),
|
||||
m_EdnVector(otherIterator.m_EdnVector)
|
||||
{
|
||||
// nothing to do ...
|
||||
}
|
||||
/**
|
||||
* @brief Asignation operator.
|
||||
* @param[in] otherIterator The Iterator that might be copy
|
||||
* @return reference on the curent Iterator
|
||||
*/
|
||||
Iterator& operator=(const Iterator & otherIterator)
|
||||
{
|
||||
m_current = otherIterator.m_current;
|
||||
m_EdnVector = otherIterator.m_EdnVector;
|
||||
return *this;
|
||||
}
|
||||
/**
|
||||
* @brief Basic destructor
|
||||
*/
|
||||
~Iterator()
|
||||
{
|
||||
m_current = -1;
|
||||
m_EdnVector = NULL;
|
||||
}
|
||||
/**
|
||||
* @brief basic boolean cast
|
||||
* @return true if the element is present in the EdnVector size
|
||||
*/
|
||||
operator bool ()
|
||||
{
|
||||
if( 0 <= m_current
|
||||
&& m_current < m_EdnVector->Size() )
|
||||
{
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief Incremental operator
|
||||
* @return Reference on the current iterator incremented
|
||||
*/
|
||||
Iterator& operator++ ()
|
||||
{
|
||||
if( NULL != m_EdnVector
|
||||
&& m_current < m_EdnVector->Size() )
|
||||
{
|
||||
m_current++;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
/**
|
||||
* @brief Decremental operator
|
||||
* @return Reference on the current iterator decremented
|
||||
*/
|
||||
Iterator& operator-- ()
|
||||
{
|
||||
if (m_current >= 0) {
|
||||
m_current--;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
/**
|
||||
* @brief Incremental operator
|
||||
* @return Reference on a new iterator and increment the other one
|
||||
*/
|
||||
Iterator operator++ (int32_t)
|
||||
{
|
||||
Iterator it(*this);
|
||||
++(*this);
|
||||
return it;
|
||||
}
|
||||
/**
|
||||
* @brief Decremental operator
|
||||
* @return Reference on a new iterator and decrement the other one
|
||||
*
|
||||
*/
|
||||
Iterator operator-- (int32_t)
|
||||
{
|
||||
Iterator it(*this);
|
||||
--(*this);
|
||||
return it;
|
||||
}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
T * operator-> () const
|
||||
{
|
||||
EDN_CHECK_INOUT(m_current >= 0 && m_current < m_EdnVector->Size());
|
||||
return &m_EdnVector->Get(m_current);
|
||||
}
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
T & operator* () const
|
||||
{
|
||||
EDN_CHECK_INOUT(m_current >= 0 && m_current < m_EdnVector->Size());
|
||||
return m_EdnVector->Get(m_current);
|
||||
}
|
||||
private:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Iterator(EdnVector<T> * EdnVector, int pos):
|
||||
m_current(pos),
|
||||
m_EdnVector(EdnVector)
|
||||
{
|
||||
// nothing to do ...
|
||||
}
|
||||
friend class EdnVector;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
EdnVector(int count = 0):
|
||||
m_data(NULL),
|
||||
m_count(0),
|
||||
m_size(0)
|
||||
{
|
||||
Resize(count);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
EdnVector(const EdnVector<T> & EdnVector):
|
||||
m_size(EdnVector.m_size),
|
||||
m_count(EdnVector.m_count),
|
||||
m_data(NULL)
|
||||
{
|
||||
int32_t i;
|
||||
EDN_MALLOC_CAST(m_data, m_size, T, reinterpret_cast<T*>);
|
||||
for(i=0; i<m_count; i++) {
|
||||
new (&m_data[i]) T(EdnVector[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
~EdnVector()
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
EdnVector& operator=(const EdnVector<T> & EdnVector)
|
||||
{
|
||||
int32_t i;
|
||||
this->~EdnVector();
|
||||
m_size = EdnVector.m_size;
|
||||
m_count = EdnVector.m_count;
|
||||
EDN_MALLOC_CAST(m_data, m_size, T, reinterpret_cast<T*>);
|
||||
for(i=0; i<m_count; i++) {
|
||||
new (&m_data[i]) T(EdnVector[i]);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
int32_t Size()
|
||||
{
|
||||
return m_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
T& Get(int32_t pos)
|
||||
{
|
||||
return m_data[pos];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
T& operator[] (int32_t pos)
|
||||
{
|
||||
return Get(pos);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
const T& operator[] (int32_t pos) const
|
||||
{
|
||||
return m_data[pos];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
int IndexOf(const T * item) const
|
||||
{
|
||||
int32_t res = item - m_data;
|
||||
if( 0 > res
|
||||
|| res >= Size())
|
||||
{
|
||||
return -1
|
||||
} else {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void PushBack(const T& item)
|
||||
{
|
||||
int32_t idx = Size();
|
||||
Resize(idx+1);
|
||||
Get(idx) = item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Iterator Get(int pos)
|
||||
{
|
||||
return Iterator(this, pos);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Iterator Begin()
|
||||
{
|
||||
return Get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Iterator End()
|
||||
{
|
||||
return Get( Size()-1 );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Resize(int32_t count)
|
||||
{
|
||||
int32_t i;
|
||||
// Reallocate memory
|
||||
if (count > m_size) {
|
||||
ChangeAllocation(count);
|
||||
}
|
||||
|
||||
// Remove deprecated element
|
||||
for(i=count; i<m_count; i++) {
|
||||
m_data[i].~T();
|
||||
}
|
||||
|
||||
// Create nex item
|
||||
for(i=m_count;i<count;i++) {
|
||||
new (&m_data[i]) T();
|
||||
}
|
||||
|
||||
m_count = count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void ChangeAllocation(int count)
|
||||
{
|
||||
if (count > m_size) {
|
||||
// generate new size
|
||||
while(count > m_size) {
|
||||
if (INC) {
|
||||
m_size = (m_size + INC)
|
||||
} else if (m_size==0) {
|
||||
m_size = 1;
|
||||
} else {
|
||||
m_size = m_size * 2;
|
||||
}
|
||||
}
|
||||
// Allocate the curent element
|
||||
T * data = NULL;
|
||||
EDN_MALLOC_CAST(data, m_size, T, reinterpret_cast<T*>);
|
||||
for(int i=0; i<m_count; i++) {
|
||||
new (&data[i]) T(m_data[i]);
|
||||
}
|
||||
Destroy();
|
||||
m_data = data;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
T * m_data; //!< pointer on the current Data
|
||||
int32_t m_count; //!< number of element
|
||||
int32_t m_size; //!< current allocated size
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Destroy()
|
||||
{
|
||||
for(int i=0; i<m_count; i++) {
|
||||
m_data[i].~T();
|
||||
}
|
||||
if (m_data) {
|
||||
EDN_FREE(m_data);
|
||||
}
|
||||
}
|
||||
};
|
||||
#undef __class__
|
||||
#define __class__ NULL
|
@@ -1,642 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file EdnEdnVectorBin.h
|
||||
* @brief Editeur De N'ours : Basic EdnVectorBin for direct data insertion (template)
|
||||
* @author Edouard DUPIN
|
||||
* @date 07/04/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __EDN_VECTOR_BIN_H__
|
||||
#define __EDN_VECTOR_BIN_H__
|
||||
|
||||
#include "toolsMemory.h"
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "EdnEdnVectorBin"
|
||||
|
||||
/**
|
||||
* @brief EdnVectorBin classes ...
|
||||
*
|
||||
* @tparam[in] SIZE Size of the current element.
|
||||
*
|
||||
* @todo : Need to add : popBack / Assign / Insert / Erase / Swap / Clear
|
||||
*
|
||||
* m_data
|
||||
* <------------ m_dataSize ------------>
|
||||
* ----------------------------------------
|
||||
* | 0 |
|
||||
* |--------------------------------------|
|
||||
* | 1 |
|
||||
* |--------------------------------------|
|
||||
* | 2 |
|
||||
* |--------------------------------------|
|
||||
* m_size | 3 |
|
||||
* |--------------------------------------|
|
||||
* | x |
|
||||
* |--------------------------------------|
|
||||
* | x |
|
||||
* |--------------------------------------|
|
||||
* | x |
|
||||
* |--------------------------------------|
|
||||
* | x |
|
||||
* |--------------------------------------|
|
||||
* | x |
|
||||
* |--------------------------------------|
|
||||
* | x |
|
||||
* |--------------------------------------|
|
||||
* m_allocated | x |
|
||||
* ----------------------------------------
|
||||
*
|
||||
*/
|
||||
template<typename MY_TYPE=int32_t> class EdnVectorBin
|
||||
{
|
||||
public:
|
||||
class Iterator
|
||||
{
|
||||
// Private data :
|
||||
private:
|
||||
int32_t m_current; // curent Id on the vector
|
||||
EdnVectorBin<MY_TYPE> * m_EdnVectorBin; // Pointer on the curent element of the vectorBin
|
||||
public:
|
||||
/**
|
||||
* @brief Basic itarator constructor with no link with an EdnVector
|
||||
*/
|
||||
Iterator():
|
||||
m_current(-1),
|
||||
m_EdnVectorBin(NULL)
|
||||
{
|
||||
// nothing to do ...
|
||||
}
|
||||
/**
|
||||
* @brief Recopy constructor on a specific EdnVector.
|
||||
* @param[in] otherIterator The Iterator that might be copy
|
||||
*/
|
||||
Iterator(const Iterator & otherIterator):
|
||||
m_current(otherIterator.m_current),
|
||||
m_EdnVectorBin(otherIterator.m_EdnVectorBin)
|
||||
{
|
||||
// nothing to do ...
|
||||
}
|
||||
/**
|
||||
* @brief Asignation operator.
|
||||
* @param[in] otherIterator The Iterator that might be copy
|
||||
* @return reference on the curent Iterator
|
||||
*/
|
||||
Iterator& operator=(const Iterator & otherIterator)
|
||||
{
|
||||
m_current = otherIterator.m_current;
|
||||
m_EdnVectorBin = otherIterator.m_EdnVectorBin;
|
||||
return *this;
|
||||
}
|
||||
/**
|
||||
* @brief Basic destructor
|
||||
*/
|
||||
~Iterator()
|
||||
{
|
||||
m_current = -1;
|
||||
m_EdnVectorBin = NULL;
|
||||
}
|
||||
/**
|
||||
* @brief basic boolean cast
|
||||
* @return true if the element is present in the EdnVector size
|
||||
*/
|
||||
operator bool ()
|
||||
{
|
||||
if( 0 <= m_current
|
||||
&& m_current < m_EdnVectorBin->Size() )
|
||||
{
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief Incremental operator
|
||||
* @return Reference on the current iterator incremented
|
||||
*/
|
||||
Iterator& operator++ ()
|
||||
{
|
||||
if( NULL != m_EdnVectorBin
|
||||
&& m_current < m_EdnVectorBin->Size() )
|
||||
{
|
||||
m_current++;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
/**
|
||||
* @brief Decremental operator
|
||||
* @return Reference on the current iterator decremented
|
||||
*/
|
||||
Iterator& operator-- ()
|
||||
{
|
||||
if (m_current >= 0) {
|
||||
m_current--;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
/**
|
||||
* @brief Incremental operator
|
||||
* @return Reference on a new iterator and increment the other one
|
||||
*/
|
||||
Iterator operator++ (int32_t)
|
||||
{
|
||||
Iterator it(*this);
|
||||
++(*this);
|
||||
return it;
|
||||
}
|
||||
/**
|
||||
* @brief Decremental operator
|
||||
* @return Reference on a new iterator and decrement the other one
|
||||
*/
|
||||
Iterator operator-- (int32_t)
|
||||
{
|
||||
Iterator it(*this);
|
||||
--(*this);
|
||||
return it;
|
||||
}
|
||||
/**
|
||||
* @brief Get reference on the current Element
|
||||
* @return the reference on the current Element
|
||||
*/
|
||||
MY_TYPE & operator-> () const
|
||||
{
|
||||
EDN_CHECK_INOUT(m_current >= 0 && m_current < m_EdnVectorBin->Size());
|
||||
return &m_EdnVectorBin->Get(m_current);
|
||||
}
|
||||
/**
|
||||
* @brief Get reference on the current Element
|
||||
* @return the reference on the current Element
|
||||
*/
|
||||
MY_TYPE & operator* () const
|
||||
{
|
||||
EDN_CHECK_INOUT(m_current >= 0 && m_current < m_EdnVectorBin->Size());
|
||||
return m_EdnVectorBin->Get(m_current);
|
||||
}
|
||||
private:
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Iterator(EdnVectorBin<MY_TYPE> * Evb, int32_t pos):
|
||||
m_current(pos),
|
||||
m_EdnVectorBin(Evb)
|
||||
{
|
||||
// nothing to do ...
|
||||
}
|
||||
friend class EdnVectorBin;
|
||||
};
|
||||
|
||||
private:
|
||||
MY_TYPE * m_data; //!< pointer on the curetn table of Data
|
||||
int32_t m_size; //!< nb Element in the buffer
|
||||
int32_t m_allocated; //!< Current allocated size
|
||||
int32_t m_increment; //!< methode of increment
|
||||
public:
|
||||
/**
|
||||
* @brief Create an empty vector
|
||||
* @param[in] count Minimum request size of the Buffer
|
||||
*/
|
||||
EdnVectorBin(int32_t count = 0):
|
||||
m_data(NULL),
|
||||
m_size(0),
|
||||
m_allocated(0),
|
||||
m_increment(1)
|
||||
{
|
||||
ChangeAllocation(count);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Re-copy constructor (copy all needed data)
|
||||
* @param[in] Evb Vector that might be copy
|
||||
*/
|
||||
EdnVectorBin(const EdnVectorBin<MY_TYPE> & Evb)
|
||||
{
|
||||
m_allocated = Evb.m_allocated;
|
||||
m_size = Evb.m_size;
|
||||
m_increment = Evb.m_increment;
|
||||
m_data = NULL;
|
||||
//EDN_DEBUG("USE Specific vector allocator ... Evb.m_size=" << Evb.m_size << " Evb.m_increment=" << Evb.m_increment);
|
||||
// allocate all same data
|
||||
EDN_MALLOC(m_data, m_allocated, MY_TYPE);
|
||||
EDN_ASSERT(NULL!=m_data, "Error in data allocation");
|
||||
// Copy all data ...
|
||||
memcpy(m_data, Evb.m_data, m_allocated * sizeof(MY_TYPE) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Destructor of the current Class
|
||||
*/
|
||||
~EdnVectorBin()
|
||||
{
|
||||
if (NULL!=m_data) {
|
||||
EDN_FREE(m_data);
|
||||
m_data = NULL;
|
||||
m_allocated = 0;
|
||||
m_size = 0;
|
||||
m_increment = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Re-copy operator
|
||||
* @param[in] Evb Vector that might be copy
|
||||
* @return reference on the curent re-copy vector
|
||||
*/
|
||||
EdnVectorBin& operator=(const EdnVectorBin<MY_TYPE> & Evb)
|
||||
{
|
||||
//EDN_DEBUG("USE RECOPY vector ... Evb.m_size=" << Evb.m_size << " Evb.m_increment=" << Evb.m_increment);
|
||||
if( this != &Evb ) // avoid copy to itself
|
||||
{
|
||||
if (NULL!=m_data) {
|
||||
EDN_FREE(m_data);
|
||||
m_data = NULL;
|
||||
}
|
||||
// Set the new value
|
||||
m_allocated = Evb.m_allocated;
|
||||
m_size = Evb.m_size;
|
||||
m_increment = Evb.m_increment;
|
||||
// allocate all same data
|
||||
EDN_MALLOC(m_data, m_allocated, MY_TYPE);
|
||||
EDN_ASSERT(NULL!=m_data, "Error in data allocation");
|
||||
// Copy all data ...
|
||||
memcpy(m_data, Evb.m_data, m_allocated * sizeof(MY_TYPE) );
|
||||
}
|
||||
// Return the curent pointer
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Add at the Last position of the Vector
|
||||
* @param[in] item Element to add at the end of vector
|
||||
*/
|
||||
EdnVectorBin& operator+= (const EdnVectorBin<MY_TYPE> & Evb) // += operator
|
||||
{
|
||||
int32_t nbElememt = Evb.Size();
|
||||
int32_t idx = m_size;
|
||||
Resize(m_size+nbElememt);
|
||||
memcpy(&m_data[idx], &Evb.m_data[0], nbElememt*sizeof(MY_TYPE) );
|
||||
// Return the curent pointer
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set increment mode of this vector (default it match corectly with the number of element inside)
|
||||
* @param[in] newIncrementNumber methode requested
|
||||
*/
|
||||
void SetIncrement(int32_t newIncrementNumber)
|
||||
{
|
||||
m_increment = newIncrementNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the number of element in the vector
|
||||
* @return The number requested
|
||||
*/
|
||||
int32_t Size() const
|
||||
{
|
||||
return m_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get the Allocated size in the vector
|
||||
* @return The size of allocation
|
||||
*/
|
||||
int32_t AllocatedSize() const
|
||||
{
|
||||
return m_allocated;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get a current element in the vector
|
||||
* @param[in] pos Desired position read
|
||||
* @return Reference on the Element
|
||||
*/
|
||||
MY_TYPE& Get(int32_t pos)
|
||||
{
|
||||
return m_data[pos];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get an copy Element an a special position
|
||||
* @param[in] pos Position in the vector that might be get [0..Size()]
|
||||
* @return An reference on the copy of selected element
|
||||
*/
|
||||
MY_TYPE& operator[] (int32_t pos)
|
||||
{
|
||||
return Get(pos);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get an Element an a special position
|
||||
* @param[in] pos Position in the vector that might be get [0..Size()]
|
||||
* @return An reference on the selected element
|
||||
*/
|
||||
const MY_TYPE& operator[] (int32_t pos) const
|
||||
{
|
||||
return m_data[pos];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Add at the Last position of the Vector
|
||||
* @param[in] item Element to add at the end of vector
|
||||
*/
|
||||
void PushBack(const MY_TYPE& item)
|
||||
{
|
||||
int32_t idx = m_size;
|
||||
Resize(m_size+1);
|
||||
m_data[idx] = item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Add at the Last position of the Vector
|
||||
* @param[in] item Element to add at the end of vector
|
||||
*/
|
||||
void PushBack(const MY_TYPE * item, int32_t nbElement)
|
||||
{
|
||||
if (NULL == item) {
|
||||
return;
|
||||
}
|
||||
int32_t idx = m_size;
|
||||
Resize(m_size+nbElement);
|
||||
memcpy(&m_data[idx], item, nbElement*sizeof(MY_TYPE) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove the last element of the vector
|
||||
*/
|
||||
void PopBack(void)
|
||||
{
|
||||
if(m_size>0) {
|
||||
Resize(m_size-1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove all alement in the current vector
|
||||
*/
|
||||
void Clear(void)
|
||||
{
|
||||
if(m_size>0) {
|
||||
Resize(0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Insert(int32_t pos, const MY_TYPE& item)
|
||||
{
|
||||
if (pos>m_size) {
|
||||
EDN_ERROR(" can not insert Element at this position : " << pos << " > " << m_size<< " add it at the end ... ");
|
||||
PushBack(item);
|
||||
return;
|
||||
}
|
||||
int32_t tmpSize = m_size;
|
||||
// Request resize of the current buffer
|
||||
Resize(m_size+1);
|
||||
// move curent data
|
||||
memmove((m_data + pos + 1), (m_data + pos), (tmpSize - pos)*sizeof(MY_TYPE) );
|
||||
// affectation of the current element
|
||||
m_data[pos] = item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Insert(int32_t pos, const MY_TYPE * item, int32_t nbElement)
|
||||
{
|
||||
if (pos>m_size) {
|
||||
EDN_WARNING(" can not insert Element at this position : " << pos << " > " << m_size << " add it at the end ... ");
|
||||
PushBack(item, nbElement);
|
||||
return;
|
||||
}
|
||||
int32_t tmpSize = m_size;
|
||||
// Request resize of the current buffer
|
||||
Resize(m_size+nbElement);
|
||||
// move curent data (after the position)
|
||||
memmove((m_data + pos + nbElement), (m_data + pos), (tmpSize - pos)*sizeof(MY_TYPE) );
|
||||
// affectation of all input element
|
||||
memcpy(&m_data[pos], item, nbElement*sizeof(MY_TYPE) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove one element
|
||||
*
|
||||
* @param[in] pos Position to remove the data
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Erase(int32_t pos)
|
||||
{
|
||||
if (pos>m_size) {
|
||||
EDN_ERROR(" can not Erase Element at this position : " << pos << " > " << m_size);
|
||||
return;
|
||||
}
|
||||
int32_t tmpSize = m_size;
|
||||
// move curent data
|
||||
memmove((m_data + pos), (m_data + pos + 1), (tmpSize - (pos+1))*sizeof(MY_TYPE) );
|
||||
// Request resize of the current buffer
|
||||
Resize(m_size-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove one element
|
||||
*
|
||||
* @param[in] pos Position to remove the data
|
||||
* @param[in] nbElement number of element to remove
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Erase(int32_t pos, int32_t nbElement)
|
||||
{
|
||||
if (pos>m_size) {
|
||||
EDN_ERROR(" can not Erase Element at this position : " << pos << " > " << m_size);
|
||||
return;
|
||||
}
|
||||
if (pos+nbElement>m_size) {
|
||||
nbElement = m_size - pos;
|
||||
}
|
||||
int32_t tmpSize = m_size;
|
||||
// move curent data
|
||||
memmove((m_data + pos), (m_data + pos + nbElement), (tmpSize - (pos+nbElement))*sizeof(MY_TYPE) );
|
||||
// Request resize of the current buffer
|
||||
Resize(m_size-nbElement);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief extract data between two point :
|
||||
* @param[in] posStart start position to extract data
|
||||
* @param[in] posEnd End position to extract data
|
||||
* @return the extracted vector
|
||||
*/
|
||||
EdnVectorBin Extract(int32_t posStart = 0, int32_t posEnd=0x7FFFFFFF)
|
||||
{
|
||||
EdnVectorBin<MY_TYPE> out;
|
||||
if (posStart < 0) {
|
||||
posStart = 0;
|
||||
} else if (posStart >= Size() ) {
|
||||
return out;
|
||||
}
|
||||
if (posEnd < 0) {
|
||||
return out;
|
||||
} else if (posEnd >= Size() ) {
|
||||
posEnd = Size();
|
||||
}
|
||||
out.PushBack(&m_data[posStart], posEnd-posStart);
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set the minimum allocation in memory for the curent vector ==> reallocate the
|
||||
* buffer to fit exactly the mumber of element needed
|
||||
*/
|
||||
void Fit(void)
|
||||
{
|
||||
if (m_size > m_allocated) {
|
||||
// Reallocate the curent data to the correct size ...
|
||||
EDN_REALLOC(m_data, m_size, MY_TYPE);
|
||||
}
|
||||
// Check result with assert :
|
||||
EDN_ASSERT(NULL!=m_data, "Error in data Fitting");
|
||||
m_allocated = m_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get an iterator an an specific position
|
||||
* @param[in] pos Requested position of the iterator in the vector
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator Position(int32_t pos)
|
||||
{
|
||||
return Iterator(this, pos);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get an Iterator on the start position of the Vector
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator Begin(void)
|
||||
{
|
||||
return Position(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get an Iterator on the end position of the Vector
|
||||
* @return The Iterator
|
||||
*/
|
||||
Iterator End(void)
|
||||
{
|
||||
return Position( Size()-1 );
|
||||
}
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief Change the current size of the vector
|
||||
* @param[in] newSize New requested size of element in the vector
|
||||
*/
|
||||
void Resize(int32_t newSize)
|
||||
{
|
||||
// Reallocate memory
|
||||
if (newSize > m_allocated) {
|
||||
ChangeAllocation(newSize);
|
||||
}
|
||||
m_size = newSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Change the current allocation to the corect one (depend on the current size)
|
||||
* @param[in] newSize Minimum number of element needed
|
||||
*/
|
||||
void ChangeAllocation(int32_t newSize)
|
||||
{
|
||||
// set the minimal size to 1
|
||||
if(newSize <= 0) {
|
||||
newSize = 1;
|
||||
}
|
||||
int32_t requestSize = m_allocated;
|
||||
// set the size with the corect chose type :
|
||||
if (newSize == m_allocated) {
|
||||
return;
|
||||
} else if (newSize < requestSize) {
|
||||
// down the size of the vector:
|
||||
if (0==m_increment) {
|
||||
// never down size...
|
||||
} else {
|
||||
int32_t devide = m_increment;
|
||||
if (devide == 0) {
|
||||
devide = 1;
|
||||
}
|
||||
int32_t numberOfStep = m_allocated / devide;
|
||||
if (newSize< ((numberOfStep-2)*devide + devide/2) ) {
|
||||
//Allow Reallocation of a new size shoerter
|
||||
requestSize = ((newSize / devide)+1) * devide;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
while(newSize > requestSize) {
|
||||
if (0 == requestSize) {
|
||||
requestSize = 1;
|
||||
} else if (0==m_increment) {
|
||||
requestSize = requestSize * 2;
|
||||
} else {
|
||||
requestSize = (requestSize + m_increment);
|
||||
}
|
||||
}
|
||||
}
|
||||
// No reallocation needed :
|
||||
if (requestSize == m_allocated) {
|
||||
return;
|
||||
}
|
||||
// check if something is allocated :
|
||||
if (NULL == m_data) {
|
||||
// no data allocated ==> request an allocation (might be the first)
|
||||
EDN_MALLOC(m_data, requestSize, MY_TYPE);
|
||||
} else {
|
||||
// move datas
|
||||
EDN_REALLOC(m_data, requestSize, MY_TYPE);
|
||||
}
|
||||
// Check result with assert :
|
||||
EDN_ASSERT(NULL!=m_data, "Error in data allocation");
|
||||
// set the new allocation size
|
||||
m_allocated = requestSize;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#undef __class__
|
||||
#define __class__ NULL
|
||||
|
||||
#endif
|
@@ -1,85 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file Singleton.h
|
||||
* @brief Editeur De N'ours : singleton system class
|
||||
* @author Edouard DUPIN
|
||||
* @date 04/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __SINGLETON_H__
|
||||
#define __SINGLETON_H__
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Singleton - modèle Singleton applicable à n'importe quelle classe.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename T>
|
||||
class Singleton
|
||||
{
|
||||
protected:
|
||||
// Constructeur/destructeur
|
||||
Singleton() { }
|
||||
~Singleton() { /*std::cout << "destroying singleton." << std::endl;*/ }
|
||||
|
||||
public:
|
||||
// Interface publique
|
||||
static T *getInstance()
|
||||
{
|
||||
if (NULL == _singleton)
|
||||
{
|
||||
/*std::cout << "C: Singleton | creating singleton." << std::endl;*/
|
||||
_singleton = new T;
|
||||
}
|
||||
/*
|
||||
else
|
||||
{
|
||||
std::cout << "C: Singleton | singleton already created!" << std::endl;
|
||||
}
|
||||
*/
|
||||
|
||||
return (static_cast<T*> (_singleton));
|
||||
}
|
||||
|
||||
static void kill()
|
||||
{
|
||||
if (NULL != _singleton)
|
||||
{
|
||||
delete _singleton;
|
||||
_singleton = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
// Unique instance
|
||||
static T *_singleton;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
T *Singleton<T>::_singleton = NULL;
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -1,261 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file MsgBroadcast.cpp
|
||||
* @brief Editeur De N'ours : message beetween thread and GUI elements ... (Souces)
|
||||
* @author Edouard DUPIN
|
||||
* @date 04/02/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "MsgBroadcast.h"
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "MsgBroadcast"
|
||||
|
||||
|
||||
MsgBroadcast::MsgBroadcast(const char * className, messageCat_te cat)
|
||||
{
|
||||
m_messageSystem = MsgBroadcastCore::getInstance();
|
||||
m_className = className;
|
||||
m_cat = cat;
|
||||
// add on listner
|
||||
m_messageSystem->AddReceiver(this);
|
||||
}
|
||||
|
||||
MsgBroadcast::~MsgBroadcast(void)
|
||||
{
|
||||
m_messageSystem->RmReceiver(this);
|
||||
m_messageSystem = NULL;
|
||||
}
|
||||
|
||||
void MsgBroadcast::OnMessage(int32_t id, int32_t dataID)
|
||||
{
|
||||
// nothing to do here
|
||||
}
|
||||
|
||||
void MsgBroadcast::SendMessage(messageType_te id, int32_t dataID)
|
||||
{
|
||||
m_messageSystem->SendMessage(this, id, dataID);
|
||||
}
|
||||
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "MsgBroadcastCore"
|
||||
|
||||
|
||||
// need to create a syngleton ...
|
||||
MsgBroadcastCore::MsgBroadcastCore(void)
|
||||
{
|
||||
EDN_INFO("Init broadcast message System : ");
|
||||
m_messageID = 0;
|
||||
}
|
||||
|
||||
MsgBroadcastCore::~MsgBroadcastCore(void)
|
||||
{
|
||||
EDN_INFO("Un-Init broadcast message System : ");
|
||||
}
|
||||
|
||||
#define MACRO_DISPLAY_MSG(data) case data: return (char*)#data ; break;
|
||||
|
||||
static char * GetMessageChar(messageType_te Id)
|
||||
{
|
||||
switch(Id)
|
||||
{
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__QUIT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_CURRENT)
|
||||
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_MAIN_WINDOWS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_SEARCH)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_PREFERENCE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_REPLACE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_OPEN_FILE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_SAVE_AS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_GOTO_LINE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__GUI_SHOW_ABOUT)
|
||||
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_REMOVE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_REMOVE_ALL)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_ADD)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_STATE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_NAME)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_MODIFY)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_HAS_HISTORY)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_HAS_NOT_HISTORY)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_HAS_FUTURE_HISTORY)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFFER_CHANGE_HAS_NOT_FUTURE_HISTORY)
|
||||
|
||||
// create a new buffer
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__NEW)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFF_ALL_SAVE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFF_ALL_CLOSE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFF_ID_CLOSE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__BUFF_ID_SAVE)
|
||||
|
||||
// GUI event for the selected buffer
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_CHANGE_BUFFER_ID)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_SAVE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_SAVE_AS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_REMOVE_LINE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_SELECT_ALL)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_UN_SELECT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_COPY)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_CUT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_PASTE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_FIND_PREVIOUS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_FIND_OLD_PREVIOUS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_FIND_NEXT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_FIND_OLD_NEXT)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_REPLACE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_REPLACE_ALL)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_CLOSE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_UNDO)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_REDO)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_GOTO_LINE)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__REFRESH_DISPLAY)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__CURRENT_SET_CHARSET)
|
||||
|
||||
// Ctags MESSAGE :
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__OPEN_CTAGS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__RELOAD_CTAGS)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__JUMP_TO_CURRENT_SELECTION)
|
||||
MACRO_DISPLAY_MSG(EDN_MSG__JUMP_BACK)
|
||||
|
||||
default:
|
||||
return (char*)"??";
|
||||
}
|
||||
}
|
||||
|
||||
static char * GetMessageTypeChar(messageCat_te Id)
|
||||
{
|
||||
switch(Id)
|
||||
{
|
||||
case EDN_CAT_NONE:
|
||||
return (char*)"NONE";
|
||||
case EDN_CAT_GUI:
|
||||
return (char*)"GUI";
|
||||
case EDN_CAT_WORK_AREA:
|
||||
return (char*)"WORK_AREA";
|
||||
case EDN_CAT_SYSTEM:
|
||||
return (char*)"SYSTEM";
|
||||
case EDN_CAT_BUFFER_MANAGER:
|
||||
return (char*)"BUFFER_MANAGER";
|
||||
case EDN_CAT_GUI_MANAGER:
|
||||
return (char*)"GUI_MANAGER";
|
||||
case EDN_CAT_CTAGS:
|
||||
return (char*)"C-TAGS_MANAGER";
|
||||
default:
|
||||
return (char*)"??";
|
||||
}
|
||||
}
|
||||
|
||||
void MsgBroadcastCore::SendMessage(MsgBroadcast * pointerOnSender, messageType_te id, int32_t dataID)
|
||||
{
|
||||
// Add message on the list :
|
||||
messageElement_ts myStructMessage;
|
||||
messageCat_te catDest = EDN_CAT_NONE;
|
||||
|
||||
|
||||
// DESTINATION : GUI_MANAGER
|
||||
if( MSG_TO_GUI_MANAGER__START <= id
|
||||
&& MSG_TO_GUI_MANAGER__STOP >= id )
|
||||
{
|
||||
catDest = EDN_CAT_GUI_MANAGER;
|
||||
} else if( MSG_TO_GUI__START <= id
|
||||
&& MSG_TO_GUI__STOP >= id )
|
||||
{
|
||||
catDest = EDN_CAT_GUI;
|
||||
} else if( MSG_TO_BUFFER_MANAGER__START <= id
|
||||
&& MSG_TO_BUFFER_MANAGER__STOP >= id )
|
||||
{
|
||||
catDest = EDN_CAT_BUFFER_MANAGER;
|
||||
} else if( MSG_TO_WORKING_AREA__START <= id
|
||||
&& MSG_TO_WORKING_AREA__STOP >= id )
|
||||
{
|
||||
catDest = EDN_CAT_WORK_AREA;
|
||||
} else if( MSG_TO_SYSTEM__START <= id
|
||||
&& MSG_TO_SYSTEM__STOP >= id )
|
||||
{
|
||||
catDest = EDN_CAT_SYSTEM;
|
||||
} else if( MSG_TO_CTAGS__START <= id
|
||||
&& MSG_TO_CTAGS__STOP >= id )
|
||||
{
|
||||
catDest = EDN_CAT_CTAGS;
|
||||
}
|
||||
|
||||
myStructMessage.localMessageID = m_messageID++;
|
||||
if (NULL == pointerOnSender) {
|
||||
EDN_INFO("#" << myStructMessage.localMessageID << " From \"NULL\" CAT=" << GetMessageTypeChar(catDest) << " id=" << id << "=\"" << GetMessageChar(id) << "\" dataID=" << dataID);
|
||||
} else {
|
||||
EDN_INFO("#" << myStructMessage.localMessageID << " From \"" << pointerOnSender->GetName().c_str() << "\" CAT=" << GetMessageTypeChar(catDest) << " id=" << id << "=\"" << GetMessageChar(id) << "\" dataID=" << dataID);
|
||||
}
|
||||
myStructMessage.msgCatDest = catDest;
|
||||
myStructMessage.msgId = id;
|
||||
myStructMessage.data = dataID;
|
||||
m_listOfMessage.PushBack(myStructMessage);
|
||||
|
||||
|
||||
if (m_listOfMessage.Size() > 1 ) {
|
||||
// we are curently in message processing ==> wait end to process this message
|
||||
return;
|
||||
}
|
||||
// send message on system :
|
||||
while (m_listOfMessage.Size() > 0) {
|
||||
for (int32_t i=0 ; i<m_listMessage.Size() ; i++) {
|
||||
if( EDN_CAT_NONE == m_listOfMessage[0].msgCatDest
|
||||
|| m_listOfMessage[0].msgCatDest == m_listMessage[i]->GetCat())
|
||||
{
|
||||
EDN_INFO(" #" << m_listOfMessage[0].localMessageID << " ==> process In :\"" << m_listMessage[i]->GetName().c_str() << "\" ");
|
||||
m_listMessage[i]->OnMessage(m_listOfMessage[0].msgId, m_listOfMessage[0].data);
|
||||
}
|
||||
}
|
||||
m_listOfMessage.Erase(0);
|
||||
}
|
||||
}
|
||||
|
||||
void MsgBroadcastCore::AddReceiver(MsgBroadcast * pointerOnReceiver)
|
||||
{
|
||||
for (int32_t i=0 ; i<m_listMessage.Size() ; i++) {
|
||||
if (m_listMessage[i] == pointerOnReceiver) {
|
||||
// nothing to do ...
|
||||
return;
|
||||
}
|
||||
}
|
||||
m_listMessage.PushBack(pointerOnReceiver);
|
||||
EDN_INFO("Add a listner for the broadCast messages : \"" << pointerOnReceiver->GetName().c_str() << "\"");
|
||||
}
|
||||
|
||||
|
||||
void MsgBroadcastCore::RmReceiver(MsgBroadcast * pointerOnReceiver)
|
||||
{
|
||||
for (int32_t i=0 ; i<m_listMessage.Size() ; i++) {
|
||||
if (m_listMessage[i] == pointerOnReceiver) {
|
||||
m_listMessage.Erase(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void GeneralSendMessage(messageType_te id, int32_t dataID)
|
||||
{
|
||||
MsgBroadcastCore::getInstance()->SendMessage(NULL, id, dataID);
|
||||
}
|
@@ -1,199 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file MsgBroadcast.h
|
||||
* @brief Editeur De N'ours : message beetween thread and GUI elements ... (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 04/02/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __MSG_BROADCAST_H__
|
||||
#define __MSG_BROADCAST_H__
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "Edn.h"
|
||||
#include "Singleton.h"
|
||||
|
||||
|
||||
|
||||
// broadCast Message
|
||||
|
||||
// Message to prevent the curent thread that Buffer has changed
|
||||
// the ID we'll use to identify our event
|
||||
typedef enum {
|
||||
EDN_MSG__NONE = 0,
|
||||
// Programm is Quitting... close all if needed ...
|
||||
EDN_MSG__QUIT,
|
||||
EDN_MSG__BUFFER_CHANGE_CURRENT, // set the new current BUFFER ...
|
||||
|
||||
// DESTINATION : GUI_MANAGER
|
||||
MSG_TO_GUI_MANAGER__START,
|
||||
// GUI windows openning and closing
|
||||
EDN_MSG__GUI_SHOW_MAIN_WINDOWS,
|
||||
EDN_MSG__GUI_SHOW_SEARCH,
|
||||
EDN_MSG__GUI_SHOW_PREFERENCE,
|
||||
EDN_MSG__GUI_SHOW_REPLACE,
|
||||
EDN_MSG__GUI_SHOW_OPEN_FILE,
|
||||
EDN_MSG__GUI_SHOW_SAVE_AS,
|
||||
EDN_MSG__GUI_SHOW_GOTO_LINE,
|
||||
EDN_MSG__GUI_SHOW_ABOUT,
|
||||
MSG_TO_GUI_MANAGER__STOP,
|
||||
|
||||
// DESTINATION : GUI
|
||||
// generate by the current buffer to said the buffer has changing
|
||||
MSG_TO_GUI__START,
|
||||
EDN_MSG__BUFFER_REMOVE,
|
||||
EDN_MSG__BUFFER_REMOVE_ALL,
|
||||
EDN_MSG__BUFFER_ADD,
|
||||
EDN_MSG__BUFFER_CHANGE_STATE,
|
||||
EDN_MSG__BUFFER_CHANGE_NAME,
|
||||
EDN_MSG__BUFFER_CHANGE_MODIFY,
|
||||
EDN_MSG__BUFFER_CHANGE_HAS_HISTORY,
|
||||
EDN_MSG__BUFFER_CHANGE_HAS_NOT_HISTORY,
|
||||
EDN_MSG__BUFFER_CHANGE_HAS_FUTURE_HISTORY,
|
||||
EDN_MSG__BUFFER_CHANGE_HAS_NOT_FUTURE_HISTORY,
|
||||
MSG_TO_GUI__STOP,
|
||||
|
||||
// DESTINATION : Buffer MANAGER
|
||||
MSG_TO_BUFFER_MANAGER__START,
|
||||
// create a new buffer
|
||||
EDN_MSG__NEW,
|
||||
// Event For All buffer ==> goto the buffer MANAGER
|
||||
EDN_MSG__BUFF_ALL_SAVE,
|
||||
EDN_MSG__BUFF_ALL_CLOSE,
|
||||
// Event For Specific Buffer ID : ==> GOTO the buffer MANAGER
|
||||
EDN_MSG__BUFF_ID_CLOSE,
|
||||
EDN_MSG__BUFF_ID_SAVE,
|
||||
MSG_TO_BUFFER_MANAGER__STOP,
|
||||
|
||||
// DESTINATION : Working AREA
|
||||
MSG_TO_WORKING_AREA__START,
|
||||
// GUI event for the selected buffer
|
||||
EDN_MSG__CURRENT_CHANGE_BUFFER_ID,
|
||||
EDN_MSG__CURRENT_SAVE,
|
||||
EDN_MSG__CURRENT_SAVE_AS,
|
||||
EDN_MSG__CURRENT_SELECT_ALL,
|
||||
EDN_MSG__CURRENT_REMOVE_LINE,
|
||||
EDN_MSG__CURRENT_UN_SELECT,
|
||||
EDN_MSG__CURRENT_COPY,
|
||||
EDN_MSG__CURRENT_CUT,
|
||||
EDN_MSG__CURRENT_PASTE,
|
||||
EDN_MSG__CURRENT_FIND_PREVIOUS,
|
||||
EDN_MSG__CURRENT_FIND_OLD_PREVIOUS,
|
||||
EDN_MSG__CURRENT_FIND_NEXT,
|
||||
EDN_MSG__CURRENT_FIND_OLD_NEXT,
|
||||
EDN_MSG__CURRENT_REPLACE,
|
||||
EDN_MSG__CURRENT_REPLACE_ALL,
|
||||
EDN_MSG__CURRENT_CLOSE,
|
||||
EDN_MSG__CURRENT_UNDO,
|
||||
EDN_MSG__CURRENT_REDO,
|
||||
EDN_MSG__CURRENT_GOTO_LINE,
|
||||
EDN_MSG__REFRESH_DISPLAY,
|
||||
EDN_MSG__CURRENT_SET_CHARSET,
|
||||
MSG_TO_WORKING_AREA__STOP,
|
||||
|
||||
// DESTINATION : SYSTEM ...
|
||||
MSG_TO_SYSTEM__START,
|
||||
MSG_TO_SYSTEM__STOP,
|
||||
|
||||
|
||||
// DESTINATION : CTAGS ...
|
||||
MSG_TO_CTAGS__START,
|
||||
EDN_MSG__OPEN_CTAGS,
|
||||
EDN_MSG__RELOAD_CTAGS,
|
||||
EDN_MSG__JUMP_TO_CURRENT_SELECTION,
|
||||
EDN_MSG__JUMP_BACK,
|
||||
MSG_TO_CTAGS__STOP,
|
||||
|
||||
|
||||
}messageType_te;
|
||||
|
||||
typedef enum {
|
||||
EDN_CAT_NONE,
|
||||
EDN_CAT_GUI,
|
||||
EDN_CAT_WORK_AREA,
|
||||
EDN_CAT_SYSTEM,
|
||||
EDN_CAT_BUFFER_MANAGER,
|
||||
EDN_CAT_GUI_MANAGER,
|
||||
EDN_CAT_CTAGS,
|
||||
}messageCat_te;
|
||||
|
||||
|
||||
typedef struct {
|
||||
messageType_te msgId;
|
||||
int32_t dataId;
|
||||
}messageData_ts;
|
||||
|
||||
|
||||
class MsgBroadcastCore;
|
||||
|
||||
class MsgBroadcast
|
||||
{
|
||||
private:
|
||||
Edn::String m_className;
|
||||
MsgBroadcastCore * m_messageSystem;
|
||||
messageCat_te m_cat;
|
||||
public:
|
||||
MsgBroadcast(const char * className, messageCat_te cat);
|
||||
virtual ~MsgBroadcast(void);
|
||||
// caul when a message is send
|
||||
virtual void OnMessage(int32_t id, int32_t dataID);
|
||||
Edn::String& GetName(void) { return m_className; };
|
||||
messageCat_te GetCat(void) { return m_cat; };
|
||||
protected :
|
||||
void SendMessage(messageType_te id, int32_t dataID = -1);
|
||||
};
|
||||
|
||||
|
||||
typedef struct {
|
||||
int32_t localMessageID;
|
||||
messageCat_te msgCatDest;
|
||||
messageType_te msgId;
|
||||
int32_t data;
|
||||
}messageElement_ts;
|
||||
|
||||
// need to create a syngleton ...
|
||||
class MsgBroadcastCore: public Singleton<MsgBroadcastCore>
|
||||
{
|
||||
friend class Singleton<MsgBroadcastCore>;
|
||||
// specific for sigleton system...
|
||||
private:
|
||||
// Constructeur
|
||||
MsgBroadcastCore(void);
|
||||
~MsgBroadcastCore(void);
|
||||
public:
|
||||
void SendMessage(MsgBroadcast * pointerOnSender, messageType_te id, int32_t dataID = -1);
|
||||
void AddReceiver(MsgBroadcast * pointerOnReceiver);
|
||||
void RmReceiver(MsgBroadcast * pointerOnReceiver);
|
||||
|
||||
private:
|
||||
EdnVectorBin<MsgBroadcast*> m_listMessage;
|
||||
uint32_t m_messageID;
|
||||
EdnVectorBin<messageElement_ts> m_listOfMessage;
|
||||
};
|
||||
|
||||
|
||||
void GeneralSendMessage(messageType_te id, int32_t dataID = -1);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,114 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file File.cpp
|
||||
* @brief Editeur De N'ours : File folder and name abstraction (Sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 16/07/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "Edn.h"
|
||||
|
||||
Edn::File::File(Edn::String &filename, int32_t LineNumber)
|
||||
{
|
||||
m_lineNumberOpen = 0;
|
||||
SetCompleateName(filename);
|
||||
}
|
||||
|
||||
Edn::File::File(Edn::String &filename, Edn::String &folder, int32_t lineNumber)
|
||||
{
|
||||
Edn::String tmpString = folder;
|
||||
tmpString += '/';
|
||||
tmpString += filename;
|
||||
SetCompleateName(tmpString);
|
||||
m_lineNumberOpen = lineNumber;
|
||||
}
|
||||
|
||||
|
||||
Edn::File::~File(void)
|
||||
{
|
||||
// nothing to do ...
|
||||
}
|
||||
|
||||
void Edn::File::ExtranctAndName(Edn::String &inputString)
|
||||
{
|
||||
m_folder = "";
|
||||
m_shortFilename = "";
|
||||
|
||||
for (int32_t iii=inputString.Size()-1; iii >= 0 ; iii--) {
|
||||
/*
|
||||
if (inputString[iii] != '/') {
|
||||
m_shortFilename.Insert(0, inputString[iii]);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
char tmpVal[4096];
|
||||
strncpy(tmpVal, inputString.c_str(), 4096);
|
||||
tmpVal[4096-1] = '\0';
|
||||
char *ptr = strrchr(tmpVal, '/');
|
||||
if (NULL == ptr) {
|
||||
ptr = strrchr(tmpVal, '\\');
|
||||
}
|
||||
Edn::String out = "./";
|
||||
if (NULL != ptr) {
|
||||
*ptr = '\0';
|
||||
out = tmpVal;
|
||||
out+= '/';
|
||||
}
|
||||
return out;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
Edn::String Edn::File::GetFolder(void)
|
||||
{
|
||||
return m_folder;
|
||||
}
|
||||
|
||||
Edn::String Edn::File::GetShortFilename(void)
|
||||
{
|
||||
return m_shortFilename;
|
||||
}
|
||||
|
||||
Edn::String Edn::File::GetCompleateName(void)
|
||||
{
|
||||
Edn::String out;
|
||||
out = m_folder;
|
||||
out += '/';
|
||||
out += m_shortFilename;
|
||||
}
|
||||
|
||||
void Edn::File::SetCompleateName(Edn::String &newFilename)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int32_t Edn::File::GetLineNumber(void)
|
||||
{
|
||||
return m_lineNumberOpen;
|
||||
}
|
@@ -1,53 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file File.h
|
||||
* @brief Editeur De N'ours : File folder and name abstraction (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 16/07/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _IN_NAMESPACE_EDN_
|
||||
# error This will be include only in "edn.h"
|
||||
#else
|
||||
|
||||
class File
|
||||
{
|
||||
public:
|
||||
File(void) { m_lineNumberOpen=0; }
|
||||
File(Edn::String &filename, int32_t LineNumber = 0);
|
||||
File(Edn::String &filename, Edn::String &folder, int32_t lineNumber = 0);
|
||||
~File(void);
|
||||
Edn::String GetFolder(void);
|
||||
Edn::String GetShortFilename(void);
|
||||
Edn::String GetCompleateName(void);
|
||||
int32_t GetLineNumber(void);
|
||||
|
||||
void SetCompleateName(Edn::String &newFilename);
|
||||
|
||||
private :
|
||||
void ExtranctAndName(Edn::String &inputString);
|
||||
Edn::String m_folder;
|
||||
Edn::String m_shortFilename;
|
||||
int32_t m_lineNumberOpen;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -1,708 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file EdnString.cpp
|
||||
* @brief Editeur De N'ours : normal sting management... (sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 26/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "Edn.h"
|
||||
#include "toolsMemory.h"
|
||||
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "EdnString"
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String::~String(void)
|
||||
{
|
||||
m_data.Clear();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String::String(void)
|
||||
{
|
||||
//EDN_INFO("new Edn::String()");
|
||||
m_data.Clear();
|
||||
m_data.PushBack('\0');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String::String(const char myInput)
|
||||
{
|
||||
m_data.Clear();
|
||||
m_data.PushBack(myInput);
|
||||
m_data.PushBack('\0');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String::String(const char* inputData, int32_t len)
|
||||
{
|
||||
m_data.Clear();
|
||||
m_data.PushBack('\0');
|
||||
Set(inputData, len);
|
||||
}
|
||||
|
||||
void Edn::String::Set(const char * inputData, int32_t len)
|
||||
{
|
||||
// overwrite the len if needed :
|
||||
if ((-1) == len) {
|
||||
len = strlen(inputData);
|
||||
}
|
||||
|
||||
if (len != 0) {
|
||||
// remove the last '\0'
|
||||
m_data.PopBack();
|
||||
// copy the data ...
|
||||
m_data.PushBack((int8_t*)inputData, len);
|
||||
// add the last '\0'
|
||||
m_data.PushBack('\0');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String::String(int inputData)
|
||||
{
|
||||
char tmpVal[256];
|
||||
// generate the string :
|
||||
sprintf(tmpVal, "%d", inputData);
|
||||
// set the internal data :
|
||||
m_data.Clear();
|
||||
m_data.PushBack('\0');
|
||||
Set(tmpVal);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String::String(unsigned int inputData)
|
||||
{
|
||||
char tmpVal[256];
|
||||
// generate the string :
|
||||
sprintf(tmpVal, "%d", inputData);
|
||||
// set the internal data :
|
||||
m_data.Clear();
|
||||
m_data.PushBack('\0');
|
||||
Set(tmpVal);
|
||||
}
|
||||
|
||||
Edn::String::String(const Edn::String &ednS)
|
||||
{
|
||||
//EDN_INFO("Constructeur de recopie");
|
||||
m_data = ednS.m_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
const Edn::String& Edn::String::operator= (const Edn::String &ednS )
|
||||
{
|
||||
//EDN_INFO("OPERATOR de recopie");
|
||||
if( this != &ednS ) // avoid copy to itself
|
||||
{
|
||||
m_data = ednS.m_data;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
const Edn::String& Edn::String::operator= (const char * inputData)
|
||||
{
|
||||
m_data.Clear();
|
||||
m_data.PushBack('\0');
|
||||
// calculate the size :
|
||||
uint32_t len = strlen(inputData);
|
||||
// check the new size ...
|
||||
if (len > 0 ) {
|
||||
// copy all data :
|
||||
Set(inputData, len);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
const Edn::String& Edn::String::operator= (EdnVectorBin<int8_t> inputData)
|
||||
{
|
||||
m_data = inputData;
|
||||
if (m_data.Size()>0) {
|
||||
if (m_data[m_data.Size()-1] != '\0') {
|
||||
m_data.PushBack('\0');
|
||||
}
|
||||
}
|
||||
//EDN_DEBUG("m_dataLen="<<m_dataLen << " m_dataLenUTF8="<<m_dataLenUTF8 << " description=" << m_data);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
bool Edn::String::operator== (const Edn::String& ednS) const
|
||||
{
|
||||
if( this != &ednS ) {
|
||||
if (ednS.m_data.Size() != m_data.Size()) {
|
||||
//EDN_DEBUG(" not the same size : " << ednS.m_data.Size() << "!=" << m_data.Size());
|
||||
return false;
|
||||
}
|
||||
for (int32_t iii= 0; iii<m_data.Size(); iii++) {
|
||||
//EDN_DEBUG(" check : " << ednS.m_data[iii] << "!=" << m_data[iii]);
|
||||
if (ednS.m_data[iii]!= m_data[iii]){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
bool Edn::String::operator== (const char * inputData) const
|
||||
{
|
||||
|
||||
// calculate the size :
|
||||
int32_t len = strlen(inputData);
|
||||
if (len+1 != m_data.Size()) {
|
||||
return false;
|
||||
}
|
||||
for (int32_t iii= 0; iii<m_data.Size(); iii++) {
|
||||
if (inputData[iii]!= m_data[iii]){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
bool Edn::String::operator!= (const Edn::String& ednS) const
|
||||
{
|
||||
return !(*this == ednS);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
bool Edn::String::operator!= (const char * inputData) const
|
||||
{
|
||||
return !(*this == inputData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
const Edn::String& Edn::String::operator+= (const Edn::String &ednS)
|
||||
{
|
||||
if (0 < ednS.Size()) {
|
||||
// remove the last '\0'
|
||||
m_data.PopBack();
|
||||
// copy the data ...
|
||||
m_data += ednS.m_data;
|
||||
// This previous include the \0 in case of the 2 string are different...
|
||||
if( this == &ednS ) {
|
||||
// add the removed end string
|
||||
m_data.PushBack('\0');
|
||||
}
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
const Edn::String& Edn::String::operator+= (const char * inputData)
|
||||
{
|
||||
//EDN_INFO(" string(arg) : \"" << inputData << "\"");
|
||||
//EDN_INFO(" string(direct) : \"" << m_data << "\"");
|
||||
int32_t len = strlen(inputData);
|
||||
|
||||
if (len != 0) {
|
||||
// remove the last '\0'
|
||||
m_data.PopBack();
|
||||
// copy the data ...
|
||||
m_data.PushBack((int8_t*)inputData, len+1 );
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String Edn::String::operator+ (const Edn::String &ednS)
|
||||
{
|
||||
Edn::String temp;
|
||||
//EDN_INFO(" string(arg) : \"" << ednS.m_data << "\"");
|
||||
//EDN_INFO(" string(direct) : \"" << m_data << "\"");
|
||||
temp += *this;
|
||||
temp += ednS;
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
Edn::String Edn::String::operator+ (const char * inputData)
|
||||
{
|
||||
Edn::String temp;
|
||||
//EDN_INFO(" string(arg) : \"" << inputData << "\"");
|
||||
//EDN_INFO(" string(direct) : \"" << m_data << "\"");
|
||||
temp += *this;
|
||||
temp += inputData;
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
bool Edn::String::IsEmpty(void) const
|
||||
{
|
||||
if(1 >= m_data.Size() ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
int32_t Edn::String::Size(void) const
|
||||
{
|
||||
if (m_data.Size() == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
return m_data.Size() - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
void Edn::String::Add(int32_t currentID, const char* inputData)
|
||||
{
|
||||
// get the input lenght
|
||||
int32_t len = strlen(inputData);
|
||||
if (0 == len) {
|
||||
EDN_WARNING("no data to add on the current string");
|
||||
return;
|
||||
} else if (currentID < 0) {
|
||||
EDN_WARNING("Curent ID(" << currentID << ") < 0 ==> Add at the start");
|
||||
currentID = 0;
|
||||
} else if (currentID > Size() ) {
|
||||
EDN_ERROR("Curent ID(" << currentID << ") > maxSize ... (" << Size() << ") ==> add at the end ...");
|
||||
m_data.PushBack((int8_t*)inputData, len);
|
||||
return;
|
||||
}
|
||||
m_data.Insert(currentID, (int8_t*)inputData, len);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out]
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
void Edn::String::Remove(int32_t currentID, int32_t len)
|
||||
{
|
||||
if (0 >= len) {
|
||||
EDN_ERROR("no data to remove on the current string");
|
||||
return;
|
||||
}
|
||||
// TODO : check the size of the data
|
||||
m_data.Erase(currentID, len);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Remove all element in the string
|
||||
*
|
||||
* @param ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Edn::String::Clear(void)
|
||||
{
|
||||
m_data.Clear();
|
||||
m_data.PushBack('\0');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief find the first accurence after the position indicated
|
||||
*
|
||||
* @param[in] element Element that might be find in the string
|
||||
* @param[in] startPos Stert position to begin the search
|
||||
*
|
||||
* @return the position of the first occurence or -1 if not find...
|
||||
*
|
||||
*/
|
||||
int32_t Edn::String::FindForward(const char element, int32_t startPos)
|
||||
{
|
||||
if (startPos < 0) {
|
||||
startPos = 0;
|
||||
} else if (startPos >= Size() ) {
|
||||
return -1;
|
||||
}
|
||||
for (int32_t iii=startPos; iii< Size(); iii++) {
|
||||
if (m_data[iii] == element) {
|
||||
return iii;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief find the first accurence before the position indicated.
|
||||
*
|
||||
* @param[in] element Element that might be find in the string
|
||||
* @param[in] startPos Stert position to begin the search
|
||||
*
|
||||
* @return the position of the first occurence begining by the end or -1 if not find...
|
||||
*
|
||||
*/
|
||||
int32_t Edn::String::FindBack(const char element, int32_t startPos)
|
||||
{
|
||||
if (startPos < 0) {
|
||||
return -1;
|
||||
} else if (startPos >= Size() ) {
|
||||
startPos = Size();
|
||||
}
|
||||
for (int32_t iii=startPos; iii>=0; iii--) {
|
||||
if (m_data[iii] == element) {
|
||||
return iii;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Extract data from the data between two position
|
||||
*
|
||||
* @param[in] posStart Start position where to extract data
|
||||
* @param[in] posEnd End position where to extract data
|
||||
*
|
||||
* @return the extracted string
|
||||
*
|
||||
*/
|
||||
Edn::String Edn::String::Extract(int32_t posStart, int32_t posEnd)
|
||||
{
|
||||
Edn::String out;
|
||||
if (posStart < 0) {
|
||||
posStart = 0;
|
||||
} else if (posStart >= Size() ) {
|
||||
return out;
|
||||
}
|
||||
if (posEnd < 0) {
|
||||
return out;
|
||||
} else if (posEnd >= Size() ) {
|
||||
posEnd = Size();
|
||||
}
|
||||
out.m_data = m_data.Extract(posStart, posEnd);
|
||||
out.m_data.PushBack('\0');
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get a basic vector in int8 data with no \0 at the end of the string
|
||||
*
|
||||
* @param ---
|
||||
*
|
||||
* @return The desired vector with data
|
||||
*
|
||||
*/
|
||||
EdnVectorBin<int8_t> Edn::String::GetVector(void)
|
||||
{
|
||||
EdnVectorBin<int8_t> out = m_data;
|
||||
out.PopBack();
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Unitary test for the string system
|
||||
*
|
||||
* @param ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Edn::TestUntaire_String(void)
|
||||
{
|
||||
EDN_WARNING("*********************************************************");
|
||||
EDN_WARNING("** Test Unitaire 'EdnString' (START)");
|
||||
EDN_WARNING("*********************************************************");
|
||||
|
||||
int32_t iddd = 0;
|
||||
Edn::String * monString = new Edn::String();
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\"");
|
||||
delete(monString);
|
||||
|
||||
monString = new Edn::String("test de direct data");
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\"");
|
||||
delete(monString);
|
||||
|
||||
monString = new Edn::String("test de direct data", 7);
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\"");
|
||||
delete(monString);
|
||||
|
||||
int32_t testId = -6789;
|
||||
monString = new Edn::String(testId);
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\"");
|
||||
delete(monString);
|
||||
|
||||
uint32_t testId2 = 12345;
|
||||
monString = new Edn::String((unsigned int)testId2);
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\"");
|
||||
delete(monString);
|
||||
|
||||
Edn::String plop = "otherString";
|
||||
monString = new Edn::String(plop);
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\"");
|
||||
delete(monString);
|
||||
|
||||
|
||||
Edn::String s1 = "test de base ...";
|
||||
s1 += s1;
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\"");
|
||||
s1 += " plop 2 ";
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\"");
|
||||
s1 += plop;
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\"");
|
||||
s1 = plop;
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\"");
|
||||
s1 = "test direct 44";
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\"");
|
||||
EdnVectorBin<int8_t> vb1;
|
||||
vb1.PushBack('v');
|
||||
vb1.PushBack('b');
|
||||
vb1.PushBack('1');
|
||||
s1 = vb1;
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\"");
|
||||
vb1.Clear();
|
||||
vb1.PushBack('v');
|
||||
vb1.PushBack('b');
|
||||
vb1.PushBack('2');
|
||||
vb1.PushBack('\0');
|
||||
s1 = vb1;
|
||||
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\"");
|
||||
|
||||
if (s1 == "vb2") {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
} else {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
}
|
||||
|
||||
|
||||
if (s1 == "vb3") {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
} else {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
}
|
||||
|
||||
|
||||
if (s1 != "vb3") {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
} else {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
}
|
||||
|
||||
|
||||
if (s1 != "vb2") {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
} else {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
}
|
||||
|
||||
|
||||
Edn::String s2 = "vb2";
|
||||
Edn::String s3 = "vb3";
|
||||
|
||||
if (s1 == s2) {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
} else {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
}
|
||||
|
||||
|
||||
if (s1 == s3) {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
} else {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
}
|
||||
|
||||
|
||||
if (s1 != s3) {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
} else {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
}
|
||||
|
||||
|
||||
if (s1 != s2) {
|
||||
EDN_ERROR("phase : " << iddd++ << " : == ERROR");
|
||||
} else {
|
||||
EDN_INFO("phase : " << iddd++ << " : == OK");
|
||||
}
|
||||
EDN_WARNING("*********************************************************");
|
||||
EDN_WARNING("** Test Unitaire 'EdnString' (STOP)");
|
||||
EDN_WARNING("*********************************************************");
|
||||
}
|
||||
|
@@ -1,82 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file EdnString.h
|
||||
* @brief Editeur De N'ours : normal sting management... (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 26/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef _IN_NAMESPACE_EDN_
|
||||
# error This will be include only in "edn.h"
|
||||
#else
|
||||
|
||||
class String
|
||||
{
|
||||
public:
|
||||
// Constructeurs
|
||||
String(void);
|
||||
String(const char myInput);
|
||||
String(const char* inputData, int32_t len = -1);//, bool noAllocation=false);
|
||||
void Set(const char* inputData, int32_t len=-1);
|
||||
// basic convertion integer en string
|
||||
String(int inputData);
|
||||
String(unsigned int inputData);
|
||||
//String(const wchar_t *inputData);
|
||||
String(const Edn::String &ednS);
|
||||
// destructor :
|
||||
~String(void);
|
||||
|
||||
const Edn::String& operator= (const Edn::String &ednS ); // assigment
|
||||
const Edn::String& operator= (const char * inputData);
|
||||
const Edn::String& operator= (EdnVectorBin<int8_t> inputData);
|
||||
bool operator== (const Edn::String& ednS) const; // == operator
|
||||
bool operator== (const char * inputData) const;
|
||||
bool operator!= (const Edn::String& ednS) const; // != operator
|
||||
bool operator!= (const char * inputData) const;
|
||||
const Edn::String& operator+= (const Edn::String &ednS); // += operator
|
||||
const Edn::String& operator+= (const char * inputData);
|
||||
Edn::String operator+ (const Edn::String &ednS); // + operator
|
||||
Edn::String operator+ (const char * inputData);
|
||||
//operator const char *()
|
||||
|
||||
|
||||
bool IsEmpty(void) const;
|
||||
int32_t Size(void) const;
|
||||
|
||||
void Add(int32_t currentID, const char* inputData);
|
||||
void Remove(int32_t currentID, int32_t len);
|
||||
void Clear(void);
|
||||
|
||||
EdnVectorBin<int8_t> GetVector(void);
|
||||
char * c_str(void) { return (char*)&m_data[0]; };
|
||||
|
||||
// Sting operation :
|
||||
int32_t FindForward(const char element, int32_t startPos=0);
|
||||
int32_t FindBack(const char element, int32_t startPos=0x7FFFFFFF);
|
||||
Edn::String Extract(int32_t posStart=0, int32_t posEnd=0x7FFFFFFF);
|
||||
|
||||
private :
|
||||
EdnVectorBin<int8_t> m_data;
|
||||
};
|
||||
|
||||
void TestUntaire_String(void);
|
||||
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,87 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file charset.h
|
||||
* @brief Editeur De N'ours : Abstraction Charset layer (header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 06/06/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __CHARSET_H__
|
||||
#define __CHARSET_H__
|
||||
|
||||
#include "EdnVectorBin.h"
|
||||
|
||||
typedef enum {
|
||||
EDN_CHARSET_UTF8,
|
||||
EDN_CHARSET_ISO_8859_1,
|
||||
EDN_CHARSET_ISO_8859_2,
|
||||
EDN_CHARSET_ISO_8859_3,
|
||||
EDN_CHARSET_ISO_8859_4,
|
||||
EDN_CHARSET_ISO_8859_5,
|
||||
EDN_CHARSET_ISO_8859_6,
|
||||
EDN_CHARSET_ISO_8859_7,
|
||||
EDN_CHARSET_ISO_8859_8,
|
||||
EDN_CHARSET_ISO_8859_9,
|
||||
EDN_CHARSET_ISO_8859_10,
|
||||
EDN_CHARSET_ISO_8859_11,
|
||||
EDN_CHARSET_ISO_8859_13,
|
||||
EDN_CHARSET_ISO_8859_14,
|
||||
EDN_CHARSET_ISO_8859_15,
|
||||
} charset_te;
|
||||
|
||||
// transform ISO <==> Unicode
|
||||
void convertIsoToUnicode(charset_te inputCharset, char input_ISO, int32_t & output_Unicode);
|
||||
void convertUnicodeToIso(charset_te inputCharset, int32_t input_Unicode, char & output_ISO);
|
||||
int32_t convertIsoToUnicode(charset_te inputCharset, EdnVectorBin<char>& input_ISO, EdnVectorBin<int32_t>& output_Unicode);
|
||||
int32_t convertUnicodeToIso(charset_te inputCharset, EdnVectorBin<int32_t>& input_Unicode, EdnVectorBin<char>& output_ISO);
|
||||
// Transform UTF-8 <==> Unicode
|
||||
void convertUnicodeToUtf8( int32_t input_Unicode, char * output_UTF8);
|
||||
void convertUtf8ToUnicode( char * input_UTF8, int32_t& output_Unicode);
|
||||
int32_t convertUnicodeToUtf8( EdnVectorBin<int32_t>& input_Unicode, EdnVectorBin<char>& output_UTF8);
|
||||
int32_t convertUtf8ToUnicode( EdnVectorBin<char>& input_UTF8, EdnVectorBin<int32_t>& output_Unicode);
|
||||
// Transform ISO <==> UTF-8
|
||||
void convertIsoToUtf8( charset_te inputCharset, char input_ISO, char * output_UTF8);
|
||||
void convertUtf8ToIso( charset_te inputCharset, char * input_UTF8, char & output_ISO);
|
||||
int32_t convertIsoToUtf8( charset_te inputCharset, EdnVectorBin<char>& input_ISO, EdnVectorBin<char>& output_UTF8);
|
||||
int32_t convertUtf8ToIso( charset_te inputCharset, EdnVectorBin<char>& input_UTF8, EdnVectorBin<char>& output_ISO);
|
||||
|
||||
void Utf8_SizeElement(const char * data, int32_t lenMax , uint8_t &size, bool &baseValid);
|
||||
int32_t strUtf8Len(const char *input_UTF8);
|
||||
|
||||
|
||||
#ifdef USE_GTK_VERSION_3_0
|
||||
# define GDK_KEY_Esc (65305)
|
||||
# define GDK_KEY_Alt_Gr (65027)
|
||||
# define GDK_KEY_Pomme_L (65515)
|
||||
# define GDK_KEY_Pomme_R (65516)
|
||||
#elif USE_GTK_VERSION_2_0
|
||||
# define GDK_Esc (65305)
|
||||
# define GDK_Alt_Gr (65027)
|
||||
# define GDK_Pomme_L (65515)
|
||||
# define GDK_Pomme_R (65516)
|
||||
#endif
|
||||
//# define GDK_Retur (65516)
|
||||
|
||||
void ConvertInput(GdkEventKey *event, char* Utf8Out, bool &controlKey, bool &moveKey, int32_t &key);
|
||||
|
||||
void testDisplayConvChar(void);
|
||||
|
||||
#endif
|
||||
|
@@ -1,312 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file charsetTable.cpp
|
||||
* @brief Editeur De N'ours : Table of all charset convertions (Sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 06/06/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "charsetTable.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
const int32_t TableIso8859_1[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x000000A1, 0x000000A2, 0x000000A3, 0x000000A4, 0x000000A5, 0x000000A6, 0x000000A7, 0x000000A8, 0x000000A9, 0x000000AA, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000AF,
|
||||
0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x000000B4, 0x000000B5, 0x000000B6, 0x000000B7, 0x000000B8, 0x000000B9, 0x000000BA, 0x000000BB, 0x000000BC, 0x000000BD, 0x000000BE, 0x000000BF,
|
||||
0x000000C0, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x000000C7, 0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF,
|
||||
0x000000D0, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x000000D7, 0x000000D8, 0x000000D9, 0x000000DA, 0x000000DB, 0x000000DC, 0x000000DD, 0x000000DE, 0x000000DF,
|
||||
0x000000E0, 0x000000E1, 0x000000E2, 0x000000E3, 0x000000E4, 0x000000E5, 0x000000E6, 0x000000E7, 0x000000E8, 0x000000E9, 0x000000EA, 0x000000EB, 0x000000EC, 0x000000ED, 0x000000EE, 0x000000EF,
|
||||
0x000000F0, 0x000000F1, 0x000000F2, 0x000000F3, 0x000000F4, 0x000000F5, 0x000000F6, 0x000000F7, 0x000000F8, 0x000000F9, 0x000000FA, 0x000000FB, 0x000000FC, 0x000000FD, 0x000000FE, 0x000000FF
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_2[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000104, 0x000002D8, 0x00000141, 0x000000A4, 0x0000013D, 0x0000015A, 0x000000A7, 0x000000A8, 0x00000160, 0x0000015E, 0x00000164, 0x00000179, 0x000000AD, 0x0000017D, 0x0000017B,
|
||||
0x000000B0, 0x00000105, 0x000002DB, 0x00000142, 0x000000B4, 0x0000013E, 0x0000015B, 0x000002C7, 0x000000B8, 0x00000161, 0x0000015F, 0x00000165, 0x0000017A, 0x000002DD, 0x0000017E, 0x0000017C,
|
||||
0x00000154, 0x000000C1, 0x000000C2, 0x00000102, 0x000000C4, 0x00000139, 0x00000106, 0x000000C7, 0x0000010C, 0x000000C9, 0x00000118, 0x000000CB, 0x0000011A, 0x000000CD, 0x000000CE, 0x0000010E,
|
||||
0x00000110, 0x00000143, 0x00000147, 0x000000D3, 0x000000D4, 0x00000150, 0x000000D6, 0x000000D7, 0x00000158, 0x0000016E, 0x000000DA, 0x00000170, 0x000000DC, 0x000000DD, 0x00000162, 0x000000DF,
|
||||
0x00000155, 0x000000E1, 0x000000E2, 0x00000103, 0x000000E4, 0x0000013A, 0x00000107, 0x000000E7, 0x0000010D, 0x000000E9, 0x00000119, 0x000000EB, 0x0000011B, 0x000000ED, 0x000000EE, 0x0000010F,
|
||||
0x00000111, 0x00000144, 0x00000148, 0x000000F3, 0x000000F4, 0x00000151, 0x000000F6, 0x000000F7, 0x00000159, 0x0000016F, 0x000000FA, 0x00000171, 0x000000FC, 0x000000FD, 0x00000163, 0x000002D9
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_3[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000126, 0x000002D8, 0x000000A3, 0x000000A4, 0x00000000, 0x00000124, 0x000000A7, 0x000000A8, 0x00000130, 0x0000015E, 0x0000011E, 0x00000134, 0x000000AD, 0x00000000, 0x0000017B,
|
||||
0x000000B0, 0x00000127, 0x000000B2, 0x000000B3, 0x000000B4, 0x000000B5, 0x00000125, 0x000000B7, 0x000000B8, 0x00000131, 0x0000015F, 0x0000011F, 0x00000135, 0x000000BD, 0x00000000, 0x0000017C,
|
||||
0x000000C0, 0x000000C1, 0x000000C2, 0x00000000, 0x000000C4, 0x0000010A, 0x00000108, 0x000000C7, 0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF,
|
||||
0x00000000, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x00000120, 0x000000D6, 0x000000D7, 0x0000011C, 0x000000D9, 0x000000DA, 0x000000DB, 0x000000DC, 0x0000016C, 0x0000015C, 0x000000DF,
|
||||
0x000000E0, 0x000000E1, 0x000000E2, 0x00000000, 0x000000E4, 0x0000010B, 0x00000109, 0x000000E7, 0x000000E8, 0x000000E9, 0x000000EA, 0x000000EB, 0x000000EC, 0x000000ED, 0x000000EE, 0x000000EF,
|
||||
0x00000000, 0x000000F1, 0x000000F2, 0x000000F3, 0x000000F4, 0x00000121, 0x000000F6, 0x000000F7, 0x0000011D, 0x000000F9, 0x000000FA, 0x000000FB, 0x000000FC, 0x0000016D, 0x0000015D, 0x000002D9
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_4[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000104, 0x00000138, 0x00000156, 0x000000A4, 0x00000128, 0x0000013B, 0x000000A7, 0x000000A8, 0x00000160, 0x00000112, 0x00000122, 0x00000166, 0x000000AD, 0x0000017D, 0x000000AF,
|
||||
0x000000B0, 0x00000105, 0x000002DB, 0x00000157, 0x000000B4, 0x00000129, 0x0000013C, 0x000002C7, 0x000000B8, 0x00000161, 0x00000113, 0x00000123, 0x00000167, 0x0000014A, 0x0000017E, 0x0000014B,
|
||||
0x00000100, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x0000012E, 0x0000010C, 0x000000C9, 0x00000118, 0x000000CB, 0x00000116, 0x000000CD, 0x000000CE, 0x0000012A,
|
||||
0x00000110, 0x00000145, 0x0000014C, 0x00000136, 0x000000D4, 0x000000D5, 0x000000D6, 0x000000D7, 0x000000D8, 0x00000172, 0x000000DA, 0x000000DB, 0x000000DC, 0x00000168, 0x0000016A, 0x000000DF,
|
||||
0x00000101, 0x000000E1, 0x000000E2, 0x000000E3, 0x000000E4, 0x000000E5, 0x000000E6, 0x0000012F, 0x0000010D, 0x000000E9, 0x00000119, 0x000000EB, 0x00000117, 0x000000ED, 0x000000EE, 0x0000012B,
|
||||
0x00000111, 0x00000146, 0x0000014D, 0x00000137, 0x000000F4, 0x000000F5, 0x000000F6, 0x000000F7, 0x000000F8, 0x00000173, 0x000000FA, 0x000000FB, 0x000000FC, 0x00000169, 0x0000016B, 0x000002D9
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_5[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000401, 0x00000402, 0x00000403, 0x00000404, 0x00000405, 0x00000406, 0x00000407, 0x00000408, 0x00000409, 0x0000040A, 0x0000040B, 0x0000040C, 0x000000AD, 0x0000040E, 0x0000040F,
|
||||
0x00000410, 0x00000411, 0x00000412, 0x00000413, 0x00000414, 0x00000415, 0x00000416, 0x00000417, 0x00000418, 0x00000419, 0x0000041A, 0x0000041B, 0x0000041C, 0x0000041D, 0x0000041E, 0x0000041F,
|
||||
0x00000420, 0x00000421, 0x00000422, 0x00000423, 0x00000424, 0x00000425, 0x00000426, 0x00000427, 0x00000428, 0x00000429, 0x0000042A, 0x0000042B, 0x0000042C, 0x0000042D, 0x0000042E, 0x0000042F,
|
||||
0x00000430, 0x00000431, 0x00000432, 0x00000433, 0x00000434, 0x00000435, 0x00000436, 0x00000437, 0x00000438, 0x00000439, 0x0000043A, 0x0000043B, 0x0000043C, 0x0000043D, 0x0000043E, 0x0000043F,
|
||||
0x00000440, 0x00000441, 0x00000442, 0x00000443, 0x00000444, 0x00000445, 0x00000446, 0x00000447, 0x00000448, 0x00000449, 0x0000044A, 0x0000044B, 0x0000044C, 0x0000044D, 0x0000044E, 0x0000044F,
|
||||
0x00002116, 0x00000451, 0x00000452, 0x00000453, 0x00000454, 0x00000455, 0x00000456, 0x00000457, 0x00000458, 0x00000459, 0x0000045A, 0x0000045B, 0x0000045C, 0x000000A7, 0x0000045E, 0x0000045F
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_6[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000000, 0x00000000, 0x00000000, 0x000000A4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000060C, 0x000000AD, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000061B, 0x00000000, 0x00000000, 0x00000000, 0x0000061F,
|
||||
0x00000000, 0x00000621, 0x00000622, 0x00000623, 0x00000624, 0x00000625, 0x00000626, 0x00000627, 0x00000628, 0x00000629, 0x0000062A, 0x0000062B, 0x0000062C, 0x0000062D, 0x0000062E, 0x0000062F,
|
||||
0x00000630, 0x00000631, 0x00000632, 0x00000633, 0x00000634, 0x00000635, 0x00000636, 0x00000637, 0x00000638, 0x00000639, 0x0000063A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000640, 0x00000641, 0x00000642, 0x00000643, 0x00000644, 0x00000645, 0x00000646, 0x00000647, 0x00000648, 0x00000649, 0x0000064A, 0x0000064B, 0x0000064C, 0x0000064D, 0x0000064E, 0x0000064F,
|
||||
0x00000650, 0x00000651, 0x00000652, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_7[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00002018, 0x00002019, 0x000000A3, 0x000020AC, 0x000020AF, 0x000000A6, 0x000000A7, 0x000000A8, 0x000000A9, 0x0000037A, 0x000000AB, 0x000000AC, 0x000000AD, 0x00000000, 0x00002015,
|
||||
0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x00000384, 0x00000385, 0x00000386, 0x000000B7, 0x00000388, 0x00000389, 0x0000038A, 0x000000BB, 0x0000038C, 0x000000BD, 0x0000038E, 0x0000038F,
|
||||
0x00000390, 0x00000391, 0x00000392, 0x00000393, 0x00000394, 0x00000395, 0x00000396, 0x00000397, 0x00000398, 0x00000399, 0x0000039A, 0x0000039B, 0x0000039C, 0x0000039D, 0x0000039E, 0x0000039F,
|
||||
0x000003A0, 0x000003A1, 0x00000000, 0x000003A3, 0x000003A4, 0x000003A5, 0x000003A6, 0x000003A7, 0x000003A8, 0x000003A9, 0x000003AA, 0x000003AB, 0x000003AC, 0x000003AD, 0x000003AE, 0x000003AF,
|
||||
0x000003B0, 0x000003B1, 0x000003B2, 0x000003B3, 0x000003B4, 0x000003B5, 0x000003B6, 0x000003B7, 0x000003B8, 0x000003B9, 0x000003BA, 0x000003BB, 0x000003BC, 0x000003BD, 0x000003BE, 0x000003BF,
|
||||
0x000003C0, 0x000003C1, 0x000003C2, 0x000003C3, 0x000003C4, 0x000003C5, 0x000003C6, 0x000003C7, 0x000003C8, 0x000003C9, 0x000003CA, 0x000003CB, 0x000003CC, 0x000003CD, 0x000003CE, 0x00000000
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_8[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000000, 0x000000A2, 0x000000A3, 0x000000A4, 0x000000A5, 0x000000A6, 0x000000A7, 0x000000A8, 0x000000A9, 0x000000D7, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000AF,
|
||||
0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x000000B4, 0x000000B5, 0x000000B6, 0x000000B7, 0x000000B8, 0x000000B9, 0x000000F7, 0x000000BB, 0x000000BC, 0x000000BD, 0x000000BE, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00002017,
|
||||
0x000005D0, 0x000005D1, 0x000005D2, 0x000005D3, 0x000005D4, 0x000005D5, 0x000005D6, 0x000005D7, 0x000005D8, 0x000005D9, 0x000005DA, 0x000005DB, 0x000005DC, 0x000005DD, 0x000005DE, 0x000005DF,
|
||||
0x000005E0, 0x000005E1, 0x000005E2, 0x000005E3, 0x000005E4, 0x000005E5, 0x000005E6, 0x000005E7, 0x000005E8, 0x000005E9, 0x000005EA, 0x00000000, 0x00000000, 0x0000200E, 0x0000200F, 0x000003C0
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_9[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x000000A1, 0x000000A2, 0x000000A3, 0x000000A4, 0x000000A5, 0x000000A6, 0x000000A7, 0x000000A8, 0x000000A9, 0x000000AA, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000AF,
|
||||
0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x000000B4, 0x000000B5, 0x000000B6, 0x000000B7, 0x000000B8, 0x000000B9, 0x000000BA, 0x000000BB, 0x000000BC, 0x000000BD, 0x000000BE, 0x000000BF,
|
||||
0x000000C0, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x000000C7, 0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF,
|
||||
0x0000011E, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x000000D7, 0x000000D8, 0x000000D9, 0x000000DA, 0x000000DB, 0x000000DC, 0x00000130, 0x0000015E, 0x000000DF,
|
||||
0x000000E0, 0x000000E1, 0x000000E2, 0x000000E3, 0x000000E4, 0x000000E5, 0x000000E6, 0x000000E7, 0x000000E8, 0x000000E9, 0x000000EA, 0x000000EB, 0x000000EC, 0x000000ED, 0x000000EE, 0x000000EF,
|
||||
0x0000011F, 0x000000F1, 0x000000F2, 0x000000F3, 0x000000F4, 0x000000F5, 0x000000F6, 0x000000F7, 0x000000F8, 0x000000F9, 0x000000FA, 0x000000FB, 0x000000FC, 0x00000131, 0x0000015F, 0x000000FF
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_10[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000104, 0x00000112, 0x00000122, 0x0000012A, 0x00000128, 0x00000136, 0x000000A7, 0x0000013B, 0x00000110, 0x00000160, 0x00000166, 0x0000017D, 0x000000AD, 0x0000016A, 0x0000014A,
|
||||
0x000000B0, 0x00000105, 0x00000113, 0x00000123, 0x0000012B, 0x00000129, 0x00000137, 0x000000B7, 0x0000013C, 0x00000111, 0x00000161, 0x00000167, 0x0000017E, 0x00002015, 0x0000016B, 0x0000014B,
|
||||
0x00000100, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x0000012E, 0x0000010C, 0x000000C9, 0x00000118, 0x000000CB, 0x00000116, 0x000000CD, 0x000000CE, 0x000000CF,
|
||||
0x000000D0, 0x00000145, 0x0000014C, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x00000168, 0x000000D8, 0x00000172, 0x000000DA, 0x000000DB, 0x000000DC, 0x000000DD, 0x000000DE, 0x000000DF,
|
||||
0x00000101, 0x000000E1, 0x000000E2, 0x000000E3, 0x000000E4, 0x000000E5, 0x000000E6, 0x0000012F, 0x0000010D, 0x000000E9, 0x00000119, 0x000000EB, 0x00000117, 0x000000ED, 0x000000EE, 0x000000EF,
|
||||
0x000000F0, 0x00000146, 0x0000014D, 0x000000F3, 0x000000F4, 0x000000F5, 0x000000F6, 0x00000169, 0x000000F8, 0x00000173, 0x000000FA, 0x000000FB, 0x000000FC, 0x000000FD, 0x000000FE, 0x00000138
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_11[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00000E01, 0x00000E02, 0x00000E03, 0x00000E04, 0x00000E05, 0x00000E06, 0x00000E07, 0x00000E08, 0x00000E09, 0x00000E0A, 0x00000E0B, 0x00000E0C, 0x00000E0D, 0x00000E0E, 0x00000E0F,
|
||||
0x00000E10, 0x00000E11, 0x00000E12, 0x00000E13, 0x00000E14, 0x00000E15, 0x00000E16, 0x00000E17, 0x00000E18, 0x00000E19, 0x00000E1A, 0x00000E1B, 0x00000E1C, 0x00000E1D, 0x00000E1E, 0x00000E1F,
|
||||
0x00000E20, 0x00000E21, 0x00000E22, 0x00000E23, 0x00000E24, 0x00000E25, 0x00000E26, 0x00000E27, 0x00000E28, 0x00000E29, 0x00000E2A, 0x00000E2B, 0x00000E2C, 0x00000E2D, 0x00000E2E, 0x00000E2F,
|
||||
0x00000E30, 0x00000E31, 0x00000E32, 0x00000E33, 0x00000E34, 0x00000E35, 0x00000E36, 0x00000E37, 0x00000E38, 0x00000E39, 0x00000E3A, 0x00000E80, 0x00000E80, 0x00000E80, 0x00000E80, 0x00000E3F,
|
||||
0x00000E40, 0x00000E41, 0x00000E42, 0x00000E43, 0x00000E44, 0x00000E45, 0x00000E46, 0x00000E47, 0x00000E48, 0x00000E49, 0x00000E4A, 0x00000E4B, 0x00000E4C, 0x00000E4D, 0x00000E4E, 0x00000E4F,
|
||||
0x00000E50, 0x00000E51, 0x00000E52, 0x00000E53, 0x00000E54, 0x00000E55, 0x00000E56, 0x00000E57, 0x00000E58, 0x00000E59, 0x00000E5A, 0x00000E5B, 0x000006C0, 0x000006C0, 0x000006C0, 0x000006C0
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_13[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x0000201D, 0x000000A2, 0x000000A3, 0x000000A4, 0x0000201E, 0x000000A6, 0x000000A7, 0x000000D8, 0x000000A9, 0x00000156, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000C6,
|
||||
0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x0000201C, 0x000000B5, 0x000000B6, 0x000000B7, 0x000000F8, 0x000000B9, 0x00000157, 0x000000BB, 0x000000BC, 0x000000BD, 0x000000BE, 0x000000E6,
|
||||
0x00000104, 0x0000012E, 0x00000100, 0x00000106, 0x000000C4, 0x000000C5, 0x00000118, 0x00000112, 0x0000010C, 0x000000C9, 0x00000179, 0x00000116, 0x00000122, 0x00000136, 0x0000012A, 0x0000013B,
|
||||
0x00000160, 0x00000143, 0x00000145, 0x000000D3, 0x0000014C, 0x000000D5, 0x000000D6, 0x000000D7, 0x00000172, 0x00000141, 0x0000015A, 0x0000016A, 0x000000DC, 0x0000017B, 0x0000017D, 0x000000DF,
|
||||
0x00000105, 0x0000012F, 0x00000101, 0x00000107, 0x000000E4, 0x000000E5, 0x00000119, 0x00000113, 0x0000010D, 0x000000E9, 0x0000017A, 0x00000117, 0x00000123, 0x00000137, 0x0000012B, 0x0000013C,
|
||||
0x00000161, 0x00000144, 0x00000146, 0x000000F3, 0x0000014D, 0x000000F5, 0x000000F6, 0x000000F7, 0x00000173, 0x00000142, 0x0000015B, 0x0000016B, 0x000000FC, 0x0000017C, 0x0000017E, 0x00002019
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_14[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x00001E02, 0x00001E03, 0x000000A3, 0x0000010A, 0x0000010B, 0x00001E0A, 0x000000A7, 0x00001E80, 0x000000A9, 0x00001E82, 0x00001E0B, 0x00001EF2, 0x000000AD, 0x000000AE, 0x00000178,
|
||||
0x00001E1E, 0x00001E1F, 0x00000120, 0x00000121, 0x00001E40, 0x00001E41, 0x000000B6, 0x00001E56, 0x00001E81, 0x00001E57, 0x00001E83, 0x00001E60, 0x00001EF3, 0x00001E84, 0x00001E85, 0x00001E61,
|
||||
0x000000C0, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x000000C7, 0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF,
|
||||
0x00000174, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x00001E6A, 0x000000D8, 0x000000D9, 0x000000DA, 0x000000DB, 0x000000DC, 0x000000DD, 0x00000176, 0x000000DF,
|
||||
0x000000E0, 0x000000E1, 0x000000E2, 0x000000E3, 0x000000E4, 0x000000E5, 0x000000E6, 0x000000E7, 0x000000E8, 0x000000E9, 0x000000EA, 0x000000EB, 0x000000EC, 0x000000ED, 0x000000EE, 0x000000EF,
|
||||
0x00000175, 0x000000F1, 0x000000F2, 0x000000F3, 0x000000F4, 0x000000F5, 0x000000F6, 0x00001E6B, 0x000000F8, 0x000000F9, 0x000000FA, 0x000000FB, 0x000000FC, 0x000000FD, 0x00000177, 0x000000FF
|
||||
};
|
||||
|
||||
const int32_t TableIso8859_15[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
|
||||
0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
|
||||
0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027, 0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
|
||||
0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037, 0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
|
||||
0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047, 0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
|
||||
0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057, 0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
|
||||
0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067, 0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
|
||||
0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
|
||||
0x00000080, 0x00000081, 0x00000082, 0x00000083, 0x00000084, 0x00000085, 0x00000086, 0x00000087, 0x00000088, 0x00000089, 0x0000008A, 0x0000008B, 0x0000008C, 0x0000008D, 0x0000008E, 0x0000008F,
|
||||
0x00000090, 0x00000091, 0x00000092, 0x00000093, 0x00000094, 0x00000095, 0x00000096, 0x00000097, 0x00000098, 0x00000099, 0x0000009A, 0x0000009B, 0x0000009C, 0x0000009D, 0x0000009E, 0x0000009F,
|
||||
0x000000A0, 0x000000A1, 0x000000A2, 0x000000A3, 0x000020AC, 0x000000A5, 0x00000160, 0x000000A7, 0x00000161, 0x000000A9, 0x000000AA, 0x000000AB, 0x000000AC, 0x000000AD, 0x000000AE, 0x000000AF,
|
||||
0x000000B0, 0x000000B1, 0x000000B2, 0x000000B3, 0x0000017D, 0x000000B5, 0x000000B6, 0x000000B7, 0x0000017E, 0x000000B9, 0x000000BA, 0x000000BB, 0x00000152, 0x00000153, 0x00000178, 0x000000BF,
|
||||
0x000000C0, 0x000000C1, 0x000000C2, 0x000000C3, 0x000000C4, 0x000000C5, 0x000000C6, 0x000000C7, 0x000000C8, 0x000000C9, 0x000000CA, 0x000000CB, 0x000000CC, 0x000000CD, 0x000000CE, 0x000000CF,
|
||||
0x000000D0, 0x000000D1, 0x000000D2, 0x000000D3, 0x000000D4, 0x000000D5, 0x000000D6, 0x000000D7, 0x000000D8, 0x000000D9, 0x000000DA, 0x000000DB, 0x000000DC, 0x000000DD, 0x000000DE, 0x000000DF,
|
||||
0x000000E0, 0x000000E1, 0x000000E2, 0x000000E3, 0x000000E4, 0x000000E5, 0x000000E6, 0x000000E7, 0x000000E8, 0x000000E9, 0x000000EA, 0x000000EB, 0x000000EC, 0x000000ED, 0x000000EE, 0x000000EF,
|
||||
0x000000F0, 0x000000F1, 0x000000F2, 0x000000F3, 0x000000F4, 0x000000F5, 0x000000F6, 0x000000F7, 0x000000F8, 0x000000F9, 0x000000FA, 0x000000FB, 0x000000FC, 0x000000FD, 0x000000FE, 0x000000FF
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@@ -1,51 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file charsetTable.h
|
||||
* @brief Editeur De N'ours : Table of all charset convertions (Header)
|
||||
* @author Edouard DUPIN
|
||||
* @date 06/06/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __CHARSET_TABLE_H__
|
||||
#define __CHARSET_TABLE_H__
|
||||
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
extern const int32_t TableIso8859_1[];
|
||||
extern const int32_t TableIso8859_2[];
|
||||
extern const int32_t TableIso8859_3[];
|
||||
extern const int32_t TableIso8859_4[];
|
||||
extern const int32_t TableIso8859_5[];
|
||||
extern const int32_t TableIso8859_6[];
|
||||
extern const int32_t TableIso8859_7[];
|
||||
extern const int32_t TableIso8859_8[];
|
||||
extern const int32_t TableIso8859_9[];
|
||||
extern const int32_t TableIso8859_10[];
|
||||
extern const int32_t TableIso8859_11[];
|
||||
extern const int32_t TableIso8859_13[];
|
||||
extern const int32_t TableIso8859_14[];
|
||||
extern const int32_t TableIso8859_15[];
|
||||
|
||||
;
|
||||
}
|
||||
|
||||
#endif
|
@@ -1,62 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file tools_debug.h
|
||||
* @brief Editeur De N'ours : log implementation
|
||||
* @author Edouard DUPIN
|
||||
* @date 08/06/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "time.h"
|
||||
|
||||
// Max string size : (wide screan console nb caractere)
|
||||
#define EDN_LOG_MAX_LENGTH 250
|
||||
|
||||
|
||||
#define FUNCTION_NAME_SIZE (50)
|
||||
|
||||
void TOOLS_DisplayFuncName(int32_t ligne, const char* className, const char* funcName)
|
||||
{
|
||||
char tmpName[FUNCTION_NAME_SIZE] = "";
|
||||
if (NULL == className) {
|
||||
snprintf(tmpName, FUNCTION_NAME_SIZE, "(l=%5d) %s ",ligne, funcName);
|
||||
} else {
|
||||
snprintf(tmpName, FUNCTION_NAME_SIZE, "(l=%5d) %s::%s ",ligne, className, funcName);
|
||||
}
|
||||
tmpName[FUNCTION_NAME_SIZE-4] = ' ';
|
||||
tmpName[FUNCTION_NAME_SIZE-3] = '|';
|
||||
tmpName[FUNCTION_NAME_SIZE-2] = ' ';
|
||||
tmpName[FUNCTION_NAME_SIZE-1] = '\0';
|
||||
std::cout << tmpName;
|
||||
}
|
||||
|
||||
|
||||
void TOOLS_DisplayTime(void)
|
||||
{
|
||||
time_t rawtime;
|
||||
struct tm * timeinfo;
|
||||
char tmpdata[50];
|
||||
|
||||
time ( &rawtime );
|
||||
timeinfo = localtime ( &rawtime );
|
||||
sprintf(tmpdata, " %2dh %2dmin %2ds | ", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
|
||||
std::cout << tmpdata ;
|
||||
}
|
||||
|
@@ -1,155 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file tools_debug.h
|
||||
* @brief Editeur De N'ours : log implementation
|
||||
* @author Edouard DUPIN
|
||||
* @date 08/06/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __TOOLS_DEBUG_H__
|
||||
#define __TOOLS_DEBUG_H__
|
||||
|
||||
#include <iostream>
|
||||
#include "types_generique.h"
|
||||
|
||||
// Log Message System For EDN
|
||||
void TOOLS_DisplayFuncName(int32_t ligne, const char* className, const char* funcName);
|
||||
void TOOLS_DisplayTime(void);
|
||||
|
||||
//regular colors
|
||||
#define COLOR_BLACK "\e[0;30m"
|
||||
#define COLOR_RED "\e[0;31m"
|
||||
#define COLOR_GREEN "\e[0;32m"
|
||||
#define COLOR_YELLOW "\e[0;33m"
|
||||
#define COLOR_BLUE "\e[0;34m"
|
||||
#define COLOR_MAGENTA "\e[0;35m"
|
||||
#define COLOR_CYAN "\e[0;36m"
|
||||
#define COLOR_WHITE "\e[0;37m"
|
||||
//emphasized (bolded) colors
|
||||
#define COLOR_BOLD_BLACK "\e[1;30m"
|
||||
#define COLOR_BOLD_RED "\e[1;31m"
|
||||
#define COLOR_BOLD_GREEN "\e[1;32m"
|
||||
#define COLOR_BOLD_YELLOW "\e[1;33m"
|
||||
#define COLOR_BOLD_BLUE "\e[1;34m"
|
||||
#define COLOR_BOLD_MAGENTA "\e[1;35m"
|
||||
#define COLOR_BOLD_CYAN "\e[1;36m"
|
||||
#define COLOR_BOLD_WHITE "\e[1;37m"
|
||||
//background colors
|
||||
#define COLOR_BG_BLACK "\e[40m"
|
||||
#define COLOR_BG_RED "\e[41m"
|
||||
#define COLOR_BG_GREEN "\e[42m"
|
||||
#define COLOR_BG_YELLOW "\e[43m"
|
||||
#define COLOR_BG_BLUE "\e[44m"
|
||||
#define COLOR_BG_MAGENTA "\e[45m"
|
||||
#define COLOR_BG_CYAN "\e[46m"
|
||||
#define COLOR_BG_WHITE "\e[47m"
|
||||
// Return to the normal color setings
|
||||
#define COLOR_NORMAL "\e[0m"
|
||||
//go to the Top of bash
|
||||
#define GO_TOP "\e[0;0f"
|
||||
|
||||
#undef __class__
|
||||
#define __class__ (NULL)
|
||||
|
||||
/*
|
||||
#define DEFINE_CLASS_NAME(name) #undef __class__ \
|
||||
#define __class__ (#name)
|
||||
at the start of the class :
|
||||
#undef __class__
|
||||
#define __class__ ""
|
||||
*/
|
||||
|
||||
#define EDN_DBG_COMMON(color, info, data) do { \
|
||||
std::cout << color; \
|
||||
TOOLS_DisplayTime(); \
|
||||
TOOLS_DisplayFuncName(__LINE__, __class__, __func__); \
|
||||
std::cout << "[" << info << "] " << data; \
|
||||
std::cout << COLOR_NORMAL <<std::endl; \
|
||||
}while(0)
|
||||
|
||||
#define EDN_CRITICAL(data) EDN_DBG_COMMON(COLOR_BOLD_RED, "CC", data)
|
||||
// General
|
||||
#if EDN_DEBUG_LEVEL > 0
|
||||
# define EDN_WARNING(data) EDN_DBG_COMMON(COLOR_MAGENTA, "WW", data)
|
||||
# define EDN_ERROR(data) EDN_DBG_COMMON(COLOR_BOLD_RED, "EE", data)
|
||||
#else
|
||||
# define EDN_WARNING(data) do {}while(0)
|
||||
# define EDN_ERROR(data) do {}while(0)
|
||||
#endif
|
||||
|
||||
#if EDN_DEBUG_LEVEL > 1
|
||||
# define EDN_INFO(data) EDN_DBG_COMMON(COLOR_CYAN, "II", data)
|
||||
#else
|
||||
# define EDN_INFO(data) do {}while(0)
|
||||
#endif
|
||||
|
||||
#if EDN_DEBUG_LEVEL > 2
|
||||
# define EDN_DEBUG(data) EDN_DBG_COMMON(COLOR_YELLOW, "DD", data)
|
||||
#else
|
||||
# define EDN_DEBUG(data) do {}while(0)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if EDN_DEBUG_LEVEL > 0
|
||||
# define EDN_ASSERT(cond, format, ...) \
|
||||
do { \
|
||||
if (!(cond)) { \
|
||||
EDN_CRITICAL(format, ##__VA_ARGS__); \
|
||||
assert(!#cond); \
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
# define EDN_ASSERT(cond, format, ...) \
|
||||
do { \
|
||||
assert(cond); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if EDN_DEBUG_LEVEL > 1
|
||||
# define EDN_CHECK_INOUT(cond) EDN_ASSERT((cond), "Internal input error : "#cond)
|
||||
#elif EDN_DEBUG_LEVEL > 0
|
||||
// Critical warning mode
|
||||
# define EDN_CHECK_INOUT(cond) \
|
||||
do { \
|
||||
if (!(cond)) { \
|
||||
EDN_CRITICAL("Internal input error : "#cond);\
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
// Default : No check
|
||||
# define EDN_CHECK_INOUT(cond) do { } while (0)
|
||||
#endif
|
||||
|
||||
|
||||
// Enable or disable the magic element checking...
|
||||
#if EDN_DEBUG_LEVEL > 0
|
||||
#define CHECK_MAGIC(cond) EDN_ASSERT((cond), "MAGIC check error : "#cond)
|
||||
#define EDN_ENABLE_CHECK_MAGIC (1)
|
||||
#else
|
||||
#define CHECK_MAGIC(cond) do {}while(0)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@@ -1,236 +0,0 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file tools_Globals.cpp
|
||||
* @brief Editeur De N'ours : Globals Values
|
||||
* @author Edouard DUPIN
|
||||
* @date 05/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_globals.h"
|
||||
#include "ColorizeManager.h"
|
||||
#include "MsgBroadcast.h"
|
||||
#include <string>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "globals"
|
||||
|
||||
// Variables privé du namespace
|
||||
|
||||
static std::string curentFileName = "???";
|
||||
|
||||
|
||||
erreurCode_te globals::init(void)
|
||||
{
|
||||
erreurCode_te ret = ERR_NONE;
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -----------------------------------------------------------
|
||||
static bool displayEOL = false;
|
||||
bool globals::IsSetDisplayEndOfLine(void)
|
||||
{
|
||||
return displayEOL;
|
||||
}
|
||||
|
||||
void globals::SetDisplayEndOfLine(bool newVal)
|
||||
{
|
||||
EDN_INFO("Set EndOfLine " << newVal);
|
||||
displayEOL = newVal;
|
||||
GeneralSendMessage(EDN_MSG__REFRESH_DISPLAY);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
static bool displaySpaceChar = true;
|
||||
bool globals::IsSetDisplaySpaceChar(void)
|
||||
{
|
||||
return displaySpaceChar;
|
||||
}
|
||||
|
||||
void globals::SetDisplaySpaceChar(bool newVal)
|
||||
{
|
||||
EDN_INFO("Set SpaceChar " << newVal);
|
||||
displaySpaceChar = newVal;
|
||||
GeneralSendMessage(EDN_MSG__REFRESH_DISPLAY);
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------------------------------
|
||||
static bool AutoIndent = true;
|
||||
bool globals::IsSetAutoIndent(void)
|
||||
{
|
||||
return AutoIndent;
|
||||
}
|
||||
|
||||
void globals::SetAutoIndent(bool newVal)
|
||||
{
|
||||
EDN_INFO("Set AutoIndent " << newVal);
|
||||
AutoIndent = newVal;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
int32_t globals::getNbColoneBorder(void)
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
|
||||
int32_t globals::getNbLineBorder(void)
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static bool shiftIsSet = false;
|
||||
void globals::SetShift(void)
|
||||
{
|
||||
shiftIsSet = true;
|
||||
EDN_INFO(" SHIFT => Set");
|
||||
}
|
||||
|
||||
void globals::UnSetShift(void)
|
||||
{
|
||||
shiftIsSet = false;
|
||||
EDN_INFO(" SHIFT => UnSet");
|
||||
}
|
||||
|
||||
bool globals::IsSetShift(void)
|
||||
{
|
||||
return shiftIsSet;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static bool altIsSet = false;
|
||||
void globals::SetAlt(void)
|
||||
{
|
||||
altIsSet = true;
|
||||
}
|
||||
|
||||
void globals::UnSetAlt(void)
|
||||
{
|
||||
altIsSet = false;
|
||||
}
|
||||
|
||||
bool globals::IsSetAlt(void)
|
||||
{
|
||||
return altIsSet;
|
||||
}
|
||||
|
||||
|
||||
static bool ctrlIsSet = false;
|
||||
void globals::SetCtrl(void)
|
||||
{
|
||||
ctrlIsSet = true;
|
||||
}
|
||||
|
||||
void globals::UnSetCtrl(void)
|
||||
{
|
||||
ctrlIsSet = false;
|
||||
}
|
||||
|
||||
bool globals::IsSetCtrl(void)
|
||||
{
|
||||
return ctrlIsSet;
|
||||
}
|
||||
|
||||
|
||||
static bool pommeIsSet = false;
|
||||
void globals::SetPomme(void)
|
||||
{
|
||||
pommeIsSet = true;
|
||||
}
|
||||
|
||||
void globals::UnSetPomme(void)
|
||||
{
|
||||
pommeIsSet = false;
|
||||
}
|
||||
|
||||
bool globals::IsSetPomme(void)
|
||||
{
|
||||
return pommeIsSet;
|
||||
}
|
||||
|
||||
static bool insertIsSet = false;
|
||||
void globals::SetInsert(void)
|
||||
{
|
||||
insertIsSet = true;
|
||||
}
|
||||
|
||||
void globals::UnSetInsert(void)
|
||||
{
|
||||
insertIsSet = false;
|
||||
}
|
||||
void globals::ToggleInsert(void)
|
||||
{
|
||||
if (true==insertIsSet) {
|
||||
insertIsSet = false;
|
||||
} else {
|
||||
insertIsSet = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool globals::IsSetInsert(void)
|
||||
{
|
||||
return insertIsSet;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Basic GUI system :
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
void globals::DisplaySystemString(std::vector<int32_t> &data)
|
||||
{
|
||||
// Display the copyed data ...
|
||||
uint32_t i;
|
||||
EDN_INFO("Display Data : ");
|
||||
printf(" ========================================================\n");
|
||||
for(i=0; i<data.size(); i++) {
|
||||
# ifdef USE_GTK_VERSION_2_0
|
||||
if (GDK_Return == data[i]) {
|
||||
# elif USE_GTK_VERSION_3_0
|
||||
if (GDK_KEY_Return == data[i]) {
|
||||
# endif
|
||||
printf("\n = ");
|
||||
} else {
|
||||
printf("%c", (char)data[i]);
|
||||
}
|
||||
}
|
||||
printf("\n ========================================================\n");
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1,116 +0,0 @@
|
||||
/*
|
||||
www.sourceforge.net/projects/tinyxml
|
||||
Original file by Yves Berquin.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any
|
||||
damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any
|
||||
purpose, including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must
|
||||
not claim that you wrote the original software. If you use this
|
||||
software in a product, an acknowledgment in the product documentation
|
||||
would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and
|
||||
must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
*/
|
||||
|
||||
/*
|
||||
* THIS FILE WAS ALTERED BY Tyge L<>vset, 7. April 2005.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef TIXML_USE_STL
|
||||
|
||||
#include "tinystr.h"
|
||||
|
||||
// Error value for find primitive
|
||||
const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1);
|
||||
|
||||
|
||||
// Null rep.
|
||||
TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } };
|
||||
|
||||
|
||||
void TiXmlString::reserve (size_type cap)
|
||||
{
|
||||
if (cap > capacity())
|
||||
{
|
||||
TiXmlString tmp;
|
||||
tmp.init(length(), cap);
|
||||
memcpy(tmp.start(), data(), length());
|
||||
swap(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TiXmlString& TiXmlString::assign(const char* str, size_type len)
|
||||
{
|
||||
size_type cap = capacity();
|
||||
if (len > cap || cap > 3*(len + 8))
|
||||
{
|
||||
TiXmlString tmp;
|
||||
tmp.init(len);
|
||||
memcpy(tmp.start(), str, len);
|
||||
swap(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
memmove(start(), str, len);
|
||||
set_size(len);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
TiXmlString& TiXmlString::append(const char* str, size_type len)
|
||||
{
|
||||
size_type newsize = length() + len;
|
||||
if (newsize > capacity())
|
||||
{
|
||||
reserve (newsize + capacity());
|
||||
}
|
||||
memmove(finish(), str, len);
|
||||
set_size(newsize);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
TiXmlString operator + (const TiXmlString & a, const TiXmlString & b)
|
||||
{
|
||||
TiXmlString tmp;
|
||||
tmp.reserve(a.length() + b.length());
|
||||
tmp += a;
|
||||
tmp += b;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
TiXmlString operator + (const TiXmlString & a, const char* b)
|
||||
{
|
||||
TiXmlString tmp;
|
||||
TiXmlString::size_type b_len = static_cast<TiXmlString::size_type>( strlen(b) );
|
||||
tmp.reserve(a.length() + b_len);
|
||||
tmp += a;
|
||||
tmp.append(b, b_len);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
TiXmlString operator + (const char* a, const TiXmlString & b)
|
||||
{
|
||||
TiXmlString tmp;
|
||||
TiXmlString::size_type a_len = static_cast<TiXmlString::size_type>( strlen(a) );
|
||||
tmp.reserve(a_len + b.length());
|
||||
tmp.append(a, a_len);
|
||||
tmp += b;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
#endif // TIXML_USE_STL
|
@@ -1,319 +0,0 @@
|
||||
/*
|
||||
www.sourceforge.net/projects/tinyxml
|
||||
Original file by Yves Berquin.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any
|
||||
damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any
|
||||
purpose, including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must
|
||||
not claim that you wrote the original software. If you use this
|
||||
software in a product, an acknowledgment in the product documentation
|
||||
would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and
|
||||
must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
*/
|
||||
|
||||
/*
|
||||
* THIS FILE WAS ALTERED BY Tyge Lovset, 7. April 2005.
|
||||
*
|
||||
* - completely rewritten. compact, clean, and fast implementation.
|
||||
* - sizeof(TiXmlString) = pointer size (4 bytes on 32-bit systems)
|
||||
* - fixed reserve() to work as per specification.
|
||||
* - fixed buggy compares operator==(), operator<(), and operator>()
|
||||
* - fixed operator+=() to take a const ref argument, following spec.
|
||||
* - added "copy" constructor with length, and most compare operators.
|
||||
* - added swap(), clear(), size(), capacity(), operator+().
|
||||
*/
|
||||
|
||||
#ifndef TIXML_USE_STL
|
||||
|
||||
#ifndef TIXML_STRING_INCLUDED
|
||||
#define TIXML_STRING_INCLUDED
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
/* The support for explicit isn't that universal, and it isn't really
|
||||
required - it is used to check that the TiXmlString class isn't incorrectly
|
||||
used. Be nice to old compilers and macro it here:
|
||||
*/
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1200 )
|
||||
// Microsoft visual studio, version 6 and higher.
|
||||
#define TIXML_EXPLICIT explicit
|
||||
#elif defined(__GNUC__) && (__GNUC__ >= 3 )
|
||||
// GCC version 3 and higher.s
|
||||
#define TIXML_EXPLICIT explicit
|
||||
#else
|
||||
#define TIXML_EXPLICIT
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
TiXmlString is an emulation of a subset of the std::string template.
|
||||
Its purpose is to allow compiling TinyXML on compilers with no or poor STL support.
|
||||
Only the member functions relevant to the TinyXML project have been implemented.
|
||||
The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase
|
||||
a string and there's no more room, we allocate a buffer twice as big as we need.
|
||||
*/
|
||||
class TiXmlString
|
||||
{
|
||||
public :
|
||||
// The size type used
|
||||
typedef size_t size_type;
|
||||
|
||||
// Error value for find primitive
|
||||
static const size_type npos; // = -1;
|
||||
|
||||
|
||||
// TiXmlString empty constructor
|
||||
TiXmlString () : rep_(&nullrep_)
|
||||
{
|
||||
}
|
||||
|
||||
// TiXmlString copy constructor
|
||||
TiXmlString ( const TiXmlString & copy) : rep_(0)
|
||||
{
|
||||
init(copy.length());
|
||||
memcpy(start(), copy.data(), length());
|
||||
}
|
||||
|
||||
// TiXmlString constructor, based on a string
|
||||
TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0)
|
||||
{
|
||||
init( static_cast<size_type>( strlen(copy) ));
|
||||
memcpy(start(), copy, length());
|
||||
}
|
||||
|
||||
// TiXmlString constructor, based on a string
|
||||
TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0)
|
||||
{
|
||||
init(len);
|
||||
memcpy(start(), str, len);
|
||||
}
|
||||
|
||||
// TiXmlString destructor
|
||||
~TiXmlString ()
|
||||
{
|
||||
quit();
|
||||
}
|
||||
|
||||
// = operator
|
||||
TiXmlString& operator = (const char * copy)
|
||||
{
|
||||
return assign( copy, (size_type)strlen(copy));
|
||||
}
|
||||
|
||||
// = operator
|
||||
TiXmlString& operator = (const TiXmlString & copy)
|
||||
{
|
||||
return assign(copy.start(), copy.length());
|
||||
}
|
||||
|
||||
|
||||
// += operator. Maps to append
|
||||
TiXmlString& operator += (const char * suffix)
|
||||
{
|
||||
return append(suffix, static_cast<size_type>( strlen(suffix) ));
|
||||
}
|
||||
|
||||
// += operator. Maps to append
|
||||
TiXmlString& operator += (char single)
|
||||
{
|
||||
return append(&single, 1);
|
||||
}
|
||||
|
||||
// += operator. Maps to append
|
||||
TiXmlString& operator += (const TiXmlString & suffix)
|
||||
{
|
||||
return append(suffix.data(), suffix.length());
|
||||
}
|
||||
|
||||
|
||||
// Convert a TiXmlString into a null-terminated char *
|
||||
const char * c_str () const { return rep_->str; }
|
||||
|
||||
// Convert a TiXmlString into a char * (need not be null terminated).
|
||||
const char * data () const { return rep_->str; }
|
||||
|
||||
// Return the length of a TiXmlString
|
||||
size_type length () const { return rep_->size; }
|
||||
|
||||
// Alias for length()
|
||||
size_type size () const { return rep_->size; }
|
||||
|
||||
// Checks if a TiXmlString is empty
|
||||
bool empty () const { return rep_->size == 0; }
|
||||
|
||||
// Return capacity of string
|
||||
size_type capacity () const { return rep_->capacity; }
|
||||
|
||||
|
||||
// single char extraction
|
||||
const char& at (size_type index) const
|
||||
{
|
||||
assert( index < length() );
|
||||
return rep_->str[ index ];
|
||||
}
|
||||
|
||||
// [] operator
|
||||
char& operator [] (size_type index) const
|
||||
{
|
||||
assert( index < length() );
|
||||
return rep_->str[ index ];
|
||||
}
|
||||
|
||||
// find a char in a string. Return TiXmlString::npos if not found
|
||||
size_type find (char lookup) const
|
||||
{
|
||||
return find(lookup, 0);
|
||||
}
|
||||
|
||||
// find a char in a string from an offset. Return TiXmlString::npos if not found
|
||||
size_type find (char tofind, size_type offset) const
|
||||
{
|
||||
if (offset >= length()) return npos;
|
||||
|
||||
for (const char* p = c_str() + offset; *p != '\0'; ++p)
|
||||
{
|
||||
if (*p == tofind) return static_cast< size_type >( p - c_str() );
|
||||
}
|
||||
return npos;
|
||||
}
|
||||
|
||||
void clear ()
|
||||
{
|
||||
//Lee:
|
||||
//The original was just too strange, though correct:
|
||||
// TiXmlString().swap(*this);
|
||||
//Instead use the quit & re-init:
|
||||
quit();
|
||||
init(0,0);
|
||||
}
|
||||
|
||||
/* Function to reserve a big amount of data when we know we'll need it. Be aware that this
|
||||
function DOES NOT clear the content of the TiXmlString if any exists.
|
||||
*/
|
||||
void reserve (size_type cap);
|
||||
|
||||
TiXmlString& assign (const char* str, size_type len);
|
||||
|
||||
TiXmlString& append (const char* str, size_type len);
|
||||
|
||||
void swap (TiXmlString& other)
|
||||
{
|
||||
Rep* r = rep_;
|
||||
rep_ = other.rep_;
|
||||
other.rep_ = r;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void init(size_type sz) { init(sz, sz); }
|
||||
void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; }
|
||||
char* start() const { return rep_->str; }
|
||||
char* finish() const { return rep_->str + rep_->size; }
|
||||
|
||||
struct Rep
|
||||
{
|
||||
size_type size, capacity;
|
||||
char str[1];
|
||||
};
|
||||
|
||||
void init(size_type sz, size_type cap)
|
||||
{
|
||||
if (cap)
|
||||
{
|
||||
// Lee: the original form:
|
||||
// rep_ = static_cast<Rep*>(operator new(sizeof(Rep) + cap));
|
||||
// doesn't work in some cases of new being overloaded. Switching
|
||||
// to the normal allocation, although use an 'int' for systems
|
||||
// that are overly picky about structure alignment.
|
||||
const size_type bytesNeeded = sizeof(Rep) + cap;
|
||||
const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int );
|
||||
rep_ = reinterpret_cast<Rep*>( new int[ intsNeeded ] );
|
||||
|
||||
rep_->str[ rep_->size = sz ] = '\0';
|
||||
rep_->capacity = cap;
|
||||
}
|
||||
else
|
||||
{
|
||||
rep_ = &nullrep_;
|
||||
}
|
||||
}
|
||||
|
||||
void quit()
|
||||
{
|
||||
if (rep_ != &nullrep_)
|
||||
{
|
||||
// The rep_ is really an array of ints. (see the allocator, above).
|
||||
// Cast it back before delete, so the compiler won't incorrectly call destructors.
|
||||
delete [] ( reinterpret_cast<int*>( rep_ ) );
|
||||
}
|
||||
}
|
||||
|
||||
Rep * rep_;
|
||||
static Rep nullrep_;
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
inline bool operator == (const TiXmlString & a, const TiXmlString & b)
|
||||
{
|
||||
return ( a.length() == b.length() ) // optimization on some platforms
|
||||
&& ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare
|
||||
}
|
||||
inline bool operator < (const TiXmlString & a, const TiXmlString & b)
|
||||
{
|
||||
return strcmp(a.c_str(), b.c_str()) < 0;
|
||||
}
|
||||
|
||||
inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); }
|
||||
inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; }
|
||||
inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); }
|
||||
inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); }
|
||||
|
||||
inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; }
|
||||
inline bool operator == (const char* a, const TiXmlString & b) { return b == a; }
|
||||
inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); }
|
||||
inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); }
|
||||
|
||||
TiXmlString operator + (const TiXmlString & a, const TiXmlString & b);
|
||||
TiXmlString operator + (const TiXmlString & a, const char* b);
|
||||
TiXmlString operator + (const char* a, const TiXmlString & b);
|
||||
|
||||
|
||||
/*
|
||||
TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString.
|
||||
Only the operators that we need for TinyXML have been developped.
|
||||
*/
|
||||
class TiXmlOutStream : public TiXmlString
|
||||
{
|
||||
public :
|
||||
|
||||
// TiXmlOutStream << operator.
|
||||
TiXmlOutStream & operator << (const TiXmlString & in)
|
||||
{
|
||||
*this += in;
|
||||
return *this;
|
||||
}
|
||||
|
||||
// TiXmlOutStream << operator.
|
||||
TiXmlOutStream & operator << (const char * in)
|
||||
{
|
||||
*this += in;
|
||||
return *this;
|
||||
}
|
||||
|
||||
} ;
|
||||
|
||||
#endif // TIXML_STRING_INCLUDED
|
||||
#endif // TIXML_USE_STL
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
www.sourceforge.net/projects/tinyxml
|
||||
Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any
|
||||
damages arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any
|
||||
purpose, including commercial applications, and to alter it and
|
||||
redistribute it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must
|
||||
not claim that you wrote the original software. If you use this
|
||||
software in a product, an acknowledgment in the product documentation
|
||||
would be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and
|
||||
must not be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
*/
|
||||
|
||||
#include "tinyxml.h"
|
||||
|
||||
// The goal of the seperate error file is to make the first
|
||||
// step towards localization. tinyxml (currently) only supports
|
||||
// english error messages, but the could now be translated.
|
||||
//
|
||||
// It also cleans up the code a bit.
|
||||
//
|
||||
|
||||
const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] =
|
||||
{
|
||||
"No error",
|
||||
"Error",
|
||||
"Failed to open file",
|
||||
"Error parsing Element.",
|
||||
"Failed to read Element name",
|
||||
"Error reading Element value.",
|
||||
"Error reading Attributes.",
|
||||
"Error: empty tag.",
|
||||
"Error reading end tag.",
|
||||
"Error parsing Unknown.",
|
||||
"Error parsing Comment.",
|
||||
"Error parsing Declaration.",
|
||||
"Error document empty.",
|
||||
"Error null (0) or unexpected EOF found in input stream.",
|
||||
"Error parsing CDATA.",
|
||||
"Error when TiXmlDocument added to document, because TiXmlDocument can only be at the root.",
|
||||
};
|
File diff suppressed because it is too large
Load Diff
BIN
assets/Font/ACharmingFont.ttf
Normal file
BIN
assets/Font/ACharmingFont.ttf
Normal file
Binary file not shown.
2744
assets/Font/Monospace/Monospace
Normal file
2744
assets/Font/Monospace/Monospace
Normal file
File diff suppressed because it is too large
Load Diff
2354
assets/Font/Monospace/Monospace-Bold
Normal file
2354
assets/Font/Monospace/Monospace-Bold
Normal file
File diff suppressed because it is too large
Load Diff
2445
assets/Font/Monospace/Monospace-BoldOblique
Normal file
2445
assets/Font/Monospace/Monospace-BoldOblique
Normal file
File diff suppressed because it is too large
Load Diff
2706
assets/Font/Monospace/Monospace-Oblique
Normal file
2706
assets/Font/Monospace/Monospace-Oblique
Normal file
File diff suppressed because it is too large
Load Diff
BIN
assets/Font/freefont/FreeMono.ttf
Normal file
BIN
assets/Font/freefont/FreeMono.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeMonoBold.ttf
Normal file
BIN
assets/Font/freefont/FreeMonoBold.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeMonoBoldOblique.ttf
Normal file
BIN
assets/Font/freefont/FreeMonoBoldOblique.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeMonoOblique.ttf
Normal file
BIN
assets/Font/freefont/FreeMonoOblique.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSans.ttf
Normal file
BIN
assets/Font/freefont/FreeSans.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSansBold.ttf
Normal file
BIN
assets/Font/freefont/FreeSansBold.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSansBoldOblique.ttf
Normal file
BIN
assets/Font/freefont/FreeSansBoldOblique.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSansOblique.ttf
Normal file
BIN
assets/Font/freefont/FreeSansOblique.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSerif.ttf
Normal file
BIN
assets/Font/freefont/FreeSerif.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSerifBold.ttf
Normal file
BIN
assets/Font/freefont/FreeSerifBold.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSerifBoldItalic.ttf
Normal file
BIN
assets/Font/freefont/FreeSerifBoldItalic.ttf
Normal file
Binary file not shown.
BIN
assets/Font/freefont/FreeSerifItalic.ttf
Normal file
BIN
assets/Font/freefont/FreeSerifItalic.ttf
Normal file
Binary file not shown.
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnColor version="0.1">
|
||||
<gui> <!-- Doivent tous y čtre de prférence ... global system acces -->
|
||||
<color name="CODE_basicBackgroung" val="#151515"/>
|
||||
<color name="CODE_space" val="#333333"/>
|
||||
<color name="CODE_tabulation" val="#444444"/>
|
||||
<color name="CODE_basicBackgroung" val="#151515"/>
|
||||
<color name="CODE_cursor" val="#eadd05"/>
|
||||
<color name="CODE_lineNumber" val="#fff725"/>
|
||||
<!-- Buffer list property -->
|
||||
@@ -16,10 +16,9 @@
|
||||
<syntax>
|
||||
<color name="normal" FG="#EEEEEE"/>
|
||||
<color name="SelectedText" FG="#AAAAAA" BG="#225a09"/>
|
||||
<color name="SelectedNoText" BG="#124a00"/>
|
||||
<color name="error" FG="#FF0000"/>
|
||||
<color name="doubleQuoteText" FG="#00fF00"/>
|
||||
|
||||
|
||||
<!-- hightline description : -->
|
||||
<color name="type" FG="#56bf10" bold="yes"/>
|
||||
<color name="storageKeyword" FG="#5c8fed"/>
|
||||
@@ -34,6 +33,8 @@
|
||||
<color name="macro" FG="#6c09c8" bold="yes"/>
|
||||
<color name="SYNTAX_ERROR" FG="#000000" BG="#FF0000" bold="yes"/>
|
||||
<color name="functionName" FG="#24d1e0" bold="yes"/>
|
||||
<color name="TestResultOK" FG="#000000" BG="#00FF00" bold="yes"/>
|
||||
<color name="TestResultERROR" FG="#000000" BG="#FF0000" bold="yes"/>
|
||||
</syntax>
|
||||
</EdnColor>
|
||||
|
40
assets/color_white.xml
Normal file
40
assets/color_white.xml
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnColor version="0.1">
|
||||
<gui> <!-- Doivent tous y <20>tre de prf<72>rence ... global system acces -->
|
||||
<color name="CODE_basicBackgroung" val="#d9d7d7"/>
|
||||
<color name="CODE_space" val="#b7b6b6"/>
|
||||
<color name="CODE_tabulation" val="#a7a5a5"/>
|
||||
<color name="CODE_cursor" val="#2a00ff"/>
|
||||
<color name="CODE_lineNumber" val="#1a00a0"/>
|
||||
<!-- Buffer list property -->
|
||||
<color name="LIST_backgroung1" val="#d9d7d7"/>
|
||||
<color name="LIST_backgroung2" val="#b7b6b6"/>
|
||||
<color name="LIST_backgroungSelected" val="#3da3f9"/>
|
||||
<color name="LIST_textNormal" val="#000000"/>
|
||||
<color name="LIST_textModify" val="#FF0000"/>
|
||||
</gui>
|
||||
<syntax>
|
||||
<color name="normal" FG="#000000"/>
|
||||
<color name="SelectedText" FG="#292929" BG="#009ce7"/>
|
||||
<color name="error" FG="#FF0000"/>
|
||||
<color name="doubleQuoteText" FG="#008e00"/>
|
||||
|
||||
<!-- hightline description : -->
|
||||
<color name="type" FG="#376d0a" bold="yes"/>
|
||||
<color name="storageKeyword" FG="#466cb4"/>
|
||||
<color name="number" FG="#007b00"/>
|
||||
<color name="systemFunction" FG="#acaa00"/>
|
||||
<color name="commonDefine" FG="#3c850b"/>
|
||||
<color name="boolean" FG="#1633a3"/>
|
||||
<color name="preprocesseur" FG="#ac0000"/>
|
||||
<color name="comment" FG="#b704b5" italic="yes"/>
|
||||
<color name="commentDoxygen" FG="#bf3e00" bold="yes" italic="yes"/>
|
||||
<color name="keyword" FG="#215eb8" bold="yes"/>
|
||||
<color name="macro" FG="#571793" bold="yes"/>
|
||||
<color name="SYNTAX_ERROR" FG="#000000" BG="#c20000" bold="yes"/>
|
||||
<color name="functionName" FG="#09857e" bold="yes"/>
|
||||
<color name="TestResultOK" FG="#000000" BG="#009c00" bold="yes"/>
|
||||
<color name="TestResultERROR" FG="#000000" BG="#c20000" bold="yes"/>
|
||||
</syntax>
|
||||
</EdnColor>
|
||||
|
@@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="c">
|
||||
<EdnLang version="0.1" lang="Makefiles">
|
||||
<ext>Makefile</ext>
|
||||
<ext>.mk</ext>
|
||||
<ext>*.mk</ext>
|
||||
<ext>*.global</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my preprocesseur">
|
||||
<color>preprocesseur</color>
|
||||
@@ -9,9 +10,23 @@
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>\$\([a-zA-Z_][a-zA-Z0-9_]*\)</start>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Assembleur">
|
||||
<ext>.s</ext>
|
||||
<ext>.S</ext>
|
||||
<ext>.asm</ext>
|
||||
<ext>*.s</ext>
|
||||
<ext>*.S</ext>
|
||||
<ext>*.asm</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
@@ -39,7 +39,7 @@
|
||||
</rule>
|
||||
<rule name="my comment">
|
||||
<color>comment</color>
|
||||
<start>//</start>
|
||||
<start>(//|@)</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
48
assets/lang_bash.xml
Normal file
48
assets/lang_bash.xml
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Bash script">
|
||||
<ext>*.sh</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="first line">
|
||||
<color>commentDoxygen</color>
|
||||
<start>#!</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="comment line">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<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>\@for|done|do|while|in|if|elif|then|else|fi\@</start>
|
||||
</rule>
|
||||
<rule name="my Variable">
|
||||
<color>keyword</color>
|
||||
<start>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</start>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>function (\w|_)+[ \t]*\(</start>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
60
assets/lang_boo.xml
Normal file
60
assets/lang_boo.xml
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="boulou log">
|
||||
<ext>*.boo</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="comment ##">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>##</start>
|
||||
<end>\n</end>
|
||||
</rule>
|
||||
<rule name="comment #">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
</rule>
|
||||
<rule name="notes ... ">
|
||||
<color>preprocesseur</color>
|
||||
<start>(NOTE|TODO) : </start>
|
||||
<end>\n</end>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<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="pourcentage OK">
|
||||
<color>TestResultOK</color>
|
||||
<start>100%</start>
|
||||
</rule>
|
||||
<rule name="pourcentage">
|
||||
<color>number</color>
|
||||
<start>[0-9]*%</start>
|
||||
</rule>
|
||||
<rule name="R<>sultat OK">
|
||||
<color>TestResultOK</color>
|
||||
<start>\[( )*(OK|Ok|ok)( )*\]</start>
|
||||
</rule>
|
||||
<rule name="resultat en erreur">
|
||||
<color>TestResultERROR</color>
|
||||
<start>\[(ERREUR|Erreur|erreur)\]</start>
|
||||
</rule>
|
||||
<rule name="resultat vide">
|
||||
<color>number</color>
|
||||
<start>\[( )*\]</start>
|
||||
</rule>
|
||||
<rule name="notes ... ">
|
||||
<color>macro</color>
|
||||
<start>==></start>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="c">
|
||||
<ext>.c</ext>
|
||||
<ext>.cpp</ext>
|
||||
<ext>.h</ext>
|
||||
<ext>.hpp</ext>
|
||||
<ext>*.c</ext>
|
||||
<ext>*.cpp</ext>
|
||||
<ext>*.h</ext>
|
||||
<ext>*.hpp</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
@@ -79,7 +79,7 @@
|
||||
</rule>
|
||||
<rule name="my function keyword">
|
||||
<color>systemFunction</color>
|
||||
<start>\@try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc|(cyg|sup)_([a-z]|[A-Z]|[0-9]|_)+\@</start>
|
||||
<start>\@new|delete|try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc|(cyg|sup)_([a-z]|[A-Z]|[0-9]|_)+\@</start>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
@@ -111,7 +111,7 @@
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<|>|&&|\{|\}|</start>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
</rule>
|
||||
<!-- With all elementes :
|
||||
<rule name="BIG LETTER">
|
87
assets/lang_java.xml
Normal file
87
assets/lang_java.xml
Normal file
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="java">
|
||||
<ext>*.java</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>/\*\*</start>
|
||||
<end>\*/</end>
|
||||
</rule>
|
||||
<rule name="my comment multiline">
|
||||
<color>comment</color>
|
||||
<start>/\*</start>
|
||||
<end>\*/</end>
|
||||
</rule>
|
||||
<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>
|
||||
<rule name="simpleQuteText">
|
||||
<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>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</start>
|
||||
</rule>
|
||||
<rule name="my function keyword">
|
||||
<color>systemFunction</color>
|
||||
<start>\@new|delete|try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc|(cyg|sup)_([a-z]|[A-Z]|[0-9]|_)+\@</start>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@bool|char|double|float|u?int(8|16|32|64|128)?(_t)?|long|short|signed|size_t|unsigned|void|(I|U)(8|16|32|64|128)\@</start>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<start>\@import|package|extends|Override|const|class|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum\@</start>
|
||||
</rule>
|
||||
<rule name="my common Define">
|
||||
<color>commonDefine</color>
|
||||
<start>\@NULL|MAX|MIN|__LINE__|__DATA__|__FILE__|__func__|__TIME__|__STDC__\@</start>
|
||||
</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="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|TRUE|false|FALSE\@</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>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
62
assets/lang_matlab.xml
Normal file
62
assets/lang_matlab.xml
Normal file
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="matlab">
|
||||
<ext>*.m</ext>
|
||||
<ext>*.M</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment doxygen">
|
||||
<color>commentDoxygen</color>
|
||||
<start>%%</start>
|
||||
<end>\n</end>
|
||||
</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>("|\n)</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start> '</start>
|
||||
<end>('|\n)</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
</rule>
|
||||
<rule name="global inclusion">
|
||||
<color>preprocesseur</color>
|
||||
<start>global( |\t)+</start>
|
||||
<end>\n</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>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|otherwise|end\@</start>
|
||||
</rule>
|
||||
<rule name="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|false\@</start>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||
</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>
|
||||
</pass2>
|
||||
</EdnLang>
|
76
assets/lang_php.xml
Normal file
76
assets/lang_php.xml
Normal file
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="php: pretty home page">
|
||||
<ext>*.php</ext>
|
||||
<ext>*.php3</ext>
|
||||
<ext>*.php4</ext>
|
||||
<ext>*.phtml</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="my comment multiline">
|
||||
<color>comment</color>
|
||||
<start>/\*</start>
|
||||
<end>\*/</end>
|
||||
</rule>
|
||||
<rule name="my todo comment">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>//[ \t]*TODO[ \t]*:</start>
|
||||
<end>\n</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="my comment inline">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
</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>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>'</start>
|
||||
<end>'</end>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="my keyword">
|
||||
<color>keyword</color>
|
||||
<start>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</start>
|
||||
</rule>
|
||||
<rule name="my type">
|
||||
<color>type</color>
|
||||
<start>\@array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset\@</start>
|
||||
</rule>
|
||||
<rule name="my storage keyword">
|
||||
<color>storageKeyword</color>
|
||||
<start>\@abstract|and|as|break|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor\@</start>
|
||||
</rule>
|
||||
<rule name="my common Define">
|
||||
<color>commonDefine</color>
|
||||
<start>\@doubleval|floatval|gettype|intval|print_r|serialize|settype|strval|unserialize|var_dump|var_export\@</start>
|
||||
</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="my boolean">
|
||||
<color>boolean</color>
|
||||
<start>\@true|TRUE|false|FALSE\@</start>
|
||||
</rule>
|
||||
<rule name="Function name">
|
||||
<color>functionName</color>
|
||||
<start>\@(\w|_)+[ \t]*\(</start>
|
||||
</rule>
|
||||
<rule name="condition">
|
||||
<color>boolean</color>
|
||||
<start>==|<=|>=|!=|<|>|&&|\{|\}|</start>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
35
assets/lang_xml.xml
Normal file
35
assets/lang_xml.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.2" lang="XML">
|
||||
<ext>*.xml</ext>
|
||||
<ext>*.eol</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="Comment">
|
||||
<color>comment</color>
|
||||
<start><!\-\-</start>
|
||||
<end>\-\-></end>
|
||||
</rule>
|
||||
<rule name="doubleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<EscapeChar>\</EscapeChar>
|
||||
</rule>
|
||||
<rule name="simpleQuteText">
|
||||
<color>doubleQuoteText</color>
|
||||
<start>\@'</start>
|
||||
<end>('|\n)</end>
|
||||
<!--<EscapeChar>\</EscapeChar>-->
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2>
|
||||
<rule name="special Balise">
|
||||
<color>error</color>
|
||||
<start><\?\w*|\?></start>
|
||||
</rule>
|
||||
<rule name="normale Balise">
|
||||
<color>functionName</color>
|
||||
<start></[0-9a-fA-F_]*|<[0-9a-fA-F_]*|/>|></start>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
202
avancement.boo
202
avancement.boo
@@ -1,142 +1,70 @@
|
||||
/* pour voir les appels system*/
|
||||
|
||||
# For the first realease :
|
||||
* Syst<73>mes :
|
||||
- Affichage ligne par ligne
|
||||
- Correction du bug de hl(sub patern empty)
|
||||
- Verifier si le hldisplay reaserch marche avec l'id et pas l'id-1
|
||||
- Gestion correct des charsets
|
||||
* Gui :
|
||||
- Confirmer avant de fermer
|
||||
- Demander de sauver
|
||||
- Controle des droits
|
||||
- Hl-gui management
|
||||
- Event quand un fichier ouvert a changer
|
||||
- Affichage des fichiers binaires
|
||||
- Ctags phase 1
|
||||
- Project manager phase 1
|
||||
|
||||
# action a faire (ordonner) :
|
||||
- sys : la methode de close est mauvaise...
|
||||
- gui : Goto line (need only the gui)
|
||||
- ctags : Back simple et multiple
|
||||
- ctags : Multiple files
|
||||
- sys : search complet, replace complet
|
||||
- gui : ordonner les fichier ouvert par nom ...
|
||||
- sys : Mise en place des colorisation de base pour le
|
||||
* xml
|
||||
* makefiles
|
||||
* script bash
|
||||
* python
|
||||
* matlab
|
||||
* java script
|
||||
* SQL
|
||||
* Assembleur
|
||||
- project : list of current files open
|
||||
- gui : demander l'enregistrement avant de fermer (quand c'est n<>cessaire)
|
||||
- gui : demande de cr<63>ation de nouveaux fichier ou quiter l'editeur ...
|
||||
# action a faire (ordonner par r<>vision) :
|
||||
* 0.2.X :
|
||||
- gui : Amelioration du full-screen et du display de base (sans l'entete de la fenetre)
|
||||
- gui : Mise en place d'un display ligne par ligne
|
||||
- gui : ascenceur quand n<>cessaire
|
||||
- gui : Demander la cr<63>ation de nouveaux fichier quand il n'existe pas (a l'ouverture en ligne de commande)
|
||||
- Catch Shift+TAB
|
||||
- Correction du bug de display quand on vas vers la fin, et mise en place d'un display qui met toujours le meme temps
|
||||
- Correction du bug des entr<74> bizard tel que les chapot et les guillemets
|
||||
- gui : Parameters : et en autre la taille de la police ... et voir pour la r<>cup<75>rer sur le system... et ce serait cool...
|
||||
- PB de copier coller sur les <20><> ...
|
||||
- Charset UTF-8 et iso 8859-15 correcte
|
||||
- Transformation de charset a la vol<6F>
|
||||
- Charset par defaut
|
||||
- D<EFBFBD>ction de charset (<28> mettre dans les todo de charset)
|
||||
|
||||
|
||||
# Text Editor
|
||||
|
||||
- [1] 0% Indent group with Tabulation and shift+tabulation
|
||||
- [1] 0% Basic smart indent : Recopy the start of the previous line when return (copy '\t' and ' ')
|
||||
- [1] 0% Replace Tab with space when press the key
|
||||
- [1] 0% Request save user when quit the software
|
||||
- [1] 0% Hide/Display scroll element when not usefull
|
||||
- [1] 0% Regular expression search
|
||||
- [1] 80% Colorisation syntaxique
|
||||
- [1] 80% Copier / coller ==> probleme sur les caract<EFBFBD>res sp<73>ciaux comme <20> <20> <20> ...
|
||||
- [1] 10% Search
|
||||
- [1] 10% Replace
|
||||
- [1] 80% Undo / Redo ajout de caract<63>res autre que " ", "\t" et "\n"
|
||||
- [2] 0% Selectionner en colone
|
||||
- [2] 0% Supression multiple de ligne par la commande ctrl+D
|
||||
- [3] 0% Multi-file search ==> display it in a result buffer (clickable only)
|
||||
- [3] 0% basic UTF8 string management ==> bad with the curent buffer
|
||||
- [5] 0% Replace in all elements of the project file or a part
|
||||
- [5] 0% Multiple Text Editor in the same Time
|
||||
- [5] 0% Support des Macros ==> In python ??? or other ...
|
||||
|
||||
# Ctags :
|
||||
- [1] 100% Parse (use the ctags parser)
|
||||
- [1] 50% Find
|
||||
- [1] 50% Jump
|
||||
- [1] 10% History of move (with display)
|
||||
|
||||
# Buffer Viewer :
|
||||
- [1] 0% Right menu
|
||||
- [1] 100% Display buffer in color
|
||||
- [1] 100% Display buffer Saved / not Saved
|
||||
- [2] 0% Image of the type of buffer (optionnal)
|
||||
|
||||
# Configuration :
|
||||
- [1] 0% Creer une IHM pour les configurations de base
|
||||
- [1] 0% Creer une IHM pour l'edition du hightliner syntaxique (quand il marchera...)
|
||||
- [1] 0% Creer une IHM pour les couleurs (voir la lier avec l'IHM pour le hightliner)
|
||||
- [1] 0% saugegarde automatique de la configuration ou sur demande...
|
||||
|
||||
# Project manager :
|
||||
- [2] 0% Faire un editeur des dossiers du projet a ouvrir ==> automatiquement ajouter dans les Ctags
|
||||
- [2] 0% Base
|
||||
- [2] 0% Save All
|
||||
- [2] 0% TreeView
|
||||
|
||||
# Tree View :
|
||||
- [2] 0% View
|
||||
- [2] 0% Open File
|
||||
- [2] 0% Jump to the curent File
|
||||
- [2] 0% Hide CVS / Git / SVN elements
|
||||
|
||||
# Diff :
|
||||
- [4] 0% generate a Diff between files
|
||||
- [4] 0% same in binary
|
||||
|
||||
# Git :
|
||||
- [4] 0% Diff with the current wersion commited (local)
|
||||
- [9] 0% Git branch local display (as gitk --all) ...
|
||||
- [4] 0% view git chawan history ... (git Log)
|
||||
|
||||
# CVS :
|
||||
- [6] 0% check the version with CVS
|
||||
- [6] 0% commit
|
||||
- [6] 0% display the Branch
|
||||
- [6] 0% Select a new repository ...
|
||||
|
||||
# Publication :
|
||||
- [1] 0% faire une publication du logiciel sur le Web... (need a stable version)
|
||||
- [2] 0% faire un package
|
||||
|
||||
# Repository :
|
||||
- [2] 0% create my own repository (@home)
|
||||
- [2] 0% manage right with Git
|
||||
- [2] 0% create a website fot it (@home)
|
||||
- [2] 0% reserve edn.org
|
||||
|
||||
# plugin : (never i think ...)
|
||||
- [ ] 0% Comprendre comment faire un system avec des plugin (interne et simple)...
|
||||
- [ ] 0% En c++ compiler seulement, pas d'interface pyton ou autre c'est trop moche.
|
||||
|
||||
# notes :
|
||||
The [x] Represent the version expected of the feature
|
||||
|
||||
|
||||
# Global TODO List:
|
||||
- [1] 0% EdnString ==> a revoir pour etre plus rapide et plus compl<70>te... et suporter le << et >>
|
||||
- [1] 0% Remove wxString from the current code...
|
||||
|
||||
- sys : Mise en place des colorisation de base pour le
|
||||
* java script
|
||||
* SQL
|
||||
- sys : replace TAB with space when Tab is pressed
|
||||
- sys : Catch F[1-12] ==> for user personal event
|
||||
- BUG : Correction du bug des entr<74> bizard tel que les chapot et les guillemets
|
||||
- BUG : de s<>lection quand la ligne est pleine et la premi<6D>re ligne s<>ctionn<6E>e. ==> regarder apr<70>s avoir fait le display ligne par ligne...
|
||||
- BUG : de copier coller sur les <20><><EFBFBD> ...
|
||||
- BUG : les caract<EFBFBD>re multiples type chapot ...
|
||||
- BUG : italique non g<>n<EFBFBD>r<EFBFBD>
|
||||
* 0.3.X :
|
||||
- SEARCH : get selected text in the search windows
|
||||
- SEARCH : Select the search windows when call crtl+F
|
||||
- sys : personal property file in the ~/.edn ou ~/.gnome/edn
|
||||
- gui : Ordonner les fichier ouvert par nom ...
|
||||
- gui : parameter gui : et en autre la taille de la police ... et voir pour la r<>cup<75>rer sur le system... et ce serait cool...
|
||||
- gui : Color list selection
|
||||
- gui : Hightlight gui management
|
||||
* 0.4.X :
|
||||
- sys : Charset UTF-8 et iso 8859-15 correcte
|
||||
- sys : Transformation de charset a la vol<6F>e
|
||||
- sys : Charset par defaut
|
||||
- Sys : D<>tection de charset (<28> mettre dans les todo de charset)
|
||||
==> regarder les librairies open sources
|
||||
* 0.5.X :
|
||||
- prj : list of current files open
|
||||
- prj : open ctags file
|
||||
- sys : replace ALL
|
||||
- sys : Undo / Redo ajout de caract<63>res autre que " ", "\t" et "\n"
|
||||
* 0.6.X :
|
||||
- sys : right management ...
|
||||
- HL : Normalyse all the system of regular expression with <> chapot ...
|
||||
- HL : sub parsing of the reg exp
|
||||
- sys : update all language
|
||||
* 0.7.X :
|
||||
- sys : Select in colones
|
||||
- sys : Select all the same search in the current buffer ... ( HL en vert ou jaune ...)
|
||||
- sys : Multi-file search ==> display it in a result buffer (clickable only)
|
||||
* 0.9.X :
|
||||
- int : Redo all the doxygen ...
|
||||
* 1.0.X :
|
||||
- gui : open file in binary
|
||||
- sys : compare binary files
|
||||
- sys : compare normal files
|
||||
* 1.1.X :
|
||||
- gui : Display content of a folder
|
||||
- gui : add a treeview display
|
||||
- sys : evenement losqu'un fichier est modifier a l'exterieur...
|
||||
- sys : image du type de fichier dans le buffer list view
|
||||
* 1.2.X :
|
||||
- PRJ : treeview des dossier a ouvrir
|
||||
- PRJ : GUI de management
|
||||
- PRJ : Save all in project
|
||||
- SYS : Save all modify files
|
||||
* 1.3.X :
|
||||
- sys : version system management (git, cvs, ...)
|
||||
* 1.4.X :
|
||||
- SYS : Macro generation and acquisition
|
||||
* 1.5.X :
|
||||
- GDB : Acces interne pour un debuggeur ==> comme cgdb ... avec l'acces assembleur en plus
|
||||
|
||||
# note utiles :
|
||||
http://majutsushi.github.com/tagbar/ ==> je devrais regarder ca pour savoir ce que je peux faire avec du ctags
|
||||
|
||||
CTags : Set the parsing methode : "ctags -R --fields=+n Sources/ /usr/include/gtk-3.0/"
|
||||
|
85
build.xml
Normal file
85
build.xml
Normal file
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="edn" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||
It contains the path to the SDK. It should *NOT* be checked into
|
||||
Version Control Systems. -->
|
||||
<loadproperties srcFile="local.properties" />
|
||||
|
||||
<!-- The ant.properties file can be created by you. It is only edited by the
|
||||
'android' tool to add properties to it.
|
||||
This is the place to change some Ant specific build properties.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
source.dir
|
||||
The name of the source directory. Default is 'src'.
|
||||
out.dir
|
||||
The name of the output directory. Default is 'bin'.
|
||||
|
||||
For other overridable properties, look at the beginning of the rules
|
||||
files in the SDK, at tools/ant/build.xml
|
||||
|
||||
Properties related to the SDK location or the project target should
|
||||
be updated using the 'android' tool with the 'update' action.
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="ant.properties" />
|
||||
|
||||
<!-- The project.properties file is created and updated by the 'android'
|
||||
tool, as well as ADT.
|
||||
|
||||
This contains project specific properties such as project target, and library
|
||||
dependencies. Lower level build properties are stored in ant.properties
|
||||
(or in .classpath for Eclipse projects).
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems. -->
|
||||
<loadproperties srcFile="project.properties" />
|
||||
|
||||
<!-- quick check on sdk.dir -->
|
||||
<fail
|
||||
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
|
||||
unless="sdk.dir"
|
||||
/>
|
||||
|
||||
|
||||
<!-- extension targets. Uncomment the ones where you want to do custom work
|
||||
in between standard targets -->
|
||||
<!--
|
||||
<target name="-pre-build">
|
||||
</target>
|
||||
<target name="-pre-compile">
|
||||
</target>
|
||||
|
||||
/* This is typically used for code obfuscation.
|
||||
Compiled code location: ${out.classes.absolute.dir}
|
||||
If this is not done in place, override ${out.dex.input.absolute.dir} */
|
||||
<target name="-post-compile">
|
||||
</target>
|
||||
-->
|
||||
|
||||
<!-- Import the actual build file.
|
||||
|
||||
To customize existing targets, there are two options:
|
||||
- Customize only one target:
|
||||
- copy/paste the target into this file, *before* the
|
||||
<import> task.
|
||||
- customize it to your needs.
|
||||
- Customize the whole content of build.xml
|
||||
- copy/paste the content of the rules files (minus the top node)
|
||||
into this file, replacing the <import> task.
|
||||
- customize to your needs.
|
||||
|
||||
***********************
|
||||
****** IMPORTANT ******
|
||||
***********************
|
||||
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
||||
in order to avoid having your file be overridden by tools such as "android update project"
|
||||
-->
|
||||
<!-- version-tag: 1 -->
|
||||
<import file="${sdk.dir}/tools/ant/build.xml" />
|
||||
|
||||
</project>
|
3
ctags.sh
Executable file
3
ctags.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
ctags -R --fields=+n jni/ ../../../../usr/include/freetype2 ../ewol/
|
14
data/edn.desktop
Normal file
14
data/edn.desktop
Normal file
@@ -0,0 +1,14 @@
|
||||
[Desktop Entry]
|
||||
Version=0.3.0
|
||||
Name=Edn : Editeur de N'ours
|
||||
Exec=edn
|
||||
Icon=Edn
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Development;Utility;TextEditor;
|
||||
GenericName=Text editor
|
||||
GenericName[en]=Text editor
|
||||
GenericName[nl]=Tekst verwerker
|
||||
GenericName[fr]=<EFBFBD>diteur de text
|
||||
Comment=Code editor for c, c++, php, bash, xml ...
|
||||
Comment[fr]=<EFBFBD>diteur de text pour les language c, c++, php, bash, xml ...
|
BIN
data/imagesSources/delete-24px.png
Normal file
BIN
data/imagesSources/delete-24px.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
data/imagesSources/delete.png
Normal file
BIN
data/imagesSources/delete.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
data/imagesSources/icone.png
Normal file
BIN
data/imagesSources/icone.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
BIN
data/imagesSources/icone.xcf
Normal file
BIN
data/imagesSources/icone.xcf
Normal file
Binary file not shown.
421
data/imagesSources/icone.xpm
Normal file
421
data/imagesSources/icone.xpm
Normal file
@@ -0,0 +1,421 @@
|
||||
/* XPM */
|
||||
static char * icone_xpm[] = {
|
||||
"128 128 290 2",
|
||||
" c None",
|
||||
". c #0A0A0A",
|
||||
"+ c #0B0B0B",
|
||||
"@ c #0C0C0C",
|
||||
"# c #0D0D0D",
|
||||
"$ c #0E0E0E",
|
||||
"% c #0F0F0F",
|
||||
"& c #070707",
|
||||
"* c #030303",
|
||||
"= c #020202",
|
||||
"- c #010101",
|
||||
"; c #040404",
|
||||
"> c #000000",
|
||||
", c #111111",
|
||||
"' c #000100",
|
||||
") c #131313",
|
||||
"! c #262626",
|
||||
"~ c #151515",
|
||||
"{ c #000301",
|
||||
"] c #000602",
|
||||
"^ c #000502",
|
||||
"/ c #000401",
|
||||
"( c #000803",
|
||||
"_ c #1E1E1E",
|
||||
": c #013413",
|
||||
"< c #016023",
|
||||
"[ c #026625",
|
||||
"} c #016424",
|
||||
"| c #016324",
|
||||
"1 c #026525",
|
||||
"2 c #016524",
|
||||
"3 c #016223",
|
||||
"4 c #026725",
|
||||
"5 c #00270E",
|
||||
"6 c #000200",
|
||||
"7 c #040505",
|
||||
"8 c #1A1A1A",
|
||||
"9 c #014A1A",
|
||||
"0 c #03B843",
|
||||
"a c #04CB4A",
|
||||
"b c #02802E",
|
||||
"c c #000D04",
|
||||
"d c #000001",
|
||||
"e c #1C1C1C",
|
||||
"f c #252626",
|
||||
"g c #014C1B",
|
||||
"h c #03B943",
|
||||
"i c #026D28",
|
||||
"j c #000C1B",
|
||||
"k c #0A438A",
|
||||
"l c #24282C",
|
||||
"m c #014E1C",
|
||||
"n c #03BB44",
|
||||
"o c #03CA49",
|
||||
"p c #000702",
|
||||
"q c #000B19",
|
||||
"r c #005DD2",
|
||||
"s c #0072FF",
|
||||
"t c #0C58B6",
|
||||
"u c #01501D",
|
||||
"v c #03BE45",
|
||||
"w c #000A18",
|
||||
"x c #0061D9",
|
||||
"y c #0C58B5",
|
||||
"z c #24282D",
|
||||
"A c #03BF45",
|
||||
"B c #0E55AF",
|
||||
"C c #24292F",
|
||||
"D c #03BD45",
|
||||
"E c #026D27",
|
||||
"F c #0F52A5",
|
||||
"G c #242931",
|
||||
"H c #014B1B",
|
||||
"I c #02752A",
|
||||
"J c #000E20",
|
||||
"K c #0058C7",
|
||||
"L c #10509D",
|
||||
"M c #232A32",
|
||||
"N c #03B743",
|
||||
"O c #027A2C",
|
||||
"P c #000F23",
|
||||
"Q c #0054BD",
|
||||
"R c #114F9C",
|
||||
"S c #232A31",
|
||||
"T c #01491A",
|
||||
"U c #03B642",
|
||||
"V c #027B2C",
|
||||
"W c #0053BA",
|
||||
"X c #0071FE",
|
||||
"Y c #10509F",
|
||||
"Z c #242930",
|
||||
"` c #03B742",
|
||||
" . c #02772B",
|
||||
".. c #0054BC",
|
||||
"+. c #0F53A8",
|
||||
"@. c #24282E",
|
||||
"#. c #026F28",
|
||||
"$. c #000C1C",
|
||||
"%. c #0058C5",
|
||||
"&. c #0D56B1",
|
||||
"*. c #005CD0",
|
||||
"=. c #0061DA",
|
||||
"-. c #0D56B0",
|
||||
";. c #026B27",
|
||||
">. c #030406",
|
||||
",. c #0452B1",
|
||||
"'. c #0F53A7",
|
||||
"). c #02742A",
|
||||
"!. c #1D1D1D",
|
||||
"~. c #222C39",
|
||||
"{. c #0566DC",
|
||||
"]. c #10509E",
|
||||
"^. c #02792C",
|
||||
"/. c #050505",
|
||||
"(. c #222C38",
|
||||
"_. c #0665DC",
|
||||
":. c #114F9B",
|
||||
"<. c #1B1B1B",
|
||||
"[. c #222D3A",
|
||||
"}. c #0763D4",
|
||||
"|. c #02782B",
|
||||
"1. c #212E3C",
|
||||
"2. c #095FCB",
|
||||
"3. c #027129",
|
||||
"4. c #212F40",
|
||||
"5. c #0A5DC3",
|
||||
"6. c #026826",
|
||||
"7. c #203042",
|
||||
"8. c #0A5CC1",
|
||||
"9. c #212F42",
|
||||
"0. c #0A5DC5",
|
||||
"a. c #212E3F",
|
||||
"b. c #0860CD",
|
||||
"c. c #252525",
|
||||
"d. c #026A26",
|
||||
"e. c #222D3C",
|
||||
"f. c #0763D7",
|
||||
"g. c #02732A",
|
||||
"h. c #202020",
|
||||
"i. c #090909",
|
||||
"j. c #1F2020",
|
||||
"k. c #080808",
|
||||
"l. c #0763D5",
|
||||
"m. c #23282F",
|
||||
"n. c #0860CB",
|
||||
"o. c #0070FB",
|
||||
"p. c #082D5A",
|
||||
"q. c #0A5DC4",
|
||||
"r. c #0071FD",
|
||||
"s. c #003B84",
|
||||
"t. c #00040A",
|
||||
"u. c #026926",
|
||||
"v. c #00387F",
|
||||
"w. c #00050D",
|
||||
"x. c #00060F",
|
||||
"y. c #00250D",
|
||||
"z. c #006FF9",
|
||||
"A. c #003E8C",
|
||||
"B. c #016C27",
|
||||
"C. c #006EF7",
|
||||
"D. c #004193",
|
||||
"E. c #000206",
|
||||
"F. c #004397",
|
||||
"G. c #000104",
|
||||
"H. c #004294",
|
||||
"I. c #001608",
|
||||
"J. c #02762B",
|
||||
"K. c #003F8D",
|
||||
"L. c #028932",
|
||||
"M. c #000A03",
|
||||
"N. c #003B85",
|
||||
"O. c #000409",
|
||||
"P. c #029034",
|
||||
"Q. c #001708",
|
||||
"R. c #029536",
|
||||
"S. c #001909",
|
||||
"T. c #029737",
|
||||
"U. c #00230C",
|
||||
"V. c #202E3E",
|
||||
"W. c #043068",
|
||||
"X. c #00060E",
|
||||
"Y. c #002D10",
|
||||
"Z. c #141414",
|
||||
"`. c #010102",
|
||||
" + c #002B0F",
|
||||
".+ c #242424",
|
||||
"++ c #028A32",
|
||||
"@+ c #161616",
|
||||
"#+ c #028530",
|
||||
"$+ c #00290F",
|
||||
"%+ c #028430",
|
||||
"&+ c #02812F",
|
||||
"*+ c #028831",
|
||||
"=+ c #029636",
|
||||
"-+ c #028F34",
|
||||
";+ c #003111",
|
||||
">+ c #03AF40",
|
||||
",+ c #029436",
|
||||
"'+ c #014318",
|
||||
")+ c #03C146",
|
||||
"!+ c #015D21",
|
||||
"~+ c #029135",
|
||||
"{+ c #028B32",
|
||||
"]+ c #028631",
|
||||
"^+ c #03A63C",
|
||||
"/+ c #000F21",
|
||||
"(+ c #0E3564",
|
||||
"_+ c #000F22",
|
||||
":+ c #026DF3",
|
||||
"<+ c #144888",
|
||||
"[+ c #000D1F",
|
||||
"}+ c #0054BE",
|
||||
"|+ c #026DF2",
|
||||
"1+ c #028D33",
|
||||
"2+ c #0059C8",
|
||||
"3+ c #016EF3",
|
||||
"4+ c #144889",
|
||||
"5+ c #24282B",
|
||||
"6+ c #029435",
|
||||
"7+ c #005ED3",
|
||||
"8+ c #016FF6",
|
||||
"9+ c #14498B",
|
||||
"0+ c #252628",
|
||||
"a+ c #0070F9",
|
||||
"b+ c #134A8C",
|
||||
"c+ c #0071FC",
|
||||
"d+ c #134A8D",
|
||||
"e+ c #029235",
|
||||
"f+ c #14498C",
|
||||
"g+ c #252729",
|
||||
"h+ c #028C33",
|
||||
"i+ c #016FF9",
|
||||
"j+ c #14498A",
|
||||
"k+ c #001206",
|
||||
"l+ c #016EF5",
|
||||
"m+ c #001E0B",
|
||||
"n+ c #028731",
|
||||
"o+ c #003312",
|
||||
"p+ c #029335",
|
||||
"q+ c #027D2D",
|
||||
"r+ c #000F05",
|
||||
"s+ c #000A17",
|
||||
"t+ c #027C2D",
|
||||
"u+ c #123764",
|
||||
"v+ c #026DF1",
|
||||
"w+ c #000C04",
|
||||
"x+ c #16447B",
|
||||
"y+ c #000E05",
|
||||
"z+ c #101010",
|
||||
"A+ c #026CF0",
|
||||
"B+ c #001106",
|
||||
"C+ c #174379",
|
||||
"D+ c #026CED",
|
||||
"E+ c #03C949",
|
||||
"F+ c #001407",
|
||||
"G+ c #174276",
|
||||
"H+ c #036AEA",
|
||||
"I+ c #25272A",
|
||||
"J+ c #184174",
|
||||
"K+ c #036AE8",
|
||||
"L+ c #184173",
|
||||
"M+ c #036AE9",
|
||||
"N+ c #121212",
|
||||
"O+ c #001307",
|
||||
"P+ c #25272B",
|
||||
"Q+ c #036BEB",
|
||||
"R+ c #001006",
|
||||
"S+ c #174277",
|
||||
"T+ c #026CEE",
|
||||
"U+ c #242525",
|
||||
"V+ c #17437A",
|
||||
"W+ c #232426",
|
||||
"X+ c #006CF1",
|
||||
"Y+ c #0B2A51",
|
||||
"Z+ c #004396",
|
||||
"`+ c #000103",
|
||||
" @ c #004192",
|
||||
".@ c #000205",
|
||||
"+@ c #003D8A",
|
||||
"@@ c #000307",
|
||||
"#@ c #003A83",
|
||||
"$@ c #0269E8",
|
||||
"%@ c #242629",
|
||||
"&@ c #0B223D",
|
||||
"*@ c #00050C",
|
||||
"=@ c #039938",
|
||||
"-@ c #015920",
|
||||
";@ c #014D1C",
|
||||
">@ c #232323",
|
||||
",@ c #181818",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" . + @ # @ @ @ # # # # @ @ @ # # # @ @ @ # # # @ @ @ # # # # @ @ @ # # $ % ",
|
||||
" & * = - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - = * & $ ",
|
||||
" ; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ; , ",
|
||||
" > ' > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ) ",
|
||||
" > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > , ! ",
|
||||
" > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - ~ ! ! ",
|
||||
" > > > > > > > > > { ] ^ / / / ] ^ ^ / / / ^ ^ ] / / / ^ ^ ] ^ / / ^ ] ( ' > > > > > > > > & _ ! ! ! ",
|
||||
" > > > > > > > > / : < [ } | | | 1 2 2 3 | 3 1 2 1 | | 3 } 1 1 } | | | 4 5 6 > > > > > > > 7 8 ! ! ! ! ! ",
|
||||
" > > > > > > > > 6 9 0 a a a a a a a a a a a a a a a a a a a a a a a a a b c > > > > > d > 7 e f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > g h a a a a a a a a a a a a a a a a a a a a a a a a a i ^ > > > > > d > j k l ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > m n a a a a a a a a a a a a a a a a a a a a a a a o a 1 p > > > > > d > q r s t l ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > u v a a a a a a a a a a a a a a a a a a a a a a a a a 3 p > > > > > d > w x s s s y z ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > u A a a a a a a a a a a a a a a a a a a a a a a a a a 2 ( > > > > > d > q x s s s s s B C ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > m D a a a a a a a a a a a a a a a a a a a a a a a a a E p > > > > d > > j r s s s s s s s F G ! ! ! ! ! ! ! ! ",
|
||||
" > > > > > > > > { H n a a a a a a a a a a a a a a a a a a a a a a a a a I ^ > > > > d > > J K s s s s s s s s s L M ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > ^ 9 N a a a a a a a a a a a a a a a a a a a a a a a a a O / > > > > d > > P Q s s s s s s s s s s s R S ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > / T U a a a a a a a a a a a a a a a a a a a a a a a a a V { > > > > > > > P W s s s s s s s s s s s X s Y Z ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > { 9 ` a a a a a a a a a a a a a a a a a a a a a a a a a .{ > > > > > d > J ..s s s s s s s s s s s s s s s +.@.! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > g 0 a a a a a a a a a a a a a a a a a a a a a a a a a #.^ > > > > > d > $.%.s s s s s s s s s s s s s s s s s &.l ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > m n a a a a a a a a a a a a a a a a a a a a a a a o a 4 ] > > > > > d > q *.s s s s s s s s s s s s s s s s s s s t l ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > u v a a a a a a a a a a a a a a a a a a a a a a a a a 3 p > > > > > d > w x s s s s s s s s s s s s s s s s s s s s s y z ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > u A a a a a a a a a a a a a a a a a a a a a a a a a a } ( > > > > > > > w =.s s s s s s s s s s s s s s s s s s s s s s s -.@.! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > m v a a a a a a a a a a a a a a a a a a a a a a a a a ;.p > > > > > > > >.,.s s s s s s s s s s s s s s s s s s s s s s s s s '.G ! ! f ! ! ! ! ! ",
|
||||
" > > > > > > > > { H n a a a a a a a a a a a a a a a a a a a a a a a a a ).^ > > > > > > > ; !.~.{.s s s s s s s s s s s s s s s s s s s s s s s s s ].M ! ! ! ! ! ! ! ! ",
|
||||
" > > > > > > > > ^ 9 0 a a a a a a a a a a a a a a a a a a a a a a a a a ^./ > > > > > > > /.e f ! (._.s s s s s s s s s s s s s s s s s s s s s s s s s :.M ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > ^ T ` a a a a a a a a a a a a a a a a a a a a a a a a a V { > > > > > > > /.<.! ! f ! [.}.s s s s s s s s s s s s s s s s s s s s s s s X s ].G ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > { 9 ` a a a a a a a a a a a a a a a a a a a a a a a a a |.{ > > > > > > > ; e ! ! ! ! f ! 1.2.s s s s s s s s s s s s s s s s s s s s s s s s s '.@.! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > H 0 a a a a a a a a a a a a a a a a a a a a a a a a a 3./ > > > > > > > > ~ ! ! ! ! ! ! f ! 4.5.s s s s s s s s s s s s s s s s s s s s s s s s s -.z ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > m n a a a a a a a a a a a a a a a a a a a a a a a o a 6.] > > > > > > > > ! ! ! ! ! ! ! ! 7.8.s s s s s s s s s s s s s s s s s s s s s s s s s y l ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > u v a a a a a a a a a a a a a a a a a a a a a a a a a | p > > > > > > > > ! ! ! ! ! ! ! ! 9.0.s s s s s s s s s s s s s s s s s s s s s s s s s t l ! f ! ! ! ! ! ! ",
|
||||
" > > > > > > > > > u A a a a a a a a a a a a a a a a a a a a a a a a a a } ( > > > > > > > > ! ! ! ! ! ! ! ! a.b.s s s s s s s s s s s s s s s s s s s s s s s s s &.@.! f ! ! ! ! ! c. ",
|
||||
" > > > > > > > > > m v a a a a a a a a a a a a a a a a a a a a a a a a a d.p > > > > > > > > ! ! ! ! ! ! ! ! e.f.s s s s s s s s s s s s s s s s s s s s s s s s s +.Z ! f ! ! ! c.~ - ",
|
||||
" > > > > > > > > { g n a a a a a a a a a a a a a a a a a a a a a a a a a g.] > > > > > > > > ! ! ! ! ! ! f ! ~.{.s s s s s s s s s s s s s s s s s s s s s s s s s Y S ! ! ! h.i.> > > ",
|
||||
" e = > > > > > > > / 9 0 a a a a a a a a a a a a a a a a a a a a a a a a a ^./ > > > > > > > > ! ! ! ! ! ! ! f ! (._.s s s s s s s s s s s s s s s s s s s s s s s s s R M ! j.k.> > > > > ",
|
||||
" !.k.> > > > > > > ^ T ` a a a a a a a a a a a a a a a a a a a a a a a a a V { > > > > > > > > ! ! ! ! ! ! f ! ~.l.s s s s s s s s s s s s s s s s s s s s s s s X s L m., > > > > > > ",
|
||||
" $ = > > > > > > > { 9 U a a a a a a a a a a a a a a a a a a a a a a a a a ^.{ > > > > > > > > ! ! ! ! ! ! f ! e.n.s s s s s s s s s s s s s s s s s s s s s s s s o.p.> > > > > > > ",
|
||||
" > > > > > > > > > H N a a a a a a a a a a a a a a a a a a a a a a a a a 3./ > > > > > > > > ! ! ! ! ! ! f ! a.q.s s s s s s s s s s s s s s s s s s s s s s r.s.t.> > > > > > > ",
|
||||
" > > > > > > > > > m n a a a a a a a a a a a a a a a a a a a a a a a a a u.] > > > > > > > > ! ! ! ! ! ! ! ! 9.8.s s s s s s s s s s s s s s s s s s s s r.v.w.> > > > > > > > ",
|
||||
" > > > > > > > > u D a a a a a a a a a a a a a a a a a a a a a a a a a | p > > > > > > > > ! ! ! ! ! ! ! ! 9.q.s s s s s s s s s s s s s s s s s s r.v.x.> > > > > > > > > > ",
|
||||
" > > > > > > > > u A a a a a a a a a a a a a a a a a a a a a a a a a a | ( > > > > > > > > ! ! ! ! ! ! ! ! a.n.s s s s s s s s s s s s s s s s o.s.w.> > d > > > > > > > > ",
|
||||
" > > > > > > > y.v a a a a a a a a a a a a a a a a a a a a a a a a a u.p > > > > > > > > ! ! ! ! ! ! ! ! e.l.s s s s s s s s s s s s s s z.A.t.> > d > > > > > > > > ' ",
|
||||
" > > > > > > > B.a a a a a a a a a a a a a a a a a a a a a a a a a 3.] > > > > > > > > ! ! ! ! ! ! f ! ~._.s s s s s s s s s s s s C.D.E.> d > > > > > > > > > > ' ",
|
||||
" > > > > > > > O a a a a a a a a a a a a a a a a a a a a a a a a ^./ > > > > > > > > ! ! ! ! ! ! ! f ! (.{.s s s s s s s s s s C.F.G.> d > > > > > > > > > > > > ",
|
||||
" > > > > > > > I a a a a a a a a a a a a a a a a a a a a a a a V { > > > > > > > > ! ! ! ! ! ! f ! ~.f.s s s s s s s s z.H.G.> d > > > > > I.] > > > > > > ",
|
||||
" > > > > > > > J.a a a a a a a a a a a a a a a a a a a a a a ^.{ > > > > > > > > ! ! ! ! ! ! f ! e.b.s s s s s s o.K.E.> d > > > > > I.L.M.> > > > > > ",
|
||||
" > > > > > > > J.a a a a a a a a a a a a a a a a a a a a a g./ > > > > > > > > ! ! ! ! ! ! f ! a.0.s s s s r.N.O.> d > > > > > I.P.a c > > > > > > ",
|
||||
" > > > > > > > I a a a a a a a a a a a a a a a a a a a a d.] > > > > > > > > ! ! ! ! ! ! ! ! 9.8.s s r.v.w.> d > > > > > Q.R.a a S.> > > > > > ",
|
||||
" / > > > > > > O a a a a a a a a a a a a a a a a a o a } p > > > > > > > > ! ! ! ! ! ! ! ! 7.5.r.v.x.> > > > > > > Q.T.a a a U.> > > > > > ",
|
||||
" p > > > > > > O a a a a a a a a a a a a a a a a a a | ( > > > > > > > > ! ! ! ! ! ! ! ! V.W.X.> > d > > > > I.R.a a a a Y.> > > > > > ",
|
||||
" M.> > > > > > O a a a a a a a a a a a a a a a a a 6.p > > > > > > > > ! ! ! ! ! ! c.Z.`.> > d > > > > I.P.a a a a a +> > > > > > ",
|
||||
" ( > > > > > > I a a a a a a a a a a a a a a a a 3.] > > > > > > > > ! ! ! ! .+~ - > > > > > > > I.++a a a a a a Y.> > > > > > ",
|
||||
" p > > > > > > J.a a a a a a a a a a a a a a a |./ > > > > > > > > ! ! ! .+@+> > > > > > > > Q.#+a a a a a a a $+> > > > > > ",
|
||||
" ( > > > > > > J.a a a a a a a a a a a a a a V { > > > > > > > > .+@+> > > > > > > > I.%+a a a a a a a a $+> > > > > > ",
|
||||
" p > > > > > > &+a a a a a a a a a a a a a ^.{ > > > > > > > > # > > > > > > > > I.*+a a a a a a a a a $+> > > > > > ",
|
||||
" ] > > > > > > =+a a a a a a a a a a a a )./ > > > > > > > > > > > > > > > > I.-+a a a a a a a a a a ;+> > > > > > ",
|
||||
" > > > > > > > >+a a a a a a a a a a a ;.^ > > > > > > > > > > > > > > > > > Q.,+a a a a a a a a a a a '+> > > > > > ",
|
||||
" 6 > > > > > ' )+a a a a a a a a o a } p > > > > > > > * > > > > > > > > > Q.T.a a a a a a a a a a a a !+> > > > > > ",
|
||||
" ' > > > > > ' a a a a a a a a a a 3 ( > > > > > > > * h.! > > > > > > > > I.=+a a a a a a a a a a a a a 3.> > > > > > ",
|
||||
" > > > > > > > a a a a a a a a a 4 p > > > > > > > * h.! ! ! > > > > > > > > I.~+a a a a a a a a a a a a a a b > > > > > > ",
|
||||
" > > > > > > > a a a a a a a a #.] > > > > > > > ; _ ! ! ! ! ! > > > > > > > > I.{+a a a a a a a a a a a a a a a P.> > > > > > ",
|
||||
" ' > > > > > ' a a a a a a a .^ > > > > d > > 7 !.! ! ! ! ! ! ! > > > > > > > > Q.]+a a a a a a a a a a a a a a a a ^+> > > > > > ",
|
||||
" 6 > > > > > 6 a a a a a a V { > > > > d > > /+(+C ! ! ! ! ! ! ! ! > > > > > > > > I.%+a a a a a a a a a a a a a a a a a h > > > > > > ",
|
||||
" > > > > > > > a a a a a O { > > > > > > > _+W :+<+Z ! ! ! ! ! ! ! ! > > > > > > > > I.*+a a a a a a a a a a a a a a a a a a a ' > > > > > ",
|
||||
" 6 > > > > > 6 a a a a I / > > > > > d > [+}+s s |+<+@.! ! ! ! ! ! ! ! > > > > > > > > I.1+a a a a a a a a a a a a a a a a a a a a > > > > > > ",
|
||||
" ' > > > > > ' a a a E ^ > > > > > d > j 2+s s s s 3+4+5+! f ! ! ! ! ! ! > > > > > > > > > Q.6+a a a a a a a a a a a a a a a a a a a a a 6 > > > > > ",
|
||||
" > > > > > > > o a 2 p > > > > > d > w 7+s s s s s s 8+9+0+! f ! ! ! ! ! ! > > > > > > > > > Q.T.a a a a a a a a a a a a a a a a a a a a a a { > > > > > > ",
|
||||
" > > > > > > > a 3 ( > > > > > d > w =.s s s s s s s s a+b+f ! f ! ! ! ! ! ! > > > > > > > > Q.=+a a a a a a a a a a a a a a a a a a a a a a a ] > > > > > > ",
|
||||
" ' > > > > > ' 1 p > > > > > d > q x s s s s s s s s s s c+d+f ! f ! ! ! ! ! ! > > > > > > > > I.e+a a a a a a a a a a a a a a a a a a a a a a a a p > > > > > > ",
|
||||
" ' > > > > > 6 p > > > > d > > $.*.s s s s s s s s s s s s o.f+g+! ! ! ! ! ! ! ! > > > > > > > > I.h+a a a a a a a a a a a a a a a a a a a a a a a a a M.> > > > > > ",
|
||||
" > > > > > > > > > > > d > > J %.s s s s s s s s s s s s s s i+j+l ! ! ! ! ! ! ! ! > > > > > > > > Q.]+a a a a a a a a a a a a a a a a a a a a a a a a a a k+> > > > > > ",
|
||||
" > > > > > > > > > > d > > P ..s s s s s s s s s s s s s s s s l+<+C ! ! ! ! ! ! ! ! > > > > > > > > Q.%+a a a a a a a a a a a a a a a a a a a a a a a a a a a m+> > > > > > ",
|
||||
" > > > > > > > > > > > > P W s s s s s s s s s s s s s s s s s s :+<+Z ! ! ! ! ! ! ! ! > > > > > > > > I.n+a a a a a a a a a a a a a a a a a a a a a a a a a a a a $+> > > > > > ",
|
||||
" > > > > > > > > > d > J Q s s s s s s s s s s s s s s s s s s s s |+<+C ! ! ! ! ! ! ! ! > > > > > > > > I.h+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a o+> > > > > > ",
|
||||
" > > > > > > > > d > j K s s s s s s s s s s s s s s s s s s s s s s 3+4+5+! f ! ! ! ! ! ! > > > > > > > > Q.p+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a Y.> > > > > > ",
|
||||
" > > > > > > > d > q r s s s s s s s s s s s s s s s s s s s s s s s s 8+j+0+! f ! ! ! ! ! ! > > > > > > > > > Q.T.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+M.> > > > > > ",
|
||||
" > > > > > > > > w x s s s s s s s s s s s s s s s s s s s s s s s s s s a+b+f ! f ! ! ! ! ! ! > > > > > > > > > Q.T.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+r+> > > > > > > ",
|
||||
" > > > > > > > s+x s s s s s s s s s s s s s s s s s s s s s s s s s s s s o.d+f ! f ! ! ! ! ! ! > > > > > > > > I.p+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t+c > > > > > > > > ",
|
||||
" > > > > > > - u+v+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s o.b+0+! ! ! ! ! ! ! ! > > > > > > > > I.h+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t+w+> > > > > > > - ",
|
||||
" > > > > > > , ! x+|+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s a+j+5+! ! ! ! ! ! ! ! > > > > > > > > Q.n+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+y+> > > > > > > > ",
|
||||
" > > > - z+! ! ! x+A+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s 8+4+C ! ! ! ! ! ! ! ! > > > > > > > > Q.%+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+B+> > > > > > > > ",
|
||||
" > > /.<.! ! ! ! ! C+D+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s 3+<+Z ! ! ! ! ! ! ! ! > > > > > > > > I.]+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a E+q+F+> > > > > > > > ",
|
||||
" * e ! ! ! ! ! ! f G+H+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s |+<+C ! ! ! ! ! ! ! ! > > > > > > > > I.h+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a E+q+I.> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! I+J+K+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s :+<+l ! f ! ! ! ! ! c.k.> > > > > > > > Q.e+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+I.> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! 5+L+M+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s l+j+g+! f ! ! ! c.N+- > > > > > > > Q.=+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+O+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! P+J+Q+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s i+f+f ! f ! c.) = > > > > > > > Q.T.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+R+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! g+S+T+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s o.d+f ! U+) - > > > > > > > I.6+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t+c > > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! V+v+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s c+b+W+~ - > > > > > > > I.1+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t+w+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! x+|+s s s s s s s s s s s s s s s s s s s s s s s s s s s s s X+Y+d > > > > > > > I.*+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+c > > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! x+v+s s s s s s s s s s s s s s s s s s s s s s s s s s s C.Z+`+> > > > > > > Q.%+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+R+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! C+D+s s s s s s s s s s s s s s s s s s s s s s s s s z. @.@> > > > > > > I.]+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a E+q+F+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! f G+Q+s s s s s s s s s s s s s s s s s s s s s s s o.+@@@> > > > > > > I.{+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a E+q+I.> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! g+J+M+s s s s s s s s s s s s s s s s s s s s s r.#@t.> > > > > > > I.~+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+I.> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! 5+L+M+s s s s s s s s s s s s s s s s s s s r.v.X.> d > > > > > Q.=+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+F+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! 5+J+Q+s s s s s s s s s s s s s s s s s r.v.x.> > > > > > > Q.T.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+R+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! g+G+D+s s s s s s s s s s s s s s s o.N.w.> > > > > > > I.,+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t+c > > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! f C+v+s s s s s s s s s s s s s z.K.O.> > > > > > > I.-+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t+w+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! x+|+s s s s s s s s s s s C.H.E.> d > > > > > I.*+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+c > > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! x+v+s s s s s s s s s C.F.G.> > > > > > > Q.%+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+R+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! V+T+s s s s s s s z.D.G.> > > > > > > I.#+a a a a a a a a a a a a a a a a a a a a a a a a a a a a a E+q+O+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! ! S+Q+s s s s s o.A.E.> > > > > > > I.++a a a a a a a a a a a a a a a a a a a a a a a a a a a a a E+q+I.> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! g+J+M+s s s r.s.t.> > > > > > > I.P.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+I.> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! P+L+K+s r.v.w.> > > > > > > Q.R.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+F+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! 5+J+$@v.x.> > > > > > > Q.T.a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a q+B+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! ! ! %@&@*@> > d > > > > S.=@a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a t+y+> > > > > > > > ",
|
||||
" ! ! ! ! ! ! c.~ > > > d > > > > y+-@t+^.^. .q+q+t+|.^.|.t+q+q+ .^.^.^.q+q+^.^.^.|.q+q+V |.^. .b ;@( > > > > > > > > ",
|
||||
" ! ! ! ! c._ i.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ",
|
||||
" ! ! c._ z+= > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ",
|
||||
" ! >@N+- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ",
|
||||
" >@z+> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ",
|
||||
" @+; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > = /. ",
|
||||
" k.> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > * + $ ",
|
||||
" ,@8 8 ,@ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="c">
|
||||
<ext>.boo</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
</pass1>
|
||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
||||
<rule name="comment ##">
|
||||
<color>SYNTAX_ERROR</color>
|
||||
<start>##</start>
|
||||
<end>\n</end>
|
||||
</rule>
|
||||
<rule name="comment #">
|
||||
<color>comment</color>
|
||||
<start>#</start>
|
||||
<end>\n</end>
|
||||
</rule>
|
||||
</pass2>
|
||||
</EdnLang>
|
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<EdnLang version="0.1" lang="Assembleur">
|
||||
<ext>.xml</ext>
|
||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||
<rule name="Comment">
|
||||
<color>comment</color>
|
||||
<start><!\-\-</start>
|
||||
<end>\-\-></end>
|
||||
</rule>
|
||||
</pass1>
|
||||
<pass2>
|
||||
|
||||
</pass2>
|
||||
</EdnLang>
|
||||
|
30
jni/Android.mk
Normal file
30
jni/Android.mk
Normal file
@@ -0,0 +1,30 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
# load the common sources file of the platform
|
||||
include $(LOCAL_PATH)/file.mk
|
||||
|
||||
LOCAL_MODULE := ednpackage
|
||||
LOCAL_STATIC_LIBRARIES := ewol etk tinyxml libzip libpng
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(addprefix $(LOCAL_PATH)/, $(sort $(dir $(FILE_LIST))))
|
||||
|
||||
LOCAL_SRC_FILES := ewolAndroidAbstraction.cpp \
|
||||
$(FILE_LIST)
|
||||
|
||||
LOCAL_LDLIBS := -llog -landroid
|
||||
|
||||
LOCAL_CFLAGS := -D__PLATFORM__Android \
|
||||
-D__MODE__Touch \
|
||||
-DEWOL_USE_FREE_TYPE \
|
||||
-DETK_DEBUG_LEVEL=3 \
|
||||
-DEDN_DEBUG_LEVEL=3 \
|
||||
-DDATA_IN_APK
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
NDK_MODULE_PATH := $(LOCAL_PATH)/../../
|
||||
|
||||
|
||||
$(call import-module,ewol/Sources)
|
26
jni/Linux.mk
Normal file
26
jni/Linux.mk
Normal file
@@ -0,0 +1,26 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
# load the common sources file of the platform
|
||||
include $(LOCAL_PATH)/file.mk
|
||||
|
||||
LOCAL_MODULE := ednn
|
||||
LOCAL_STATIC_LIBRARIES := ewol etk tinyxml libzip libpng libfreetype
|
||||
|
||||
LOCAL_C_INCLUDES := -I$(LOCAL_PATH) $(addprefix -I$(LOCAL_PATH)/, $(sort $(dir $(FILE_LIST))))
|
||||
|
||||
LOCAL_SRC_FILES := $(FILE_LIST)
|
||||
|
||||
|
||||
LOCAL_LDLIBS :=
|
||||
|
||||
LOCAL_CFLAGS := -DEWOL_USE_FREE_TYPE \
|
||||
-DEDN_DEBUG_LEVEL=3
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
NDK_MODULE_PATH := $(LOCAL_PATH)/../../
|
||||
|
||||
|
||||
$(call import-module,ewol/Sources)
|
@@ -23,10 +23,11 @@
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include "tools_debug.h"
|
||||
#include "tools_globals.h"
|
||||
#include "Buffer.h"
|
||||
#include "BufferManager.h"
|
||||
#include <tools_debug.h>
|
||||
#include <tools_globals.h>
|
||||
#include <Buffer.h>
|
||||
#include <BufferManager.h>
|
||||
#include <ewol/WidgetMessageMultiCast.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "Buffer"
|
||||
@@ -41,10 +42,13 @@
|
||||
*/
|
||||
Buffer::Buffer()
|
||||
{
|
||||
static int32_t fileBasicID = 0;
|
||||
m_fileModify = true;
|
||||
m_haveName = false;
|
||||
Edn::String mString = "No-Name";
|
||||
m_fileName.SetCompleateName(mString);
|
||||
etk::UString mString = "Untitle - ";
|
||||
mString += fileBasicID++;
|
||||
SetFileName(mString);
|
||||
m_haveName = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -55,11 +59,10 @@ Buffer::Buffer()
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Buffer::Buffer(Edn::String &newFileName)
|
||||
Buffer::Buffer(etk::File &newName)
|
||||
{
|
||||
m_fileModify = false;
|
||||
m_haveName = true;
|
||||
m_fileName.SetCompleateName(newFileName);
|
||||
SetFileName(newName);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -91,89 +94,11 @@ void Buffer::SetModify(bool status)
|
||||
{
|
||||
if (status != m_fileModify) {
|
||||
m_fileModify = status;
|
||||
GeneralSendMessage(EDN_MSG__BUFFER_CHANGE_MODIFY);
|
||||
// TODO : Remove from here
|
||||
ewol::widgetMessageMultiCast::Send(-1, ednMsgBufferState, "Modify");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Edn::File Buffer::GetFileName(void)
|
||||
{
|
||||
return m_fileName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Edn::String Buffer::GetName(void)
|
||||
{
|
||||
// nothing to do
|
||||
return m_fileName.GetCompleateName();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Edn::String Buffer::GetShortName(void)
|
||||
{
|
||||
|
||||
// nothing to do
|
||||
return m_fileName.GetShortFilename();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
Edn::String Buffer::GetFolder(void)
|
||||
{
|
||||
|
||||
// nothing to do
|
||||
return m_fileName.GetFolder();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
bool Buffer::HaveName(void)
|
||||
{
|
||||
// nothing to do
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Buffer::SetName(Edn::String &newName)
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
@@ -215,7 +140,6 @@ void Buffer::SetLineDisplay(uint32_t lineNumber)
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
@@ -224,7 +148,11 @@ void Buffer::SetLineDisplay(uint32_t lineNumber)
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
int32_t Buffer::Display(DrawerManager &drawer)
|
||||
int32_t Buffer::Display(ewol::OObject2DTextColored* OOTextNormal,
|
||||
ewol::OObject2DTextColored* OOTextBold,
|
||||
ewol::OObject2DTextColored* OOTextItalic,
|
||||
ewol::OObject2DTextColored* OOTextBoldItalic, ewol::OObject2DColored* OOColored,
|
||||
int32_t offsetX, int32_t offsetY, int32_t sizeX, int32_t sizeY)
|
||||
{
|
||||
return ERR_NONE;
|
||||
}
|
||||
@@ -329,7 +257,7 @@ void Buffer::ForceReDraw(bool allElement)
|
||||
|
||||
|
||||
|
||||
void Buffer::cursorMove(int32_t gtkKey)
|
||||
void Buffer::cursorMove(ewol::eventKbMoveType_te moveTypeEvent)
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
@@ -342,24 +270,25 @@ void Buffer::cursorMove(int32_t gtkKey)
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void Buffer::AddChar(char * UTF8data)
|
||||
void Buffer::AddChar(uniChar_t unicodeData)
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
void Buffer::Search(Edn::String &data, bool back, bool caseSensitive, bool wrap, bool regExp)
|
||||
void Buffer::Search(etk::UString &data, bool back, bool caseSensitive, bool wrap, bool regExp)
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
void Buffer::Replace(Edn::String &data)
|
||||
void Buffer::Replace(etk::UString &data)
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
int32_t Buffer::FindLine(Edn::String &data)
|
||||
int32_t Buffer::FindLine(etk::UString &data)
|
||||
{
|
||||
// nothing to do
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Buffer::JumpAtLine(int32_t newLine)
|
||||
@@ -367,6 +296,21 @@ void Buffer::JumpAtLine(int32_t newLine)
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get the current line (to know where to jump)
|
||||
*
|
||||
* @param ---
|
||||
*
|
||||
* @return Return the current line number
|
||||
*
|
||||
*/
|
||||
int32_t Buffer::GetCurrentLine(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief request a copy of the selection in the named clipBoard ID
|
||||
*
|
@@ -26,10 +26,11 @@
|
||||
#ifndef __BUFFER_H__
|
||||
#define __BUFFER_H__
|
||||
|
||||
#include <string>
|
||||
#include "Display.h"
|
||||
#include "charset.h"
|
||||
#include "Edn.h"
|
||||
#include <etk/UString.h>
|
||||
#include <etk/File.h>
|
||||
#include <Display.h>
|
||||
#include <etk/unicode.h>
|
||||
#include <ewol/ewol.h>
|
||||
|
||||
|
||||
typedef struct{
|
||||
@@ -45,26 +46,50 @@ typedef struct{
|
||||
class Buffer {
|
||||
public:
|
||||
Buffer(void);
|
||||
Buffer(Edn::String &filename);
|
||||
Buffer(etk::File &newName);
|
||||
virtual ~Buffer(void);
|
||||
Edn::File GetFileName(void);
|
||||
virtual Edn::String GetName(void);
|
||||
virtual Edn::String GetShortName(void);
|
||||
virtual Edn::String GetFolder(void);
|
||||
virtual void SetName(Edn::String &newName);
|
||||
|
||||
etk::File GetFileName(void)
|
||||
{
|
||||
return m_fileName;
|
||||
};
|
||||
|
||||
void SetFileName(etk::File &newName)
|
||||
{
|
||||
m_fileName = newName;
|
||||
m_haveName = true;
|
||||
NameChange();
|
||||
};
|
||||
|
||||
void SetFileName(etk::UString &newName)
|
||||
{
|
||||
m_fileName.SetCompleateName(newName, etk::FILE_TYPE_DIRECT);
|
||||
m_haveName = true;
|
||||
NameChange();
|
||||
};
|
||||
|
||||
bool HaveName(void)
|
||||
{
|
||||
return m_haveName;
|
||||
}
|
||||
|
||||
virtual void Save(void);
|
||||
virtual bool HaveName(void);
|
||||
bool IsModify(void);
|
||||
protected:
|
||||
void SetModify(bool status);
|
||||
virtual void NameChange(void) { /*EDN_DEBUG("check name change ==> no HL change possible");*/};
|
||||
public:
|
||||
virtual void GetInfo(infoStatBuffer_ts &infoToUpdate);
|
||||
virtual void SetLineDisplay(uint32_t lineNumber);
|
||||
|
||||
virtual int32_t Display(DrawerManager &drawer);
|
||||
virtual int32_t Display(ewol::OObject2DTextColored* OOTextNormal,
|
||||
ewol::OObject2DTextColored* OOTextBold,
|
||||
ewol::OObject2DTextColored* OOTextItalic,
|
||||
ewol::OObject2DTextColored* OOTextBoldItalic,
|
||||
ewol::OObject2DColored* OOColored, int32_t offsetX, int32_t offsetY, int32_t sizeX, int32_t sizeY);
|
||||
virtual void ForceReDraw(bool allElement);
|
||||
virtual void AddChar(char * UTF8data);
|
||||
virtual void cursorMove(int32_t gtkKey);
|
||||
virtual void AddChar(uniChar_t unicodeData);
|
||||
virtual void cursorMove(ewol::eventKbMoveType_te moveTypeEvent);
|
||||
virtual void MouseSelectFromCursorTo(int32_t width, int32_t height);
|
||||
virtual void MouseEvent(int32_t width, int32_t height);
|
||||
virtual void MouseEventDouble(void);
|
||||
@@ -76,21 +101,25 @@ class Buffer {
|
||||
virtual void SelectNone(void);
|
||||
virtual void Undo(void);
|
||||
virtual void Redo(void);
|
||||
virtual void SetCharset(charset_te newCharset) {};
|
||||
virtual void SetCharset(unicode::charset_te newCharset) {};
|
||||
|
||||
//virtual void SelectAll(void);
|
||||
virtual void Copy(int8_t clipboardID);
|
||||
virtual void Cut(int8_t clipboardID);
|
||||
virtual void Paste(int8_t clipboardID);
|
||||
virtual void Search(Edn::String &data, bool back, bool caseSensitive, bool wrap, bool regExp);
|
||||
virtual void Replace(Edn::String &data);
|
||||
virtual int32_t FindLine(Edn::String &data);
|
||||
virtual void Search(etk::UString &data, bool back, bool caseSensitive, bool wrap, bool regExp);
|
||||
virtual void Replace(etk::UString &data);
|
||||
virtual int32_t FindLine(etk::UString &data);
|
||||
virtual void JumpAtLine(int32_t newLine);
|
||||
virtual int32_t GetCurrentLine(void);
|
||||
|
||||
virtual int32_t GetNumberOfLine(void) { return 1; };
|
||||
|
||||
protected:
|
||||
bool m_fileModify;
|
||||
Edn::File m_fileName;
|
||||
bool m_haveName; //!< to know if the file have a name or NOT
|
||||
bool m_fileModify; //!<
|
||||
// naming
|
||||
etk::File m_fileName; //!< filename of the curent buffer
|
||||
bool m_haveName; //!< to know if the file have a name or NOT
|
||||
};
|
||||
|
||||
|
126
jni/edn/Buffer/BufferEmpty.cpp
Normal file
126
jni/edn/Buffer/BufferEmpty.cpp
Normal file
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file BufferEmpty.cpp
|
||||
* @brief Editeur De N'ours : Text Buffer (edit For No buffer Display)
|
||||
* @author Edouard DUPIN
|
||||
* @date 19/01/2011
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#include <tools_debug.h>
|
||||
#include <tools_globals.h>
|
||||
#include <BufferEmpty.h>
|
||||
#include <ColorizeManager.h>
|
||||
#include <MainWindows.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "BufferEmpty"
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferEmpty::BufferEmpty()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferEmpty::~BufferEmpty(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
int32_t BufferEmpty::Display(ewol::OObject2DTextColored* OOTextNormal,
|
||||
ewol::OObject2DTextColored* OOTextBold,
|
||||
ewol::OObject2DTextColored* OOTextItalic,
|
||||
ewol::OObject2DTextColored* OOTextBoldItalic,
|
||||
ewol::OObject2DColored* OOColored, int32_t offsetX, int32_t offsetY, int32_t sizeX, int32_t sizeY)
|
||||
{
|
||||
ColorizeManager * myColorManager = ColorizeManager::getInstance();
|
||||
// Get color :
|
||||
Colorize *myColor = NULL;
|
||||
//drawer.Flush();
|
||||
|
||||
|
||||
if (NULL == OOTextNormal) {
|
||||
EDN_ERROR("Input VALUE is NULL");
|
||||
return ERR_FAIL;
|
||||
}
|
||||
if (NULL == OOColored) {
|
||||
EDN_ERROR("Input VALUE is NULL");
|
||||
return ERR_FAIL;
|
||||
}
|
||||
int32_t fontId = OOTextNormal->GetFontID();
|
||||
int32_t letterHeight = ewol::GetHeight(fontId);
|
||||
|
||||
coord2D_ts textPos;
|
||||
textPos.x = 20;
|
||||
textPos.y = 20;
|
||||
clipping_ts drawClipping;
|
||||
drawClipping.x = 0;
|
||||
drawClipping.y = 0;
|
||||
drawClipping.w = sizeX;
|
||||
drawClipping.h = sizeY;
|
||||
|
||||
myColor = myColorManager->Get("normal");
|
||||
OOTextNormal->SetColor(myColor->GetFG());
|
||||
etk::UString tmpDisplay = "edn - Editeur De N'ours";
|
||||
OOTextBold->Text(textPos, drawClipping, tmpDisplay);
|
||||
|
||||
myColor = myColorManager->Get("commentDoxygen");
|
||||
OOTextNormal->SetColor(myColor->GetFG());
|
||||
textPos.y = (int32_t)(textPos.y + letterHeight*1.30);
|
||||
tmpDisplay = "No Buffer Availlable to display";
|
||||
OOTextNormal->Text(textPos, drawClipping, tmpDisplay);
|
||||
|
||||
|
||||
color_ts bgColor; //!< Text color
|
||||
bgColor.red = 1.0;
|
||||
bgColor.green = 1.0;
|
||||
bgColor.blue = 1.0;
|
||||
bgColor.alpha = 1.0;
|
||||
OOColored->SetColor(bgColor);
|
||||
OOColored->Rectangle( 0, 0, sizeX, sizeY);
|
||||
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -26,13 +26,17 @@
|
||||
#ifndef __BUFFER_EMPTY_H__
|
||||
#define __BUFFER_EMPTY_H__
|
||||
|
||||
#include "Buffer.h"
|
||||
#include <Buffer.h>
|
||||
|
||||
class BufferEmpty : public Buffer {
|
||||
public:
|
||||
BufferEmpty(void);
|
||||
virtual ~BufferEmpty(void);
|
||||
virtual int32_t Display(DrawerManager &drawer);
|
||||
int32_t Display(ewol::OObject2DTextColored* OOTextNormal,
|
||||
ewol::OObject2DTextColored* OOTextBold,
|
||||
ewol::OObject2DTextColored* OOTextItalic,
|
||||
ewol::OObject2DTextColored* OOTextBoldItalic,
|
||||
ewol::OObject2DColored* OOColored, int32_t offsetX, int32_t offsetY, int32_t sizeX, int32_t sizeY);
|
||||
|
||||
};
|
||||
|
445
jni/edn/Buffer/BufferManager.cpp
Normal file
445
jni/edn/Buffer/BufferManager.cpp
Normal file
@@ -0,0 +1,445 @@
|
||||
/**
|
||||
*******************************************************************************
|
||||
* @file BufferManager.cpp
|
||||
* @brief Editeur De N'ours : Text Buffer manager (sources)
|
||||
* @author Edouard DUPIN
|
||||
* @date 08/12/2010
|
||||
* @par Project
|
||||
* Edn
|
||||
*
|
||||
* @par Copyright
|
||||
* Copyright 2010 Edouard DUPIN, all right reserved
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY.
|
||||
*
|
||||
* Licence summary :
|
||||
* You can modify and redistribute the sources code and binaries.
|
||||
* You can send me the bug-fix
|
||||
* You can not earn money with this Software (if the source extract from Edn
|
||||
* represent less than 50% of original Sources)
|
||||
* Term of the licence in in the file licence.txt.
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#include <tools_debug.h>
|
||||
#include <tools_globals.h>
|
||||
#include <BufferManager.h>
|
||||
#include <ewol/WidgetMessageMultiCast.h>
|
||||
|
||||
#undef __class__
|
||||
#define __class__ "BufferManager"
|
||||
|
||||
// Constructeur
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferManager::BufferManager(void)
|
||||
{
|
||||
// nothing to do ...
|
||||
BufferNotExiste = new BufferEmpty();
|
||||
m_idSelected = -1;
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgGuiNew);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgOpenFile);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgGuiClose);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgGuiSave);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgCodeViewSelectedId);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferId);
|
||||
|
||||
/*
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerNewFile);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerSaveAll);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerCloseAll);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerClose);
|
||||
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerSave);
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
BufferManager::~BufferManager(void)
|
||||
{
|
||||
//clean All Buffer
|
||||
EDN_INFO("~BufferManager::RemoveAll();");
|
||||
RemoveAll();
|
||||
// clear The list of Buffer
|
||||
EDN_INFO("~BufferManager::listBuffer.Clear();");
|
||||
listBuffer.Clear();
|
||||
EDN_INFO("~BufferManager::delete(BufferNotExiste);");
|
||||
delete(BufferNotExiste);
|
||||
}
|
||||
|
||||
|
||||
bool BufferManager::OnEventAreaExternal(int32_t widgetID, const char * generateEventId, const char * data, etkFloat_t x, etkFloat_t y)
|
||||
{
|
||||
if (generateEventId == ednMsgBufferId) {
|
||||
// select a new buffer ID :
|
||||
if (NULL == data) {
|
||||
EDN_ERROR("Request select buffer ID = NULL ????");
|
||||
} else {
|
||||
int32_t newID = -1;
|
||||
sscanf(data, "%d", &newID);
|
||||
if(true == Exist(newID)) {
|
||||
m_idSelected = newID;
|
||||
} else {
|
||||
m_idSelected = -1;
|
||||
EDN_ERROR("Request a non existant ID : " << newID << " reset to -1...");
|
||||
}
|
||||
}
|
||||
} else if (generateEventId == ednMsgGuiNew) {
|
||||
int32_t newOne = Create();
|
||||
if (-1 != newOne) {
|
||||
m_idSelected = newOne;
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferId, m_idSelected);
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferListChange);
|
||||
}
|
||||
} else if (generateEventId == ednMsgOpenFile) {
|
||||
if (NULL != data) {
|
||||
etk::File myFile(data, etk::FILE_TYPE_DIRECT);
|
||||
int32_t newOne = Open(myFile);
|
||||
if (-1 != newOne) {
|
||||
m_idSelected = newOne;
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferId, m_idSelected);
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferListChange);
|
||||
}
|
||||
}
|
||||
} else if (generateEventId == ednMsgGuiSave) {
|
||||
if (NULL == data) {
|
||||
EDN_ERROR("Null data for close file ... ");
|
||||
} else {
|
||||
if (0 == strcmp(data , "current")) {
|
||||
// Check buffer existence
|
||||
if(true == Exist(m_idSelected)) {
|
||||
// If no name ==> request a Gui display ...
|
||||
if (Get(m_idSelected)->HaveName() == false) {
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgGuiSaveAs, "current");
|
||||
} else {
|
||||
Get(m_idSelected)->Save();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int32_t newId;
|
||||
sscanf(data, "%d", &newId);
|
||||
if (false == Exist(newId)) {
|
||||
EDN_ERROR("Request a save As with a non existant ID=" << newId);
|
||||
} else {
|
||||
// If no name ==> request a Gui display ...
|
||||
if (Get(newId)->HaveName() == false) {
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgGuiSaveAs, newId);
|
||||
} else {
|
||||
Get(m_idSelected)->Save();
|
||||
}
|
||||
}
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferState, "saved");
|
||||
}
|
||||
}
|
||||
} else if (generateEventId == ednMsgGuiClose) {
|
||||
if (NULL == data) {
|
||||
EDN_ERROR("Null data for close file ... ");
|
||||
} else {
|
||||
if (0 == strcmp(data , "All")) {
|
||||
|
||||
} else {
|
||||
int32_t closeID = -1;
|
||||
if (0 == strcmp(data , "current")) {
|
||||
closeID = m_idSelected;
|
||||
EDN_DEBUG("Close specific buffer ID" << closeID);
|
||||
} else {
|
||||
// close specific buffer ...
|
||||
sscanf(data, "%d", &closeID);
|
||||
EDN_DEBUG("Close specific buffer ID="<< closeID);
|
||||
}
|
||||
if(true == Exist(closeID)) {
|
||||
// Get the new display buffer
|
||||
if (m_idSelected == closeID) {
|
||||
// Try previous buffer
|
||||
int32_t destBuffer = -1;
|
||||
for(int32_t ii=closeID-1; ii >= 0; ii--) {
|
||||
if (true == Exist(ii) ) {
|
||||
destBuffer = ii;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// try next buffer
|
||||
if (-1 == destBuffer) {
|
||||
for(int32_t ii=closeID+1; ii < listBuffer.Size(); ii++) {
|
||||
if (true == Exist(ii) ) {
|
||||
destBuffer = ii;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// set it to the currect display
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferId, destBuffer);
|
||||
m_idSelected = destBuffer;
|
||||
}
|
||||
// Remove requested buffer
|
||||
Remove(closeID);
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferListChange);
|
||||
} else {
|
||||
EDN_ERROR("Request Close of a non existant ID : " << closeID);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (generateEventId == ednMsgCodeViewSelectedId) {
|
||||
//Change the selected buffer
|
||||
if (NULL == data) {
|
||||
EDN_ERROR("Null data for changing buffer ID file ... ");
|
||||
} else {
|
||||
int32_t newId;
|
||||
sscanf(data, "%d", &newId);
|
||||
if (true == Exist(newId)) {
|
||||
m_idSelected = newId;
|
||||
} else {
|
||||
EDN_ERROR("code biew request the selection of an non -existant buffer ==> reset to -1");
|
||||
m_idSelected = -1;
|
||||
}
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferId, m_idSelected);
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferListChange);
|
||||
}
|
||||
}
|
||||
/*
|
||||
switch (id)
|
||||
{
|
||||
// Check buffer existence
|
||||
if(true == Exist(dataID)) {
|
||||
// If no name ==> request a Gui display ...
|
||||
if (Get(dataID)->HaveName() == false) {
|
||||
SendMessage(EDN_MSG__GUI_SHOW_SAVE_AS, dataID);
|
||||
} else {
|
||||
Get(dataID)->Save();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Remove all buffer opened
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
void BufferManager::RemoveAll(void)
|
||||
{
|
||||
int32_t i;
|
||||
for (i=0; i<listBuffer.Size(); i++) {
|
||||
Remove(i);
|
||||
}
|
||||
ewol::widgetMessageMultiCast::Send(-1, ednMsgGuiClose, "All");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Create a new buffer with no name and empty
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return The ID of the curent buffer where the file is loaded
|
||||
*
|
||||
*/
|
||||
int32_t BufferManager::Create(void)
|
||||
{
|
||||
// allocate a new Buffer
|
||||
Buffer *myBuffer = new BufferText();
|
||||
// Add at the list of element
|
||||
listBuffer.PushBack(myBuffer);
|
||||
int32_t basicID = listBuffer.Size() - 1;
|
||||
return basicID;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief open a file with the name set in parameters
|
||||
*
|
||||
* @param[in] filename curent filename
|
||||
*
|
||||
* @return The ID of the curent buffer where the file is loaded
|
||||
*
|
||||
* @todo : check if this file is not curently open and return the old ID
|
||||
*
|
||||
*/
|
||||
int32_t BufferManager::Open(etk::File &myFile)
|
||||
{
|
||||
// TODO : Check here if the file is already open ==> and display it if needed
|
||||
// allocate a new Buffer
|
||||
Buffer *myBuffer = new BufferText(myFile);
|
||||
// Add at the list of element
|
||||
listBuffer.PushBack(myBuffer);
|
||||
return listBuffer.Size() - 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Buffer * BufferManager::Get(int32_t BufferID)
|
||||
{
|
||||
// possible special case : -1;
|
||||
if (-1 >= BufferID) {
|
||||
return BufferNotExiste;
|
||||
}
|
||||
// check if the Buffer existed
|
||||
if (BufferID < listBuffer.Size()) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[BufferID]) {
|
||||
return listBuffer[BufferID];
|
||||
} else {
|
||||
EDN_ERROR("non existing Buffer " << BufferID);
|
||||
}
|
||||
} else {
|
||||
EDN_ERROR("call an non existing Buffer number too hight : " << BufferID << " > " << listBuffer.Size());
|
||||
}
|
||||
return BufferNotExiste;
|
||||
}
|
||||
|
||||
|
||||
bool BufferManager::Exist(int32_t BufferID)
|
||||
{
|
||||
if (-1 >= BufferID) {
|
||||
return false;
|
||||
}
|
||||
// check if the Buffer existed
|
||||
if (BufferID < listBuffer.Size()) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[BufferID]) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool BufferManager::Exist(etk::File &myFile )
|
||||
{
|
||||
if (-1 == GetId(myFile)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int32_t BufferManager::GetId(etk::File &myFile)
|
||||
{
|
||||
int32_t iii;
|
||||
// check if the Buffer existed
|
||||
for (iii=0; iii < listBuffer.Size(); iii++) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[iii]) {
|
||||
if ( listBuffer[iii]->GetFileName() == myFile) {
|
||||
return iii;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
// return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5
|
||||
uint32_t BufferManager::Size(void)
|
||||
{
|
||||
return listBuffer.Size();
|
||||
}
|
||||
|
||||
// nb of opens file Now ...
|
||||
uint32_t BufferManager::SizeOpen(void)
|
||||
{
|
||||
uint32_t jjj = 0;
|
||||
// check if the Buffer existed
|
||||
for (int32_t iii=0; iii<listBuffer.Size(); iii++) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[iii]) {
|
||||
jjj++;
|
||||
}
|
||||
}
|
||||
return jjj;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
bool BufferManager::Remove(int32_t BufferID)
|
||||
{
|
||||
if (-1 >= BufferID) {
|
||||
return false;
|
||||
}
|
||||
// check if the Buffer existed
|
||||
if (BufferID < listBuffer.Size()) {
|
||||
// check if the buffer already existed
|
||||
if (NULL != listBuffer[BufferID]) {
|
||||
// TODO : Check if it saved...
|
||||
/*
|
||||
if (false == IsSaved(BufferID) ) {
|
||||
EDN_INFO("Buffer " << BufferID << " : Not Saved", BufferID);
|
||||
}
|
||||
*/
|
||||
// Delete the Buffer
|
||||
delete( listBuffer[BufferID] );
|
||||
listBuffer[BufferID] = NULL;
|
||||
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferListChange);
|
||||
return true;
|
||||
} else {
|
||||
EDN_INFO("non existing Buffer " << BufferID);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
EDN_INFO("call an non existing Buffer number too hight : " << BufferID << " > " << listBuffer.Size());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief to get the element 14 in the buffer
|
||||
*
|
||||
* @param[in,out] ---
|
||||
*
|
||||
* @return ---
|
||||
*
|
||||
*/
|
||||
int32_t BufferManager::WitchBuffer(int32_t iEmeElement)
|
||||
{
|
||||
int32_t i;
|
||||
for (i=0; i<listBuffer.Size(); i++) {
|
||||
if (NULL != listBuffer[i]) {
|
||||
iEmeElement--;
|
||||
// find the element :
|
||||
if (0 == iEmeElement) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -22,21 +22,20 @@
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __BUFFER_MANAGER_H__
|
||||
#define __BUFFER_MANAGER_H__
|
||||
|
||||
#include "Buffer.h"
|
||||
#include "BufferText.h"
|
||||
#include "BufferEmpty.h"
|
||||
#include "Singleton.h"
|
||||
#include "MsgBroadcast.h"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <Buffer.h>
|
||||
#include <BufferText.h>
|
||||
#include <BufferEmpty.h>
|
||||
#include <etk/Singleton.h>
|
||||
#include <MsgBroadcast.h>
|
||||
#include <ewol/Widget.h>
|
||||
|
||||
class BufferManager: public Singleton<BufferManager>, public MsgBroadcast
|
||||
class BufferManager: public etk::Singleton<BufferManager>, public ewol::Widget
|
||||
{
|
||||
friend class Singleton<BufferManager>;
|
||||
friend class etk::Singleton<BufferManager>;
|
||||
// specific for sigleton system...
|
||||
private:
|
||||
// Constructeur
|
||||
@@ -44,32 +43,34 @@ class BufferManager: public Singleton<BufferManager>, public MsgBroadcast
|
||||
~BufferManager(void);
|
||||
|
||||
public:
|
||||
void OnMessage(int32_t id, int32_t dataID);
|
||||
|
||||
bool OnEventAreaExternal(int32_t widgetID, const char * generateEventId, const char * eventExternId, etkFloat_t x, etkFloat_t y);
|
||||
private:
|
||||
// return the ID of the buffer allocated
|
||||
// create a buffer with no element
|
||||
int32_t Create(void);
|
||||
int32_t Create(void);
|
||||
// open curent filename
|
||||
int32_t Open(Edn::String &filename);
|
||||
int32_t Open(etk::File &myFile);
|
||||
bool Remove(int32_t BufferID);
|
||||
public:
|
||||
int32_t GetSelected(void) { return m_idSelected;};
|
||||
void SetSelected(int32_t id) {m_idSelected = id;};
|
||||
Buffer * Get(int32_t BufferID);
|
||||
bool Exist(int32_t BufferID);
|
||||
bool Exist(Edn::String &filename);
|
||||
int32_t GetId(Edn::String &filename);
|
||||
//void SetSelected(int32_t id) {m_idSelected = id;};
|
||||
Buffer * Get(int32_t BufferID);
|
||||
bool Exist(int32_t BufferID);
|
||||
bool Exist(etk::File &myFile);
|
||||
int32_t GetId(etk::File &myFile);
|
||||
// return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5
|
||||
uint32_t Size(void);
|
||||
int32_t WitchBuffer(int32_t iEmeElement);
|
||||
uint32_t Size(void);
|
||||
uint32_t SizeOpen(void);
|
||||
int32_t WitchBuffer(int32_t iEmeElement);
|
||||
|
||||
bool Remove(int32_t BufferID);
|
||||
|
||||
private:
|
||||
|
||||
std::vector<Buffer*> listBuffer; //!< element List of the char Elements
|
||||
etk::VectorType<Buffer*> listBuffer; //!< element List of the char Elements
|
||||
|
||||
void RemoveAll(void); //!< remove all buffer
|
||||
int32_t m_idSelected;
|
||||
Buffer * BufferNotExiste; //!< When an error arrive in get buffer we return the Error buffer (not writable)
|
||||
void RemoveAll(void); //!< remove all buffer
|
||||
int32_t m_idSelected;
|
||||
Buffer * BufferNotExiste; //!< When an error arrive in get buffer we return the Error buffer (not writable)
|
||||
};
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user