2011-07-20 10:33:24 +02:00
/**
* @ author Edouard DUPIN
2012-11-25 11:55:06 +01:00
*
* @ copyright 2010 , Edouard DUPIN , all right reserved
*
* @ license GPL v3 ( see license file )
2011-07-20 10:33:24 +02:00
*/
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>
2011-07-20 10:33:24 +02:00
2012-01-13 13:06:15 +01:00
# include <ewol/widget/Button.h>
# include <ewol/widget/CheckBox.h>
2013-03-22 21:26:06 +01:00
# include <ewol/widget/Sizer.h>
2012-01-13 13:06:15 +01:00
# 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>
2012-01-13 13:06:15 +01:00
# 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>
2012-08-20 18:12:14 +02:00
# 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>
2013-05-25 10:59:50 +02:00
# include <date/date.h>
2013-11-14 23:44:55 +01:00
# include <ewol/widget/meta/StdPopUp.h>
2013-11-15 23:42:00 +01:00
# include <appl/Gui/WorkerSaveFile.h>
2013-11-17 20:37:06 +01:00
# include <appl/Gui/WorkerSaveAllFile.h>
2013-11-15 23:42:00 +01:00
# include <appl/Gui/WorkerCloseFile.h>
2013-11-17 20:37:06 +01:00
# include <appl/Gui/WorkerCloseAllFile.h>
2012-01-13 13:06:15 +01:00
2013-11-23 18:30:52 +01:00
namespace appl {
std : : string getVersion ( void ) {
2013-05-25 10:59:50 +02:00
# define FIRST_YEAR (2010)
2013-11-14 21:57:10 +01:00
std : : string tmpOutput = std : : to_string ( date : : getYear ( ) - FIRST_YEAR ) ;
2013-05-25 10:59:50 +02:00
tmpOutput + = " . " ;
2013-11-14 21:57:10 +01:00
tmpOutput + = std : : to_string ( date : : getMonth ( ) ) ;
2013-05-25 10:59:50 +02:00
tmpOutput + = " . " ;
2013-11-14 21:57:10 +01:00
tmpOutput + = std : : to_string ( date : : getDay ( ) ) ;
2013-05-25 10:59:50 +02:00
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 :
2013-03-22 21:26:06 +01:00
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> " ;
2013-05-25 10:59:50 +02:00
tmpLabel + = " <b>Editeur De N'ours</b> : v: " ;
2013-10-07 22:04:21 +02:00
tmpLabel + = appl : : getVersion ( ) ;
2012-12-28 18:07:56 +01:00
tmpLabel + = " <br/> " ;
tmpLabel + = " <b>Build Time</b> : " ;
2013-10-07 22:04:21 +02:00
tmpLabel + = date : : getYear ( ) ;
2013-05-25 10:59:50 +02:00
tmpLabel + = " / " ;
2013-10-07 22:04:21 +02:00
tmpLabel + = date : : getMonth ( ) ;
2013-05-25 10:59:50 +02:00
tmpLabel + = " / " ;
2013-10-07 22:04:21 +02:00
tmpLabel + = date : : getDay ( ) ;
2013-05-25 10:59:50 +02:00
tmpLabel + = " " ;
2013-10-07 22:04:21 +02:00
tmpLabel + = date : : getHour ( ) ;
2013-05-25 10:59:50 +02:00
tmpLabel + = " h " ;
2013-10-07 22:04:21 +02:00
tmpLabel + = date : : getMinute ( ) ;
2012-12-28 18:07:56 +01:00
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
} ;
2013-11-14 23:44:55 +01: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 " ;
2012-07-24 13:01:40 +02:00
2013-11-14 23:44:55 +01: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
2011-07-20 10:33:24 +02:00
# undef __class__
2013-10-09 22:00:24 +02:00
# define __class__ "MainWindows"
2011-07-20 10:33:24 +02:00
2013-10-09 22:00:24 +02:00
MainWindows : : MainWindows ( void ) {
2013-11-20 21:57:00 +01:00
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 ;
2012-02-03 18:14:45 +01:00
BufferView * myBufferView = NULL ;
2013-12-13 21:50:40 +01:00
ewol : : widget : : Menu * myMenu = NULL ;
2012-01-13 13:06:15 +01:00
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 ) ;
2012-01-13 13:06:15 +01:00
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-07-19 18:13:21 +02:00
myBufferView = new BufferView ( ) ;
2013-10-07 22:04:21 +02:00
myBufferView - > setExpand ( bvec2 ( false , true ) ) ;
myBufferView - > setFill ( bvec2 ( true , true ) ) ;
mySizerHori - > subWidgetAdd ( myBufferView ) ;
2012-07-19 18:13:21 +02:00
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 ) ;
2012-07-19 18:13:21 +02:00
// main buffer Area :
2013-10-30 21:16:38 +01:00
myTextView = new appl : : TextViewer ( " FreeMono;DejaVuSansMono;FreeSerif " , 11 ) ;
myTextView - > setExpand ( bvec2 ( true , true ) ) ;
myTextView - > setFill ( bvec2 ( true , true ) ) ;
mySizerVert2 - > subWidgetAdd ( myTextView ) ;
2013-11-14 23:44:55 +01:00
/*
2013-10-27 20:36:54 +01:00
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 ) ;
2013-11-14 23:44:55 +01:00
*/
2012-07-19 18:13:21 +02:00
// search area :
Search * mySearch = new Search ( ) ;
2013-10-07 22:04:21 +02:00
mySizerVert2 - > subWidgetAdd ( mySearch ) ;
2012-10-09 09:40:11 +02:00
# ifdef APPL_BUFFER_FONT_DISTANCE_FIELD
2012-09-07 16:31:49 +02:00
{
2013-12-13 21:50:40 +01:00
ewol : : widget : : Sizer * mySizerHori2 = new widget : : Sizer ( ewol : : widget : : Sizer : : modeHori ) ;
2013-10-07 22:04:21 +02:00
mySizerVert2 - > subWidgetAdd ( mySizerHori2 ) ;
2012-09-07 16:31:49 +02:00
2013-12-13 21:50:40 +01:00
ewol : : widget : : CheckBox * tmpCheck = new widget : : CheckBox ( " smooth " ) ;
2013-10-07 22:04:21 +02:00
mySizerHori2 - > subWidgetAdd ( tmpCheck ) ;
tmpCheck - > registerOnEvent ( this , ewolEventCheckBoxClicked , l_smoothChick ) ;
2012-09-07 16:31:49 +02:00
2013-12-13 21:50:40 +01:00
ewol : : widget : : Slider * tmpSlider = new widget : : Slider ( ) ;
2013-10-07 22:04:21 +02:00
mySizerHori2 - > subWidgetAdd ( tmpSlider ) ;
tmpSlider - > registerOnEvent ( this , ewolEventSliderChange , l_smoothMin ) ;
tmpSlider - > setExpand ( bvec2 ( true , false ) ) ;
tmpSlider - > setMin ( 0 ) ;
tmpSlider - > setMax ( 1000 ) ;
tmpSlider - > setValue ( 0450 ) ;
2012-09-07 16:31:49 +02:00
tmpSliderMin = tmpSlider ;
2013-12-13 21:50:40 +01:00
tmpSlider = new ewol : : widget : : Slider ( ) ;
2013-10-07 22:04:21 +02:00
mySizerHori2 - > subWidgetAdd ( tmpSlider ) ;
tmpSlider - > registerOnEvent ( this , ewolEventSliderChange , l_smoothMax ) ;
tmpSlider - > setExpand ( bvec2 ( true , false ) ) ;
tmpSlider - > setMin ( 0 ) ;
tmpSlider - > setMax ( 1000 ) ;
tmpSlider - > setValue ( 0550 ) ;
2012-09-07 16:31:49 +02:00
tmpSliderMax = tmpSlider ;
}
2012-10-09 09:40:11 +02:00
# endif
2012-07-19 18:13:21 +02:00
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.svg " , ednMsgGuiOpen ) ;
( void ) myMenu - > add ( idMenuFile , " Close " , " THEME:GUI:Close.svg " , ednMsgGuiClose , " current " ) ;
( void ) myMenu - > add ( idMenuFile , " Close (all) " , " " , ednMsgGuiClose , " All " ) ;
( void ) myMenu - > add ( idMenuFile , " Save " , " THEME:GUI:Save.svg " , ednMsgGuiSave , " current " ) ;
( 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.svg " , ednMsgProperties ) ;
int32_t idMenuEdit = myMenu - > addTitle ( " Edit " ) ;
( void ) myMenu - > add ( idMenuEdit , " Undo " , " THEME:GUI:Undo.svg " , ednMsgGuiUndo ) ;
( void ) myMenu - > add ( idMenuEdit , " Redo " , " THEME:GUI:Redo.svg " , ednMsgGuiRedo ) ;
( 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.svg " , ednMsgGuiSearch ) ;
( void ) myMenu - > add ( idMenuSearch , " Replace " , " THEME:GUI:Replace.svg " , ednMsgGuiReplace ) ;
( 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 " ) ;
2013-11-20 21:57:00 +01:00
( void ) myMenu - > add ( idMenugDisplay , " Color Black " , " " , appl : : MsgNameGuiChangeColor , " colorBlack/ " ) ;
( void ) myMenu - > add ( idMenugDisplay , " Color White " , " " , appl : : MsgNameGuiChangeColor , " colorWhite/ " ) ;
2013-10-07 22:04:21 +02:00
( void ) myMenu - > addSpacer ( ) ;
( void ) myMenu - > add ( idMenugDisplay , " Reload openGl Shader " , " " , ednMsgGuiReloadShader ) ;
2012-01-13 13:06:15 +01:00
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
2013-11-25 22:18:06 +01:00
//shortCutAdd("ctrl+d", ednMsgGuiCtags, "Jump", true);
2012-11-25 11:55:06 +01:00
2012-02-09 17:20:52 +01:00
// Generic event ...
2013-11-19 21:43:43 +01:00
registerMultiCast ( ednMsgGuiSave ) ;
2013-10-09 22:00:24 +02:00
registerMultiCast ( ednMsgGuiSaveAs ) ;
registerMultiCast ( ednMsgProperties ) ;
2013-11-15 23:42:00 +01:00
registerMultiCast ( ednMsgGuiNew ) ;
2013-10-09 22:00:24 +02:00
registerMultiCast ( ednMsgGuiOpen ) ;
2013-11-14 23:44:55 +01:00
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 ) ;
2013-11-20 21:57:00 +01:00
registerMultiCast ( appl : : MsgNameGuiChangeColor ) ;
2013-11-21 21:56:22 +01:00
registerMultiCast ( appl : : MsgSelectNewFile ) ;
2012-01-13 13:06:15 +01:00
}
2013-10-09 22:00:24 +02:00
MainWindows : : ~ MainWindows ( void ) {
2013-11-15 23:42:00 +01:00
appl : : BufferManager : : release ( m_bufferManager ) ;
2012-01-13 13:06:15 +01:00
}
2012-03-14 09:26:14 +01:00
2012-02-17 18:25:38 +01:00
const char * const ednEventPopUpFileSelected = " edn-mainWindows-openSelected " ;
const char * const ednEventPopUpFileSaveAs = " edn-mainWindows-saveAsSelected " ;
2012-01-13 13:06:15 +01:00
2013-03-22 21:26:06 +01:00
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
2013-11-24 16:07:43 +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 ;
2012-04-29 15:19:36 +02:00
}
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-13 21:50:40 +01:00
tmpWidget - > registerOnEvent ( this , ewol : : widget : : FileChooser : : eventValidate , ednEventPopUpFileSelected ) ;
2013-11-15 23:42:00 +01:00
} 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 ( ) ;
2013-11-15 23:42:00 +01:00
if ( NULL = = tmpWidget ) {
APPL_ERROR ( " Can not allocate widget == > display might be in error " ) ;
} else {
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 ) ;
}
2013-11-20 21:57:00 +01:00
} else if ( _msg . getMessage ( ) = = appl : : MsgNameGuiChangeColor ) {
etk : : theme : : setName ( " COLOR " , _msg . getData ( ) ) ;
ewol : : getContext ( ) . getResourcesManager ( ) . reLoadResources ( ) ;
ewol : : getContext ( ) . forceRedrawAll ( ) ;
2013-11-15 23:42:00 +01:00
} 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 ;
}
2013-11-25 21:09:23 +01:00
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 {
2013-11-25 21:09:23 +01:00
if ( _msg . getMessage ( ) = = appl : : MsgSelectNewFile ) {
tmpp - > registerOnEvent ( this , appl : : Buffer : : eventIsModify ) ;
tmpp - > registerOnEvent ( this , appl : : Buffer : : eventIsSave ) ;
tmpp - > registerOnEvent ( this , appl : : Buffer : : eventChangeName ) ;
}
2013-11-21 21:56:22 +01:00
setTitle ( std : : string ( " Edn : " ) + ( tmpp - > isModify ( ) = = true ? " * " : " " ) + tmpp - > getFileName ( ) ) ;
if ( m_widgetLabelFileName ! = NULL ) {
m_widgetLabelFileName - > setLabel ( tmpp - > getFileName ( ) + ( tmpp - > isModify ( ) = = true ? " * " : " " ) ) ;
}
2013-11-07 21:08:57 +01:00
}
2013-11-21 21:56:22 +01:00
} else if ( _msg . getMessage ( ) = = ednMsgGuiNew ) {
2013-11-15 23:42:00 +01:00
( 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-11-14 21:57:10 +01:00
if ( to_lower ( _msg . getData ( ) ) = = " current " ) {
2013-11-17 20:37:06 +01:00
appl : : WorkerSaveFile * tmpWorker = new appl : : WorkerSaveFile ( " " , false ) ;
2013-11-07 21:08:57 +01:00
return ;
2013-11-14 21:57:10 +01:00
} else if ( to_lower ( _msg . getData ( ) ) = = " all " ) {
2013-11-15 23:42:00 +01:00
appl : : WorkerSaveAllFile * tmpWorker = 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 ) {
2013-11-15 23:42:00 +01:00
appl : : WorkerSaveFile * tmpWorker = new appl : : WorkerSaveFile ( " " , true ) ;
2013-11-14 23:44:55 +01:00
} else if ( _msg . getMessage ( ) = = ednMsgGuiClose ) {
// Get a ref on the buffer selected (if null, no buffer was selected ...)
if ( _msg . getData ( ) = = " current " ) {
2013-11-15 23:42:00 +01:00
appl : : WorkerCloseFile * tmpWorker = new appl : : WorkerCloseFile ( " " ) ;
2013-11-14 23:44:55 +01:00
} else {
2013-11-15 23:42:00 +01:00
appl : : WorkerCloseAllFile * tmpWorker = new appl : : WorkerCloseAllFile ( ) ;
2013-11-14 23:44:55 +01:00
}
} 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 {
2013-11-15 23:42:00 +01:00
if ( tmpBuffer - > storeFile ( ) = = false ) {
APPL_ERROR ( " Error when loading the file " < < _msg . getData ( ) ) ;
displayErrorMessage ( " Error when loading the file <br/><i> " + _msg . getData ( ) + " </i> " ) ;
}
2013-11-14 23:44:55 +01:00
}
} 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
}
2011-07-20 10:33:24 +02:00
2013-11-14 23:44:55 +01:00
void MainWindows : : saveAsPopUp ( appl : : Buffer * _buffer ) {
if ( _buffer = = NULL ) {
APPL_ERROR ( " Call With NULL input... " ) ;
return ;
}
2013-11-15 23:42:00 +01:00
appl : : WorkerSaveFile * tmpObject = new appl : : WorkerSaveFile ( _buffer - > getFileName ( ) ) ;
2013-11-14 23:44:55 +01:00
}
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 ( ) ;
2013-11-14 23:44:55 +01:00
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-13 21:50:40 +01:00
bt - > registerOnEvent ( this , ewol : : widget : : Button : : eventPressed , mainWindowsRequestSaveFile , _buffer - > getFileName ( ) ) ;
bt - > registerOnEvent ( this , ewol : : widget : : Button : : eventPressed , mainWindowsRequestcloseFileNoCheck , _buffer - > getFileName ( ) ) ;
2013-11-14 23:44:55 +01:00
}
}
bt = tmpPopUp - > addButton ( " Save As " , true ) ;
if ( bt ! = NULL ) {
2013-12-13 21:50:40 +01:00
bt - > registerOnEvent ( this , ewol : : widget : : Button : : eventPressed , mainWindowsRequestSaveFileAs , _buffer - > getFileName ( ) ) ;
//bt->registerOnEvent(this, ewol::widget::Button::eventPressed, mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
2013-11-14 23:44:55 +01:00
// TODO : Request the close when saved ...
}
bt = tmpPopUp - > addButton ( " Close " , true ) ;
if ( bt ! = NULL ) {
2013-12-13 21:50:40 +01:00
bt - > registerOnEvent ( this , ewol : : widget : : Button : : eventPressed , mainWindowsRequestcloseFileNoCheck , _buffer - > getFileName ( ) ) ;
2013-11-14 23:44:55 +01:00
}
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 ) {
2012-07-17 13:25:33 +02:00
m_widgetLabelFileName = NULL ;
}
}