edn/sources/appl/Gui/MainWindows.cpp

516 lines
20 KiB
C++
Raw Normal View History

/**
* @author Edouard DUPIN
2012-11-25 11:55:06 +01:00
*
* @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file)
*/
2012-11-25 11:55:06 +01:00
2013-10-25 20:49:26 +02:00
#include <appl/debug.h>
2012-04-24 09:42:14 +02:00
#include <appl/global.h>
2013-11-23 18:30:52 +01:00
#include <appl/Gui/MainWindows.h>
#include <appl/Gui/BufferView.h>
#include <appl/Gui/TextViewer.h>
#include <appl/Gui/Search.h>
#include <ewol/widget/Button.h>
#include <ewol/widget/CheckBox.h>
#include <ewol/widget/Sizer.h>
#include <ewol/widget/Label.h>
#include <ewol/widget/Entry.h>
#include <ewol/widget/List.h>
2012-02-16 18:18:04 +01:00
#include <ewol/widget/ContextMenu.h>
#include <ewol/widget/PopUp.h>
#include <ewol/widget/Spacer.h>
2012-09-07 16:31:49 +02:00
#include <ewol/widget/Slider.h>
2012-02-16 23:29:48 +01:00
#include <ewol/widget/Menu.h>
#include <ewol/widget/meta/FileChooser.h>
#include <ewol/widget/meta/Parameter.h>
2013-12-13 21:50:40 +01:00
#include <ewol/widget/Manager.h>
#include <ewol/object/Object.h>
#include <ewol/context/Context.h>
#include <date/date.h>
#include <ewol/widget/meta/StdPopUp.h>
#include <appl/Gui/WorkerSaveFile.h>
#include <appl/Gui/WorkerSaveAllFile.h>
#include <appl/Gui/WorkerCloseFile.h>
#include <appl/Gui/WorkerCloseAllFile.h>
2013-11-23 18:30:52 +01:00
namespace appl {
std::string getVersion(void) {
#define FIRST_YEAR (2010)
2013-11-14 21:57:10 +01:00
std::string tmpOutput = std::to_string(date::getYear()-FIRST_YEAR);
tmpOutput += ".";
2013-11-14 21:57:10 +01:00
tmpOutput += std::to_string(date::getMonth());
tmpOutput += ".";
2013-11-14 21:57:10 +01:00
tmpOutput += std::to_string(date::getDay());
return tmpOutput;
}
}
2012-07-24 13:01:40 +02:00
#undef __class__
#define __class__ "AboutGui"
#include <ewol/widget/Label.h>
#include <ewol/widget/Spacer.h>
2013-12-13 21:50:40 +01:00
class ParameterAboutGui : public ewol::widget::Sizer {
2012-07-24 13:01:40 +02:00
public :
ParameterAboutGui(void) :
2013-12-13 21:50:40 +01:00
ewol::widget::Sizer(ewol::widget::Sizer::modeVert) {
ewol::widget::Spacer* mySpacer = NULL;
2012-07-24 13:01:40 +02:00
2013-12-13 21:50:40 +01:00
mySpacer = new ewol::widget::Spacer();
2012-07-24 13:01:40 +02:00
if (NULL == mySpacer) {
2013-10-07 22:04:21 +02:00
APPL_ERROR("Can not allocate widget == > display might be in error");
2012-07-24 13:01:40 +02:00
} else {
2013-10-07 22:04:21 +02:00
mySpacer->setExpand(bvec2(true,true));
subWidgetAdd(mySpacer);
2012-07-24 13:01:40 +02:00
}
2013-11-14 21:57:10 +01:00
std::string tmpLabel = "<left>";
tmpLabel += " <b>Editeur De N'ours</b> : v:";
2013-10-07 22:04:21 +02:00
tmpLabel += appl::getVersion();
tmpLabel += "<br/>";
tmpLabel += " <b>Build Time</b> : ";
2013-10-07 22:04:21 +02:00
tmpLabel += date::getYear();
tmpLabel += "/";
2013-10-07 22:04:21 +02:00
tmpLabel += date::getMonth();
tmpLabel += "/";
2013-10-07 22:04:21 +02:00
tmpLabel += date::getDay();
tmpLabel += " ";
2013-10-07 22:04:21 +02:00
tmpLabel += date::getHour();
tmpLabel += "h";
2013-10-07 22:04:21 +02:00
tmpLabel += date::getMinute();
tmpLabel += "<br/>";
tmpLabel += " <b>Website</b> : https://github.com/HeeroYui/edn<br/>";
tmpLabel += " <b>License</b> : GPL v3<br/>";
tmpLabel += " <b>Copyright</b> : 2010 Edouard DUPIN<br/>";
tmpLabel += "<br/>";
tmpLabel += " dependency librairies :<br/>";
tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>";
tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>";
tmpLabel += "</left>";
2013-12-13 21:50:40 +01:00
ewol::widget::Label* myLabel = new ewol::widget::Label(tmpLabel);
2012-07-24 13:01:40 +02:00
if (NULL == myLabel) {
2013-10-07 22:04:21 +02:00
APPL_ERROR("Can not allocate widget == > display might be in error");
2012-07-24 13:01:40 +02:00
} else {
2013-10-07 22:04:21 +02:00
myLabel->setExpand(bvec2(true,false));
subWidgetAdd(myLabel);
2012-07-24 13:01:40 +02:00
}
};
2013-10-09 22:00:24 +02:00
~ParameterAboutGui(void) {
};
2012-07-24 13:01:40 +02:00
};
// Local main windows event :
static const char* mainWindowsRequestSaveFile = "appl-event-main-windows-save-file";
static const char* mainWindowsRequestSaveFileAs = "appl-event-main-windows-save-file-as";
static const char* mainWindowsRequestcloseFileNoCheck = "appl-event-main-windows-close-file-no-check";
2014-01-18 14:34:33 +01:00
static const char* l_MsgNameGuiChangeShape = "appl-event-main-windows-Change-shape";
2012-07-24 13:01:40 +02:00
const char* l_smoothChick = "tmpEvent_smooth";
const char* l_smoothMin = "tmpEvent_minChange";
const char* l_smoothMax = "tmpEvent_maxChange";
2012-09-07 16:31:49 +02:00
#undef __class__
2013-10-09 22:00:24 +02:00
#define __class__ "MainWindows"
2013-10-09 22:00:24 +02:00
MainWindows::MainWindows(void) {
addObjectType("appl::MainWindows");
2012-04-23 10:15:43 +02:00
APPL_DEBUG("CREATE WINDOWS ... ");
2013-12-13 21:50:40 +01:00
ewol::widget::Sizer * mySizerVert = NULL;
ewol::widget::Sizer * mySizerVert2 = NULL;
ewol::widget::Sizer * mySizerHori = NULL;
2012-02-17 18:25:38 +01:00
//ewol::Button * myButton = NULL;
2013-09-19 22:23:31 +02:00
appl::TextViewer * myTextView = NULL;
BufferView * myBufferView = NULL;
2013-12-13 21:50:40 +01:00
ewol::widget::Menu * myMenu = NULL;
2013-11-07 21:08:57 +01:00
// load buffer manager:
m_bufferManager = appl::BufferManager::keep();
2013-12-13 21:50:40 +01:00
mySizerVert = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert);
2013-10-07 22:04:21 +02:00
setSubWidget(mySizerVert);
2013-12-13 21:50:40 +01:00
mySizerHori = new ewol::widget::Sizer(ewol::widget::Sizer::modeHori);
2013-10-07 22:04:21 +02:00
mySizerVert->subWidgetAdd(mySizerHori);
myBufferView = new BufferView();
2013-10-07 22:04:21 +02:00
myBufferView->setExpand(bvec2(false,true));
myBufferView->setFill(bvec2(true,true));
mySizerHori->subWidgetAdd(myBufferView);
2013-12-13 21:50:40 +01:00
mySizerVert2 = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert);
2013-10-07 22:04:21 +02:00
mySizerHori->subWidgetAdd(mySizerVert2);
// main buffer Area :
#if defined(__TARGET_OS__Android)
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 16);
#else
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11);
#endif
2014-04-30 22:18:00 +02:00
myTextView->setName("appl-text-viewer");
myTextView->setExpand(bvec2(true,true));
myTextView->setFill(bvec2(true,true));
mySizerVert2->subWidgetAdd(myTextView);
/*
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11);
2013-10-07 22:04:21 +02:00
myTextView->setExpand(bvec2(true,true));
myTextView->setFill(bvec2(true,true));
mySizerVert2->subWidgetAdd(myTextView);
*/
// search area :
Search * mySearch = new Search();
2013-10-07 22:04:21 +02:00
mySizerVert2->subWidgetAdd(mySearch);
2013-12-13 21:50:40 +01:00
mySizerHori = new ewol::widget::Sizer(ewol::widget::Sizer::modeHori);
2013-10-07 22:04:21 +02:00
mySizerVert->subWidgetAdd(mySizerHori);
2012-02-16 23:29:48 +01:00
2013-12-13 21:50:40 +01:00
myMenu = new ewol::widget::Menu();
2013-10-07 22:04:21 +02:00
mySizerHori->subWidgetAdd(myMenu);
int32_t idMenuFile = myMenu->addTitle("File");
(void)myMenu->add(idMenuFile, "New", "", ednMsgGuiNew);
(void)myMenu->addSpacer();
(void)myMenu->add(idMenuFile, "Open", "THEME:GUI:Load.edf", ednMsgGuiOpen);
(void)myMenu->add(idMenuFile, "Close", "THEME:GUI:Close.edf", ednMsgGuiClose, "current");
2013-10-07 22:04:21 +02:00
(void)myMenu->add(idMenuFile, "Close (all)", "", ednMsgGuiClose, "All");
(void)myMenu->add(idMenuFile, "Save", "THEME:GUI:Save.edf", ednMsgGuiSave, "current");
2013-10-07 22:04:21 +02:00
(void)myMenu->add(idMenuFile, "Save As ...", "", ednMsgGuiSaveAs);
(void)myMenu->addSpacer();
//(void)myMenu->add(idMenuFile, "Exit", "", ednMsgGuiExit);
(void)myMenu->addSpacer();
(void)myMenu->add(idMenuFile, "Properties", "THEME:GUI:Parameter.edf", ednMsgProperties);
2013-10-07 22:04:21 +02:00
int32_t idMenuEdit = myMenu->addTitle("Edit");
(void)myMenu->add(idMenuEdit, "Undo", "THEME:GUI:Undo.edf", ednMsgGuiUndo);
(void)myMenu->add(idMenuEdit, "Redo", "THEME:GUI:Redo.edf", ednMsgGuiRedo);
2013-10-07 22:04:21 +02:00
(void)myMenu->addSpacer();
(void)myMenu->add(idMenuEdit, "Copy", "", ednMsgGuiCopy, "STD");
(void)myMenu->add(idMenuEdit, "Cut", "", ednMsgGuiCut, "STD");
(void)myMenu->add(idMenuEdit, "Paste", "", ednMsgGuiPaste, "STD");
(void)myMenu->add(idMenuEdit, "Remove", "", ednMsgGuiRm);
(void)myMenu->addSpacer();
(void)myMenu->add(idMenuEdit, "Select All","", ednMsgGuiSelect, "ALL");
(void)myMenu->add(idMenuEdit, "Un-Select","", ednMsgGuiSelect, "NONE");
(void)myMenu->add(idMenuEdit, "Goto line ...","", ednMsgGuiGotoLine, "???");
int32_t idMenuSearch = myMenu->addTitle("Search");
(void)myMenu->add(idMenuSearch, "Search", "THEME:GUI:Search.edf", ednMsgGuiSearch);
(void)myMenu->add(idMenuSearch, "Replace", "THEME:GUI:Replace.edf", ednMsgGuiReplace);
2013-10-07 22:04:21 +02:00
(void)myMenu->addSpacer();
(void)myMenu->add(idMenuSearch, "Find (previous)","", ednMsgGuiFind, "Previous");
(void)myMenu->add(idMenuSearch, "Find (next)", "", ednMsgGuiFind, "Next");
(void)myMenu->add(idMenuSearch, "Find (all)", "", ednMsgGuiFind, "All");
(void)myMenu->add(idMenuSearch, "Un-Select", "", ednMsgGuiFind, "None");
2013-11-26 21:22:06 +01:00
/* ==> must be in the pluggin list control ...
2013-10-07 22:04:21 +02:00
int32_t idMenuCTags = myMenu->addTitle("C-tags");
(void)myMenu->add(idMenuCTags, "Load", "", ednMsgGuiCtags, "Load");
(void)myMenu->add(idMenuCTags, "ReLoad", "", ednMsgGuiCtags, "ReLoad");
(void)myMenu->add(idMenuCTags, "Jump", "", ednMsgGuiCtags, "Jump");
(void)myMenu->add(idMenuCTags, "Back", "", ednMsgGuiCtags, "Back");
2013-11-26 21:22:06 +01:00
*/
2013-10-07 22:04:21 +02:00
int32_t idMenugDisplay = myMenu->addTitle("Display");
(void)myMenu->add(idMenugDisplay, "Color Black", "", appl::MsgNameGuiChangeColor, "color/black/");
(void)myMenu->add(idMenugDisplay, "Color White", "", appl::MsgNameGuiChangeColor, "color/white/");
2014-01-18 14:34:33 +01:00
(void)myMenu->add(idMenugDisplay, "Shape square", "", l_MsgNameGuiChangeShape, "shape/square/");
(void)myMenu->add(idMenugDisplay, "Shape round", "", l_MsgNameGuiChangeShape, "shape/round/");
2013-10-07 22:04:21 +02:00
(void)myMenu->addSpacer();
(void)myMenu->add(idMenugDisplay, "Reload openGl Shader", "", ednMsgGuiReloadShader);
2013-12-13 21:50:40 +01:00
m_widgetLabelFileName = new ewol::widget::Label("FileName");
2013-10-07 22:04:21 +02:00
m_widgetLabelFileName->setExpand(bvec2(true,false));
2013-11-21 21:56:22 +01:00
m_widgetLabelFileName->setFill(bvec2(true,false));;
2013-10-07 22:04:21 +02:00
mySizerHori->subWidgetAdd(m_widgetLabelFileName);
2012-11-25 11:55:06 +01:00
// add generic shortcut ...
2013-11-14 21:57:10 +01:00
// (shift, control, alt, meta, char32_t unicodeValue, const char * generateEventId, std::string& data)
2013-10-09 22:00:24 +02:00
shortCutAdd("ctrl+o", ednMsgGuiOpen, "", true);
shortCutAdd("ctrl+n", ednMsgGuiNew, "", true);
2012-11-25 11:55:06 +01:00
2013-10-09 22:00:24 +02:00
shortCutAdd("ctrl+s", ednMsgGuiSave, "current", true);
shortCutAdd("ctrl+shift+s", ednMsgGuiSave, "All", true);
2012-11-25 11:55:06 +01:00
2013-10-09 22:00:24 +02:00
shortCutAdd("ctrl+q", ednMsgGuiClose, "current", true);
shortCutAdd("ctrl+shift+q", ednMsgGuiClose, "All", true);
2012-11-25 11:55:06 +01:00
2013-10-09 22:00:24 +02:00
shortCutAdd("ctrl+z", ednMsgGuiUndo, "", true);
shortCutAdd("ctrl+shift+z", ednMsgGuiRedo, "", true);
2012-11-25 11:55:06 +01:00
2013-10-09 22:00:24 +02:00
shortCutAdd("ctrl+l", ednMsgGuiGotoLine, "???", true);
2012-11-25 11:55:06 +01:00
2013-10-09 22:00:24 +02:00
shortCutAdd("ctrl+f", ednMsgGuiSearch, "", true);
shortCutAdd("F12", ednMsgGuiReloadShader, "", true);
2012-11-25 11:55:06 +01:00
//shortCutAdd("ctrl+d", ednMsgGuiCtags, "Jump", true);
2012-11-25 11:55:06 +01:00
// Generic event ...
registerMultiCast(ednMsgGuiSave);
2013-10-09 22:00:24 +02:00
registerMultiCast(ednMsgGuiSaveAs);
registerMultiCast(ednMsgProperties);
registerMultiCast(ednMsgGuiNew);
2013-10-09 22:00:24 +02:00
registerMultiCast(ednMsgGuiOpen);
registerMultiCast(ednMsgGuiClose);
2012-02-23 18:05:57 +01:00
// to update the title ...
2013-10-09 22:00:24 +02:00
registerMultiCast(ednMsgBufferState);
registerMultiCast(ednMsgBufferId);
registerMultiCast(ednMsgGuiReloadShader);
registerMultiCast(appl::MsgNameGuiChangeColor);
2014-01-18 14:34:33 +01:00
registerMultiCast(l_MsgNameGuiChangeShape);
2013-11-21 21:56:22 +01:00
registerMultiCast(appl::MsgSelectNewFile);
}
2013-10-09 22:00:24 +02:00
MainWindows::~MainWindows(void) {
appl::BufferManager::release(m_bufferManager);
}
2012-02-17 18:25:38 +01:00
const char *const ednEventPopUpFileSelected = "edn-mainWindows-openSelected";
const char *const ednEventPopUpFileSaveAs = "edn-mainWindows-saveAsSelected";
2013-12-13 21:50:40 +01:00
void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
ewol::widget::Windows::onReceiveMessage(_msg);
2012-02-29 18:06:08 +01:00
APPL_VERBOSE("Receive Event from the main windows: " << _msg );
2013-10-07 22:04:21 +02:00
// open file Section ...
if (_msg.getMessage() == ednMsgGuiOpen) {
2013-12-13 21:50:40 +01:00
ewol::widget::FileChooser* tmpWidget = new ewol::widget::FileChooser();
2013-11-07 21:08:57 +01:00
if (tmpWidget == NULL) {
APPL_ERROR("Can not open File chooser !!! ");
return;
}
2013-10-07 22:04:21 +02:00
tmpWidget->setTitle("Open files ...");
tmpWidget->setValidateLabel("Open");
2013-11-07 21:08:57 +01:00
if (m_bufferManager == NULL) {
APPL_ERROR("can not call unexistant buffer manager ... ");
return;
}
2013-11-07 21:08:57 +01:00
// Get a ref on the buffer selected (if null, no buffer was selected ...)
appl::Buffer* tmpBuffer = m_bufferManager->getBufferSelected();
if (tmpBuffer != NULL) {
etk::FSNode tmpFile = tmpBuffer->getFileName();
tmpWidget->setFolder(tmpFile.getNameFolder());
}
// apply widget pop-up ...
2013-10-07 22:04:21 +02:00
popUpWidgetPush(tmpWidget);
2013-12-28 15:25:53 +01:00
tmpWidget->registerOnEvent(this, "validate", ednEventPopUpFileSelected);
} else if (_msg.getMessage() == ednMsgProperties) {
// Request the parameter GUI
2013-12-13 21:50:40 +01:00
ewol::widget::Parameter* tmpWidget = new ewol::widget::Parameter();
if (NULL == tmpWidget) {
APPL_ERROR("Can not allocate widget == > display might be in error");
} else {
2014-04-30 22:18:00 +02:00
#ifdef SDGSDFGSDFGSDFGSDFGSTERGDHFGHFDS
std::string menuDescription = "<title>Properties</title>\n";
menuDescription += "<group>\n";
menuDescription += " <title>Editor</title>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Editor Interface</title>\n";
menuDescription += " <short-title>Editor</short-title>\n";
menuDescription += " <widget>appl-text-viewer</widget>\n";
menuDescription += " </menu>\n";
menuDescription += "</group>\n";
menuDescription += "<group>\n";
menuDescription += " <title>Gui</title>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Font selection</title>\n";
menuDescription += " <short-title>Font</short-title>\n";
menuDescription += " <widget></widget>\n";
menuDescription += " </menu>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Color selection</title>\n";
menuDescription += " <short-title>Color</short-title>\n";
menuDescription += " <widget></widget>\n";
menuDescription += " </menu>\n";
menuDescription += " <menu>\n";
menuDescription += " <title>Theme selection</title>\n";
menuDescription += " <short-title>Theme</short-title>\n";
menuDescription += " <widget></widget>\n";
menuDescription += " </menu>\n";
menuDescription += "</group>\n";
tmpWidget->setMenu(menuDescription);
#endif
tmpWidget->setTitle("Properties");
popUpWidgetPush(tmpWidget);
tmpWidget->menuAddGroup("Editor");
ewol::Widget* tmpSubWidget = new globals::ParameterGlobalsGui();
tmpWidget->menuAdd("Editor", "", tmpSubWidget);
tmpWidget->menuAdd("Font & Color", "", NULL);
tmpWidget->menuAdd("Highlight", "", NULL);
tmpWidget->menuAddGroup("General");
tmpWidget->menuAdd("Display", "", NULL);
tmpSubWidget = new ParameterAboutGui();
tmpWidget->menuAdd("About", "", tmpSubWidget);
}
} else if (_msg.getMessage() == appl::MsgNameGuiChangeColor) {
etk::theme::setName("COLOR", _msg.getData());
ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll();
2014-01-18 14:34:33 +01:00
} else if (_msg.getMessage() == l_MsgNameGuiChangeShape) {
etk::theme::setName("GUI", _msg.getData());
ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll();
} else if (_msg.getMessage() == ednMsgGuiReloadShader) {
ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll();
} else if (_msg.getMessage() == ednMsgGuiExit) {
// TODO : ...
}
// Note : Fore all next message we need to acces to the buffer manager ==> just check one time ...
if (m_bufferManager == NULL) {
APPL_ERROR("can not call unexistant buffer manager ... ");
return;
}
if ( _msg.getMessage() == appl::MsgSelectNewFile
|| _msg.getMessage() == appl::Buffer::eventIsModify
|| _msg.getMessage() == appl::Buffer::eventIsSave
|| _msg.getMessage() == appl::Buffer::eventChangeName) {
2013-11-21 21:56:22 +01:00
// select a new Buffer ==> change title:
appl::Buffer* tmpp = m_bufferManager->getBufferSelected();
if (tmpp == NULL) {
setTitle("Edn");
if (m_widgetLabelFileName != NULL) {
m_widgetLabelFileName->setLabel("");
}
} else {
if (_msg.getMessage() == appl::MsgSelectNewFile) {
tmpp->registerOnEvent(this, appl::Buffer::eventIsModify);
tmpp->registerOnEvent(this, appl::Buffer::eventIsSave);
tmpp->registerOnEvent(this, appl::Buffer::eventChangeName);
}
std::string nameFileSystem = etk::FSNode(tmpp->getFileName()).getFileSystemName();
setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + nameFileSystem);
2013-11-21 21:56:22 +01:00
if (m_widgetLabelFileName != NULL) {
m_widgetLabelFileName->setLabel(nameFileSystem + (tmpp->isModify()==true?" *":""));
2013-11-21 21:56:22 +01:00
}
2013-11-07 21:08:57 +01:00
}
2013-11-21 21:56:22 +01:00
} else if (_msg.getMessage() == ednMsgGuiNew) {
(void)m_bufferManager->createNewBuffer();
} else if (_msg.getMessage() == ednEventPopUpFileSelected) {
APPL_DEBUG("Request opening the file : " << _msg.getData());
2013-11-07 21:08:57 +01:00
m_bufferManager->open(_msg.getData());
} else if (_msg.getMessage() == ednMsgGuiSave) {
APPL_DEBUG("Request saving the file : " << _msg.getData());
2013-12-28 14:23:25 +01:00
if (std::tolower(_msg.getData()) == "current") {
2014-03-04 21:18:41 +01:00
new appl::WorkerSaveFile("", false);
2013-11-07 21:08:57 +01:00
return;
2013-12-28 14:23:25 +01:00
} else if (std::tolower(_msg.getData()) == "all") {
2014-03-04 21:18:41 +01:00
new appl::WorkerSaveAllFile();
2013-11-07 21:08:57 +01:00
return;
} else {
APPL_ERROR("UNKNOW request : " << _msg);
}
2013-10-07 22:04:21 +02:00
} else if (_msg.getMessage() == ednMsgGuiSaveAs) {
2014-03-04 21:18:41 +01:00
new appl::WorkerSaveFile("", true);
} else if (_msg.getMessage() == ednMsgGuiClose) {
// Get a ref on the buffer selected (if null, no buffer was selected ...)
if (_msg.getData() == "current") {
2014-03-04 21:18:41 +01:00
new appl::WorkerCloseFile("");
} else {
2014-03-04 21:18:41 +01:00
new appl::WorkerCloseAllFile();
}
} else if (_msg.getMessage() == mainWindowsRequestSaveFile) { // return after a choice of close...
if (m_bufferManager->exist(_msg.getData()) == false) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return;
}
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData());
return;
}
if (tmpBuffer->hasFileName() == false) {
APPL_ERROR("Will never arrive");
saveAsPopUp(tmpBuffer);
} else {
if (tmpBuffer->storeFile() == false) {
APPL_ERROR("Error when loading the file " << _msg.getData());
displayErrorMessage("Error when loading the file <br/><i>" + _msg.getData() + "</i>");
}
}
} else if (_msg.getMessage() == mainWindowsRequestSaveFileAs) { // return after a choice of close...
if (m_bufferManager->exist(_msg.getData()) == false) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return;
}
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData());
return;
}
saveAsPopUp(tmpBuffer);
} else if (_msg.getMessage() == mainWindowsRequestcloseFileNoCheck) { // return after a choice of close...
if (m_bufferManager->exist(_msg.getData()) == false) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return;
}
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData());
return;
}
// note: just remove ==> no check : normal case ...
tmpBuffer->removeObject();
2012-07-24 13:01:40 +02:00
}
2012-02-29 18:06:08 +01:00
return;
2011-07-21 18:03:41 +02:00
}
void MainWindows::saveAsPopUp(appl::Buffer* _buffer) {
if (_buffer == NULL) {
APPL_ERROR("Call With NULL input...");
return;
}
appl::WorkerSaveFile* tmpObject = new appl::WorkerSaveFile(_buffer->getFileName());
}
void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) {
if (_buffer == NULL) {
APPL_ERROR("Call With NULL input...");
return;
}
2013-12-13 21:50:40 +01:00
ewol::widget::StdPopUp* tmpPopUp = new ewol::widget::StdPopUp();
if (tmpPopUp == NULL) {
APPL_ERROR("Can not create a simple pop-up");
return;
}
tmpPopUp->setTitle("<bold>Close un-saved file:</bold>");
tmpPopUp->setComment("The file named : <i>\"" + _buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost...");
ewol::Widget* bt = NULL;
if (_buffer->hasFileName() == true) {
bt = tmpPopUp->addButton("Save", true);
if (bt != NULL) {
// TODO : The element is removed before beeing pressed
2013-12-28 15:25:53 +01:00
bt->registerOnEvent(this, "pressed", mainWindowsRequestSaveFile, _buffer->getFileName());
bt->registerOnEvent(this, "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
}
}
bt = tmpPopUp->addButton("Save As", true);
if (bt != NULL) {
2013-12-28 15:25:53 +01:00
bt->registerOnEvent(this, "pressed", mainWindowsRequestSaveFileAs, _buffer->getFileName());
//bt->registerOnEvent(this, "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
// TODO : Request the close when saved ...
}
bt = tmpPopUp->addButton("Close", true);
if (bt != NULL) {
2013-12-28 15:25:53 +01:00
bt->registerOnEvent(this, "pressed", mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
}
tmpPopUp->addButton("Cancel", true);
tmpPopUp->setRemoveOnExternClick(true);
popUpWidgetPush(tmpPopUp);
}
2013-12-13 21:50:40 +01:00
void MainWindows::onObjectRemove(ewol::Object* _removeObject) {
ewol::widget::Windows::onObjectRemove(_removeObject);
2013-05-12 21:08:31 +02:00
if (m_widgetLabelFileName == _removeObject) {
m_widgetLabelFileName = NULL;
}
}