7 Commits
0.1.3 ... 0.1.4

20 changed files with 329 additions and 337 deletions

1
.gitignore vendored
View File

@@ -27,6 +27,7 @@ doxygen/ALL/
*.so *.so
*.pyc *.pyc
edn edn
out
edn_debug edn_debug
edn_release edn_release

View File

@@ -34,8 +34,11 @@ export CADRE_COTERS=' $(F_INVERSER) $(F_NORMALE) $(F_INVERSER) $(F_N
VERSION_TAG=$(shell git describe --tags) VERSION_TAG=$(shell git describe --tags)
#$(info $(VERSION_TAG)) #$(info $(VERSION_TAG))
VERSION_TAG_SHORT=$(shell git describe --tags --abbrev=0)
#$(info $(VERSION_TAG_SHORT))
VERSION_BUILD_TIME=$(shell date) VERSION_BUILD_TIME=$(shell date)
#$(info $(VERSION_BUILD_TIME)) #$(info $(VERSION_BUILD_TIME))
############################################################################### ###############################################################################
@@ -297,4 +300,36 @@ install: .encadrer .versionFile $(OUTPUT_NAME_RELEASE)
@echo $(CADRE_HAUT_BAS) @echo $(CADRE_HAUT_BAS)
@echo ' INSTALL : $(F_VIOLET)$(OUTPUT_NAME_RELEASE)=>$(PROG_NAME)$(F_NORMALE)'$(CADRE_COTERS) @echo ' INSTALL : $(F_VIOLET)$(OUTPUT_NAME_RELEASE)=>$(PROG_NAME)$(F_NORMALE)'$(CADRE_COTERS)
@echo $(CADRE_HAUT_BAS) @echo $(CADRE_HAUT_BAS)
@echo $(F_ROUGE)"
(stripped) $(OUTPUT_NAME_RELEASE) => $(PROG_NAME) "$(F_NORMALE)
@cp $(OUTPUT_NAME_RELEASE) $(PROG_NAME)
@strip -s $(PROG_NAME)
@echo $(F_VERT)"
(copy) $(PROG_NAME) /usr/bin/ "$(F_NORMALE)
@cp -vf $(PROG_NAME) /usr/bin/
@echo $(F_VERT)"
(data) data/* ==> /usr/share/edn/ "$(F_NORMALE)
@mkdir -p /usr/share/edn/
@cp -vf data/*.xml /usr/share/edn/
# http://alp.developpez.com/tutoriels/debian/creer-paquet/
package: .encadrer
@echo 'Create Folders ...'
@mkdir -p package/$(PROG_NAME)/DEBIAN/
@mkdir -p package/$(PROG_NAME)/usr/bin/
@mkdir -p package/$(PROG_NAME)/usr/share/doc/
@mkdir -p package/$(PROG_NAME)/usr/share/edn/
# Create the control file
@echo "Package: "$(PROG_NAME) > package/$(PROG_NAME)/DEBIAN/control
@echo "Version: "$(VERSION_TAG_SHORT) >> package/$(PROG_NAME)/DEBIAN/control
@echo "Section: Development,Editors" >> package/$(PROG_NAME)/DEBIAN/control
@echo "Priority: optional" >>package/$(PROG_NAME)/DEBIAN/control
@echo "Architecture: all" >> package/$(PROG_NAME)/DEBIAN/control
@echo "Depends: bash" >> package/$(PROG_NAME)/DEBIAN/control
@echo "Maintainer: Mr DUPIN Edouard <yui.heero@gmail.com>" >> package/$(PROG_NAME)/DEBIAN/control
@echo "Description: Text editor for sources code with ctags management" >> package/$(PROG_NAME)/DEBIAN/control
@echo "" >> package/$(PROG_NAME)/DEBIAN/control
# Create the PostRm
@echo "#!/bin/bash" > package/$(PROG_NAME)/DEBIAN/postrm
@echo "rm ~/."$(PROG_NAME) >> package/$(PROG_NAME)/DEBIAN/postrm @echo "rm ~/."$(PROG_NAME) >> package/$(PROG_NAME)/DEBIAN/postrm

View File

@@ -41,10 +41,12 @@
*/ */
Buffer::Buffer() Buffer::Buffer()
{ {
static int32_t fileBasicID = 0;
m_fileModify = true; m_fileModify = true;
m_haveName = false; m_haveName = false;
Edn::String mString = "No-Name"; Edn::String mString = "Untitle - ";
m_fileName.SetCompleateName(mString); mString += fileBasicID++;
SetFileName(mString);
} }
/** /**
@@ -55,11 +57,10 @@ Buffer::Buffer()
* @return --- * @return ---
* *
*/ */
Buffer::Buffer(Edn::String &newFileName) Buffer::Buffer(Edn::File &newName)
{ {
m_fileModify = false; m_fileModify = false;
m_haveName = true; SetFileName(newName);
m_fileName.SetCompleateName(newFileName);
} }
/** /**
@@ -95,85 +96,6 @@ void Buffer::SetModify(bool status)
} }
} }
Edn::File Buffer::GetFileName(void)
{
return m_fileName;
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
Edn::String Buffer::GetName(void)
{
// nothing to do
return m_fileName.GetCompleateName();
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
Edn::String Buffer::GetShortName(void)
{
// nothing to do
return m_fileName.GetShortFilename();
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
Edn::String Buffer::GetFolder(void)
{
// nothing to do
return m_fileName.GetFolder();
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
bool Buffer::HaveName(void)
{
// nothing to do
return true;
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
void Buffer::SetName(Edn::String &newName)
{
// nothing to do
}
/** /**
* @brief * @brief
* *

View File

@@ -45,15 +45,32 @@ typedef struct{
class Buffer { class Buffer {
public: public:
Buffer(void); Buffer(void);
Buffer(Edn::String &filename); Buffer(Edn::File &newName);
virtual ~Buffer(void); virtual ~Buffer(void);
Edn::File GetFileName(void);
virtual Edn::String GetName(void); Edn::File GetFileName(void)
virtual Edn::String GetShortName(void); {
virtual Edn::String GetFolder(void); return m_fileName;
virtual void SetName(Edn::String &newName); };
void SetFileName(Edn::File &newName)
{
m_fileName = newName;
m_haveName = true;
};
void SetFileName(Edn::String &newName)
{
m_fileName.SetCompleateName(newName);
m_haveName = true;
};
bool HaveName(void)
{
return m_haveName;
}
virtual void Save(void); virtual void Save(void);
virtual bool HaveName(void);
bool IsModify(void); bool IsModify(void);
protected: protected:
void SetModify(bool status); void SetModify(bool status);
@@ -88,9 +105,10 @@ class Buffer {
virtual void JumpAtLine(int32_t newLine); virtual void JumpAtLine(int32_t newLine);
protected: protected:
bool m_fileModify; bool m_fileModify; //!<
Edn::File m_fileName; // naming
bool m_haveName; //!< to know if the file have a name or NOT Edn::File m_fileName; //!< filename of the curent buffer
bool m_haveName; //!< to know if the file have a name or NOT
}; };

View File

@@ -185,10 +185,11 @@ int32_t BufferManager::Create(void)
* @todo : check if this file is not curently open and return the old ID * @todo : check if this file is not curently open and return the old ID
* *
*/ */
int32_t BufferManager::Open(Edn::String &filename) int32_t BufferManager::Open(Edn::File &myFile)
{ {
// TODO : Check here if the file is already open ==> and display it if needed
// allocate a new Buffer // allocate a new Buffer
Buffer *myBuffer = new BufferText(filename); Buffer *myBuffer = new BufferText(myFile);
// Add at the list of element // Add at the list of element
listBuffer.PushBack(myBuffer); listBuffer.PushBack(myBuffer);
int32_t basicID = listBuffer.Size() - 1; int32_t basicID = listBuffer.Size() - 1;
@@ -235,14 +236,23 @@ bool BufferManager::Exist(int32_t BufferID)
} }
int32_t BufferManager::GetId(Edn::String &filename) bool BufferManager::Exist(Edn::File &myFile )
{
if (-1 == GetId(myFile)) {
return false;
}
return true;
}
int32_t BufferManager::GetId(Edn::File &myFile)
{ {
int32_t iii; int32_t iii;
// check if the Buffer existed // check if the Buffer existed
for (iii=0; iii < listBuffer.Size(); iii++) { for (iii=0; iii < listBuffer.Size(); iii++) {
// check if the buffer already existed // check if the buffer already existed
if (NULL != listBuffer[iii]) { if (NULL != listBuffer[iii]) {
if ( listBuffer[iii]->GetName() == filename) { if ( listBuffer[iii]->GetFileName() == myFile) {
return iii; return iii;
} }
} }
@@ -250,14 +260,6 @@ int32_t BufferManager::GetId(Edn::String &filename)
return -1; return -1;
} }
bool BufferManager::Exist(Edn::String &filename)
{
if (-1 == GetId(filename)) {
return false;
}
return true;
}
// return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5 // return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5
uint32_t BufferManager::Size(void) uint32_t BufferManager::Size(void)

View File

@@ -48,13 +48,13 @@ class BufferManager: public Singleton<BufferManager>, public MsgBroadcast
// create a buffer with no element // create a buffer with no element
int32_t Create(void); int32_t Create(void);
// open curent filename // open curent filename
int32_t Open(Edn::String &filename); int32_t Open(Edn::File &myFile);
int32_t GetSelected(void) { return m_idSelected;}; int32_t GetSelected(void) { return m_idSelected;};
void SetSelected(int32_t id) {m_idSelected = id;}; void SetSelected(int32_t id) {m_idSelected = id;};
Buffer * Get(int32_t BufferID); Buffer * Get(int32_t BufferID);
bool Exist(int32_t BufferID); bool Exist(int32_t BufferID);
bool Exist(Edn::String &filename); bool Exist(Edn::File &myFile);
int32_t GetId(Edn::String &filename); int32_t GetId(Edn::File &myFile);
// return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5 // return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5
uint32_t Size(void); uint32_t Size(void);
int32_t WitchBuffer(int32_t iEmeElement); int32_t WitchBuffer(int32_t iEmeElement);

View File

@@ -50,16 +50,10 @@ const uint32_t nbLineAllocatedInBase = 300;
*/ */
void BufferText::BasicInit(void) void BufferText::BasicInit(void)
{ {
static int32_t fileBasicID = 0;
NeedToCleanEndPage = true; NeedToCleanEndPage = true;
// set the first element that is displayed // set the first element that is displayed
m_displayStartBufferPos = 0; m_displayStartBufferPos = 0;
// set basic filename :
filename = "Untitled ";
filename += fileBasicID;
// no name ...
haveName = false;
fileBasicID++;
// set the number of the lineNumber; // set the number of the lineNumber;
nbColoneForLineNumber = 1; nbColoneForLineNumber = 1;
// init the link with the buffer manager // init the link with the buffer manager
@@ -104,16 +98,14 @@ BufferText::BufferText()
* @return --- * @return ---
* *
*/ */
BufferText::BufferText(Edn::String &newFileName) BufferText::BufferText(Edn::File &fileName) : Buffer(fileName)
{ {
BasicInit(); BasicInit();
EDN_INFO("Add Data from file(" << newFileName.c_str() << ")"); EDN_INFO("Add Data from file(" << GetFileName() << ")");
FILE * myFile = NULL; FILE * myFile = NULL;
// set the filename :
SetName(newFileName);
// try to open the file. if not existed, new file // try to open the file. if not existed, new file
myFile = fopen(newFileName.c_str(), "r"); myFile = fopen(fileName.GetCompleateName().c_str(), "r");
if (NULL != myFile) { if (NULL != myFile) {
m_EdnBuf.DumpFrom(myFile); m_EdnBuf.DumpFrom(myFile);
// close the input file // close the input file
@@ -121,7 +113,7 @@ BufferText::BufferText(Edn::String &newFileName)
SetModify(false); SetModify(false);
} else { } else {
// fichier inexistant... creation d'un nouveaux // fichier inexistant... creation d'un nouveaux
EDN_WARNING("No File ==> created a new one(" << newFileName.c_str() << ")"); EDN_WARNING("No File ==> created a new one(" << GetFileName() << ")");
SetModify(true); SetModify(true);
} }
UpdateWindowsPosition(); UpdateWindowsPosition();
@@ -139,9 +131,9 @@ BufferText::BufferText(Edn::String &newFileName)
*/ */
void BufferText::Save(void) void BufferText::Save(void)
{ {
EDN_INFO("Save File : \"" << filename.c_str() << "\"" ); EDN_INFO("Save File : \"" << GetFileName() << "\"" );
FILE * myFile = NULL; FILE * myFile = NULL;
myFile = fopen(filename.c_str(), "w"); myFile = fopen(GetFileName().GetCompleateName().c_str(), "w");
if (NULL != myFile) { if (NULL != myFile) {
m_EdnBuf.DumpIn(myFile); m_EdnBuf.DumpIn(myFile);
fclose(myFile); fclose(myFile);
@@ -187,104 +179,6 @@ void BufferText::SelectionCheckMode(void)
} }
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
Edn::String BufferText::GetName(void)
{
return filename;
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
Edn::String BufferText::GetShortName(void)
{
char *ptr = strrchr(filename.c_str(), '/');
if (NULL == ptr) {
ptr = strrchr(filename.c_str(), '\\');
}
Edn::String out = filename;
if (NULL != ptr) {
out = ptr+1;
}
return out;
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
Edn::String BufferText::GetFolder(void)
{
char tmpVal[4096];
strncpy(tmpVal, filename.c_str(), 4096);
tmpVal[4096-1] = '\0';
char *ptr = strrchr(tmpVal, '/');
if (NULL == ptr) {
ptr = strrchr(tmpVal, '\\');
}
Edn::String out = "./";
if (NULL != ptr) {
*ptr = '\0';
out = tmpVal;
}
return out;
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
bool BufferText::HaveName(void)
{
return haveName;
}
/**
* @brief
*
* @param[in,out] ---
*
* @return ---
*
*/
void BufferText::SetName(Edn::String &newName)
{
filename = newName;
haveName = true;
// Find HL system
if (true == HighlightManager::getInstance()->Exist(newName)) {
Highlight * myHL = HighlightManager::getInstance()->Get(newName);
// Set the new HL
if (NULL != myHL) {
m_EdnBuf.SetHLSystem(myHL);
}
}
}
/** /**
* @brief * @brief
* *
@@ -1153,7 +1047,7 @@ int32_t BufferText::FindLine(Edn::String &data)
EDN_WARNING("no search data"); EDN_WARNING("no search data");
return 0; return 0;
} }
EDN_INFO("Search data line : \"" << data.c_str() << "\""); EDN_INFO("Search data line : \"" << data << "\"");
Edn::VectorType<int8_t> mVectSearch; Edn::VectorType<int8_t> mVectSearch;
mVectSearch = data.GetVector(); mVectSearch = data.GetVector();
//EDN_INFO("search data Forward : startSearchPos=" << startSearchPos ); //EDN_INFO("search data Forward : startSearchPos=" << startSearchPos );
@@ -1178,7 +1072,7 @@ void BufferText::JumpAtLine(int32_t newLine)
void BufferText::Search(Edn::String &data, bool back, bool caseSensitive, bool wrap, bool regExp) void BufferText::Search(Edn::String &data, bool back, bool caseSensitive, bool wrap, bool regExp)
{ {
EDN_INFO("Search data : \"" << data.c_str() << "\""); EDN_INFO("Search data : \"" << data << "\"");
int32_t SelectionStart, SelectionEnd, SelectionRectStart, SelectionRectEnd; int32_t SelectionStart, SelectionEnd, SelectionRectStart, SelectionRectEnd;
bool SelectionIsRect; bool SelectionIsRect;

View File

@@ -41,14 +41,9 @@ typedef enum {
class BufferText : public Buffer { class BufferText : public Buffer {
public: public:
BufferText(void); BufferText(void);
BufferText(Edn::String &filename); BufferText(Edn::File &fileName);
virtual ~BufferText(void); virtual ~BufferText(void);
Edn::String GetName(void);
Edn::String GetShortName(void);
Edn::String GetFolder(void);
void SetName(Edn::String &newName);
void Save(void); void Save(void);
bool HaveName(void);
void GetInfo(infoStatBuffer_ts &infoToUpdate); void GetInfo(infoStatBuffer_ts &infoToUpdate);
void SetLineDisplay(uint32_t lineNumber); void SetLineDisplay(uint32_t lineNumber);
@@ -80,9 +75,6 @@ class BufferText : public Buffer {
void SetCharset(charset_te newCharset); void SetCharset(charset_te newCharset);
private: private:
// naming
Edn::String filename; //!< filename of the curent buffer
bool haveName; //!< to know if the file have a name or NOT
// Display // Display
bool NeedToCleanEndPage; //!< if true, the end of the page need to be clean (arrive after a remove line) bool NeedToCleanEndPage; //!< if true, the end of the page need to be clean (arrive after a remove line)
uint32_t nbColoneForLineNumber; //!< number of colome used to display the line Number uint32_t nbColoneForLineNumber; //!< number of colome used to display the line Number

View File

@@ -147,17 +147,17 @@ gboolean BufferView::CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, g
basicColor_te selectFG = COLOR_LIST_TEXT_NORMAL; basicColor_te selectFG = COLOR_LIST_TEXT_NORMAL;
basicColor_te selectBG = COLOR_LIST_BG_1; basicColor_te selectBG = COLOR_LIST_BG_1;
for (i=0; i < nbBufferOpen; i++) { for (i=0; i < nbBufferOpen; i++) {
Edn::String name; Edn::File name;
bool isModify; bool isModify;
if (self->m_bufferManager->Exist(i)) { if (self->m_bufferManager->Exist(i)) {
isModify = self->m_bufferManager->Get(i)->IsModify(); isModify = self->m_bufferManager->Get(i)->IsModify();
name = self->m_bufferManager->Get(i)->GetShortName(); name = self->m_bufferManager->Get(i)->GetFileName();
char *tmpModify = (char*)" "; char *tmpModify = (char*)" ";
if (true == isModify) { if (true == isModify) {
tmpModify = (char*)"M"; tmpModify = (char*)"M";
} }
char name2[1024] = ""; char name2[1024] = "";
sprintf(name2, "[%2d](%s) %s", i, tmpModify, name.c_str() ); sprintf(name2, "[%2d](%s) %s", i, tmpModify, name.GetShortFilename().c_str() );
if (true == isModify) { if (true == isModify) {
selectFG = COLOR_LIST_TEXT_MODIFY; selectFG = COLOR_LIST_TEXT_MODIFY;
@@ -255,24 +255,28 @@ void BufferView::OnPopupEventShow(GtkWidget *menuitem, gpointer data)
{ {
BufferView * self = reinterpret_cast<BufferView*>(data); BufferView * self = reinterpret_cast<BufferView*>(data);
self->SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, self->m_contectMenuSelectID); self->SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, self->m_contectMenuSelectID);
self->m_contectMenuSelectID = -1;
} }
void BufferView::OnPopupEventClose(GtkWidget *menuitem, gpointer data) void BufferView::OnPopupEventClose(GtkWidget *menuitem, gpointer data)
{ {
BufferView * self = reinterpret_cast<BufferView*>(data); BufferView * self = reinterpret_cast<BufferView*>(data);
self->SendMessage(EDN_MSG__BUFF_ID_CLOSE, self->m_contectMenuSelectID); self->SendMessage(EDN_MSG__BUFF_ID_CLOSE, self->m_contectMenuSelectID);
self->m_contectMenuSelectID = -1;
} }
void BufferView::OnPopupEventSave(GtkWidget *menuitem, gpointer data) void BufferView::OnPopupEventSave(GtkWidget *menuitem, gpointer data)
{ {
BufferView * self = reinterpret_cast<BufferView*>(data); BufferView * self = reinterpret_cast<BufferView*>(data);
self->SendMessage(EDN_MSG__BUFF_ID_SAVE, self->m_contectMenuSelectID); self->SendMessage(EDN_MSG__BUFF_ID_SAVE, self->m_contectMenuSelectID);
self->m_contectMenuSelectID = -1;
} }
void BufferView::OnPopupEventSaveAs(GtkWidget *menuitem, gpointer data) void BufferView::OnPopupEventSaveAs(GtkWidget *menuitem, gpointer data)
{ {
BufferView * self = reinterpret_cast<BufferView*>(data); BufferView * self = reinterpret_cast<BufferView*>(data);
self->SendMessage(EDN_MSG__GUI_SHOW_SAVE_AS, self->m_contectMenuSelectID); self->SendMessage(EDN_MSG__GUI_SHOW_SAVE_AS, self->m_contectMenuSelectID);
self->m_contectMenuSelectID = -1;
} }

View File

@@ -93,17 +93,25 @@ MainWindows::~MainWindows(void)
} }
void MainWindows::SetTitle(Edn::String &fileName, bool isModify) void MainWindows::SetTitle(Edn::File &fileName, bool isModify)
{ {
Edn::String tmp = ""; Edn::String tmp = "";
if (fileName != "") { if (fileName.GetShortFilename() != "") {
tmp += fileName; tmp += fileName.GetShortFilename();
tmp += " - ";
tmp += fileName.GetFolder();
tmp += " - "; tmp += " - ";
} }
tmp += "Edn"; tmp += "Edn";
gtk_window_set_title(GTK_WINDOW(m_mainWindow), tmp.c_str()); gtk_window_set_title(GTK_WINDOW(m_mainWindow), tmp.c_str());
} }
void MainWindows::SetNoTitle(void)
{
Edn::String tmp = "Edn";
gtk_window_set_title(GTK_WINDOW(m_mainWindow), tmp.c_str());
}
void MainWindows::OnMessage(int32_t id, int32_t dataID) void MainWindows::OnMessage(int32_t id, int32_t dataID)
{ {
switch (id) switch (id)
@@ -112,12 +120,11 @@ void MainWindows::OnMessage(int32_t id, int32_t dataID)
// change Title : // change Title :
// TODO : String error when remove the error with -1; // TODO : String error when remove the error with -1;
if (-1 == dataID) { if (-1 == dataID) {
Edn::String plop = ""; SetNoTitle();
SetTitle(plop, false );
} else { } else {
Buffer *mybuf = BufferManager::getInstance()->Get(dataID); Buffer *mybuf = BufferManager::getInstance()->Get(dataID);
if (NULL != mybuf) { if (NULL != mybuf) {
Edn::String plop = mybuf->GetName(); Edn::File plop = mybuf->GetFileName();
SetTitle(plop, mybuf->IsModify() ); SetTitle(plop, mybuf->IsModify() );
} }
} }

View File

@@ -53,7 +53,8 @@ class MainWindows: public Singleton<MainWindows>, public MsgBroadcast
static bool OnQuit(GtkWidget *widget, gpointer data); static bool OnQuit(GtkWidget *widget, gpointer data);
private: private:
void SetTitle(Edn::String &fileName, bool isModify); void SetTitle(Edn::File &fileName, bool isModify);
void SetNoTitle(void);
// main windows widget : // main windows widget :
GtkWidget * m_mainWindow; GtkWidget * m_mainWindow;
BufferView m_BufferView; BufferView m_BufferView;

View File

@@ -68,7 +68,10 @@ void Search::Display(GtkWindow *parent)
gtk_window_set_transient_for(GTK_WINDOW(m_localDialog), parent); gtk_window_set_transient_for(GTK_WINDOW(m_localDialog), parent);
// set the dialog on the top right // set the dialog on the top right
gtk_window_set_gravity(GTK_WINDOW(m_localDialog), GDK_GRAVITY_NORTH_EAST); gtk_window_set_gravity(GTK_WINDOW(m_localDialog), GDK_GRAVITY_NORTH_EAST);
// Remove the dialogue from the task bar
gtk_window_set_skip_taskbar_hint(GTK_WINDOW(m_localDialog), TRUE);
// this element did not apear in the miniature of the windows
gtk_window_set_skip_pager_hint(GTK_WINDOW(m_localDialog), TRUE);
// select the program icone // select the program icone
//gtk_window_set_default_icon_name("Replace"); //gtk_window_set_default_icon_name("Replace");

View File

@@ -98,16 +98,18 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
GTK_STOCK_OPEN, // button text GTK_STOCK_OPEN, // button text
GTK_RESPONSE_ACCEPT, // response id GTK_RESPONSE_ACCEPT, // response id
NULL); // end button/response list NULL); // end button/response list
// this element did not apear in the miniature of the windows
gtk_window_set_skip_pager_hint(GTK_WINDOW(dialog), TRUE);
if( -1 != m_currentBufferID if( -1 != m_currentBufferID
&& true == myBufferManager->Exist(m_currentBufferID) ) && true == myBufferManager->Exist(m_currentBufferID) )
{ {
Edn::String fileFolder = myBufferManager->Get(m_currentBufferID)->GetFolder(); Edn::File fileName = myBufferManager->Get(m_currentBufferID)->GetFileName();
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER(dialog), fileFolder.c_str()); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), fileName.GetFolder().c_str());
//gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER(dialog), "Untitled document"); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), fileName.GetShortFilename().c_str());
} }
if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{ {
Edn::String myfilename; Edn::File myfilename;
myfilename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog)); myfilename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog));
if (false == myBufferManager->Exist(myfilename) ) { if (false == myBufferManager->Exist(myfilename) ) {
@@ -132,7 +134,7 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
} }
Buffer *myBuffer = BufferManager::getInstance()->Get(idSelected); Buffer *myBuffer = BufferManager::getInstance()->Get(idSelected);
Edn::String tmpString = "Save as file : "; Edn::String tmpString = "Save as file : ";
tmpString += myBuffer->GetShortName().c_str(); tmpString += myBuffer->GetFileName().GetShortFilename().c_str();
GtkWidget *dialog = gtk_file_chooser_dialog_new( tmpString.c_str(), NULL, GtkWidget *dialog = gtk_file_chooser_dialog_new( tmpString.c_str(), NULL,
GTK_FILE_CHOOSER_ACTION_SAVE, GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, // button text GTK_STOCK_CANCEL, // button text
@@ -140,12 +142,14 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
GTK_STOCK_SAVE, // button text GTK_STOCK_SAVE, // button text
GTK_RESPONSE_ACCEPT, // response id GTK_RESPONSE_ACCEPT, // response id
NULL); // end button/response list NULL); // end button/response list
// this element did not apear in the miniature of the windows
gtk_window_set_skip_pager_hint(GTK_WINDOW(dialog), TRUE);
if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{ {
Edn::String myfilename; Edn::String myfilename;
myfilename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog)); myfilename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog));
myBuffer->SetName(myfilename); myBuffer->SetFileName(myfilename);
myBuffer->Save(); myBuffer->Save();
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, idSelected); SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, idSelected);
@@ -161,6 +165,8 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
GTK_DIALOG_MODAL, GTK_DIALOG_MODAL,
GTK_STOCK_QUIT, GTK_RESPONSE_NO, GTK_STOCK_QUIT, GTK_RESPONSE_NO,
NULL); NULL);
// this element did not apear in the miniature of the windows
gtk_window_set_skip_pager_hint(GTK_WINDOW(myDialog), TRUE);
GtkWidget *myContentArea = gtk_dialog_get_content_area( GTK_DIALOG(myDialog)); GtkWidget *myContentArea = gtk_dialog_get_content_area( GTK_DIALOG(myDialog));
GtkWidget *myLabel = gtk_label_new(""); GtkWidget *myLabel = gtk_label_new("");
gtk_label_set_markup (GTK_LABEL (myLabel), gtk_label_set_markup (GTK_LABEL (myLabel),
@@ -212,6 +218,8 @@ void WindowsManager::OnMessage(int32_t id, int32_t dataID)
"Jump", GTK_RESPONSE_YES, "Jump", GTK_RESPONSE_YES,
GTK_STOCK_QUIT, GTK_RESPONSE_NO, GTK_STOCK_QUIT, GTK_RESPONSE_NO,
NULL); NULL);
// this element did not apear in the miniature of the windows
gtk_window_set_skip_pager_hint(GTK_WINDOW(myDialog), TRUE);
// Set over main windows // Set over main windows
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

View File

@@ -139,7 +139,7 @@ void CTagsManager::LoadTagFile(void)
return; return;
} }
// load (open) the tag file : // load (open) the tag file :
EDN_INFO("try to open tag file : " << m_tagFilename.c_str()); EDN_INFO("try to open tag file : " << m_tagFilename);
m_ctagFile = tagsOpen(m_tagFilename.c_str(), &info); m_ctagFile = tagsOpen(m_tagFilename.c_str(), &info);
if (NULL != m_ctagFile) { if (NULL != m_ctagFile) {
EDN_INFO("open exuberant Ctags file is OK ..."); EDN_INFO("open exuberant Ctags file is OK ...");
@@ -159,9 +159,7 @@ void CTagsManager::AddToHistory(int32_t bufferID)
} }
// add the current element // add the current element
BufferManager *myBufferManager = BufferManager::getInstance(); BufferManager *myBufferManager = BufferManager::getInstance();
Edn::String currentFilename = myBufferManager->Get(bufferID)->GetName(); Edn::File currentFilename = myBufferManager->Get(bufferID)->GetFileName();
int32_t currentLineId = 0;
Edn::File * currentFile = new Edn::File(currentFilename);
} }
@@ -282,23 +280,24 @@ void CTagsManager::JumpTo(void)
BufferManager *myBufferManager = BufferManager::getInstance(); BufferManager *myBufferManager = BufferManager::getInstance();
Edn::String destinationFilename = m_tagFolderBase; Edn::String destinationFilename = m_tagFolderBase;
destinationFilename += entry.file; destinationFilename += entry.file;
EDN_INFO(" OPEN the TAG file Destination : " << destinationFilename.c_str() ); Edn::File myfile = destinationFilename;
if (false == myBufferManager->Exist(destinationFilename) ) { EDN_INFO(" OPEN the TAG file Destination : " << myfile );
if (false == myBufferManager->Exist(myfile) ) {
// need to open the file : // need to open the file :
int32_t openID = myBufferManager->Open(destinationFilename); int32_t openID = myBufferManager->Open(myfile);
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, openID); SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, openID);
} else { } else {
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, myBufferManager->GetId(destinationFilename)); SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, myBufferManager->GetId(myfile));
} }
int32_t localId = myBufferManager->GetId(destinationFilename); int32_t localId = myBufferManager->GetId(myfile);
Edn::String pattern = entry.address.pattern; Edn::String pattern = entry.address.pattern;
EDN_DEBUG("try to find line with : \"" << pattern.c_str() << "\"" ); EDN_DEBUG("try to find line with : \"" << pattern << "\"" );
if (pattern.Size() > 4) { if (pattern.Size() > 4) {
pattern.Remove(0,2); pattern.Remove(0,2);
pattern.Remove(pattern.Size()-1,2); pattern.Remove(pattern.Size()-1,2);
} }
// TODO : remove '\' char when needed ... // TODO : remove '\' char when needed ...
EDN_DEBUG("try to find line with : \"" << pattern.c_str() << "\"" ); EDN_DEBUG("try to find line with : \"" << pattern << "\"" );
int32_t destLine = myBufferManager->Get(localId)->FindLine(pattern); int32_t destLine = myBufferManager->Get(localId)->FindLine(pattern);
SendMessage(EDN_MSG__CURRENT_GOTO_LINE, destLine); SendMessage(EDN_MSG__CURRENT_GOTO_LINE, destLine);
/* /*

View File

@@ -110,13 +110,7 @@ int main (int argc, char *argv[])
EDN_INFO("show list of files : "); EDN_INFO("show list of files : ");
for( int32_t i=1 ; i<argc; i++) { for( int32_t i=1 ; i<argc; i++) {
EDN_INFO("need load file : \"" << argv[i] << "\"" ); EDN_INFO("need load file : \"" << argv[i] << "\"" );
Edn::String myfile = ""; Edn::File myfile = (char *)argv[i];
// Special case for the root file origin
if ('/' != argv[i][0]) {
myfile+=cCurrentPath;
myfile+="/";
}
myfile+=(char *)argv[i];
if (false == myBufferManager->Exist(myfile) ) { if (false == myBufferManager->Exist(myfile) ) {
int32_t idBuffOpened = myBufferManager->Open(myfile); int32_t idBuffOpened = myBufferManager->Open(myfile);

View File

@@ -30,13 +30,33 @@
#define MAX_FILE_NAME (10240) #define MAX_FILE_NAME (10240)
#undef __class__
#define __class__ "Edn::File"
std::ostream& Edn::operator <<(std::ostream &os, const Edn::File &obj)
{
os << obj.m_folder;
os << "/";
os << obj.m_shortFilename;
return os;
}
Edn::File::File(Edn::String &filename, int32_t LineNumber) Edn::File::File(Edn::String &filename, int32_t LineNumber)
{ {
m_lineNumberOpen = 0; m_lineNumberOpen = LineNumber;
SetCompleateName(filename); SetCompleateName(filename);
} }
Edn::File::File(const char *filename, int32_t LineNumber)
{
Edn::String tmpString = filename;
m_lineNumberOpen = LineNumber;
SetCompleateName(tmpString);
}
Edn::File::File(Edn::String &filename, Edn::String &folder, int32_t lineNumber) Edn::File::File(Edn::String &filename, Edn::String &folder, int32_t lineNumber)
{ {
Edn::String tmpString = folder; Edn::String tmpString = folder;
@@ -46,82 +66,150 @@ Edn::File::File(Edn::String &filename, Edn::String &folder, int32_t lineNumber)
m_lineNumberOpen = lineNumber; m_lineNumberOpen = lineNumber;
} }
Edn::File::~File(void) Edn::File::~File(void)
{ {
// nothing to do ... // nothing to do ...
} }
void Edn::File::ExtranctAndName(Edn::String &inputString)
{
m_folder = "";
m_shortFilename = "";
for (int32_t iii=inputString.Size()-1; iii >= 0 ; iii--) { Edn::String Edn::File::GetFolder(void) const
/*
if (inputString[iii] != '/') {
m_shortFilename.Insert(0, inputString[iii]);
} else {
break;
}
*/
}
/*
char tmpVal[4096];
strncpy(tmpVal, inputString.c_str(), 4096);
tmpVal[4096-1] = '\0';
char *ptr = strrchr(tmpVal, '/');
if (NULL == ptr) {
ptr = strrchr(tmpVal, '\\');
}
Edn::String out = "./";
if (NULL != ptr) {
*ptr = '\0';
out = tmpVal;
out+= '/';
}
return out;
*/
}
Edn::String Edn::File::GetFolder(void)
{ {
return m_folder; return m_folder;
} }
Edn::String Edn::File::GetShortFilename(void) Edn::String Edn::File::GetShortFilename(void) const
{ {
return m_shortFilename; return m_shortFilename;
} }
Edn::String Edn::File::GetCompleateName(void) Edn::String Edn::File::GetCompleateName(void) const
{ {
Edn::String out; Edn::String out;
out = m_folder; out = m_folder;
out += '/'; out += '/';
out += m_shortFilename; out += m_shortFilename;
return out;
} }
const Edn::File& Edn::File::operator= (const Edn::File &ednF )
{
if( this != &ednF ) // avoid copy to itself
{
m_folder = ednF.m_folder;
m_shortFilename = ednF.m_shortFilename;
m_lineNumberOpen = ednF.m_lineNumberOpen;
}
return *this;
}
/**
* @brief
*
* @param[in,out]
*
* @return
*
*/
bool Edn::File::operator== (const Edn::File &ednF) const
{
if( this != &ednF ) {
if (ednF.GetCompleateName() == GetCompleateName() ) {
return true;
} else {
return false;
}
return true;
}
return true;
}
/**
* @brief
*
* @param[in,out]
*
* @return
*
*/
bool Edn::File::operator!= (const Edn::File &ednF) const
{
return !(*this == ednF);
}
void Edn::File::SetCompleateName(Edn::String &newFilename) void Edn::File::SetCompleateName(Edn::String &newFilename)
{ {
char buf[MAX_FILE_NAME]; char buf[MAX_FILE_NAME];
memset(buf, 0, MAX_FILE_NAME); memset(buf, 0, MAX_FILE_NAME);
char * ok; char * ok;
// Get the real Path of the current File // Reset ALL DATA :
ok = realpath(newFilename.c_str(), buf); m_folder = "";
if (!ok) { m_shortFilename = "";
EDN_ERROR("Can not find real name of \"" << newFilename.c_str() << "\""); m_lineNumberOpen = 0;
EDN_DEBUG("1 :Set Name : " << newFilename );
Edn::String destFilename;
if (newFilename.Size() == 0) {
destFilename = "no-name";
} else { } else {
EDN_DEBUG("file : \"" << newFilename.c_str() << "\" done:\"" << buf << "\" "); destFilename = newFilename;
} }
//EDN_DEBUG("2 : Get file Name : " << destFilename );
if ('/' != *destFilename.c_str()) {
// Get the command came from the running of the program :
char cCurrentPath[FILENAME_MAX];
if (!getcwd(cCurrentPath, FILENAME_MAX)) {
return;
}
cCurrentPath[FILENAME_MAX - 1] = '\0';
Edn::String tmpFilename = destFilename;
destFilename = cCurrentPath;
destFilename += '/';
destFilename += tmpFilename;
}
//EDN_DEBUG("3 : Get file Name : " << destFilename );
// Get the real Path of the current File
ok = realpath(destFilename.c_str(), buf);
if (!ok) {
int32_t lastPos = destFilename.FindBack('/');
if (-1 != lastPos) {
// Get the FileName
Edn::String tmpFilename = destFilename.Extract(lastPos+1);
destFilename.Remove(lastPos, destFilename.Size() - lastPos);
//EDN_DEBUG("try to find :\"" << destFilename << "\" / \"" << tmpFilename << "\" ");
ok = realpath(destFilename.c_str(), buf);
if (!ok) {
EDN_ERROR("Can not find real Path name of \"" << destFilename << "\"");
m_shortFilename = tmpFilename;
m_folder = destFilename;
} else {
// ALL is OK ...
m_shortFilename = tmpFilename;
m_folder = destFilename;
}
} else {
EDN_WARNING("file : \"" << destFilename << "\" ==> No data???");
// Basic ERROR ...
m_shortFilename = destFilename;
}
} else {
destFilename = buf;
int32_t lastPos = destFilename.FindBack('/');
if (-1 != lastPos) {
m_shortFilename = destFilename.Extract(lastPos+1);
m_folder = destFilename.Extract(0, lastPos);
} else {
// Basic ERROR ...
EDN_WARNING("file : \"" << destFilename << "\" ==> No data???");
m_shortFilename = destFilename;
}
}
EDN_DEBUG("Set FileName :\"" << m_folder << "\" / \"" << m_shortFilename << "\" ");
} }
int32_t Edn::File::GetLineNumber(void) int32_t Edn::File::GetLineNumber(void)
{ {
return m_lineNumberOpen; return m_lineNumberOpen;
} }

View File

@@ -33,21 +33,28 @@ namespace Edn
public: public:
File(void) { m_lineNumberOpen=0; } File(void) { m_lineNumberOpen=0; }
File(Edn::String &filename, int32_t LineNumber = 0); File(Edn::String &filename, int32_t LineNumber = 0);
File(const char *filename, int32_t LineNumber = 0);
File(Edn::String &filename, Edn::String &folder, int32_t lineNumber = 0); File(Edn::String &filename, Edn::String &folder, int32_t lineNumber = 0);
~File(void); ~File(void);
Edn::String GetFolder(void); Edn::String GetFolder(void) const;
Edn::String GetShortFilename(void); Edn::String GetShortFilename(void) const;
Edn::String GetCompleateName(void); Edn::String GetCompleateName(void) const;
int32_t GetLineNumber(void); int32_t GetLineNumber(void);
void SetCompleateName(Edn::String &newFilename); void SetCompleateName(Edn::String &newFilename);
const Edn::File& operator= (const Edn::File &ednF );
bool operator== (const Edn::File &ednF ) const;
bool operator!= (const Edn::File &ednF ) const;
friend std::ostream& operator <<( std::ostream &os,const Edn::File &obj);
private : private :
void ExtranctAndName(Edn::String &inputString);
Edn::String m_folder; Edn::String m_folder;
Edn::String m_shortFilename; Edn::String m_shortFilename;
int32_t m_lineNumberOpen; int32_t m_lineNumberOpen;
}; };
std::ostream& operator <<(std::ostream &os, const Edn::File &obj);
} }
#endif #endif

View File

@@ -28,8 +28,13 @@
#undef __class__ #undef __class__
#define __class__ "EdnString" #define __class__ "Edn::String"
std::ostream& Edn::operator <<(std::ostream &os, const Edn::String &obj)
{
os << (char*)&obj.m_data[0];
return os;
}
/** /**
* @brief * @brief
@@ -385,6 +390,9 @@ Edn::String Edn::String::operator+ (const char * inputData)
} }
/** /**
* @brief * @brief
* *
@@ -592,57 +600,57 @@ void Edn::TestUntaire_String(void)
int32_t iddd = 0; int32_t iddd = 0;
Edn::String * monString = new Edn::String(); Edn::String * monString = new Edn::String();
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << monString << "\"");
delete(monString); delete(monString);
monString = new Edn::String("test de direct data"); monString = new Edn::String("test de direct data");
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << monString << "\"");
delete(monString); delete(monString);
monString = new Edn::String("test de direct data", 7); monString = new Edn::String("test de direct data", 7);
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << monString << "\"");
delete(monString); delete(monString);
int32_t testId = -6789; int32_t testId = -6789;
monString = new Edn::String(testId); monString = new Edn::String(testId);
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << monString << "\"");
delete(monString); delete(monString);
uint32_t testId2 = 12345; uint32_t testId2 = 12345;
monString = new Edn::String((unsigned int)testId2); monString = new Edn::String((unsigned int)testId2);
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << monString << "\"");
delete(monString); delete(monString);
Edn::String plop = "otherString"; Edn::String plop = "otherString";
monString = new Edn::String(plop); monString = new Edn::String(plop);
EDN_INFO("phase : " << iddd++ << " : \"" << monString->c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << monString << "\"");
delete(monString); delete(monString);
Edn::String s1 = "test de base ..."; Edn::String s1 = "test de base ...";
s1 += s1; s1 += s1;
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << s1 << "\"");
s1 += " plop 2 "; s1 += " plop 2 ";
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << s1 << "\"");
s1 += plop; s1 += plop;
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << s1 << "\"");
s1 = plop; s1 = plop;
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << s1 << "\"");
s1 = "test direct 44"; s1 = "test direct 44";
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << s1 << "\"");
Edn::VectorType<int8_t> vb1; Edn::VectorType<int8_t> vb1;
vb1.PushBack('v'); vb1.PushBack('v');
vb1.PushBack('b'); vb1.PushBack('b');
vb1.PushBack('1'); vb1.PushBack('1');
s1 = vb1; s1 = vb1;
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << s1 << "\"");
vb1.Clear(); vb1.Clear();
vb1.PushBack('v'); vb1.PushBack('v');
vb1.PushBack('b'); vb1.PushBack('b');
vb1.PushBack('2'); vb1.PushBack('2');
vb1.PushBack('\0'); vb1.PushBack('\0');
s1 = vb1; s1 = vb1;
EDN_INFO("phase : " << iddd++ << " : \"" << s1.c_str() << "\""); EDN_INFO("phase : " << iddd++ << " : \"" << s1 << "\"");
if (s1 == "vb2") { if (s1 == "vb2") {
EDN_INFO("phase : " << iddd++ << " : == OK"); EDN_INFO("phase : " << iddd++ << " : == OK");

View File

@@ -25,6 +25,8 @@
#ifndef __END__STRING_H__ #ifndef __END__STRING_H__
#define __END__STRING_H__ #define __END__STRING_H__
#include <iostream>
namespace Edn namespace Edn
{ {
class String class String
@@ -55,6 +57,7 @@ namespace Edn
Edn::String operator+ (const Edn::String &ednS); // + operator Edn::String operator+ (const Edn::String &ednS); // + operator
Edn::String operator+ (const char * inputData); Edn::String operator+ (const char * inputData);
//operator const char *() //operator const char *()
friend std::ostream& operator <<( std::ostream &os,const Edn::String &obj);
bool IsEmpty(void) const; bool IsEmpty(void) const;
int32_t Size(void) const; int32_t Size(void) const;
@@ -76,7 +79,14 @@ namespace Edn
}; };
void TestUntaire_String(void); void TestUntaire_String(void);
std::ostream& operator <<(std::ostream &os, const Edn::String &obj);
} }
#endif #endif

View File

@@ -17,7 +17,7 @@
- Project manager phase 1 - Project manager phase 1
# action a faire (ordonner) : # action a faire (ordonner) :
- sys : la methode de close est mauvaise... - HL : Parsing caracter/caract<63>re et plus section par section ...
- 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
@@ -36,7 +36,6 @@
- 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) - 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 de display quand on vas vers la fin, et mise en place d'un display qui met toujours le meme temps
- Correction du bug des entr<74> bizard tel que les chapot et les guillemets - Correction du bug des entr<74> bizard tel que les chapot et les guillemets
- gui : Parameters : et en autre la taille de la police ... et voir pour la r<>cup<75>rer sur le system... et ce serait cool... - 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><> ... - PB de copier coller sur les <20><> ...