add save as and start of Unicode string adaptation

This commit is contained in:
Edouard Dupin 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(), ednMsgGuiSave);
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgCodeViewSelectedId);
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferId);
/*
ewol::widgetMessageMultiCast::Add(GetWidgetId(), ednMsgBufferManagerNewFile);
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)
{
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();
if (-1 != newOne) {
m_idSelected = newOne;
@ -134,10 +150,48 @@ bool BufferManager::OnEventAreaExternal(int32_t widgetID, const char * generateE
if (NULL == data) {
EDN_ERROR("Null data for close file ... ");
} else {
if (0 == strcmp(data , "current")) {
} else if (0 == strcmp(data , "All")) {
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) {
@ -160,39 +214,6 @@ bool BufferManager::OnEventAreaExternal(int32_t widgetID, const char * generateE
/*
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
if(true == Exist(dataID)) {
// If no name ==> request a Gui display ...
@ -342,6 +363,19 @@ uint32_t BufferManager::Size(void)
return listBuffer.Size();
}
// nb of opens file Now ...
uint32_t BufferManager::SizeOpen(void)
{
uint32_t jjj = 0;
// check if the Buffer existed
for (int32_t iii=0; iii<listBuffer.Size(); iii++) {
// check if the buffer already existed
if (NULL != listBuffer[iii]) {
jjj++;
}
}
return jjj;
}
/**
* @brief

View File

@ -60,6 +60,7 @@ class BufferManager: public etk::Singleton<BufferManager>, public ewol::Widget
int32_t GetId(etk::File &myFile);
// return the number of buffer (open in the past) if 5 buffer open and 4 close ==> return 5
uint32_t Size(void);
uint32_t SizeOpen(void);
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)
{
if (NULL != m_bufferManager) {
return m_bufferManager->Size();
return m_bufferManager->SizeOpen();
}
return 0;
}
@ -101,15 +101,18 @@ bool BufferView::GetElement(int32_t colomn, int32_t raw, etk::String &myTextToWr
bool isModify;
basicColor_te selectFG = COLOR_LIST_TEXT_NORMAL;
basicColor_te selectBG = COLOR_LIST_BG_1;
if (m_bufferManager->Exist(raw)) {
isModify = m_bufferManager->Get(raw)->IsModify();
name = m_bufferManager->Get(raw)->GetFileName();
// transforme the ID in the real value ...
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*)" ";
if (true == isModify) {
tmpModify = (char*)"M";
}
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;
@ -231,7 +234,6 @@ gboolean BufferView::CB_displayDraw( GtkWidget *widget, GdkEventExpose *event, g
monDrawer.Flush();
lineID ++;
}
}
return TRUE;

View File

@ -40,7 +40,6 @@ class BufferView : public ewol::List
// Constructeur
BufferView(void);
~BufferView(void);
//GtkWidget *GetMainWidget(void);
bool OnEventAreaExternal(int32_t widgetID, const char * generateEventId, const char * eventExternId, etkFloat_t x, etkFloat_t y);
protected:
// 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) {
// 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();
}
return true;

View File

@ -37,6 +37,7 @@
#include <unistd.h>
#include <readtags.h>
#include <CTagsManager.h>
#include <etk/UString.h>
#include <ewol/WidgetMessageMultiCast.h>
MainWindows * basicWindows = NULL;
@ -47,6 +48,22 @@ MainWindows * basicWindows = NULL;
*/
void APP_Init(void)
{
etk::UString myTmpString("test élé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)");
ewol::ChangeSize(800, 600);