add save as and start of Unicode string adaptation

This commit is contained in:
2012-02-14 19:29:53 +01:00
parent cd84475aea
commit e21e7e7c21
6 changed files with 114 additions and 44 deletions

View File

@@ -51,6 +51,8 @@ BufferManager::BufferManager(void)
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgGuiClose); ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgGuiClose);
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgGuiSave); ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgGuiSave);
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgCodeViewSelectedId); ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgCodeViewSelectedId);
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferId);
/* /*
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerNewFile); ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerNewFile);
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerSaveAll); ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerSaveAll);
@@ -83,7 +85,21 @@ BufferManager::~BufferManager(void)
bool BufferManager::OnEventAreaExternal(int32_t widgetID, const char * generateEventId, const char * data, etkFloat_t x, etkFloat_t y) bool BufferManager::OnEventAreaExternal(int32_t widgetID, const char * generateEventId, const char * data, etkFloat_t x, etkFloat_t y)
{ {
if (generateEventId == ednMsgGuiNew) { if (generateEventId == ednMsgBufferId) {
// select a new buffer ID :
if (NULL == data) {
EDN_ERROR("Request select buffer ID = NULL ????");
} else {
int32_t newID = -1;
sscanf(data, "%d", &newID);
if(true == Exist(newID)) {
m_idSelected = newID;
} else {
m_idSelected = -1;
EDN_ERROR("Request a non existant ID : " << newID << " reset to -1...");
}
}
} else if (generateEventId == ednMsgGuiNew) {
int32_t newOne = Create(); int32_t newOne = Create();
if (-1 != newOne) { if (-1 != newOne) {
m_idSelected = newOne; m_idSelected = newOne;
@@ -134,10 +150,48 @@ bool BufferManager::OnEventAreaExternal(int32_t widgetID, const char * generateE
if (NULL == data) { if (NULL == data) {
EDN_ERROR("Null data for close file ... "); EDN_ERROR("Null data for close file ... ");
} else { } else {
if (0 == strcmp(data , "current")) { if (0 == strcmp(data , "All")) {
} else if (0 == strcmp(data , "All")) {
} else {
int32_t closeID = -1;
if (0 == strcmp(data , "current")) {
closeID = m_idSelected;
EDN_DEBUG("Close specific buffer ID" << closeID);
} else {
// close specific buffer ...
sscanf(data, "%d", &closeID);
EDN_DEBUG("Close specific buffer ID="<< closeID);
}
if(true == Exist(closeID)) {
// Get the new display buffer
if (m_idSelected == closeID) {
// Try previous buffer
int32_t destBuffer = -1;
for(int32_t ii=closeID-1; ii >= 0; ii--) {
if (true == Exist(ii) ) {
destBuffer = ii;
break;
}
}
// try next buffer
if (-1 == destBuffer) {
for(int32_t ii=closeID+1; ii < listBuffer.Size(); ii++) {
if (true == Exist(ii) ) {
destBuffer = ii;
break;
}
}
}
// set it to the currect display
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferId, destBuffer);
m_idSelected = destBuffer;
}
// Remove requested buffer
Remove(closeID);
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgBufferListChange);
} else {
EDN_ERROR("Request Close of a non existant ID : " << closeID);
}
} }
} }
} else if (generateEventId == ednMsgCodeViewSelectedId) { } else if (generateEventId == ednMsgCodeViewSelectedId) {
@@ -160,39 +214,6 @@ bool BufferManager::OnEventAreaExternal(int32_t widgetID, const char * generateE
/* /*
switch (id) switch (id)
{ {
case EDN_MSG__BUFF_ID_CLOSE:
// Check buffer existence
if(true == Exist(dataID)) {
// Get the new display buffer
if (m_idSelected == dataID) {
// Try previous buffer
int32_t destBuffer = -1;
for(int32_t ii=dataID-1; ii >= 0; ii--) {
if (true == Exist(ii) ) {
destBuffer = ii;
break;
}
}
//EDN_DEBUG("new buffer selected : ?? " << destBuffer);
// try next buffer
if (-1 == destBuffer) {
for(int32_t ii=dataID+1; ii < listBuffer.Size(); ii++) {
if (true == Exist(ii) ) {
destBuffer = ii;
break;
}
}
}
//EDN_DEBUG("new buffer selected : ?? " << destBuffer);
// set it to the currect display
SendMessage(EDN_MSG__CURRENT_CHANGE_BUFFER_ID, destBuffer);
}
//EDN_DEBUG("Remove : " << dataID);
// Remove requested buffer
Remove(dataID);
}
break;
case EDN_MSG__BUFF_ID_SAVE:
// Check buffer existence // Check buffer existence
if(true == Exist(dataID)) { if(true == Exist(dataID)) {
// If no name ==> request a Gui display ... // If no name ==> request a Gui display ...
@@ -342,6 +363,19 @@ uint32_t BufferManager::Size(void)
return listBuffer.Size(); return listBuffer.Size();
} }
// nb of opens file Now ...
uint32_t BufferManager::SizeOpen(void)
{
uint32_t jjj = 0;
// check if the Buffer existed
for (int32_t iii=0; iii<listBuffer.Size(); iii++) {
// check if the buffer already existed
if (NULL != listBuffer[iii]) {
jjj++;
}
}
return jjj;
}
/** /**
* @brief * @brief

View File

@@ -60,6 +60,7 @@ class BufferManager: public etk::Singleton<BufferManager>, public ewol::Widget
int32_t GetId(etk::File &myFile); int32_t GetId(etk::File &myFile);
// return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5 // 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);
uint32_t SizeOpen(void);
int32_t WitchBuffer(int32_t iEmeElement); int32_t WitchBuffer(int32_t iEmeElement);

View File

@@ -90,7 +90,7 @@ bool BufferView::GetTitle(int32_t colomn, etk::String &myTitle, color_ts &fg, co
uint32_t BufferView::GetNuberOfRaw(void) uint32_t BufferView::GetNuberOfRaw(void)
{ {
if (NULL != m_bufferManager) { if (NULL != m_bufferManager) {
return m_bufferManager->Size(); return m_bufferManager->SizeOpen();
} }
return 0; return 0;
} }
@@ -101,15 +101,18 @@ bool BufferView::GetElement(int32_t colomn, int32_t raw, etk::String &myTextToWr
bool isModify; bool isModify;
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;
if (m_bufferManager->Exist(raw)) {
isModify = m_bufferManager->Get(raw)->IsModify(); // transforme the ID in the real value ...
name = m_bufferManager->Get(raw)->GetFileName(); int32_t realID = m_bufferManager->WitchBuffer(raw+1);
if (m_bufferManager->Exist(realID)) {
isModify = m_bufferManager->Get(realID)->IsModify();
name = m_bufferManager->Get(realID)->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", raw, tmpModify, name.GetShortFilename().c_str() ); sprintf(name2, "[%2d](%s) %s", realID, tmpModify, name.GetShortFilename().c_str() );
myTextToWrite = name2; myTextToWrite = name2;
@@ -231,7 +234,6 @@ gboolean BufferView::CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, g
monDrawer.Flush(); monDrawer.Flush();
lineID ++; lineID ++;
} }
} }
return TRUE; return TRUE;

View File

@@ -40,7 +40,6 @@ class BufferView : public ewol::List
// Constructeur // Constructeur
BufferView(void); BufferView(void);
~BufferView(void); ~BufferView(void);
//GtkWidget *GetMainWidget(void);
bool OnEventAreaExternal(int32_t widgetID, const char * generateEventId, const char * eventExternId, etkFloat_t x, etkFloat_t y); bool OnEventAreaExternal(int32_t widgetID, const char * generateEventId, const char * eventExternId, etkFloat_t x, etkFloat_t y);
protected: protected:
// function call to display the list : // function call to display the list :

View File

@@ -237,6 +237,23 @@ bool MainWindows::OnEventAreaExternal(int32_t widgetID, const char * generateEve
} }
} }
} else if (generateEventId == ednEventPopUpFileSaveAs) { } else if (generateEventId == ednEventPopUpFileSaveAs) {
// get widget:
ewol::FileChooser * tmpWidget = (ewol::FileChooser*)ewol::widgetManager::Get(widgetID);
if (NULL == tmpWidget) {
EDN_ERROR("impossible to get pop_upWidget " << widgetID);
PopUpWidgetPop();
return false;
}
// get the filename :
etk::String tmpData = tmpWidget->GetCompleateFileName();
EDN_DEBUG("Request Saving As file : " << tmpData);
BufferManager * myMng = BufferManager::getInstance();
myMng->Get(m_currentSavingAsIdBuffer)->SetFileName(tmpData);
ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgGuiSave, m_currentSavingAsIdBuffer);
//ewol::widgetMessageMultiCast::Send(GetWidgetId(), ednMsgOpenFile, tmpData.c_str());
PopUpWidgetPop(); PopUpWidgetPop();
} }
return true; return true;

View File

@@ -37,6 +37,7 @@
#include <unistd.h> #include <unistd.h>
#include <readtags.h> #include <readtags.h>
#include <CTagsManager.h> #include <CTagsManager.h>
#include <etk/UString.h>
#include <ewol/WidgetMessageMultiCast.h> #include <ewol/WidgetMessageMultiCast.h>
MainWindows * basicWindows = NULL; MainWindows * basicWindows = NULL;
@@ -47,6 +48,22 @@ MainWindows * basicWindows = NULL;
*/ */
void APP_Init(void) void APP_Init(void)
{ {
etk::UString myTmpString("test <20>l<EFBFBD>mentaire...");
EDN_CRITICAL("essay de UString : " << myTmpString);
myTmpString = "TT...SDFSDFSDFQAEZqsdgfqsdfqskdj";
EDN_CRITICAL("essay de UString : " << myTmpString);
myTmpString += "19";
EDN_CRITICAL("essay de UString : " << myTmpString);
EDN_INFO("==> Init Edn (START)"); EDN_INFO("==> Init Edn (START)");
ewol::ChangeSize(800, 600); ewol::ChangeSize(800, 600);