Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
f5911d5463 | |||
1f8d3cf045 | |||
54cc9da39f | |||
7562c45aa7 | |||
d96a133c6a | |||
5a47446a09 | |||
a196c615bf | |||
2c6f280c58 | |||
722dafaaef |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -26,6 +26,7 @@ doxygen/ALL/
|
|||||||
*.o
|
*.o
|
||||||
*.so
|
*.so
|
||||||
*.pyc
|
*.pyc
|
||||||
|
tags
|
||||||
edn
|
edn
|
||||||
out
|
out
|
||||||
edn_debug
|
edn_debug
|
||||||
|
3
Makefile
3
Makefile
@@ -175,8 +175,7 @@ CXXFILES+= CustumWidget/BufferView/BufferView.cpp \
|
|||||||
GuiTools/MainWindows/StatusBar.cpp \
|
GuiTools/MainWindows/StatusBar.cpp \
|
||||||
GuiTools/MainWindows/MenuBar.cpp \
|
GuiTools/MainWindows/MenuBar.cpp \
|
||||||
GuiTools/MainWindows/ToolBar.cpp \
|
GuiTools/MainWindows/ToolBar.cpp \
|
||||||
GuiTools/Search/Search.cpp \
|
GuiTools/Search/Search.cpp \
|
||||||
GuiTools/Search/SearchData.cpp \
|
|
||||||
GuiTools/Search/SearchData.cpp
|
GuiTools/Search/SearchData.cpp
|
||||||
|
|
||||||
# Basic Interface :
|
# Basic Interface :
|
||||||
|
@@ -282,6 +282,7 @@ void Buffer::Replace(Edn::String &data)
|
|||||||
int32_t Buffer::FindLine(Edn::String &data)
|
int32_t Buffer::FindLine(Edn::String &data)
|
||||||
{
|
{
|
||||||
// nothing to do
|
// nothing to do
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Buffer::JumpAtLine(int32_t newLine)
|
void Buffer::JumpAtLine(int32_t newLine)
|
||||||
|
@@ -26,8 +26,6 @@
|
|||||||
#ifndef __BUFFER_TEXT_H__
|
#ifndef __BUFFER_TEXT_H__
|
||||||
#define __BUFFER_TEXT_H__
|
#define __BUFFER_TEXT_H__
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#include "ColorizeManager.h"
|
#include "ColorizeManager.h"
|
||||||
#include "Buffer.h"
|
#include "Buffer.h"
|
||||||
#include "EdnBuf.h"
|
#include "EdnBuf.h"
|
||||||
|
@@ -37,8 +37,17 @@ ColorizeManager::ColorizeManager(void)
|
|||||||
ColorizeManager::~ColorizeManager(void)
|
ColorizeManager::~ColorizeManager(void)
|
||||||
{
|
{
|
||||||
delete(errorColor);
|
delete(errorColor);
|
||||||
// TODO : delete all color previously
|
|
||||||
listMyColor.clear();
|
int32_t i;
|
||||||
|
// clean all Element
|
||||||
|
for (i=0; i< listMyColor.Size(); i++) {
|
||||||
|
if (NULL != listMyColor[i]) {
|
||||||
|
delete(listMyColor[i]);
|
||||||
|
listMyColor[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// clear the compleate list
|
||||||
|
listMyColor.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -181,7 +190,7 @@ void ColorizeManager::LoadFile(const char * xmlFilename)
|
|||||||
myNewColor->SetItalic(true);
|
myNewColor->SetItalic(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
listMyColor.push_back(myNewColor);
|
listMyColor.PushBack(myNewColor);
|
||||||
} else {
|
} else {
|
||||||
EDN_ERROR(PFX"(l "<<pNode->Row()<<") node not suported : \""<<pNode->Value()<<"\" must be [color]");
|
EDN_ERROR(PFX"(l "<<pNode->Row()<<") node not suported : \""<<pNode->Value()<<"\" must be [color]");
|
||||||
}
|
}
|
||||||
@@ -198,8 +207,8 @@ void ColorizeManager::LoadFile(const char * xmlFilename)
|
|||||||
|
|
||||||
Colorize *ColorizeManager::Get(const char *colorName)
|
Colorize *ColorizeManager::Get(const char *colorName)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
for (i=0; i<listMyColor.size(); i++) {
|
for (i=0; i<listMyColor.Size(); i++) {
|
||||||
Edn::String elementName = listMyColor[i]->GetName();
|
Edn::String elementName = listMyColor[i]->GetName();
|
||||||
if (elementName == colorName) {
|
if (elementName == colorName) {
|
||||||
return listMyColor[i];
|
return listMyColor[i];
|
||||||
@@ -227,8 +236,8 @@ color_ts & ColorizeManager::Get(basicColor_te myColor)
|
|||||||
|
|
||||||
bool ColorizeManager::Exist(const char *colorName)
|
bool ColorizeManager::Exist(const char *colorName)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
for (i=0; i<listMyColor.size(); i++) {
|
for (i=0; i<listMyColor.Size(); i++) {
|
||||||
Edn::String elementName = listMyColor[i]->GetName();
|
Edn::String elementName = listMyColor[i]->GetName();
|
||||||
if (elementName == colorName) {
|
if (elementName == colorName) {
|
||||||
return true;
|
return true;
|
||||||
@@ -243,9 +252,9 @@ bool ColorizeManager::Exist(Edn::String &colorName)
|
|||||||
|
|
||||||
void ColorizeManager::DisplayListOfColor(void)
|
void ColorizeManager::DisplayListOfColor(void)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
EDN_INFO(PFX"List of ALL COLOR : ");
|
EDN_INFO(PFX"List of ALL COLOR : ");
|
||||||
for (i=0; i<listMyColor.size(); i++) {
|
for (i=0; i<listMyColor.Size(); i++) {
|
||||||
//Edn::String elementName = listMyColor[i]->GetName();
|
//Edn::String elementName = listMyColor[i]->GetName();
|
||||||
//EDN_INFO(i << " : \"" << elementName.c_str() << "\"" );
|
//EDN_INFO(i << " : \"" << elementName.c_str() << "\"" );
|
||||||
listMyColor[i]->Display(i);
|
listMyColor[i]->Display(i);
|
||||||
|
@@ -27,9 +27,8 @@
|
|||||||
#define __COLORIZE_MANAGER_H__
|
#define __COLORIZE_MANAGER_H__
|
||||||
|
|
||||||
#include "Singleton.h"
|
#include "Singleton.h"
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#include "Colorize.h"
|
#include "Colorize.h"
|
||||||
|
#include "Edn.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
// BASIC color for codeViewer
|
// BASIC color for codeViewer
|
||||||
@@ -59,19 +58,19 @@ class ColorizeManager: public Singleton<ColorizeManager>
|
|||||||
ColorizeManager(void);
|
ColorizeManager(void);
|
||||||
~ColorizeManager(void);
|
~ColorizeManager(void);
|
||||||
public:
|
public:
|
||||||
void LoadFile(Edn::String &xmlFilename);
|
void LoadFile(Edn::String &xmlFilename);
|
||||||
void LoadFile(const char * xmlFilename);
|
void LoadFile(const char * xmlFilename);
|
||||||
Colorize * Get(const char *colorName);
|
Colorize * Get(const char *colorName);
|
||||||
Colorize * Get(Edn::String &colorName);
|
Colorize * Get(Edn::String &colorName);
|
||||||
color_ts & Get(basicColor_te myColor);
|
color_ts & Get(basicColor_te myColor);
|
||||||
bool Exist(Edn::String &colorName);
|
bool Exist(Edn::String &colorName);
|
||||||
bool Exist(const char *colorName);
|
bool Exist(const char *colorName);
|
||||||
void DisplayListOfColor(void);
|
void DisplayListOfColor(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<Colorize*> listMyColor; //!< List of ALL Color
|
Edn::VectorType<Colorize*> listMyColor; //!< List of ALL Color
|
||||||
Colorize* errorColor;
|
Colorize * errorColor;
|
||||||
color_ts basicColors[COLOR_NUMBER_MAX];
|
color_ts basicColors[COLOR_NUMBER_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -41,7 +41,6 @@ BufferView::BufferView(void) : MsgBroadcast("Buffer View", EDN_CAT_GUI)
|
|||||||
// Init link with the buffer Manager
|
// Init link with the buffer Manager
|
||||||
m_bufferManager = BufferManager::getInstance();
|
m_bufferManager = BufferManager::getInstance();
|
||||||
m_colorManager = ColorizeManager::getInstance();
|
m_colorManager = ColorizeManager::getInstance();
|
||||||
m_menuContext = MenuContext::getInstance();
|
|
||||||
|
|
||||||
m_widget = gtk_drawing_area_new();
|
m_widget = gtk_drawing_area_new();
|
||||||
gtk_widget_set_size_request( m_widget, 250, 100);
|
gtk_widget_set_size_request( m_widget, 250, 100);
|
||||||
@@ -230,13 +229,12 @@ gint BufferView::CB_focusGet( GtkWidget *widget, GdkEventFocus *event, gpointer
|
|||||||
|
|
||||||
gint BufferView::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
gint BufferView::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
||||||
{
|
{
|
||||||
BufferView * self = reinterpret_cast<BufferView*>(data);
|
//BufferView * self = reinterpret_cast<BufferView*>(data);
|
||||||
|
|
||||||
# ifdef USE_GTK_VERSION_2_0
|
# ifdef USE_GTK_VERSION_2_0
|
||||||
GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
|
GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
|
||||||
# endif
|
# endif
|
||||||
EDN_INFO("Focus - out");
|
EDN_INFO("Focus - out");
|
||||||
self->m_menuContext->Hide();
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,7 +243,7 @@ gint BufferView::CB_keyboardEvent( GtkWidget *widget, GdkEventKey *event, gpoint
|
|||||||
//BufferView * self = reinterpret_cast<BufferView*>(data);
|
//BufferView * self = reinterpret_cast<BufferView*>(data);
|
||||||
|
|
||||||
if(event->type == GDK_KEY_PRESS) {
|
if(event->type == GDK_KEY_PRESS) {
|
||||||
gtk_widget_queue_draw( widget );
|
gtk_widget_queue_draw( widget );
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -322,9 +320,6 @@ void BufferView::ViewPopupMenu(GtkWidget *parrent, GdkEventButton *event, int32_
|
|||||||
gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
gint BufferView::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
||||||
{
|
{
|
||||||
BufferView * self = reinterpret_cast<BufferView*>(data);
|
BufferView * self = reinterpret_cast<BufferView*>(data);
|
||||||
if (event->type != GDK_BUTTON_RELEASE) {
|
|
||||||
self->m_menuContext->Hide();
|
|
||||||
}
|
|
||||||
// get focus on the widget
|
// get focus on the widget
|
||||||
gtk_widget_grab_focus(widget);
|
gtk_widget_grab_focus(widget);
|
||||||
if (event->button == 1) {
|
if (event->button == 1) {
|
||||||
|
@@ -26,14 +26,11 @@
|
|||||||
#define __BUFFER_VIEW_H__
|
#define __BUFFER_VIEW_H__
|
||||||
|
|
||||||
#include "tools_debug.h"
|
#include "tools_debug.h"
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#include "Singleton.h"
|
#include "Singleton.h"
|
||||||
#include "CodeView.h"
|
#include "CodeView.h"
|
||||||
#include "BufferManager.h"
|
#include "BufferManager.h"
|
||||||
#include "Display.h"
|
#include "Display.h"
|
||||||
#include "MsgBroadcast.h"
|
#include "MsgBroadcast.h"
|
||||||
#include "MenuContext.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -68,7 +65,6 @@ class BufferView : public MsgBroadcast
|
|||||||
// r<>cup<75>ration des proprieter g<>n<EFBFBD>ral...
|
// r<>cup<75>ration des proprieter g<>n<EFBFBD>ral...
|
||||||
BufferManager * m_bufferManager;
|
BufferManager * m_bufferManager;
|
||||||
ColorizeManager * m_colorManager;
|
ColorizeManager * m_colorManager;
|
||||||
MenuContext * m_menuContext;
|
|
||||||
int32_t m_shawableAreaX;
|
int32_t m_shawableAreaX;
|
||||||
int32_t m_shawableAreaY;
|
int32_t m_shawableAreaY;
|
||||||
int32_t m_selectedID;
|
int32_t m_selectedID;
|
||||||
|
@@ -46,7 +46,6 @@ CodeView::CodeView(void) : MsgBroadcast("Code View", EDN_CAT_WORK_AREA)
|
|||||||
// Init link with the buffer Manager
|
// Init link with the buffer Manager
|
||||||
m_bufferManager = BufferManager::getInstance();
|
m_bufferManager = BufferManager::getInstance();
|
||||||
m_colorManager = ColorizeManager::getInstance();
|
m_colorManager = ColorizeManager::getInstance();
|
||||||
m_menuContext = MenuContext::getInstance();
|
|
||||||
|
|
||||||
m_widget = gtk_drawing_area_new();
|
m_widget = gtk_drawing_area_new();
|
||||||
gtk_widget_set_size_request( m_widget, 200, 100);
|
gtk_widget_set_size_request( m_widget, 200, 100);
|
||||||
|
@@ -32,7 +32,6 @@
|
|||||||
#include "BufferManager.h"
|
#include "BufferManager.h"
|
||||||
#include "Display.h"
|
#include "Display.h"
|
||||||
#include "MsgBroadcast.h"
|
#include "MsgBroadcast.h"
|
||||||
#include "MenuContext.h"
|
|
||||||
|
|
||||||
class CodeView : public MsgBroadcast
|
class CodeView : public MsgBroadcast
|
||||||
{
|
{
|
||||||
@@ -58,7 +57,6 @@ class CodeView : public MsgBroadcast
|
|||||||
// récupération des proprieter général...
|
// récupération des proprieter général...
|
||||||
BufferManager * m_bufferManager;
|
BufferManager * m_bufferManager;
|
||||||
ColorizeManager * m_colorManager;
|
ColorizeManager * m_colorManager;
|
||||||
MenuContext * m_menuContext;
|
|
||||||
int32_t m_shawableAreaX;
|
int32_t m_shawableAreaX;
|
||||||
int32_t m_shawableAreaY;
|
int32_t m_shawableAreaY;
|
||||||
int32_t m_bufferID;
|
int32_t m_bufferID;
|
||||||
|
@@ -28,8 +28,7 @@
|
|||||||
|
|
||||||
#include "tools_debug.h"
|
#include "tools_debug.h"
|
||||||
#include "Singleton.h"
|
#include "Singleton.h"
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
|
|
||||||
class MainAreaView: public Singleton<MainAreaView>
|
class MainAreaView: public Singleton<MainAreaView>
|
||||||
|
@@ -1,490 +0,0 @@
|
|||||||
/**
|
|
||||||
*******************************************************************************
|
|
||||||
* @file MenuContext.cpp
|
|
||||||
* @brief Editeur De N'ours : special Menu (left button or normal menu) (Sources)
|
|
||||||
* @author Edouard DUPIN
|
|
||||||
* @date 22/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 "MenuContext.h"
|
|
||||||
|
|
||||||
|
|
||||||
#undef __class__
|
|
||||||
#define __class__ "MenuContext"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief
|
|
||||||
*
|
|
||||||
* @param[in,out] ---
|
|
||||||
*
|
|
||||||
* @return ---
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
MenuContext::MenuContext(void) : MsgBroadcast("Menu Context", EDN_CAT_MENU_CONTEXT)
|
|
||||||
{
|
|
||||||
//m_currentBufferID = -1;
|
|
||||||
m_dialog = NULL;
|
|
||||||
m_shawableSize.x=200;
|
|
||||||
m_shawableSize.y=200;
|
|
||||||
// Init link with the buffer Manager
|
|
||||||
m_bufferManager = BufferManager::getInstance();
|
|
||||||
m_colorManager = ColorizeManager::getInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief
|
|
||||||
*
|
|
||||||
* @param[in,out] ---
|
|
||||||
*
|
|
||||||
* @return ---
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
MenuContext::~MenuContext(void)
|
|
||||||
{
|
|
||||||
if(NULL != m_dialog) {
|
|
||||||
gtk_widget_destroy(m_dialog);
|
|
||||||
m_dialog = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuContext::OnMessage(int32_t id, int32_t dataID)
|
|
||||||
{
|
|
||||||
switch (id)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
case EDN_MSG__BUFFER_CHANGE_CURRENT:
|
|
||||||
m_currentBufferID = dataID;
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void MenuContext::Clear(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuContext::AddCommonElem(int32_t id)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuContext::AddSpecificElem(Edn::String &text)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* This is called when we need to draw the windows contents */
|
|
||||||
static gboolean expose (GtkWidget *widget, GdkEventExpose *event, gpointer userdata)
|
|
||||||
{
|
|
||||||
gint width;
|
|
||||||
gint height;
|
|
||||||
cairo_t *cr = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
# if USE_GTK_VERSION_3_0
|
|
||||||
cr = gdk_cairo_create(gtk_widget_get_window(widget));
|
|
||||||
# elif USE_GTK_VERSION_2_0
|
|
||||||
cr = gdk_cairo_create(widget->window);
|
|
||||||
# endif
|
|
||||||
//if (supports_alpha)
|
|
||||||
{
|
|
||||||
// transparent
|
|
||||||
cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.0);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// opaque white
|
|
||||||
cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* draw the background */
|
|
||||||
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
|
|
||||||
cairo_paint (cr);
|
|
||||||
|
|
||||||
/* draw a circle */
|
|
||||||
//gtk_window_get_size (GTK_WINDOW (widget), &width, &height);
|
|
||||||
|
|
||||||
//cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6);
|
|
||||||
//cairo_arc (cr, width / 2, height / 2, (width < height ? width : height) / 2 - 8 , 0, 2 * 3.14);
|
|
||||||
//cairo_fill (cr);
|
|
||||||
//cairo_stroke (cr);
|
|
||||||
//cairo_paint (cr);
|
|
||||||
|
|
||||||
cairo_destroy (cr);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// http://zetcode.com/tutorials/cairographicstutorial/transparency/
|
|
||||||
|
|
||||||
void MenuContext::Show(int32_t x, int32_t y, bool top)
|
|
||||||
{
|
|
||||||
if(NULL != m_dialog) {
|
|
||||||
gtk_widget_destroy(m_dialog);
|
|
||||||
m_dialog = NULL;
|
|
||||||
}
|
|
||||||
m_dialog = gtk_window_new(GTK_WINDOW_POPUP);
|
|
||||||
//m_dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
|
||||||
// Set the dialog on top of the selected windows
|
|
||||||
//gtk_window_set_transient_for(GTK_WINDOW(m_dialog), parent);
|
|
||||||
// unset the border of the windows
|
|
||||||
//gtk_window_set_decorated(GTK_WINDOW(m_dialog), FALSE);
|
|
||||||
|
|
||||||
EDN_INFO("Set position X=" << x+2 << " Y=" << y+27);
|
|
||||||
|
|
||||||
# if USE_GTK_VERSION_3_0
|
|
||||||
gtk_window_move(GTK_WINDOW(m_dialog), x+2, y+27);
|
|
||||||
# elif USE_GTK_VERSION_2_0
|
|
||||||
gtk_widget_set_uposition(m_dialog, x+2, y+27);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* sdsfsdf */
|
|
||||||
gtk_widget_set_app_paintable (m_dialog, TRUE);
|
|
||||||
# ifdef USE_GTK_VERSION_3_0
|
|
||||||
g_signal_connect( G_OBJECT(m_dialog), "draw", G_CALLBACK(expose), this);
|
|
||||||
# elif defined( USE_GTK_VERSION_2_0 )
|
|
||||||
g_signal_connect( G_OBJECT(m_dialog), "expose_event", G_CALLBACK(expose), this);
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//gtk_window_set_opacity(GTK_WINDOW(m_dialog), 0.25);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 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_dialog), vbox);
|
|
||||||
|
|
||||||
GtkWidget *myLabel = gtk_label_new("plop 1 ");
|
|
||||||
gtk_container_add(GTK_CONTAINER(vbox), myLabel);
|
|
||||||
|
|
||||||
myLabel = gtk_label_new("plop 2 ");
|
|
||||||
gtk_container_add(GTK_CONTAINER(vbox), myLabel);
|
|
||||||
*/
|
|
||||||
// Set key Accelerator :
|
|
||||||
//AccelKey::getInstance()->LinkCommonAccel(GTK_WINDOW(m_dialog));
|
|
||||||
|
|
||||||
// Create the menu bar.
|
|
||||||
//gtk_box_pack_start( GTK_BOX (vbox), m_MenuBar.GetWidget(), FALSE, FALSE, 0);
|
|
||||||
m_widget = gtk_drawing_area_new();
|
|
||||||
//gtk_window_set_opacity(GTK_WINDOW(m_widget), 0.8);
|
|
||||||
gtk_widget_set_size_request( m_widget, 250, 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);
|
|
||||||
// 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
|
|
||||||
|
|
||||||
gtk_container_add(GTK_CONTAINER(m_dialog), m_widget);
|
|
||||||
|
|
||||||
// recursive version of gtk_widget_show
|
|
||||||
gtk_widget_show_all(m_dialog);
|
|
||||||
|
|
||||||
// Set the Focus
|
|
||||||
gtk_widget_grab_focus(m_widget);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MenuContext::Hide(void)
|
|
||||||
{
|
|
||||||
if(NULL != m_dialog) {
|
|
||||||
gtk_widget_destroy(m_dialog);
|
|
||||||
m_dialog = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
gboolean MenuContext::CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
|
||||||
{
|
|
||||||
MenuContext * self = reinterpret_cast<MenuContext*>(data);
|
|
||||||
|
|
||||||
# ifdef USE_GTK_VERSION_3_0
|
|
||||||
GtkAllocation allocation;
|
|
||||||
gtk_widget_get_allocation(widget, &allocation);
|
|
||||||
if (self->m_shawableSize.x != allocation.width) {
|
|
||||||
self->m_shawableSize.x = allocation.width;
|
|
||||||
}
|
|
||||||
if (self->m_shawableSize.y != allocation.height) {
|
|
||||||
self->m_shawableSize.y = allocation.height;
|
|
||||||
}
|
|
||||||
# elif defined( USE_GTK_VERSION_2_0)
|
|
||||||
if (self->m_shawableSize.x != widget->allocation.width) {
|
|
||||||
self->m_shawableSize.x = widget->allocation.width;
|
|
||||||
}
|
|
||||||
if (self->m_shawableSize.y != widget->allocation.height) {
|
|
||||||
self->m_shawableSize.y = widget->allocation.height;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
EDN_INFO("Request a display of : " << self->m_shawableSize.x << "px * "<< self->m_shawableSize.y<<"px");
|
|
||||||
|
|
||||||
DrawerManager monDrawer(widget, self->m_shawableSize.x, self->m_shawableSize.y);
|
|
||||||
|
|
||||||
// get the number of buffer open
|
|
||||||
int32_t nbBufferOpen = self->m_bufferManager->Size();
|
|
||||||
int32_t i;
|
|
||||||
uint32_t lineID = 0;
|
|
||||||
uint32_t fontHeight = Display::GetFontHeight();
|
|
||||||
basicColor_te selectFG = COLOR_LIST_TEXT_NORMAL;
|
|
||||||
basicColor_te selectBG = COLOR_LIST_BG_1;
|
|
||||||
Edn::VectorType<Edn::String *> myData;
|
|
||||||
Edn::String * plop = new Edn::String("Save");
|
|
||||||
myData.PushBack(plop);
|
|
||||||
plop = new Edn::String("Show");
|
|
||||||
myData.PushBack(plop);
|
|
||||||
plop = new Edn::String("Close");
|
|
||||||
myData.PushBack(plop);
|
|
||||||
for (i=0; i < myData.Size(); i++) {
|
|
||||||
selectFG = COLOR_LIST_TEXT_NORMAL;
|
|
||||||
if (lineID%2==0) {
|
|
||||||
selectBG = COLOR_LIST_BG_1;
|
|
||||||
} else {
|
|
||||||
selectBG = COLOR_LIST_BG_2;
|
|
||||||
}
|
|
||||||
monDrawer.Rectangle(self->m_colorManager->Get(selectBG), 0, lineID*fontHeight, self->m_shawableSize.x, Display::GetFontHeight());
|
|
||||||
|
|
||||||
monDrawer.Text(self->m_colorManager->Get(selectFG), 2, lineID*fontHeight, myData[i]->c_str());
|
|
||||||
monDrawer.Flush();
|
|
||||||
lineID ++;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gboolean MenuContext::CB_displayDraw2( GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
|
||||||
{
|
|
||||||
MenuContext * self = reinterpret_cast<MenuContext*>(data);
|
|
||||||
|
|
||||||
gint width;
|
|
||||||
gint height;
|
|
||||||
cairo_t *cr = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
# if USE_GTK_VERSION_3_0
|
|
||||||
cr = gdk_cairo_create(gtk_widget_get_window(widget));
|
|
||||||
# elif USE_GTK_VERSION_2_0
|
|
||||||
cr = gdk_cairo_create(widget->window);
|
|
||||||
# endif
|
|
||||||
// transparent
|
|
||||||
cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.0);
|
|
||||||
|
|
||||||
/* draw the background */
|
|
||||||
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
|
|
||||||
cairo_paint (cr);
|
|
||||||
|
|
||||||
/* draw a circle */
|
|
||||||
gtk_window_get_size (GTK_WINDOW(widget), &width, &height);
|
|
||||||
|
|
||||||
cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6);
|
|
||||||
cairo_arc (cr, width / 2, height / 2, (width < height ? width : height) / 2 - 8 , 0, 2 * 3.14);
|
|
||||||
cairo_fill (cr);
|
|
||||||
cairo_stroke (cr);
|
|
||||||
cairo_paint (cr);
|
|
||||||
|
|
||||||
cairo_destroy (cr);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// sur : <20>mis lors du premier affichage de la GtkDrawingArea
|
|
||||||
gboolean MenuContext::CB_displayInit( GtkWidget *widget, gpointer data)
|
|
||||||
{
|
|
||||||
MenuContext * self = reinterpret_cast<MenuContext*>(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_shawableSize.x = allocation.width;
|
|
||||||
self->m_shawableSize.y = 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_shawableSize.x = widget->allocation.width;
|
|
||||||
self->m_shawableSize.y = widget->allocation.height;
|
|
||||||
# endif
|
|
||||||
EDN_INFO("Request a diplay of : " << size_x << "px * " << size_y << "px");
|
|
||||||
|
|
||||||
gtk_widget_queue_draw( widget );
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gint MenuContext::CB_focusGet( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
|
||||||
{
|
|
||||||
//MenuContext * self = reinterpret_cast<MenuContext*>(data);
|
|
||||||
|
|
||||||
# ifdef USE_GTK_VERSION_2_0
|
|
||||||
GTK_WIDGET_SET_FLAGS(widget, GTK_HAS_FOCUS);
|
|
||||||
# endif
|
|
||||||
EDN_INFO("Focus - In");
|
|
||||||
gtk_widget_queue_draw( widget );
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gint MenuContext::CB_focusLost( GtkWidget *widget, GdkEventFocus *event, gpointer data)
|
|
||||||
{
|
|
||||||
MenuContext * self = reinterpret_cast<MenuContext*>(data);
|
|
||||||
|
|
||||||
# ifdef USE_GTK_VERSION_2_0
|
|
||||||
GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS);
|
|
||||||
# endif
|
|
||||||
EDN_INFO("Focus - out");
|
|
||||||
self->Hide();
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gint MenuContext::CB_keyboardEvent( GtkWidget *widget, GdkEventKey *event, gpointer data)
|
|
||||||
{
|
|
||||||
//MenuContext * self = reinterpret_cast<MenuContext*>(data);
|
|
||||||
|
|
||||||
if(event->type == GDK_KEY_PRESS) {
|
|
||||||
gtk_widget_queue_draw( widget );
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
gint MenuContext::CB_mouseButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer data)
|
|
||||||
{
|
|
||||||
MenuContext * self = reinterpret_cast<MenuContext*>(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");
|
|
||||||
}else*/ if (event->type == GDK_2BUTTON_PRESS) {
|
|
||||||
//EDN_INFO("mouse-event BT1 ==> Double Clicked %d, %d", (uint32_t)event->x, (uint32_t)event->y);
|
|
||||||
uint32_t fontHeight = Display::GetFontHeight();
|
|
||||||
int32_t selectBuf = self->m_bufferManager->WitchBuffer((event->y / fontHeight) + 1);
|
|
||||||
//EDN_INFO(" plop %d / %d = %d ==> %d", (uint32_t)event->y, fontHeight, ((uint32_t)event->y / fontHeight), selectBuf);
|
|
||||||
if ( 0 <= selectBuf) {
|
|
||||||
self->SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, selectBuf);
|
|
||||||
/*
|
|
||||||
MainWindows *window = MainWindows::getInstance();
|
|
||||||
EDN_INFO(" Event on Buffer " << selectBuf);
|
|
||||||
// set the new seected Buffer
|
|
||||||
window->SetSelected(selectBuf);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}/* else if (event->type == GDK_3BUTTON_PRESS) {
|
|
||||||
EDN_INFO("mouse-event BT1 ==> Triple Clicked");
|
|
||||||
}else if (event->type == GDK_BUTTON_RELEASE) {
|
|
||||||
EDN_INFO("mouse-event BT1 ==> Realease");
|
|
||||||
}*/
|
|
||||||
}/* else if (event->button == 2) {
|
|
||||||
if (event->type == GDK_BUTTON_PRESS) {
|
|
||||||
EDN_INFO("mouse-event BT2 PRESS");
|
|
||||||
self->m_menuContext->Show(event->x, event->y, false);
|
|
||||||
}
|
|
||||||
} else if (event->button == 3) {
|
|
||||||
if (event->type == GDK_BUTTON_PRESS) {
|
|
||||||
EDN_INFO("mouse-event BT3 PRESS");
|
|
||||||
uint32_t fontHeight = Display::GetFontHeight();
|
|
||||||
int32_t selectBuf = self->m_bufferManager->WitchBuffer((event->y / fontHeight) + 1);
|
|
||||||
if ( 0 <= selectBuf) {
|
|
||||||
// TODO : Find a simple methode
|
|
||||||
int32_t windowsPosX, windowsPosY;
|
|
||||||
gtk_window_get_position(GTK_WINDOW(gtk_widget_get_toplevel(widget)), &windowsPosX, &windowsPosY);
|
|
||||||
//EDN_INFO("windowsPosX=" << windowsPosX << " windowsPosY=" << windowsPosY);
|
|
||||||
int32_t widgetPosX, widgetPosY;
|
|
||||||
gtk_widget_translate_coordinates(widget, gtk_widget_get_toplevel(widget), 0, 0, &widgetPosX, &widgetPosY);
|
|
||||||
//EDN_INFO("widgetPosX=" << widgetPosX << " widgetPosY=" << widgetPosY);
|
|
||||||
self->m_menuContext->Show(self->m_shawableAreaX+2+widgetPosX+windowsPosX, ((int32_t)(event->y / fontHeight)*fontHeight)+(fontHeight/2)+widgetPosY+windowsPosY, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/ else {
|
|
||||||
EDN_INFO("mouse-event BT? PRESS");
|
|
||||||
}
|
|
||||||
gtk_widget_queue_draw( widget );
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gint MenuContext::CB_mouseMotionEvent( GtkWidget *widget, GdkEventMotion *event, gpointer data)
|
|
||||||
{
|
|
||||||
//MenuContexterView * self = reinterpret_cast<MenuContext*>(data);
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (true == 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;
|
|
||||||
}
|
|
||||||
EDN_INFO("mouse-motion BT1 %d, %d", x, y);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
return true;
|
|
||||||
}
|
|
@@ -1,72 +0,0 @@
|
|||||||
/**
|
|
||||||
*******************************************************************************
|
|
||||||
* @file MenuContext.h
|
|
||||||
* @brief Editeur De N'ours : special Menu (left button or normal menu) (header)
|
|
||||||
* @author Edouard DUPIN
|
|
||||||
* @date 22/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 __MENU_CONTEXT_H__
|
|
||||||
#define __MENU_CONTEXT_H__
|
|
||||||
|
|
||||||
#include "Singleton.h"
|
|
||||||
#include "MsgBroadcast.h"
|
|
||||||
#include "Edn.h"
|
|
||||||
#include "BufferManager.h"
|
|
||||||
#include "ColorizeManager.h"
|
|
||||||
|
|
||||||
class MenuContext: public Singleton<MenuContext>, public MsgBroadcast
|
|
||||||
{
|
|
||||||
friend class Singleton<MenuContext>;
|
|
||||||
// specific for sigleton system...
|
|
||||||
private:
|
|
||||||
// Constructeur
|
|
||||||
MenuContext(void);
|
|
||||||
~MenuContext(void);
|
|
||||||
|
|
||||||
public:
|
|
||||||
void OnMessage(int32_t id, int32_t dataID);
|
|
||||||
// sur : GTK+ callback :
|
|
||||||
static gboolean CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, gpointer data);
|
|
||||||
static gboolean CB_displayDraw2( 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);
|
|
||||||
static void CB_ScreenChange(GtkWidget *widget, GdkScreen *old_screen, gpointer userdata);
|
|
||||||
public:
|
|
||||||
void Clear(void);
|
|
||||||
void AddCommonElem(int32_t id);
|
|
||||||
void AddSpecificElem(Edn::String &text);
|
|
||||||
void Show(int32_t x, int32_t y, bool top);
|
|
||||||
void Hide(void);
|
|
||||||
private:
|
|
||||||
BufferManager * m_bufferManager;
|
|
||||||
ColorizeManager * m_colorManager;
|
|
||||||
GtkWidget * m_dialog;
|
|
||||||
GtkWidget * m_widget;
|
|
||||||
position_ts m_requestedPos;
|
|
||||||
position_ts m_shawableSize;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@@ -28,8 +28,6 @@
|
|||||||
|
|
||||||
#include "tools_debug.h"
|
#include "tools_debug.h"
|
||||||
#include "Singleton.h"
|
#include "Singleton.h"
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
|
|
||||||
class Search: public Singleton<Search>
|
class Search: public Singleton<Search>
|
||||||
|
@@ -33,14 +33,14 @@
|
|||||||
#define __class__ "Highlight"
|
#define __class__ "Highlight"
|
||||||
|
|
||||||
|
|
||||||
void Highlight::ParseRules(TiXmlNode *child, std::vector<HighlightPattern*> &mListPatern, int32_t level)
|
void Highlight::ParseRules(TiXmlNode *child, Edn::VectorType<HighlightPattern*> &mListPatern, int32_t level)
|
||||||
{
|
{
|
||||||
// Create the patern ...
|
// Create the patern ...
|
||||||
HighlightPattern *myPattern = new HighlightPattern();
|
HighlightPattern *myPattern = new HighlightPattern();
|
||||||
// parse under Element
|
// parse under Element
|
||||||
myPattern->ParseRules(child, level);
|
myPattern->ParseRules(child, level);
|
||||||
// add element in the list
|
// add element in the list
|
||||||
mListPatern.push_back(myPattern);
|
mListPatern.PushBack(myPattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -72,8 +72,8 @@ Highlight::Highlight(Edn::String &xmlFilename)
|
|||||||
const char *myData = child->ToElement()->GetText();
|
const char *myData = child->ToElement()->GetText();
|
||||||
if (NULL != myData) {
|
if (NULL != myData) {
|
||||||
//EDN_INFO(PFX"(l %d) node fined : %s=\"%s\"", child->Row(), child->Value() , myData);
|
//EDN_INFO(PFX"(l %d) node fined : %s=\"%s\"", child->Row(), child->Value() , myData);
|
||||||
Edn::String myEdnData = myData;
|
Edn::String * myEdnData = new Edn::String(myData);
|
||||||
m_listExtentions.push_back(myEdnData);
|
m_listExtentions.PushBack(myEdnData);
|
||||||
}
|
}
|
||||||
} else if (!strcmp(child->Value(), "pass1")) {
|
} else if (!strcmp(child->Value(), "pass1")) {
|
||||||
// Get sub Nodes ...
|
// Get sub Nodes ...
|
||||||
@@ -113,21 +113,34 @@ Highlight::Highlight(Edn::String &xmlFilename)
|
|||||||
|
|
||||||
Highlight::~Highlight(void)
|
Highlight::~Highlight(void)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
// clean all Element
|
// clean all Element
|
||||||
for (i=0; i< m_listHighlightPass1.size(); i++) {
|
for (i=0; i< m_listHighlightPass1.Size(); i++) {
|
||||||
delete(m_listHighlightPass1[i]);
|
if (NULL != m_listHighlightPass1[i]) {
|
||||||
|
delete(m_listHighlightPass1[i]);
|
||||||
|
m_listHighlightPass1[i] = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// clear the compleate list
|
// clear the compleate list
|
||||||
m_listHighlightPass1.clear();
|
m_listHighlightPass1.Clear();
|
||||||
|
|
||||||
|
// clean all Element
|
||||||
|
for (i=0; i< m_listExtentions.Size(); i++) {
|
||||||
|
if (NULL != m_listExtentions[i]) {
|
||||||
|
delete(m_listExtentions[i]);
|
||||||
|
m_listExtentions[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// clear the compleate list
|
||||||
|
m_listExtentions.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Highlight::HasExtention(Edn::String &ext)
|
bool Highlight::HasExtention(Edn::String &ext)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
for (i=0; i<m_listExtentions.size(); i++) {
|
for (i=0; i<m_listExtentions.Size(); i++) {
|
||||||
if (ext == m_listExtentions[i] ) {
|
if (ext == *m_listExtentions[i] ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,7 +149,7 @@ bool Highlight::HasExtention(Edn::String &ext)
|
|||||||
|
|
||||||
bool Highlight::FileNameCompatible(Edn::File &fileName)
|
bool Highlight::FileNameCompatible(Edn::File &fileName)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
Edn::String extention;
|
Edn::String extention;
|
||||||
if (true == fileName.HasExtention() ) {
|
if (true == fileName.HasExtention() ) {
|
||||||
extention = "*.";
|
extention = "*.";
|
||||||
@@ -146,8 +159,8 @@ bool Highlight::FileNameCompatible(Edn::File &fileName)
|
|||||||
}
|
}
|
||||||
EDN_DEBUG(" try to find : in \"" << fileName << "\" extention:\"" << extention << "\" ");
|
EDN_DEBUG(" try to find : in \"" << fileName << "\" extention:\"" << extention << "\" ");
|
||||||
|
|
||||||
for (i=0; i<m_listExtentions.size(); i++) {
|
for (i=0; i<m_listExtentions.Size(); i++) {
|
||||||
if (extention == m_listExtentions[i] ) {
|
if (extention == *m_listExtentions[i] ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -157,134 +170,119 @@ bool Highlight::FileNameCompatible(Edn::File &fileName)
|
|||||||
|
|
||||||
void Highlight::Display(void)
|
void Highlight::Display(void)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
EDN_INFO("List of ALL Highlight : ");
|
EDN_INFO("List of ALL Highlight : ");
|
||||||
for (i=0; i< m_listExtentions.size(); i++) {
|
for (i=0; i< m_listExtentions.Size(); i++) {
|
||||||
EDN_INFO(" Extention : " << i << " : " << m_listExtentions[i] );
|
EDN_INFO(" Extention : " << i << " : " << *m_listExtentions[i] );
|
||||||
}
|
}
|
||||||
// Display all elements
|
// Display all elements
|
||||||
for (i=0; i< m_listHighlightPass1.size(); i++) {
|
for (i=0; i< m_listHighlightPass1.Size(); i++) {
|
||||||
EDN_INFO(" " << i << " Pass 1 : " << m_listHighlightPass1[i]->GetName() );
|
EDN_INFO(" " << i << " Pass 1 : " << m_listHighlightPass1[i]->GetName() );
|
||||||
//m_listHighlightPass1[i]->Display();
|
//m_listHighlightPass1[i]->Display();
|
||||||
}
|
}
|
||||||
// Display all elements
|
// Display all elements
|
||||||
for (i=0; i< m_listHighlightPass2.size(); i++) {
|
for (i=0; i< m_listHighlightPass2.Size(); i++) {
|
||||||
EDN_INFO(" " << i << " Pass 2 : " << m_listHighlightPass2[i]->GetName() );
|
EDN_INFO(" " << i << " Pass 2 : " << m_listHighlightPass2[i]->GetName() );
|
||||||
//m_listHighlightPass2[i]->Display();
|
//m_listHighlightPass2[i]->Display();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 13h 46min 22s | (l= 214) Highlight::Parse | [II] Find Pattern in the Buffer : (2457,2479)
|
||||||
|
|
||||||
|
|
||||||
void Highlight::Parse(int32_t start, int32_t stop, std::vector<colorInformation_ts> &metaData, int32_t &addingPos, EdnVectorBuf &buffer, int32_t elementID)
|
// TODO : Celui qui appelle suprime des element pour rien ... Enfin c'est pas tr<74>grave... Il suffirait juste de suprimer celuis d'avant si il n'est pas terminer...
|
||||||
|
void Highlight::Parse(int32_t start,
|
||||||
|
int32_t stop,
|
||||||
|
Edn::VectorType<colorInformation_ts> &metaData,
|
||||||
|
int32_t addingPos,
|
||||||
|
EdnVectorBuf &buffer)
|
||||||
{
|
{
|
||||||
if (0 > addingPos) {
|
if (0 > addingPos) {
|
||||||
addingPos = 0;
|
addingPos = 0;
|
||||||
}
|
}
|
||||||
/*int32_t emptyId = -1;
|
//EDN_DEBUG("Parse element 0 => " << m_listHighlightPass1.Size() << " ==> position search: (" << start << "," << stop << ")" );
|
||||||
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 elementStart = start;
|
||||||
int32_t elementStop = stop;
|
int32_t elementStop = stop;
|
||||||
resultFind_te ret = HLP_FIND_OK;
|
|
||||||
colorInformation_ts resultat;
|
colorInformation_ts resultat;
|
||||||
while (HLP_FIND_ERROR != ret && elementStart<elementStop) {
|
while (elementStart<elementStop) {
|
||||||
ret = m_listHighlightPass1[elementID]->Find(elementStart, elementStop, resultat, buffer);
|
//EDN_DEBUG("Parse element in the buffer id=" << elementStart);
|
||||||
if (HLP_FIND_ERROR != ret) {
|
//try to fond the HL in ALL of we have
|
||||||
//EDN_INFO("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" );
|
for (int32_t jjj=0; jjj<m_listHighlightPass1.Size(); jjj++){
|
||||||
// Add curent element in the list ...
|
resultFind_te ret = HLP_FIND_OK;
|
||||||
if (HLP_FIND_OK_NO_END == ret) {
|
//EDN_DEBUG("Parse HL id=" << jjj << " position search: (" << start << "," << buffer.Size() << ")" );
|
||||||
// find if we have a next element with th save Pointer and not higher the this one
|
// Stop the search to the end (to get the end of the pattern)
|
||||||
int32_t findNextElement = -1;
|
ret = m_listHighlightPass1[jjj]->Find(elementStart, buffer.Size(), resultat, buffer);
|
||||||
int32_t i;
|
if (HLP_FIND_ERROR != ret) {
|
||||||
int32_t curentLevel = ((HighlightPattern*)resultat.patern)->GetLevel();
|
//EDN_INFO("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" );
|
||||||
for (i=addingPos; i< (int32_t)metaData.size(); i++) {
|
// Remove element in the current List where the current Element have a end inside the next...
|
||||||
if (curentLevel > ((HighlightPattern*)metaData[i].patern)->GetLevel() ) {
|
int32_t kkk=addingPos;
|
||||||
//EDN_DEBUG(" -> Find upper element at "<< i );
|
while(kkk < metaData.Size() ) {
|
||||||
break;
|
if (metaData[kkk].beginStart <= resultat.endStop) {
|
||||||
} else if (curentLevel < ((HighlightPattern*)metaData[i].patern)->GetLevel() ) {
|
// Remove element
|
||||||
findNextElement = i;
|
//EDN_INFO("Erase element=" << kkk);
|
||||||
//EDN_DEBUG(" -> Find under element at "<< i );
|
metaData.Erase(kkk, kkk+1);
|
||||||
}
|
// Increase the end of search
|
||||||
if (metaData[i].patern == resultat.patern)
|
if (kkk < metaData.Size()) {
|
||||||
{
|
// just befor the end of the next element
|
||||||
findNextElement = i;
|
elementStop = metaData[kkk].beginStart-1;
|
||||||
//EDN_DEBUG(" -> Find a same element at "<< i );
|
} else {
|
||||||
break;
|
// end of the buffer
|
||||||
}
|
elementStop = buffer.Size();
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
} else {
|
||||||
// Remove old element :
|
// Not find ==> exit the cycle :
|
||||||
//EDN_DEBUG(" --> Remove : " << addingPos << "==>" << findNextElement+1 );
|
break;
|
||||||
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 {
|
// Add curent element in the list ...
|
||||||
metaData.insert(metaData.begin() + addingPos, resultat);
|
metaData.Insert(addingPos, resultat);
|
||||||
//EDN_DEBUG("INSERT at "<< addingPos << " S=" << resultat.beginStart << " E=" << resultat.endStop );
|
//EDN_DEBUG("INSERT at "<< addingPos << " S=" << resultat.beginStart << " E=" << resultat.endStop );
|
||||||
|
// Update the current research starting element: (Set position at the end of the current element
|
||||||
|
elementStart = resultat.endStop-1;
|
||||||
|
// increment the position of insertion:
|
||||||
|
addingPos++;
|
||||||
|
// We find a pattern ==> Stop search for the current element
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
// parse the under element :
|
|
||||||
Parse(elementStart, resultat.beginStart-1, metaData, addingPos, buffer, elementID+1);
|
|
||||||
addingPos++;
|
|
||||||
elementStart = resultat.endStop;
|
|
||||||
}
|
}
|
||||||
|
// Go to the next element (and search again ...).
|
||||||
|
elementStart++;
|
||||||
}
|
}
|
||||||
// parse the under element :
|
|
||||||
Parse(elementStart, elementStop, metaData, addingPos, buffer, elementID+1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief second pass of the hightlight
|
* @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)
|
void Highlight::Parse2(int32_t start,
|
||||||
|
int32_t stop,
|
||||||
|
Edn::VectorType<colorInformation_ts> &metaData,
|
||||||
|
EdnVectorBuf &buffer)
|
||||||
{
|
{
|
||||||
if (elementID >= (int32_t)m_listHighlightPass2.size() ){
|
//EDN_DEBUG("Parse element 0 => " << m_listHighlightPass2.size() << " ==> position search: (" << start << "," << stop << ")" );
|
||||||
return;
|
|
||||||
}
|
|
||||||
int32_t elementStart = start;
|
int32_t elementStart = start;
|
||||||
int32_t elementStop = stop;
|
int32_t elementStop = stop;
|
||||||
resultFind_te ret = HLP_FIND_OK;
|
|
||||||
colorInformation_ts resultat;
|
colorInformation_ts resultat;
|
||||||
while (HLP_FIND_ERROR != ret && elementStart<elementStop) {
|
while (elementStart<elementStop) {
|
||||||
if (m_listHighlightPass2[elementID]!=NULL) {
|
//EDN_DEBUG("Parse element in the buffer id=" << elementStart);
|
||||||
ret = m_listHighlightPass2[elementID]->Find(elementStart, elementStop, resultat, buffer);
|
//try to fond the HL in ALL of we have
|
||||||
} else {
|
int32_t jjj;
|
||||||
ret = HLP_FIND_ERROR;
|
for (jjj=0; jjj<m_listHighlightPass2.Size(); jjj++){
|
||||||
}
|
resultFind_te ret = HLP_FIND_OK;
|
||||||
if (HLP_FIND_ERROR != ret) {
|
//EDN_DEBUG("Parse HL id=" << jjj << " position search: (" << start << "," << buffer.Size() << ")" );
|
||||||
//EDN_INFO("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" );
|
// Stop the search to the end (to get the end of the pattern)
|
||||||
// parse the under element :
|
ret = m_listHighlightPass2[jjj]->Find(elementStart, elementStop, resultat, buffer);
|
||||||
Parse2(elementStart, resultat.beginStart, metaData, buffer, elementID+1);
|
if (HLP_FIND_ERROR != ret) {
|
||||||
// Add curent element in the list ...
|
//EDN_INFO("Find Pattern in the Buffer : (" << resultat.beginStart << "," << resultat.endStop << ")" );
|
||||||
metaData.push_back(resultat);
|
// Add curent element in the list ...
|
||||||
elementStart = resultat.endStop;
|
metaData.PushBack(resultat);
|
||||||
|
elementStart = resultat.endStop;
|
||||||
|
// Exit current cycle
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// Go to the next element (and search again ...).
|
||||||
|
elementStart++;
|
||||||
}
|
}
|
||||||
// parse the under element :
|
|
||||||
Parse2(elementStart, elementStop, metaData, buffer, elementID+1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "Edn.h"
|
||||||
#ifndef __HIGHLIGHT_H__
|
#ifndef __HIGHLIGHT_H__
|
||||||
#define __HIGHLIGHT_H__
|
#define __HIGHLIGHT_H__
|
||||||
|
|
||||||
@@ -38,14 +39,12 @@ extern "C" {
|
|||||||
int32_t endStart;
|
int32_t endStart;
|
||||||
int32_t endStop;
|
int32_t endStop;
|
||||||
bool notEnded;
|
bool notEnded;
|
||||||
HighlightPattern * patern; // pointer on class :
|
HighlightPattern * patern; // pointer on class :
|
||||||
} colorInformation_ts;
|
} colorInformation_ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include "HighlightPattern.h"
|
#include "HighlightPattern.h"
|
||||||
#include "Colorize.h"
|
#include "Colorize.h"
|
||||||
#include "Edn.h"
|
|
||||||
#include "EdnVectorBuf.h"
|
#include "EdnVectorBuf.h"
|
||||||
#include "tinyxml.h"
|
#include "tinyxml.h"
|
||||||
|
|
||||||
@@ -57,15 +56,21 @@ class Highlight {
|
|||||||
bool HasExtention(Edn::String &ext);
|
bool HasExtention(Edn::String &ext);
|
||||||
bool FileNameCompatible(Edn::File &fileName);
|
bool FileNameCompatible(Edn::File &fileName);
|
||||||
void Display(void);
|
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 Parse(int32_t start,
|
||||||
void Parse2(int32_t start, int32_t stop, std::vector<colorInformation_ts> &metaData, EdnVectorBuf &buffer, int32_t elementID=0);
|
int32_t stop,
|
||||||
|
Edn::VectorType<colorInformation_ts> &metaData,
|
||||||
|
int32_t addingPos,
|
||||||
|
EdnVectorBuf &buffer);
|
||||||
|
void Parse2(int32_t start,
|
||||||
|
int32_t stop,
|
||||||
|
Edn::VectorType<colorInformation_ts> &metaData,
|
||||||
|
EdnVectorBuf &buffer);
|
||||||
private:
|
private:
|
||||||
void ParseRules(TiXmlNode *child, std::vector<HighlightPattern*> &mListPatern, int32_t level);
|
void ParseRules(TiXmlNode *child, Edn::VectorType<HighlightPattern*> &mListPatern, int32_t level);
|
||||||
Edn::String m_styleName; //!< curent style name (like "c++" or "c" or "script Bash")
|
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"
|
Edn::VectorType<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)
|
Edn::VectorType<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)) )
|
Edn::VectorType<HighlightPattern*> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 ==> When we display the buffer( only the display area (100 lines)) )
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -37,14 +37,23 @@ HighlightManager::HighlightManager(void)
|
|||||||
|
|
||||||
HighlightManager::~HighlightManager(void)
|
HighlightManager::~HighlightManager(void)
|
||||||
{
|
{
|
||||||
listHighlight.clear();
|
int32_t i;
|
||||||
|
// clean all Element
|
||||||
|
for (i=0; i< listHighlight.Size(); i++) {
|
||||||
|
if (NULL != listHighlight[i]) {
|
||||||
|
delete(listHighlight[i]);
|
||||||
|
listHighlight[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// clear the compleate list
|
||||||
|
listHighlight.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Highlight *HighlightManager::Get(Edn::File &fileName)
|
Highlight *HighlightManager::Get(Edn::File &fileName)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
int32_t i;
|
||||||
for (i=0; i<listHighlight.size(); i++) {
|
for (i=0; i<listHighlight.Size(); i++) {
|
||||||
if (true == listHighlight[i]->FileNameCompatible(fileName) ) {
|
if (true == listHighlight[i]->FileNameCompatible(fileName) ) {
|
||||||
return listHighlight[i];
|
return listHighlight[i];
|
||||||
}
|
}
|
||||||
@@ -73,32 +82,32 @@ void HighlightManager::loadLanguages(void)
|
|||||||
Edn::String xmlFilename = homedir;
|
Edn::String xmlFilename = homedir;
|
||||||
xmlFilename += "lang_c.xml";
|
xmlFilename += "lang_c.xml";
|
||||||
Highlight *myHightline = new Highlight(xmlFilename);
|
Highlight *myHightline = new Highlight(xmlFilename);
|
||||||
listHighlight.push_back(myHightline);
|
listHighlight.PushBack(myHightline);
|
||||||
|
|
||||||
xmlFilename = homedir;
|
xmlFilename = homedir;
|
||||||
xmlFilename += "lang_boo.xml";
|
xmlFilename += "lang_boo.xml";
|
||||||
myHightline = new Highlight(xmlFilename);
|
myHightline = new Highlight(xmlFilename);
|
||||||
listHighlight.push_back(myHightline);
|
listHighlight.PushBack(myHightline);
|
||||||
|
|
||||||
xmlFilename = homedir;
|
xmlFilename = homedir;
|
||||||
xmlFilename += "lang_Makefile.xml";
|
xmlFilename += "lang_Makefile.xml";
|
||||||
myHightline = new Highlight(xmlFilename);
|
myHightline = new Highlight(xmlFilename);
|
||||||
listHighlight.push_back(myHightline);
|
listHighlight.PushBack(myHightline);
|
||||||
|
|
||||||
xmlFilename = homedir;
|
xmlFilename = homedir;
|
||||||
xmlFilename += "lang_asm.xml";
|
xmlFilename += "lang_asm.xml";
|
||||||
myHightline = new Highlight(xmlFilename);
|
myHightline = new Highlight(xmlFilename);
|
||||||
listHighlight.push_back(myHightline);
|
listHighlight.PushBack(myHightline);
|
||||||
|
|
||||||
xmlFilename = homedir;
|
xmlFilename = homedir;
|
||||||
xmlFilename += "lang_xml.xml";
|
xmlFilename += "lang_xml.xml";
|
||||||
myHightline = new Highlight(xmlFilename);
|
myHightline = new Highlight(xmlFilename);
|
||||||
listHighlight.push_back(myHightline);
|
listHighlight.PushBack(myHightline);
|
||||||
|
|
||||||
xmlFilename = homedir;
|
xmlFilename = homedir;
|
||||||
xmlFilename += "lang_php.xml";
|
xmlFilename += "lang_php.xml";
|
||||||
myHightline = new Highlight(xmlFilename);
|
myHightline = new Highlight(xmlFilename);
|
||||||
listHighlight.push_back(myHightline);
|
listHighlight.PushBack(myHightline);
|
||||||
|
|
||||||
myHightline->Display();
|
myHightline->Display();
|
||||||
}
|
}
|
||||||
|
@@ -29,8 +29,6 @@
|
|||||||
class HighlightManager;
|
class HighlightManager;
|
||||||
|
|
||||||
#include "Singleton.h"
|
#include "Singleton.h"
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#include "Highlight.h"
|
#include "Highlight.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -49,7 +47,7 @@ class HighlightManager: public Singleton<HighlightManager>
|
|||||||
bool Exist(Edn::File &fileName);
|
bool Exist(Edn::File &fileName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<Highlight*> listHighlight; //!< List of ALL hightlight modules
|
Edn::VectorType<Highlight*> listHighlight; //!< List of ALL hightlight modules
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -190,6 +190,19 @@ void HighlightPattern::ParseRules(TiXmlNode *child, int32_t level)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Find Element only in the specify start characters and find the end with the range done
|
||||||
|
*
|
||||||
|
* @param[in] start First character to search data (if recognise it start here)
|
||||||
|
* @param[in] stop End of the possibility whe search can continue
|
||||||
|
* @param[out] resultat Position where find data
|
||||||
|
* @param[in] buffer : Where to search data
|
||||||
|
*
|
||||||
|
* @return HLP_FIND_OK We find a compleate pattern
|
||||||
|
* @return HLP_FIND_OK_NO_END Xe find a partial pattern (missing end)
|
||||||
|
* @return HLP_FIND_ERROR Not find the pattern
|
||||||
|
*/
|
||||||
resultFind_te HighlightPattern::Find(int32_t start, int32_t stop, colorInformation_ts &resultat, EdnVectorBuf &buffer)
|
resultFind_te HighlightPattern::Find(int32_t start, int32_t stop, colorInformation_ts &resultat, EdnVectorBuf &buffer)
|
||||||
{
|
{
|
||||||
//EDN_DEBUG(" try to find the element");
|
//EDN_DEBUG(" try to find the element");
|
||||||
@@ -202,7 +215,7 @@ resultFind_te HighlightPattern::Find(int32_t start, int32_t stop, colorInformati
|
|||||||
|
|
||||||
// when we have only one element :
|
// when we have only one element :
|
||||||
if (false == m_haveStopPatern) {
|
if (false == m_haveStopPatern) {
|
||||||
if (true == m_regExpStart->Process(buffer, start, stop)) {
|
if (true == m_regExpStart->ProcessOneElement(buffer, start, stop)) {
|
||||||
resultat.beginStart = m_regExpStart->Start();
|
resultat.beginStart = m_regExpStart->Start();
|
||||||
resultat.beginStop = m_regExpStart->Stop();
|
resultat.beginStop = m_regExpStart->Stop();
|
||||||
resultat.endStart = m_regExpStart->Start();
|
resultat.endStart = m_regExpStart->Start();
|
||||||
@@ -212,7 +225,7 @@ resultFind_te HighlightPattern::Find(int32_t start, int32_t stop, colorInformati
|
|||||||
//EDN_DEBUG("NOT find hightlightpatern ...");
|
//EDN_DEBUG("NOT find hightlightpatern ...");
|
||||||
} else {
|
} else {
|
||||||
// try while we find the first element
|
// try while we find the first element
|
||||||
if (true == m_regExpStart->Process(buffer, start, stop, m_escapeChar)) {
|
if (true == m_regExpStart->ProcessOneElement(buffer, start, stop, m_escapeChar)) {
|
||||||
resultat.beginStart = m_regExpStart->Start();
|
resultat.beginStart = m_regExpStart->Start();
|
||||||
resultat.beginStop = m_regExpStart->Stop();
|
resultat.beginStop = m_regExpStart->Stop();
|
||||||
if (true == m_regExpStop->Process(buffer, resultat.beginStop, stop, m_escapeChar)) {
|
if (true == m_regExpStop->Process(buffer, resultat.beginStop, stop, m_escapeChar)) {
|
||||||
|
@@ -65,7 +65,7 @@ class HighlightPattern {
|
|||||||
|
|
||||||
bool IsEnable(void);
|
bool IsEnable(void);
|
||||||
void Display(void);
|
void Display(void);
|
||||||
resultFind_te Find(int32_t start, int32_t stop, colorInformation_ts &resultat, EdnVectorBuf &buffer);
|
resultFind_te Find(int32_t start, int32_t stop, colorInformation_ts &resultat, EdnVectorBuf &buffer);
|
||||||
Colorize * GetColor(void) { return m_color; };
|
Colorize * GetColor(void) { return m_color; };
|
||||||
void ParseRules(TiXmlNode *child, int32_t level);
|
void ParseRules(TiXmlNode *child, int32_t level);
|
||||||
|
|
||||||
@@ -79,8 +79,8 @@ class HighlightPattern {
|
|||||||
bool m_haveStopPatern; //!< Stop patern presence
|
bool m_haveStopPatern; //!< Stop patern presence
|
||||||
bool m_multiline; //!< The patern is multiline
|
bool m_multiline; //!< The patern is multiline
|
||||||
char m_escapeChar; //!< Escape char to prevent exeit of patern ....
|
char m_escapeChar; //!< Escape char to prevent exeit of patern ....
|
||||||
Edn::VectorType<HighlightPattern *> m_subPatern; //!< Under patern of this one
|
Edn::VectorType<HighlightPattern *> m_subPatern; //!< Under patern of this one
|
||||||
// Edn::VectorType<HighlightPattern *> m_subColor; //!< Under Color in the start RegExp ...
|
// Edn::VectorType<HighlightPattern *> m_subColor; //!< Under Color in the start RegExp ...
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -160,56 +160,45 @@ void CTagsManager::AddToHistory(int32_t bufferID)
|
|||||||
// add the current element
|
// add the current element
|
||||||
BufferManager *myBufferManager = BufferManager::getInstance();
|
BufferManager *myBufferManager = BufferManager::getInstance();
|
||||||
Edn::File currentFilename = myBufferManager->Get(bufferID)->GetFileName();
|
Edn::File currentFilename = myBufferManager->Get(bufferID)->GetFileName();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
CTAGS_COL_FILE = 0,
|
CTAGS_COL_FILE = 0,
|
||||||
CTAGS_COL_REGEXP,
|
CTAGS_COL_LINE_NUMBER,
|
||||||
CTAGS_NUM_COLS
|
CTAGS_NUM_COLS
|
||||||
};
|
};
|
||||||
|
|
||||||
static GtkTreeModel * create_and_fill_model(void)
|
GtkTreeModel * CTagsManager::CreateAndFillModel(void)
|
||||||
{
|
{
|
||||||
GtkListStore * store;
|
GtkListStore * store;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
store = gtk_list_store_new(CTAGS_NUM_COLS, G_TYPE_STRING, G_TYPE_STRING);
|
store = gtk_list_store_new(CTAGS_NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
|
||||||
|
|
||||||
// Append a row and fill in some data
|
// Append a row and fill in some data
|
||||||
gtk_list_store_append(store, &iter);
|
for (int32_t iii=0; iii<m_currentList.Size() ; iii++) {
|
||||||
gtk_list_store_set(store, &iter,
|
gtk_list_store_append(store, &iter);
|
||||||
CTAGS_COL_FILE, "file1.c",
|
gtk_list_store_set(store, &iter,
|
||||||
CTAGS_COL_REGEXP, "void function1(void);",
|
CTAGS_COL_FILE, m_currentList[iii].filename,
|
||||||
-1);
|
CTAGS_COL_LINE_NUMBER, m_currentList[iii].lineID,
|
||||||
|
-1);
|
||||||
gtk_list_store_append(store, &iter);
|
}
|
||||||
gtk_list_store_set(store, &iter,
|
|
||||||
CTAGS_COL_FILE, "file2.c",
|
|
||||||
CTAGS_COL_REGEXP, "void function2(void);",
|
|
||||||
-1);
|
|
||||||
|
|
||||||
gtk_list_store_append(store, &iter);
|
|
||||||
gtk_list_store_set(store, &iter,
|
|
||||||
CTAGS_COL_FILE, "file3.c",
|
|
||||||
CTAGS_COL_REGEXP, "void function3(void);",
|
|
||||||
-1);
|
|
||||||
|
|
||||||
return GTK_TREE_MODEL(store);
|
return GTK_TREE_MODEL(store);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget * create_view_and_model(void)
|
GtkWidget * CTagsManager::CreateViewAndModel(void)
|
||||||
{
|
{
|
||||||
GtkCellRenderer * renderer;
|
|
||||||
GtkTreeModel * model;
|
|
||||||
GtkWidget * view;
|
|
||||||
|
|
||||||
|
GtkCellRenderer * renderer;
|
||||||
|
GtkTreeModel * model;
|
||||||
|
GtkWidget * view;
|
||||||
view = gtk_tree_view_new();
|
view = gtk_tree_view_new();
|
||||||
|
|
||||||
// Column 1
|
// Column 1
|
||||||
renderer = gtk_cell_renderer_text_new();
|
renderer = gtk_cell_renderer_text_new();
|
||||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW (view),
|
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
|
||||||
-1,
|
-1,
|
||||||
"File",
|
"File",
|
||||||
renderer,
|
renderer,
|
||||||
@@ -218,14 +207,14 @@ static GtkWidget * create_view_and_model(void)
|
|||||||
|
|
||||||
// Column 2
|
// Column 2
|
||||||
renderer = gtk_cell_renderer_text_new();
|
renderer = gtk_cell_renderer_text_new();
|
||||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW (view),
|
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
|
||||||
-1,
|
-1,
|
||||||
"Regular Expression",
|
"lineNumber",
|
||||||
renderer,
|
renderer,
|
||||||
"text", CTAGS_COL_REGEXP,
|
"text", CTAGS_COL_LINE_NUMBER,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
model = create_and_fill_model();
|
model = CreateAndFillModel();
|
||||||
|
|
||||||
gtk_tree_view_set_model(GTK_TREE_VIEW (view), model);
|
gtk_tree_view_set_model(GTK_TREE_VIEW (view), model);
|
||||||
|
|
||||||
@@ -238,7 +227,7 @@ static GtkWidget * create_view_and_model(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CTagsManager::MultipleJump(void)
|
int32_t CTagsManager::MultipleJump(void)
|
||||||
{
|
{
|
||||||
// dlg to confirm the quit event :
|
// dlg to confirm the quit event :
|
||||||
GtkWidget *myDialog = gtk_dialog_new_with_buttons("C-Tags jump...",
|
GtkWidget *myDialog = gtk_dialog_new_with_buttons("C-Tags jump...",
|
||||||
@@ -251,20 +240,65 @@ void CTagsManager::MultipleJump(void)
|
|||||||
//gtk_window_set_transient_for(GTK_WINDOW(myDialog), GTK_WINDOW(m_mainWindow->GetWidget()));
|
//gtk_window_set_transient_for(GTK_WINDOW(myDialog), GTK_WINDOW(m_mainWindow->GetWidget()));
|
||||||
// add writting area
|
// add writting area
|
||||||
GtkWidget *myContentArea = gtk_dialog_get_content_area( GTK_DIALOG(myDialog));
|
GtkWidget *myContentArea = gtk_dialog_get_content_area( GTK_DIALOG(myDialog));
|
||||||
GtkWidget *listView = create_view_and_model ();
|
GtkWidget *listView = CreateViewAndModel();
|
||||||
gtk_box_pack_start(GTK_BOX(myContentArea), listView, TRUE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(myContentArea), listView, TRUE, TRUE, 0);
|
||||||
// Display it
|
// Display it
|
||||||
gtk_widget_show_all(myContentArea);
|
gtk_widget_show_all(myContentArea);
|
||||||
int32_t result = gtk_dialog_run (GTK_DIALOG (myDialog));
|
int32_t result = gtk_dialog_run(GTK_DIALOG(myDialog));
|
||||||
// Get data from the gtk entry
|
// Get data from the gtk entry
|
||||||
|
result = 0; // remove warning
|
||||||
|
|
||||||
|
//GtkTreeIter *myIter;
|
||||||
|
//gtk_tree_selection_get_selected(selection, &model, myIter);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Remove dialogue
|
// Remove dialogue
|
||||||
gtk_widget_destroy(myDialog);
|
gtk_widget_destroy(myDialog);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
void BufferView::OnCtagsEventList(GtkWidget *menuitem, gpointer data)
|
||||||
|
{
|
||||||
|
//BufferView * self = reinterpret_cast<BufferView*>(data);
|
||||||
|
//self->SendMessage(EDN_MSG__GUI_SHOW_SAVE_AS, self->m_contectMenuSelectID);
|
||||||
|
//self->m_contectMenuSelectID = -1;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
void CTagsManager::JumpAtID(int32_t selectID)
|
||||||
|
{
|
||||||
|
BufferManager *myBufferManager = BufferManager::getInstance();
|
||||||
|
Edn::File myFile = m_currentList[0].filename;
|
||||||
|
EDN_INFO(" OPEN the TAG file Destination : " << myFile );
|
||||||
|
if (false == myBufferManager->Exist(myFile) ) {
|
||||||
|
// need to open the file :
|
||||||
|
int32_t openID = myBufferManager->Open(myFile);
|
||||||
|
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, openID);
|
||||||
|
} else {
|
||||||
|
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, myBufferManager->GetId(myFile));
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
int32_t localId = myBufferManager->GetId(myFile);
|
||||||
|
Edn::String pattern = entry.address.pattern;
|
||||||
|
EDN_DEBUG("try to find line with : \"" << pattern << "\"" );
|
||||||
|
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 << "\"" );
|
||||||
|
int32_t destLine = myBufferManager->Get(localId)->FindLine(pattern);
|
||||||
|
SendMessage(EDN_MSG__CURRENT_GOTO_LINE, destLine);
|
||||||
|
*/
|
||||||
|
SendMessage(EDN_MSG__CURRENT_GOTO_LINE, m_currentList[0].lineID);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void CTagsManager::JumpTo(void)
|
void CTagsManager::JumpTo(void)
|
||||||
{
|
{
|
||||||
MultipleJump();
|
m_currentList.Clear();
|
||||||
if (NULL != m_ctagFile) {
|
if (NULL != m_ctagFile) {
|
||||||
Edn::VectorType<int8_t> data;
|
Edn::VectorType<int8_t> data;
|
||||||
// get the middle button of the clipboard ==> represent the current selection ...
|
// get the middle button of the clipboard ==> represent the current selection ...
|
||||||
@@ -276,33 +310,37 @@ void CTagsManager::JumpTo(void)
|
|||||||
data.PushBack('\0');
|
data.PushBack('\0');
|
||||||
EDN_INFO("try to find the tag : " << (const char *)&data[0]);
|
EDN_INFO("try to find the tag : " << (const char *)&data[0]);
|
||||||
if (tagsFind (m_ctagFile, &entry, (const char *)&data[0], 0) == TagSuccess) {
|
if (tagsFind (m_ctagFile, &entry, (const char *)&data[0], 0) == TagSuccess) {
|
||||||
//EDN_INFO("find the tag");
|
tagEntry entrySave = entry;
|
||||||
BufferManager *myBufferManager = BufferManager::getInstance();
|
int32_t numberOfTags = 0;
|
||||||
Edn::String destinationFilename = m_tagFolderBase;
|
|
||||||
destinationFilename += entry.file;
|
// For all tags : Save in an internal Structure :
|
||||||
Edn::File myfile = destinationFilename;
|
|
||||||
EDN_INFO(" OPEN the TAG file Destination : " << myfile );
|
|
||||||
if (false == myBufferManager->Exist(myfile) ) {
|
|
||||||
// need to open the file :
|
|
||||||
int32_t openID = myBufferManager->Open(myfile);
|
|
||||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, openID);
|
|
||||||
} else {
|
|
||||||
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, myBufferManager->GetId(myfile));
|
|
||||||
}
|
|
||||||
int32_t localId = myBufferManager->GetId(myfile);
|
|
||||||
Edn::String pattern = entry.address.pattern;
|
|
||||||
EDN_DEBUG("try to find line with : \"" << pattern << "\"" );
|
|
||||||
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 << "\"" );
|
|
||||||
int32_t destLine = myBufferManager->Get(localId)->FindLine(pattern);
|
|
||||||
SendMessage(EDN_MSG__CURRENT_GOTO_LINE, destLine);
|
|
||||||
/*
|
|
||||||
do {
|
do {
|
||||||
PrintTag (&entry);
|
Edn::String destinationFilename = m_tagFolderBase;
|
||||||
|
destinationFilename += entry.file;
|
||||||
|
Edn::File myfile = destinationFilename;
|
||||||
|
TagListFind_ts myStruct;
|
||||||
|
strncpy(myStruct.filename, myfile.GetCompleateName().c_str(), MAX_FILE_NAME);
|
||||||
|
myStruct.filename[MAX_FILE_NAME-1] = '\0';
|
||||||
|
strncpy(myStruct.RegExp, entry.address.pattern, MAX_REG_EXP_SEARCH);
|
||||||
|
myStruct.RegExp[MAX_REG_EXP_SEARCH-1] = '\0';
|
||||||
|
myStruct.lineID = entry.address.lineNumber;
|
||||||
|
// at at the corect position
|
||||||
|
m_currentList.PushBack(myStruct);
|
||||||
|
PrintTag(&entry, true);
|
||||||
|
} while (tagsFindNext (m_ctagFile, &entry) == TagSuccess);
|
||||||
|
|
||||||
|
|
||||||
|
if (1==m_currentList.Size() ) {
|
||||||
|
JumpAtID(0);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Open a choice windows...
|
||||||
|
int32_t SelectID = MultipleJump();
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
// Display all the element :
|
||||||
|
do {
|
||||||
|
PrintTag(&entry, true);
|
||||||
} while (tagsFindNext (m_ctagFile, &entry) == TagSuccess);
|
} while (tagsFindNext (m_ctagFile, &entry) == TagSuccess);
|
||||||
*/
|
*/
|
||||||
} else {
|
} else {
|
||||||
@@ -311,21 +349,26 @@ void CTagsManager::JumpTo(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTagsManager::PrintTag (const tagEntry *entry)
|
void CTagsManager::PrintTag (const tagEntry *entry, bool small)
|
||||||
{
|
{
|
||||||
int i;
|
if (small==true) {
|
||||||
EDN_INFO("find Tag file : name=\"" << entry->name << "\" in file=\"" << entry->file
|
EDN_INFO("find Tag file : name=\"" << entry->name << "\" in file=\"" << entry->file
|
||||||
<< "\" pattern=\"" <<entry->address.pattern
|
<< "\" at line="<< entry->address.lineNumber);
|
||||||
<< "\" at line="<<entry->address.lineNumber);
|
} else {
|
||||||
|
int i;
|
||||||
EDN_INFO("Extention field : ");
|
EDN_INFO("find Tag file : name=\"" << entry->name << "\" in file=\"" << entry->file
|
||||||
if (entry->kind != NULL && entry->kind [0] != '\0') {
|
<< "\" pattern=\"" <<entry->address.pattern
|
||||||
EDN_INFO(" kind : " << entry->kind);
|
<< "\" at line="<<entry->address.lineNumber);
|
||||||
}
|
|
||||||
if (entry->fileScope) {
|
EDN_INFO("Extention field : ");
|
||||||
EDN_INFO(" file : ");
|
if (entry->kind != NULL && entry->kind [0] != '\0') {
|
||||||
}
|
EDN_INFO(" kind : " << entry->kind);
|
||||||
for (i = 0 ; i < entry->fields.count ; ++i) {
|
}
|
||||||
EDN_INFO(" " << entry->fields.list[i].key << ":" << entry->fields.list[i].value );
|
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 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -32,6 +32,14 @@
|
|||||||
#include "readtags.h"
|
#include "readtags.h"
|
||||||
#include "Edn.h"
|
#include "Edn.h"
|
||||||
|
|
||||||
|
#define MAX_REG_EXP_SEARCH (1024)
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
char filename[MAX_FILE_NAME];
|
||||||
|
char RegExp[MAX_REG_EXP_SEARCH];
|
||||||
|
int32_t lineID;
|
||||||
|
} TagListFind_ts;
|
||||||
|
|
||||||
|
|
||||||
class CTagsManager: public Singleton<CTagsManager>, public MsgBroadcast
|
class CTagsManager: public Singleton<CTagsManager>, public MsgBroadcast
|
||||||
{
|
{
|
||||||
@@ -47,9 +55,9 @@ class CTagsManager: public Singleton<CTagsManager>, public MsgBroadcast
|
|||||||
private:
|
private:
|
||||||
int32_t m_currentSelectedID;
|
int32_t m_currentSelectedID;
|
||||||
void LoadTagFile(void);
|
void LoadTagFile(void);
|
||||||
void MultipleJump(void);
|
int32_t MultipleJump(void);
|
||||||
void JumpTo(void);
|
void JumpTo(void);
|
||||||
void PrintTag(const tagEntry *entry);
|
void PrintTag(const tagEntry *entry, bool small);
|
||||||
Edn::String GetFolder(Edn::String &inputString);
|
Edn::String GetFolder(Edn::String &inputString);
|
||||||
Edn::String m_tagFolderBase;
|
Edn::String m_tagFolderBase;
|
||||||
Edn::String m_tagFilename;
|
Edn::String m_tagFilename;
|
||||||
@@ -58,6 +66,12 @@ class CTagsManager: public Singleton<CTagsManager>, public MsgBroadcast
|
|||||||
void AddToHistory(int32_t bufferID);
|
void AddToHistory(int32_t bufferID);
|
||||||
int32_t m_historyPos;
|
int32_t m_historyPos;
|
||||||
Edn::VectorType<Edn::File*> m_historyList;
|
Edn::VectorType<Edn::File*> m_historyList;
|
||||||
|
Edn::VectorType<TagListFind_ts> m_currentList;
|
||||||
|
void JumpAtID(int32_t selectID);
|
||||||
|
GtkTreeModel * CreateAndFillModel(void);
|
||||||
|
GtkWidget * CreateViewAndModel(void);
|
||||||
|
|
||||||
|
// TMP Val :
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -246,7 +246,6 @@ void DrawerManager::Text(color_ts & SelectColorFg, color_ts & SelectColorBg, int
|
|||||||
cairo_set_font_face(m_cairo, Display::GetFont(false, false));
|
cairo_set_font_face(m_cairo, Display::GetFont(false, false));
|
||||||
int32_t letterHeight = Display::GetFontHeight();
|
int32_t letterHeight = Display::GetFontHeight();
|
||||||
int32_t letterWidth = Display::GetFontWidth();
|
int32_t letterWidth = Display::GetFontWidth();
|
||||||
int32_t stringLen = strUtf8Len(myText);
|
|
||||||
DirectRectangle(SelectColorBg, x, y, letterWidth*strlen(myText), letterHeight);
|
DirectRectangle(SelectColorBg, x, y, letterWidth*strlen(myText), letterHeight);
|
||||||
cairo_fill(m_cairo);
|
cairo_fill(m_cairo);
|
||||||
cairo_move_to(m_cairo, x, y+letterHeight-4);
|
cairo_move_to(m_cairo, x, y+letterHeight-4);
|
||||||
|
@@ -26,11 +26,9 @@
|
|||||||
#ifndef __TOOLS_DISPLAY_H__
|
#ifndef __TOOLS_DISPLAY_H__
|
||||||
#define __TOOLS_DISPLAY_H__
|
#define __TOOLS_DISPLAY_H__
|
||||||
|
|
||||||
#include "tools_debug.h"
|
#include "tools_debug.h"
|
||||||
#include "Colorize.h"
|
#include "Colorize.h"
|
||||||
#include "ColorizeManager.h"
|
#include "ColorizeManager.h"
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -49,13 +49,13 @@ end *************** *************
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool selected; //!< True if the selection is active
|
bool selected; //!< True if the selection is active
|
||||||
bool rectangular; //!< True if the selection is rectangular
|
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.
|
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 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 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 rectStart; //!< Indent of left edge of rect. selection
|
||||||
int32_t rectEnd; //!< Indent of right edge of rect. selection
|
int32_t rectEnd; //!< Indent of right edge of rect. selection
|
||||||
} selection;
|
} selection;
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
@@ -67,10 +67,10 @@ typedef enum{
|
|||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
std::vector<colorInformation_ts> HLData;
|
Edn::VectorType<colorInformation_ts> HLData;
|
||||||
int32_t idSequence;
|
int32_t idSequence;
|
||||||
int32_t posHLPass1;
|
int32_t posHLPass1;
|
||||||
int32_t posHLPass2;
|
int32_t posHLPass2;
|
||||||
}displayHLData_ts;
|
}displayHLData_ts;
|
||||||
|
|
||||||
|
|
||||||
@@ -125,54 +125,54 @@ class EdnBuf {
|
|||||||
// selection remember...
|
// selection remember...
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
public:
|
public:
|
||||||
bool SelectHasSelection( selectionType_te select);
|
bool SelectHasSelection( selectionType_te select);
|
||||||
void Select( selectionType_te select, int32_t start, int32_t end);
|
void Select( selectionType_te select, int32_t start, int32_t end);
|
||||||
void Unselect( selectionType_te select);
|
void Unselect( selectionType_te select);
|
||||||
void RectSelect( selectionType_te select, int32_t start, int32_t end, int32_t rectStart, int32_t rectEnd);
|
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);
|
bool GetSelectionPos( selectionType_te select, int32_t &start, int32_t &end, bool &isRect, int32_t &rectStart, int32_t &rectEnd);
|
||||||
void GetSelectionText( selectionType_te select, Edn::VectorType<int8_t> &text);
|
void GetSelectionText( selectionType_te select, Edn::VectorType<int8_t> &text);
|
||||||
void RemoveSelected( selectionType_te select);
|
void RemoveSelected( selectionType_te select);
|
||||||
void ReplaceSelected( selectionType_te select, Edn::VectorType<int8_t> &text);
|
void ReplaceSelected( selectionType_te select, Edn::VectorType<int8_t> &text);
|
||||||
private:
|
private:
|
||||||
// current selection of the buffer
|
// current selection of the buffer
|
||||||
selection m_selectionList[SELECTION_SIZE]; //!< Selection area 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 UpdateSelection( selectionType_te select, int32_t pos, int32_t nDeleted, int32_t nInserted);
|
||||||
void UpdateSelections( int32_t pos, int32_t nDeleted, int32_t nInserted);
|
void UpdateSelections( int32_t pos, int32_t nDeleted, int32_t nInserted);
|
||||||
|
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
// History section :
|
// History section :
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
public:
|
public:
|
||||||
int32_t Undo( void);
|
int32_t Undo(void);
|
||||||
int32_t Redo( void);
|
int32_t Redo(void);
|
||||||
private:
|
private:
|
||||||
bool m_isUndoProcessing;
|
bool m_isUndoProcessing;
|
||||||
bool m_isRedoProcessing;
|
bool m_isRedoProcessing;
|
||||||
Edn::VectorType<EdnBufHistory*> m_historyUndo;
|
Edn::VectorType<EdnBufHistory*> m_historyUndo;
|
||||||
Edn::VectorType<EdnBufHistory*> m_historyRedo;
|
Edn::VectorType<EdnBufHistory*> m_historyRedo;
|
||||||
|
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
// hightlight section :
|
// hightlight section :
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
private:
|
private:
|
||||||
Highlight * m_Highlight; //!< internal link with the Highlight system
|
Highlight * m_Highlight; //!< internal link with the Highlight system
|
||||||
std::vector<colorInformation_ts> m_HLDataPass1; //!< colorisation position in the current buffer pass 1
|
Edn::VectorType<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
|
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 RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdded);
|
||||||
void GenerateHighLightAt(int32_t pos, int32_t endPos, int32_t addinPos=0);
|
void GenerateHighLightAt(int32_t pos, int32_t endPos, int32_t addinPos=0);
|
||||||
void CleanHighLight(void);
|
void CleanHighLight(void);
|
||||||
void FindMainHighLightPosition(int32_t startPos, int32_t endPos, int32_t &startId, int32_t &stopId, bool backPreviousNotEnded);
|
void FindMainHighLightPosition(int32_t startPos, int32_t endPos, int32_t &startId, int32_t &stopId, bool backPreviousNotEnded);
|
||||||
public:
|
public:
|
||||||
void SetHLSystem( Highlight * newHLSystem);
|
void SetHLSystem( Highlight * newHLSystem);
|
||||||
void HightlightGenerateLines(displayHLData_ts & MData, int32_t startPos, int32_t nbLines);
|
void HightlightGenerateLines(displayHLData_ts & MData, int32_t startPos, int32_t nbLines);
|
||||||
colorInformation_ts * GetElementColorAtPosition(displayHLData_ts & MData, int32_t pos);
|
colorInformation_ts * GetElementColorAtPosition(displayHLData_ts & MData, int32_t pos);
|
||||||
private:
|
private:
|
||||||
colorInformation_ts * GetElementColorAtPosition(int32_t pos, int32_t &starPos);
|
colorInformation_ts * GetElementColorAtPosition(int32_t pos, int32_t &starPos);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
EdnVectorBuf m_data; //!< buffer of the data in the mode int8_t
|
EdnVectorBuf m_data; //!< buffer of the data in the mode int8_t
|
||||||
void CountNumberOfLines(void);
|
void CountNumberOfLines(void);
|
||||||
int32_t m_nbLine; //!< Number of line in the biffer
|
int32_t m_nbLine; //!< Number of line in the biffer
|
||||||
|
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
// Display property and charset ...
|
// Display property and charset ...
|
||||||
@@ -186,27 +186,27 @@ class EdnBuf {
|
|||||||
void SetUTF8Mode(bool newOne) { m_isUtf8 = newOne; m_charsetType=EDN_CHARSET_UTF8; };
|
void SetUTF8Mode(bool newOne) { m_isUtf8 = newOne; m_charsetType=EDN_CHARSET_UTF8; };
|
||||||
private:
|
private:
|
||||||
// Special mode of the buffer :
|
// 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)
|
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
|
charset_te m_charsetType; //!< if UTF8 mode is at false : the charset type of the buffer
|
||||||
// Local Tabulation policies
|
// Local Tabulation policies
|
||||||
int32_t m_tabDist; //!< equiv. number of characters in a tab
|
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
|
bool m_useTabs; //!< True if buffer routines are allowed to use tabs for padding in rectangular operations
|
||||||
|
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
// Local function :
|
// Local function :
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
private:
|
private:
|
||||||
void findRectSelBoundariesForCopy( int32_t lineStartPos, int32_t rectStart, int32_t rectEnd, int32_t *selStart, int32_t *selEnd);
|
void findRectSelBoundariesForCopy( int32_t lineStartPos, int32_t rectStart, int32_t rectEnd, int32_t *selStart, int32_t *selEnd);
|
||||||
char *getSelectionText( selection &sel);
|
char * getSelectionText( selection &sel);
|
||||||
void removeSelected( selection &sel);
|
void removeSelected( selection &sel);
|
||||||
void replaceSelected( selection &sel, const char *text);
|
void replaceSelected( selection &sel, const char *text);
|
||||||
|
|
||||||
void eventModification( int32_t pos, int32_t nInserted, Edn::VectorType<int8_t> &deletedText);
|
void eventModification( int32_t pos, int32_t nInserted, Edn::VectorType<int8_t> &deletedText);
|
||||||
|
|
||||||
|
|
||||||
int32_t insert( int32_t pos, Edn::VectorType<int8_t> &insertText);
|
int32_t insert( int32_t pos, Edn::VectorType<int8_t> &insertText);
|
||||||
|
|
||||||
bool charMatch( char first, char second, bool caseSensitive = true);
|
bool charMatch( char first, char second, bool caseSensitive = true);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -35,12 +35,12 @@ void EdnBuf::SetHLSystem(Highlight * newHLSystem)
|
|||||||
{
|
{
|
||||||
if (m_Highlight != newHLSystem) {
|
if (m_Highlight != newHLSystem) {
|
||||||
m_Highlight = newHLSystem;
|
m_Highlight = newHLSystem;
|
||||||
m_HLDataPass1.clear();
|
m_HLDataPass1.Clear();
|
||||||
RegenerateHighLightAt(0, 0, m_data.Size());
|
RegenerateHighLightAt(0, 0, m_data.Size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO : Check this fuction it have too many conditionnal inside ==> can do a better algo
|
||||||
void EdnBuf::RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdded)
|
void EdnBuf::RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdded)
|
||||||
{
|
{
|
||||||
GTimeVal timeStart;
|
GTimeVal timeStart;
|
||||||
@@ -60,14 +60,23 @@ void EdnBuf::RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdd
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// normal case
|
// normal case
|
||||||
EDN_INFO("(pos="<<pos<<", nbDeleted="<<nbDeleted<<", nbAdded=" << nbAdded << "\");");
|
//EDN_INFO("(pos="<<pos<<", nbDeleted="<<nbDeleted<<", nbAdded=" << nbAdded << "\");");
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
/*
|
||||||
|
for (i=0; i< (int32_t)m_HLDataPass1.Size(); i++) {
|
||||||
|
Edn::String ploppp;
|
||||||
|
if (NULL != m_HLDataPass1[i].patern ) {
|
||||||
|
ploppp = ((HighlightPattern*)m_HLDataPass1[i].patern)->GetName();
|
||||||
|
}
|
||||||
|
EDN_DEBUG("HighLight (previous) element id=" << i << " S=" << m_HLDataPass1[i].beginStart << " E=" << m_HLDataPass1[i].endStop << " patern name=" << ploppp );
|
||||||
|
}
|
||||||
|
*/
|
||||||
int32_t posEnd = pos + nbDeleted;
|
int32_t posEnd = pos + nbDeleted;
|
||||||
// search position of the old element to reparse IT...
|
// search position of the old element to reparse IT...
|
||||||
int32_t startId;
|
int32_t startId;
|
||||||
int32_t stopId;
|
int32_t stopId;
|
||||||
// clean data if needed
|
// clean data if needed
|
||||||
if (0 != m_HLDataPass1.size()) {
|
if (0 != m_HLDataPass1.Size()) {
|
||||||
// find element previous
|
// find element previous
|
||||||
FindMainHighLightPosition(pos, posEnd, startId, stopId, true);
|
FindMainHighLightPosition(pos, posEnd, startId, stopId, true);
|
||||||
|
|
||||||
@@ -75,19 +84,37 @@ void EdnBuf::RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdd
|
|||||||
if( -1 == startId
|
if( -1 == startId
|
||||||
&& -1 == stopId)
|
&& -1 == stopId)
|
||||||
{
|
{
|
||||||
m_HLDataPass1.clear();
|
m_HLDataPass1.Clear();
|
||||||
} else if(-1 == startId) {
|
} else if(-1 == startId) {
|
||||||
if (0 == stopId){
|
if (0 == stopId){
|
||||||
m_HLDataPass1.erase(m_HLDataPass1.begin());
|
m_HLDataPass1.Erase(0);
|
||||||
|
//EDN_DEBUG("1 * Erase 0");
|
||||||
} else {
|
} else {
|
||||||
m_HLDataPass1.erase(m_HLDataPass1.begin(),m_HLDataPass1.begin()+stopId);
|
m_HLDataPass1.Erase(0,stopId);
|
||||||
|
//EDN_DEBUG("2 * Erase 0->" << stopId);
|
||||||
}
|
}
|
||||||
} else if(-1 == stopId) {
|
} else if(-1 == stopId) {
|
||||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1,m_HLDataPass1.end());
|
//EDN_DEBUG("3 * Erase " << startId+1 << "-> end");
|
||||||
|
m_HLDataPass1.Erase(startId+1, m_HLDataPass1.Size() - startId);
|
||||||
|
stopId = -1;
|
||||||
} else {
|
} else {
|
||||||
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1,m_HLDataPass1.begin()+stopId);
|
int32_t currentSize = m_HLDataPass1.Size();
|
||||||
|
//EDN_DEBUG("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" );
|
||||||
|
m_HLDataPass1.Erase(startId+1, stopId - startId);
|
||||||
|
if (stopId == currentSize-1) {
|
||||||
|
stopId = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
EDN_DEBUG("new size=" << (int32_t)m_HLDataPass1.size()-1);
|
//EDN_DEBUG("new size=" << (int32_t)m_HLDataPass1.Size()-1);
|
||||||
|
/*
|
||||||
|
for (i=0; i< (int32_t)m_HLDataPass1.Size(); i++) {
|
||||||
|
Edn::String ploppp;
|
||||||
|
if (NULL != m_HLDataPass1[i].patern ) {
|
||||||
|
ploppp = ((HighlightPattern*)m_HLDataPass1[i].patern)->GetName();
|
||||||
|
}
|
||||||
|
EDN_DEBUG("HighLight (Middle) element id=" << i << " S=" << m_HLDataPass1[i].beginStart << " E=" << m_HLDataPass1[i].endStop << " patern name=" << ploppp );
|
||||||
|
}
|
||||||
|
*/
|
||||||
// update position after the range position :
|
// update position after the range position :
|
||||||
int32_t elemStart;
|
int32_t elemStart;
|
||||||
if(-1 == startId) {
|
if(-1 == startId) {
|
||||||
@@ -95,7 +122,7 @@ void EdnBuf::RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdd
|
|||||||
} else {
|
} else {
|
||||||
elemStart = startId+1;
|
elemStart = startId+1;
|
||||||
}
|
}
|
||||||
for (i=elemStart; i< (int32_t)m_HLDataPass1.size(); i++) {
|
for (i=elemStart; i< (int32_t)m_HLDataPass1.Size(); i++) {
|
||||||
//EDN_DEBUG("move element=" << i);
|
//EDN_DEBUG("move element=" << i);
|
||||||
m_HLDataPass1[i].beginStart += nbAdded - nbDeleted;
|
m_HLDataPass1[i].beginStart += nbAdded - nbDeleted;
|
||||||
m_HLDataPass1[i].beginStop += nbAdded - nbDeleted;
|
m_HLDataPass1[i].beginStop += nbAdded - nbDeleted;
|
||||||
@@ -113,23 +140,24 @@ void EdnBuf::RegenerateHighLightAt(int32_t pos, int32_t nbDeleted, int32_t nbAdd
|
|||||||
GenerateHighLightAt(0, m_HLDataPass1[0].beginStart, 0);
|
GenerateHighLightAt(0, m_HLDataPass1[0].beginStart, 0);
|
||||||
} else if(-1 == stopId) {
|
} else if(-1 == stopId) {
|
||||||
//EDN_DEBUG("******* Regenerate STOP");
|
//EDN_DEBUG("******* Regenerate STOP");
|
||||||
GenerateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].endStop, m_data.Size(), m_HLDataPass1.size());
|
GenerateHighLightAt(m_HLDataPass1[m_HLDataPass1.Size() -1].endStop, m_data.Size(), m_HLDataPass1.Size());
|
||||||
} else {
|
} else {
|
||||||
//EDN_DEBUG("******* Regenerate RANGE");
|
//EDN_DEBUG("******* Regenerate RANGE");
|
||||||
GenerateHighLightAt(m_HLDataPass1[startId].endStop, m_HLDataPass1[startId+1].beginStart, startId+1);
|
GenerateHighLightAt(m_HLDataPass1[startId].endStop, m_HLDataPass1[startId+1].beginStart, startId+1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Parse the new element ...
|
// Parse the new element ...
|
||||||
//GenerateHighLightAt(pos, nbAdded);
|
|
||||||
GenerateHighLightAt(0, m_data.Size());
|
GenerateHighLightAt(0, m_data.Size());
|
||||||
}
|
}
|
||||||
for (i=0; i< (int32_t)m_HLDataPass1.size(); i++) {
|
/*
|
||||||
|
for (i=0; i< (int32_t)m_HLDataPass1.Size(); i++) {
|
||||||
Edn::String ploppp;
|
Edn::String ploppp;
|
||||||
if (NULL != m_HLDataPass1[i].patern ) {
|
if (NULL != m_HLDataPass1[i].patern ) {
|
||||||
ploppp = ((HighlightPattern*)m_HLDataPass1[i].patern)->GetName();
|
ploppp = ((HighlightPattern*)m_HLDataPass1[i].patern)->GetName();
|
||||||
}
|
}
|
||||||
//EDN_DEBUG("HighLight element id=" << i << " S=" << m_HLDataPass1[i].beginStart << " E=" << m_HLDataPass1[i].endStop << " patern name=" << ploppp.c_str() );
|
EDN_DEBUG("HighLight (end) element id=" << i << " S=" << m_HLDataPass1[i].beginStart << " E=" << m_HLDataPass1[i].endStop << " patern name=" << ploppp );
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
GTimeVal timeStop;
|
GTimeVal timeStop;
|
||||||
g_get_current_time(&timeStop);
|
g_get_current_time(&timeStop);
|
||||||
EDN_DEBUG("HL General = " << timeStop.tv_usec - timeStart.tv_usec << " micro-s");
|
EDN_DEBUG("HL General = " << timeStop.tv_usec - timeStart.tv_usec << " micro-s");
|
||||||
@@ -177,7 +205,7 @@ void EdnBuf::FindMainHighLightPosition(int32_t startPos, int32_t endPos, int32_t
|
|||||||
S=-1 *************** E
|
S=-1 *************** E
|
||||||
*/
|
*/
|
||||||
int32_t i;
|
int32_t i;
|
||||||
for (i=0; i< (int32_t)m_HLDataPass1.size(); i++) {
|
for (i=0; i< (int32_t)m_HLDataPass1.Size(); i++) {
|
||||||
if (m_HLDataPass1[i].endStop > startPos) {
|
if (m_HLDataPass1[i].endStop > startPos) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -198,7 +226,7 @@ void EdnBuf::FindMainHighLightPosition(int32_t startPos, int32_t endPos, int32_t
|
|||||||
} else {
|
} else {
|
||||||
elemStart = startId+1;
|
elemStart = startId+1;
|
||||||
}
|
}
|
||||||
for (i=elemStart; i< (int32_t)m_HLDataPass1.size(); i++) {
|
for (i=elemStart; i< (int32_t)m_HLDataPass1.Size(); i++) {
|
||||||
if (m_HLDataPass1[i].beginStart > endPos)
|
if (m_HLDataPass1[i].beginStart > endPos)
|
||||||
{
|
{
|
||||||
stopId = i;
|
stopId = i;
|
||||||
@@ -206,13 +234,13 @@ void EdnBuf::FindMainHighLightPosition(int32_t startPos, int32_t endPos, int32_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
if (-1 != startId && startId < (int32_t)m_HLDataPass1.size()) {
|
if (-1 != startId && startId < (int32_t)m_HLDataPass1.Size()) {
|
||||||
EDN_DEBUG("==> BEGIN : start="<<m_HLDataPass1[startId].beginStart<<", stop="<<m_HLDataPass1[startId].endStop<<" id=" << startId << "/" << (int32_t)m_HLDataPass1.size()-1);
|
EDN_DEBUG("==> BEGIN : start="<<m_HLDataPass1[startId].beginStart<<", stop="<<m_HLDataPass1[startId].endStop<<" id=" << startId << "/" << (int32_t)m_HLDataPass1.Size()-1);
|
||||||
} else {
|
} else {
|
||||||
EDN_DEBUG("==> BEGIN : start=???, stop=??? id=" << startId);
|
EDN_DEBUG("==> BEGIN : start=???, stop=??? id=" << startId);
|
||||||
}
|
}
|
||||||
if (-1 != stopId && stopId < (int32_t)m_HLDataPass1.size()) {
|
if (-1 != stopId && stopId < (int32_t)m_HLDataPass1.Size()) {
|
||||||
EDN_DEBUG("==> END : start="<<m_HLDataPass1[stopId].beginStart<<", stop="<<m_HLDataPass1[stopId].endStop<<" id=" << stopId<< "/" << (int32_t)m_HLDataPass1.size()-1);
|
EDN_DEBUG("==> END : start="<<m_HLDataPass1[stopId].beginStart<<", stop="<<m_HLDataPass1[stopId].endStop<<" id=" << stopId<< "/" << (int32_t)m_HLDataPass1.Size()-1);
|
||||||
} else {
|
} else {
|
||||||
EDN_DEBUG("==> END : start=???, stop=??? id=" << stopId);
|
EDN_DEBUG("==> END : start=???, stop=??? id=" << stopId);
|
||||||
}
|
}
|
||||||
@@ -236,7 +264,7 @@ void EdnBuf::GenerateHighLightAt(int32_t pos, int32_t endPos, int32_t addinPos)
|
|||||||
void EdnBuf::CleanHighLight(void)
|
void EdnBuf::CleanHighLight(void)
|
||||||
{
|
{
|
||||||
// Remove all element in the list...
|
// Remove all element in the list...
|
||||||
m_HLDataPass1.clear();
|
m_HLDataPass1.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -244,7 +272,7 @@ colorInformation_ts *EdnBuf::GetElementColorAtPosition(int32_t pos, int32_t &sta
|
|||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
int32_t start = edn_max(0, starPos-1);
|
int32_t start = edn_max(0, starPos-1);
|
||||||
for (i=start; i<(int32_t)m_HLDataPass1.size(); i++) {
|
for (i=start; i<(int32_t)m_HLDataPass1.Size(); i++) {
|
||||||
starPos = i;
|
starPos = i;
|
||||||
if( m_HLDataPass1[i].beginStart <= pos
|
if( m_HLDataPass1[i].beginStart <= pos
|
||||||
&& m_HLDataPass1[i].endStop > pos)
|
&& m_HLDataPass1[i].endStop > pos)
|
||||||
@@ -272,7 +300,7 @@ void EdnBuf::HightlightGenerateLines(displayHLData_ts & MData, int32_t HLStart,
|
|||||||
g_get_current_time(&timeStart);
|
g_get_current_time(&timeStart);
|
||||||
MData.idSequence = m_HLDataSequence;
|
MData.idSequence = m_HLDataSequence;
|
||||||
HLStart = StartOfLine(HLStart);
|
HLStart = StartOfLine(HLStart);
|
||||||
MData.HLData.clear();
|
MData.HLData.Clear();
|
||||||
int32_t HLStop = CountForwardNLines(HLStart, nbLines);
|
int32_t HLStop = CountForwardNLines(HLStart, nbLines);
|
||||||
int32_t startId, stopId;
|
int32_t startId, stopId;
|
||||||
// find element previous
|
// find element previous
|
||||||
@@ -282,7 +310,7 @@ void EdnBuf::HightlightGenerateLines(displayHLData_ts & MData, int32_t HLStart,
|
|||||||
//EDN_DEBUG("List of section between : "<< startId << " & " << stopId);
|
//EDN_DEBUG("List of section between : "<< startId << " & " << stopId);
|
||||||
int32_t endSearch = stopId+1;
|
int32_t endSearch = stopId+1;
|
||||||
if (-1 == stopId) {
|
if (-1 == stopId) {
|
||||||
endSearch = m_HLDataPass1.size();
|
endSearch = m_HLDataPass1.Size();
|
||||||
}
|
}
|
||||||
for (k=edn_max(startId, 0); k<endSearch; k++) {
|
for (k=edn_max(startId, 0); k<endSearch; k++) {
|
||||||
// empty section :
|
// empty section :
|
||||||
@@ -305,9 +333,9 @@ void EdnBuf::HightlightGenerateLines(displayHLData_ts & MData, int32_t HLStart,
|
|||||||
//EDN_DEBUG(" ==> (under section ) k="<<k<<" start="<<m_HLDataPass1[k].beginStart<<" stop="<<m_HLDataPass1[k].endStop << " subSectionOfID=" << 99999999);
|
//EDN_DEBUG(" ==> (under section ) k="<<k<<" start="<<m_HLDataPass1[k].beginStart<<" stop="<<m_HLDataPass1[k].endStop << " subSectionOfID=" << 99999999);
|
||||||
// TODO : ...
|
// TODO : ...
|
||||||
}
|
}
|
||||||
if (endSearch == (int32_t)m_HLDataPass1.size() ){
|
if (endSearch == (int32_t)m_HLDataPass1.Size() ){
|
||||||
//if( k < (int32_t)m_HLDataPass1.size()) {
|
//if( k < (int32_t)m_HLDataPass1.Size()) {
|
||||||
if (m_HLDataPass1.size() != 0) {
|
if (m_HLDataPass1.Size() != 0) {
|
||||||
//EDN_DEBUG(" ==> (empty section 3 ) k="<<k<<" start="<<m_HLDataPass1[k-1].endStop<<" stop="<<HLStop );
|
//EDN_DEBUG(" ==> (empty section 3 ) k="<<k<<" start="<<m_HLDataPass1[k-1].endStop<<" stop="<<HLStop );
|
||||||
m_Highlight->Parse2(m_HLDataPass1[k-1].endStop,
|
m_Highlight->Parse2(m_HLDataPass1[k-1].endStop,
|
||||||
HLStop,
|
HLStop,
|
||||||
@@ -334,7 +362,7 @@ colorInformation_ts * EdnBuf::GetElementColorAtPosition(displayHLData_ts & MData
|
|||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
int32_t start = edn_max(0, MData.posHLPass2-1);
|
int32_t start = edn_max(0, MData.posHLPass2-1);
|
||||||
for (i=start; i<(int32_t)MData.HLData.size(); i++) {
|
for (i=start; i<(int32_t)MData.HLData.Size(); i++) {
|
||||||
MData.posHLPass2 = i;
|
MData.posHLPass2 = i;
|
||||||
if( MData.HLData[i].beginStart <= pos
|
if( MData.HLData[i].beginStart <= pos
|
||||||
&& MData.HLData[i].endStop > pos)
|
&& MData.HLData[i].endStop > pos)
|
||||||
|
@@ -28,7 +28,6 @@
|
|||||||
#include "tools_globals.h"
|
#include "tools_globals.h"
|
||||||
#include "Edn.h"
|
#include "Edn.h"
|
||||||
|
|
||||||
#define MAX_FILE_NAME (10240)
|
|
||||||
|
|
||||||
#undef __class__
|
#undef __class__
|
||||||
#define __class__ "Edn::File"
|
#define __class__ "Edn::File"
|
||||||
@@ -154,7 +153,7 @@ void Edn::File::SetCompleateName(Edn::String &newFilename)
|
|||||||
} else {
|
} else {
|
||||||
destFilename = newFilename;
|
destFilename = newFilename;
|
||||||
}
|
}
|
||||||
//EDN_DEBUG("2 : Get file Name : " << destFilename );
|
EDN_DEBUG("2 : Get file Name : " << destFilename );
|
||||||
if ('/' != *destFilename.c_str()) {
|
if ('/' != *destFilename.c_str()) {
|
||||||
// Get the command came from the running of the program :
|
// Get the command came from the running of the program :
|
||||||
char cCurrentPath[FILENAME_MAX];
|
char cCurrentPath[FILENAME_MAX];
|
||||||
@@ -167,7 +166,7 @@ void Edn::File::SetCompleateName(Edn::String &newFilename)
|
|||||||
destFilename += '/';
|
destFilename += '/';
|
||||||
destFilename += tmpFilename;
|
destFilename += tmpFilename;
|
||||||
}
|
}
|
||||||
//EDN_DEBUG("3 : Get file Name : " << destFilename );
|
EDN_DEBUG("3 : Get file Name : " << destFilename );
|
||||||
|
|
||||||
// Get the real Path of the current File
|
// Get the real Path of the current File
|
||||||
ok = realpath(destFilename.c_str(), buf);
|
ok = realpath(destFilename.c_str(), buf);
|
||||||
@@ -177,7 +176,7 @@ void Edn::File::SetCompleateName(Edn::String &newFilename)
|
|||||||
// Get the FileName
|
// Get the FileName
|
||||||
Edn::String tmpFilename = destFilename.Extract(lastPos+1);
|
Edn::String tmpFilename = destFilename.Extract(lastPos+1);
|
||||||
destFilename.Remove(lastPos, destFilename.Size() - lastPos);
|
destFilename.Remove(lastPos, destFilename.Size() - lastPos);
|
||||||
//EDN_DEBUG("try to find :\"" << destFilename << "\" / \"" << tmpFilename << "\" ");
|
EDN_DEBUG("try to find :\"" << destFilename << "\" / \"" << tmpFilename << "\" ");
|
||||||
ok = realpath(destFilename.c_str(), buf);
|
ok = realpath(destFilename.c_str(), buf);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
EDN_ERROR("Can not find real Path name of \"" << destFilename << "\"");
|
EDN_ERROR("Can not find real Path name of \"" << destFilename << "\"");
|
||||||
|
@@ -26,6 +26,8 @@
|
|||||||
#ifndef __EDN__FILE_H__
|
#ifndef __EDN__FILE_H__
|
||||||
#define __EDN__FILE_H__
|
#define __EDN__FILE_H__
|
||||||
|
|
||||||
|
#define MAX_FILE_NAME (10240)
|
||||||
|
|
||||||
namespace Edn
|
namespace Edn
|
||||||
{
|
{
|
||||||
class File
|
class File
|
||||||
|
@@ -1801,13 +1801,13 @@ template<class CLASS_TYPE> class EdnRegExp {
|
|||||||
if (true == m_notBeginWithChar) {
|
if (true == m_notBeginWithChar) {
|
||||||
if (i>0) {
|
if (i>0) {
|
||||||
char tmpVal = SearchIn[i-1];
|
char tmpVal = SearchIn[i-1];
|
||||||
if( ( 'a' <= tmpVal
|
if( ( 'a' <= tmpVal
|
||||||
&& 'z' >= tmpVal )
|
&& 'z' >= tmpVal )
|
||||||
|| ( 'A' <= tmpVal
|
|| ( 'A' <= tmpVal
|
||||||
&& 'Z' >= tmpVal )
|
&& 'Z' >= tmpVal )
|
||||||
|| ( '0' <= tmpVal
|
|| ( '0' <= tmpVal
|
||||||
&& '9' >= tmpVal )
|
&& '9' >= tmpVal )
|
||||||
|| ( '_' == tmpVal ) )
|
|| ( '_' == tmpVal ) )
|
||||||
{
|
{
|
||||||
// go on the next char ...
|
// go on the next char ...
|
||||||
continue;
|
continue;
|
||||||
@@ -1827,13 +1827,13 @@ template<class CLASS_TYPE> class EdnRegExp {
|
|||||||
if (true == m_notEndWithChar) {
|
if (true == m_notEndWithChar) {
|
||||||
if (i+findLen < SearchIn.Size() ) {
|
if (i+findLen < SearchIn.Size() ) {
|
||||||
char tmpVal = SearchIn[i+findLen];
|
char tmpVal = SearchIn[i+findLen];
|
||||||
if( ( 'a' <= tmpVal
|
if( ( 'a' <= tmpVal
|
||||||
&& 'z' >= tmpVal )
|
&& 'z' >= tmpVal )
|
||||||
|| ( 'A' <= tmpVal
|
|| ( 'A' <= tmpVal
|
||||||
&& 'Z' >= tmpVal )
|
&& 'Z' >= tmpVal )
|
||||||
|| ( '0' <= tmpVal
|
|| ( '0' <= tmpVal
|
||||||
&& '9' >= tmpVal )
|
&& '9' >= tmpVal )
|
||||||
|| ( '_' == tmpVal ) )
|
|| ( '_' == tmpVal ) )
|
||||||
{
|
{
|
||||||
// go on the next char ...
|
// go on the next char ...
|
||||||
continue;
|
continue;
|
||||||
@@ -1860,6 +1860,72 @@ template<class CLASS_TYPE> class EdnRegExp {
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool ProcessOneElement( CLASS_TYPE &SearchIn,
|
||||||
|
int32_t startPos,
|
||||||
|
int32_t endPos,
|
||||||
|
char escapeChar=0)
|
||||||
|
{
|
||||||
|
if (false == m_isOk) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int32_t buflen = SearchIn.Size();
|
||||||
|
if (endPos > buflen) {
|
||||||
|
endPos = buflen;
|
||||||
|
}
|
||||||
|
if (startPos > endPos) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int32_t findLen=0;
|
||||||
|
int32_t maxlen = endPos-startPos;
|
||||||
|
if (true == m_notBeginWithChar) {
|
||||||
|
if (startPos>0) {
|
||||||
|
char tmpVal = SearchIn[startPos-1];
|
||||||
|
if( ( 'a' <= tmpVal
|
||||||
|
&& 'z' >= tmpVal )
|
||||||
|
|| ( 'A' <= tmpVal
|
||||||
|
&& 'Z' >= tmpVal )
|
||||||
|
|| ( '0' <= tmpVal
|
||||||
|
&& '9' >= tmpVal )
|
||||||
|
|| ( '_' == tmpVal ) )
|
||||||
|
{
|
||||||
|
// go on the next char ...
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (true == m_exprRootNode.Parse(SearchIn, startPos, maxlen, findLen)) {
|
||||||
|
if( 0!=escapeChar
|
||||||
|
&& startPos>0)
|
||||||
|
{
|
||||||
|
if (escapeChar == (char)SearchIn[startPos-1]) {
|
||||||
|
//==> detected escape char ==> try find again ...
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Check end :
|
||||||
|
if (true == m_notEndWithChar) {
|
||||||
|
if (startPos+findLen < SearchIn.Size() ) {
|
||||||
|
char tmpVal = SearchIn[startPos+findLen];
|
||||||
|
if( ( 'a' <= tmpVal
|
||||||
|
&& 'z' >= tmpVal )
|
||||||
|
|| ( 'A' <= tmpVal
|
||||||
|
&& 'Z' >= tmpVal )
|
||||||
|
|| ( '0' <= tmpVal
|
||||||
|
&& '9' >= tmpVal )
|
||||||
|
|| ( '_' == tmpVal ) )
|
||||||
|
{
|
||||||
|
// go on the next char ...
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_areaFind.start = startPos;
|
||||||
|
m_areaFind.stop = startPos + findLen;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
|
@@ -36,8 +36,6 @@
|
|||||||
*
|
*
|
||||||
* @tparam[in] SIZE Size of the current element.
|
* @tparam[in] SIZE Size of the current element.
|
||||||
*
|
*
|
||||||
* @todo : Need to add : popBack / Assign / Insert / Erase / Swap / Clear
|
|
||||||
*
|
|
||||||
* m_data
|
* m_data
|
||||||
* <------------ m_dataSize ------------>
|
* <------------ m_dataSize ------------>
|
||||||
* ----------------------------------------
|
* ----------------------------------------
|
||||||
|
@@ -301,6 +301,7 @@ void Utf8_SizeElement(const char * data, int32_t lenMax , uint8_t &size, bool &b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0 // Remove for the moment ...
|
||||||
/**
|
/**
|
||||||
* @brief Get the number of element of the previous UTF8 char (in the curent Buffer)
|
* @brief Get the number of element of the previous UTF8 char (in the curent Buffer)
|
||||||
*
|
*
|
||||||
@@ -349,7 +350,7 @@ static void Utf8_SizePreviousElement(const char * data, int32_t lenMax, uint8_t
|
|||||||
size = 1;
|
size = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
|
@@ -26,14 +26,11 @@
|
|||||||
#include "tools_globals.h"
|
#include "tools_globals.h"
|
||||||
#include "ColorizeManager.h"
|
#include "ColorizeManager.h"
|
||||||
#include "MsgBroadcast.h"
|
#include "MsgBroadcast.h"
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#undef __class__
|
#undef __class__
|
||||||
#define __class__ "globals"
|
#define __class__ "globals"
|
||||||
|
|
||||||
// Variables privé du namespace
|
|
||||||
|
|
||||||
static std::string curentFileName = "???";
|
|
||||||
|
|
||||||
|
|
||||||
erreurCode_te globals::init(void)
|
erreurCode_te globals::init(void)
|
||||||
@@ -201,36 +198,3 @@ bool globals::IsSetInsert(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -27,14 +27,12 @@
|
|||||||
#define __TOOLS_GLOBALS_H__
|
#define __TOOLS_GLOBALS_H__
|
||||||
|
|
||||||
#include "tools_debug.h"
|
#include "tools_debug.h"
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace globals
|
namespace globals
|
||||||
{
|
{
|
||||||
erreurCode_te init(void);
|
erreurCode_te init(void);
|
||||||
int32_t getNbColoneBorder(void);
|
int32_t getNbColoneBorder(void);
|
||||||
int32_t getNbLineBorder(void);
|
int32_t getNbLineBorder(void);
|
||||||
|
|
||||||
bool IsSetDisplayEndOfLine(void);
|
bool IsSetDisplayEndOfLine(void);
|
||||||
void SetDisplayEndOfLine(bool newVal);
|
void SetDisplayEndOfLine(bool newVal);
|
||||||
@@ -45,25 +43,24 @@ namespace globals
|
|||||||
bool IsSetAutoIndent(void);
|
bool IsSetAutoIndent(void);
|
||||||
void SetAutoIndent(bool newVal);
|
void SetAutoIndent(bool newVal);
|
||||||
|
|
||||||
void init2(void);
|
void init2(void);
|
||||||
|
|
||||||
void SetShift(void);
|
void SetShift(void);
|
||||||
void UnSetShift(void);
|
void UnSetShift(void);
|
||||||
bool IsSetShift(void);
|
bool IsSetShift(void);
|
||||||
void SetAlt(void);
|
void SetAlt(void);
|
||||||
void UnSetAlt(void);
|
void UnSetAlt(void);
|
||||||
bool IsSetAlt(void);
|
bool IsSetAlt(void);
|
||||||
void SetCtrl(void);
|
void SetCtrl(void);
|
||||||
void UnSetCtrl(void);
|
void UnSetCtrl(void);
|
||||||
bool IsSetCtrl(void);
|
bool IsSetCtrl(void);
|
||||||
void SetPomme(void);
|
void SetPomme(void);
|
||||||
void UnSetPomme(void);
|
void UnSetPomme(void);
|
||||||
bool IsSetPomme(void);
|
bool IsSetPomme(void);
|
||||||
void SetInsert(void);
|
void SetInsert(void);
|
||||||
void UnSetInsert(void);
|
void UnSetInsert(void);
|
||||||
void ToggleInsert(void);
|
void ToggleInsert(void);
|
||||||
bool IsSetInsert(void);
|
bool IsSetInsert(void);
|
||||||
void DisplaySystemString(std::vector<int32_t> &data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
188
avancement.boo
188
avancement.boo
@@ -1,6 +1,4 @@
|
|||||||
/* pour voir les appels system*/
|
# For the first realease 1.0 :
|
||||||
|
|
||||||
# For the first realease :
|
|
||||||
* Syst<73>mes :
|
* Syst<73>mes :
|
||||||
- Affichage ligne par ligne
|
- Affichage ligne par ligne
|
||||||
- Correction du bug de hl(sub patern empty)
|
- Correction du bug de hl(sub patern empty)
|
||||||
@@ -16,125 +14,123 @@
|
|||||||
- Ctags phase 1
|
- Ctags phase 1
|
||||||
- Project manager phase 1
|
- Project manager phase 1
|
||||||
|
|
||||||
# action a faire (ordonner) :
|
# action a faire (ordonner par r<>vision) :
|
||||||
- HL : Parsing caracter/caract<63>re et plus section par section ...
|
* 0.1.X :
|
||||||
- ctags : Back simple et multiple
|
- ctags : Back simple et multiple
|
||||||
- ctags : Multiple files
|
- ctags : Multiple files
|
||||||
- sys : search complet, replace complet
|
- sys : search complet, replace complet and replace ALL ...
|
||||||
- gui : ordonner les fichier ouvert par nom ...
|
- gui : demander l'enregistrement avant de fermer (quand c'est n<>cessaire)
|
||||||
- sys : Mise en place des colorisation de base pour le
|
- Faire les deplacement de EdnXXX dans le nameSpace Edn::XXX
|
||||||
* xml
|
- Edn::VectorType : Rewrite the erase fuction to support start => stop and Erase len methode ...
|
||||||
* makefiles
|
* 0.2.X :
|
||||||
* script bash
|
- gui : Demander la cr<63>ation de nouveaux fichier quand il n'existe pas (a l'ouverture en ligne de commande)
|
||||||
* python
|
- sys : Mise en place des colorisation de base pour le
|
||||||
* matlab
|
* makefiles
|
||||||
* java script
|
* script bash
|
||||||
* SQL
|
* python
|
||||||
- project : list of current files open
|
* matlab
|
||||||
- gui : demander l'enregistrement avant de fermer (quand c'est n<>cessaire)
|
* java script
|
||||||
- gui : demande de cr<63>ation de nouveaux fichier ou quiter l'editeur ...
|
* SQL
|
||||||
- gui : ascenceur quand n<>cessaire
|
- 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
|
||||||
- Catch Shift+TAB
|
- Correction du bug des entr<74> bizard tel que les chapot et les guillemets
|
||||||
- Correction du bug des entr<74> bizard tel que les chapot et les guillemets
|
- pb de s<>lection quand la ligne est pleine et la premi<6D>re ligne s<>ctionn<6E>e.
|
||||||
- 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><><EFBFBD> ...
|
||||||
- PB de copier coller sur les <20><> ...
|
* 0.3.X :
|
||||||
- Charset UTF-8 et iso 8859-15 correcte
|
- Charset UTF-8 et iso 8859-15 correcte
|
||||||
- Transformation de charset a la vol<6F>
|
- Transformation de charset a la vol<6F>e
|
||||||
- Charset par defaut
|
- Charset par defaut
|
||||||
- D<>ction de charset (<28> mettre dans les todo de charset)
|
- D<>tection de charset (<28> mettre dans les todo de charset)
|
||||||
- Faire les deplacement de EdnXXX dans le nameSpace Edn::XXX
|
==> regarder les librairies open sources
|
||||||
- pb de s<>lection quand la ligne est pleine et la premi<6D>re ligne s<>lectionn<6E>...
|
* 0.4.X :
|
||||||
|
- SEARCH : get selected text in the search windows
|
||||||
|
- SEARCH : Select the search windows when call crtl+F
|
||||||
|
- gui : ordonner les fichier ouvert par nom ...
|
||||||
|
* 0.5.X :
|
||||||
|
- project : list of current files open
|
||||||
|
- 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...
|
||||||
|
|
||||||
# Text Editor
|
# Text Editor
|
||||||
|
|
||||||
- [1] 90% Indent group with Tabulation and shift+tabulation
|
- 90% Indent group with Tabulation and shift+tabulation
|
||||||
- [1] 100% Basic smart indent : Recopy the start of the previous line when return (copy '\t' and ' ')
|
- 100% 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
|
- 0% Replace Tab with space when press the key
|
||||||
- [1] 0% Request save user when quit the software
|
- 0% Request save user when quit the software
|
||||||
- [1] 0% Hide/Display scroll element when not usefull
|
- 0% Hide/Display scroll element when not usefull
|
||||||
- [1] 10% Regular expression search
|
- 10% Regular expression search
|
||||||
- [1] 80% Colorisation syntaxique
|
- 80% Colorisation syntaxique
|
||||||
- [1] 80% Copier / coller ==> probleme sur les caract<63>res sp<73>ciaux comme <20> <20> <20> ...
|
- 80% Copier / coller ==> probleme sur les caract<63>res sp<73>ciaux comme <20> <20> <20> ...
|
||||||
- [1] 10% Search
|
- 10% Search
|
||||||
- [1] 10% Replace
|
- 10% Replace
|
||||||
- [1] 80% Undo / Redo ajout de caract<63>res autre que " ", "\t" et "\n"
|
- 80% Undo / Redo ajout de caract<63>res autre que " ", "\t" et "\n"
|
||||||
- [2] 0% Selectionner en colone
|
- 0% Selectionner en colone
|
||||||
- [2] 0% Supression multiple de ligne par la commande ctrl+D
|
- 0% Supression multiple de ligne par la commande ctrl+D
|
||||||
- [3] 0% Multi-file search ==> display it in a result buffer (clickable only)
|
- 0% Multi-file search ==> display it in a result buffer (clickable only)
|
||||||
- [3] 0% basic UTF8 string management ==> bad with the curent buffer
|
- 0% basic UTF8 string management ==> bad with the curent buffer
|
||||||
- [5] 0% Replace in all elements of the project file or a part
|
- 0% Replace in all elements of the project file or a part
|
||||||
- [5] 0% Multiple Text Editor in the same Time
|
- 0% Multiple Text Editor in the same Time
|
||||||
- [5] 0% Support des Macros ==> In python ??? or other ...
|
- 0% Support des Macros ==> In python ??? or other ...
|
||||||
|
|
||||||
# Ctags :
|
# Ctags :
|
||||||
- [1] 100% Parse (use the ctags parser)
|
- 100% Parse (use the ctags parser)
|
||||||
- [1] 50% Find
|
- 100% Find
|
||||||
- [1] 50% Jump
|
- 50% Jump
|
||||||
- [1] 10% History of move (with display)
|
- 10% History of move (with display)
|
||||||
|
|
||||||
# Buffer Viewer :
|
# Buffer Viewer :
|
||||||
- [1] 0% Right menu
|
- 100% Right menu
|
||||||
- [1] 100% Display buffer in color
|
- 100% Display buffer in color
|
||||||
- [1] 100% Display buffer Saved / not Saved
|
- 100% Display buffer Saved / not Saved
|
||||||
- [2] 0% Image of the type of buffer (optionnal)
|
- 0% Image of the type of buffer (optionnal)
|
||||||
|
|
||||||
# Configuration :
|
# Configuration :
|
||||||
- [1] 0% Creer une IHM pour les configurations de base
|
- 0% Creer une IHM pour les configurations de base
|
||||||
- [1] 0% Creer une IHM pour l'edition du hightliner syntaxique (quand il marchera...)
|
- 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)
|
- 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...
|
- 0% saugegarde automatique de la configuration ou sur demande...
|
||||||
|
|
||||||
# Project manager :
|
# Project manager :
|
||||||
- [2] 0% Faire un editeur des dossiers du projet a ouvrir ==> automatiquement ajouter dans les Ctags
|
- 0% Faire un editeur des dossiers du projet a ouvrir ==> automatiquement ajouter dans les Ctags
|
||||||
- [2] 0% Base
|
- 0% Base
|
||||||
- [2] 0% Save All
|
- 0% Save All
|
||||||
- [2] 0% TreeView
|
- 0% TreeView
|
||||||
|
|
||||||
# Tree View :
|
# Tree View :
|
||||||
- [2] 0% View
|
- 0% View
|
||||||
- [2] 0% Open File
|
- 0% Open File
|
||||||
- [2] 0% Jump to the curent File
|
- 0% Jump to the curent File
|
||||||
- [2] 0% Hide CVS / Git / SVN elements
|
- 0% Hide CVS / Git / SVN elements
|
||||||
|
|
||||||
# Diff :
|
# Diff :
|
||||||
- [4] 0% generate a Diff between files
|
- 0% generate a Diff between files
|
||||||
- [4] 0% same in binary
|
- 0% same in binary
|
||||||
|
|
||||||
# Git :
|
# Git :
|
||||||
- [4] 0% Diff with the current wersion commited (local)
|
- 0% Diff with the current wersion commited (local)
|
||||||
- [9] 0% Git branch local display (as gitk --all) ...
|
- 0% Git branch local display (as gitk --all) ...
|
||||||
- [4] 0% view git chawan history ... (git Log)
|
- 0% view git chawan history ... (git Log)
|
||||||
|
|
||||||
# CVS :
|
# CVS :
|
||||||
- [6] 0% check the version with CVS
|
- 0% check the version with CVS
|
||||||
- [6] 0% commit
|
- 0% commit
|
||||||
- [6] 0% display the Branch
|
- 0% display the Branch
|
||||||
- [6] 0% Select a new repository ...
|
- 0% Select a new repository ...
|
||||||
|
|
||||||
# Publication :
|
# Publication :
|
||||||
- [1] 0% faire une publication du logiciel sur le Web... (need a stable version)
|
- 0% faire une publication du logiciel sur le Web... (need a stable version)
|
||||||
- [2] 0% faire un package
|
- 0% faire un package
|
||||||
|
|
||||||
# Repository :
|
# Repository :
|
||||||
- [2] 0% create my own repository (@home)
|
- 0% create my own repository (@home)
|
||||||
- [2] 0% manage right with Git
|
- 0% manage right with Git
|
||||||
- [2] 0% create a website fot it (@home)
|
- 0% create a website fot it (@home)
|
||||||
- [2] 0% reserve edn.org
|
- 0% reserve edn.org
|
||||||
|
|
||||||
# plugin : (never i think ...)
|
# plugin : (never i think ...)
|
||||||
- [ ] 0% Comprendre comment faire un system avec des plugin (interne et simple)...
|
- 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.
|
- 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...
|
|
||||||
|
|
||||||
|
|
||||||
# note utiles :
|
# note utiles :
|
||||||
http://majutsushi.github.com/tagbar/ ==> je devrais regarder ca pour savoir ce que je peux faire avec du ctags
|
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/"
|
||||||
|
@@ -34,6 +34,8 @@
|
|||||||
<color name="macro" FG="#6c09c8" bold="yes"/>
|
<color name="macro" FG="#6c09c8" bold="yes"/>
|
||||||
<color name="SYNTAX_ERROR" FG="#000000" BG="#FF0000" bold="yes"/>
|
<color name="SYNTAX_ERROR" FG="#000000" BG="#FF0000" bold="yes"/>
|
||||||
<color name="functionName" FG="#24d1e0" 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>
|
</syntax>
|
||||||
</EdnColor>
|
</EdnColor>
|
||||||
|
|
||||||
|
@@ -2,8 +2,6 @@
|
|||||||
<EdnLang version="0.1" lang="c">
|
<EdnLang version="0.1" lang="c">
|
||||||
<ext>*.boo</ext>
|
<ext>*.boo</ext>
|
||||||
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
|
||||||
</pass1>
|
|
||||||
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
|
|
||||||
<rule name="comment ##">
|
<rule name="comment ##">
|
||||||
<color>SYNTAX_ERROR</color>
|
<color>SYNTAX_ERROR</color>
|
||||||
<start>##</start>
|
<start>##</start>
|
||||||
@@ -14,5 +12,49 @@
|
|||||||
<start>#</start>
|
<start>#</start>
|
||||||
<end>\n</end>
|
<end>\n</end>
|
||||||
</rule>
|
</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>
|
</pass2>
|
||||||
</EdnLang>
|
</EdnLang>
|
||||||
|
@@ -111,7 +111,7 @@
|
|||||||
</rule>
|
</rule>
|
||||||
<rule name="condition">
|
<rule name="condition">
|
||||||
<color>boolean</color>
|
<color>boolean</color>
|
||||||
<start>==|<=|>=|!=|<|>|&&|\{|\}|</start>
|
<start>==|<=|>=|!=|<{1,2}|>{1,2}|&&|\{|\}|</start>
|
||||||
</rule>
|
</rule>
|
||||||
<!-- With all elementes :
|
<!-- With all elementes :
|
||||||
<rule name="BIG LETTER">
|
<rule name="BIG LETTER">
|
||||||
|
@@ -7,9 +7,28 @@
|
|||||||
<start><!\-\-</start>
|
<start><!\-\-</start>
|
||||||
<end>\-\-></end>
|
<end>\-\-></end>
|
||||||
</rule>
|
</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>
|
</pass1>
|
||||||
<pass2>
|
<pass2>
|
||||||
|
<rule name="special Balise">
|
||||||
|
<color>error</color>
|
||||||
|
<start><\?\w*|\?></start>
|
||||||
|
</rule>
|
||||||
|
<rule name="normale Balise">
|
||||||
|
<color>functionName</color>
|
||||||
|
<start></\w*|<\w*|/>|></start>
|
||||||
|
</rule>
|
||||||
</pass2>
|
</pass2>
|
||||||
</EdnLang>
|
</EdnLang>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user