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 {
2014-05-15 21:37:39 +02:00
std : : string getVersion ( ) {
2013-05-25 10:59:50 +02:00
# define FIRST_YEAR (2010)
2014-08-13 22:30:47 +02:00
std : : string tmpOutput = etk : : to_string ( date : : getYear ( ) - FIRST_YEAR ) ;
2013-05-25 10:59:50 +02:00
tmpOutput + = " . " ;
2014-08-13 22:30:47 +02:00
tmpOutput + = etk : : to_string ( date : : getMonth ( ) ) ;
2013-05-25 10:59:50 +02:00
tmpOutput + = " . " ;
2014-08-13 22:30:47 +02:00
tmpOutput + = etk : : 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 :
2014-08-07 23:41:48 +02:00
ParameterAboutGui ( ) {
addObjectType ( " appl::ParameterAboutGui " ) ;
}
void init ( ) {
ewol : : widget : : Sizer : : init ( ewol : : widget : : Sizer : : modeVert ) ;
std : : shared_ptr < ewol : : widget : : Spacer > mySpacer ;
2012-07-24 13:01:40 +02:00
2014-08-07 23:41:48 +02:00
mySpacer = ewol : : widget : : Spacer : : create ( ) ;
2014-06-05 22:01:24 +02:00
if ( nullptr = = 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> " ;
2014-08-07 23:41:48 +02:00
std : : shared_ptr < ewol : : widget : : Label > myLabel = ewol : : widget : : Label : : create ( tmpLabel ) ;
2014-06-05 22:01:24 +02:00
if ( nullptr = = 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
}
} ;
2014-05-15 21:37:39 +02:00
~ ParameterAboutGui ( ) {
2013-10-09 22:00:24 +02:00
} ;
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 " ;
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
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
2014-05-15 21:37:39 +02:00
MainWindows : : MainWindows ( ) {
2013-11-20 21:57:00 +01:00
addObjectType ( " appl::MainWindows " ) ;
2014-08-07 23:41:48 +02:00
}
void MainWindows : : init ( ) {
ewol : : widget : : Windows : : init ( ) ;
2012-04-23 10:15:43 +02:00
APPL_DEBUG ( " CREATE WINDOWS ... " ) ;
2014-08-07 23:41:48 +02:00
std : : shared_ptr < ewol : : widget : : Sizer > mySizerVert = nullptr ;
std : : shared_ptr < ewol : : widget : : Sizer > mySizerVert2 = nullptr ;
std : : shared_ptr < ewol : : widget : : Sizer > mySizerHori = nullptr ;
std : : shared_ptr < appl : : TextViewer > myTextView = nullptr ;
std : : shared_ptr < BufferView > myBufferView = nullptr ;
std : : shared_ptr < ewol : : widget : : Menu > myMenu = nullptr ;
2012-01-13 13:06:15 +01:00
2013-11-07 21:08:57 +01:00
// load buffer manager:
2014-08-07 23:41:48 +02:00
m_bufferManager = appl : : BufferManager : : create ( ) ;
2013-11-07 21:08:57 +01:00
2014-08-07 23:41:48 +02:00
mySizerVert = ewol : : widget : : Sizer : : create ( ewol : : widget : : Sizer : : modeVert ) ;
2014-05-26 21:42:51 +02:00
mySizerVert - > setName ( " plop 1111111 " ) ;
2013-10-07 22:04:21 +02:00
setSubWidget ( mySizerVert ) ;
2012-01-13 13:06:15 +01:00
2014-08-07 23:41:48 +02:00
mySizerHori = ewol : : widget : : Sizer : : create ( ewol : : widget : : Sizer : : modeHori ) ;
2014-05-26 21:42:51 +02:00
mySizerHori - > setName ( " plop 222222222 " ) ;
2013-10-07 22:04:21 +02:00
mySizerVert - > subWidgetAdd ( mySizerHori ) ;
2014-08-07 23:41:48 +02:00
myBufferView = BufferView : : create ( ) ;
2014-05-26 21:42:51 +02:00
myBufferView - > setName ( " plop 3333333 " ) ;
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
2014-08-07 23:41:48 +02:00
mySizerVert2 = ewol : : widget : : Sizer : : create ( ewol : : widget : : Sizer : : modeVert ) ;
2013-10-07 22:04:21 +02:00
mySizerHori - > subWidgetAdd ( mySizerVert2 ) ;
2014-05-26 21:42:51 +02:00
mySizerVert2 - > setName ( " plop 4444444 " ) ;
2012-07-19 18:13:21 +02:00
// main buffer Area :
2013-12-20 00:43:31 +01:00
# if defined(__TARGET_OS__Android)
2014-08-07 23:41:48 +02:00
myTextView = appl : : TextViewer : : create ( " FreeMono;DejaVuSansMono;FreeSerif " , 16 ) ;
2013-12-20 00:43:31 +01:00
# else
2014-08-07 23:41:48 +02:00
myTextView = appl : : TextViewer : : create ( " FreeMono;DejaVuSansMono;FreeSerif " , 11 ) ;
2013-12-20 00:43:31 +01:00
# endif
2014-04-30 22:18:00 +02:00
myTextView - > setName ( " appl-text-viewer " ) ;
2013-10-30 21:16:38 +01:00
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 :
2014-08-25 22:44:42 +02:00
m_widgetSearch = appl : : widget : : Search : : create ( ) ;
mySizerVert2 - > subWidgetAdd ( m_widgetSearch ) ;
2012-07-19 18:13:21 +02:00
2014-08-07 23:41:48 +02:00
mySizerHori = ewol : : widget : : Sizer : : create ( ewol : : widget : : Sizer : : modeHori ) ;
2014-05-26 21:42:51 +02:00
mySizerHori - > setName ( " plop 555555 " ) ;
2013-10-07 22:04:21 +02:00
mySizerVert - > subWidgetAdd ( mySizerHori ) ;
2012-02-16 23:29:48 +01:00
2014-08-07 23:41:48 +02:00
myMenu = ewol : : widget : : Menu : : create ( ) ;
2014-08-28 22:31:00 +02:00
myMenu - > setName ( " appl-menu-interface " ) ;
2013-10-07 22:04:21 +02:00
mySizerHori - > subWidgetAdd ( myMenu ) ;
int32_t idMenuFile = myMenu - > addTitle ( " File " ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenuFile , " New " , " " , " menu:new " ) ;
2014-05-15 21:37:39 +02:00
myMenu - > addSpacer ( ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenuFile , " Open " , " THEME:GUI:Load.edf " , " menu:open " ) ;
myMenu - > add ( idMenuFile , " Close " , " THEME:GUI:Close.edf " , " menu:close " ) ;
myMenu - > add ( idMenuFile , " Close (all) " , " " , " menu:close-all " ) ;
myMenu - > add ( idMenuFile , " Save " , " THEME:GUI:Save.edf " , " menu:save " ) ;
myMenu - > add ( idMenuFile , " Save As ... " , " " , " menu:save-as " ) ;
2014-05-15 21:37:39 +02:00
myMenu - > addSpacer ( ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenuFile , " Properties " , " THEME:GUI:Parameter.edf " , " menu:property " ) ;
2013-10-07 22:04:21 +02:00
int32_t idMenuEdit = myMenu - > addTitle ( " Edit " ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenuEdit , " Goto line ... " , " " , " menu:goto-line " ) ;
2013-10-07 22:04:21 +02:00
int32_t idMenuSearch = myMenu - > addTitle ( " Search " ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenuSearch , " Search " , " THEME:GUI:Search.edf " , " menu:search " ) ;
myMenu - > add ( idMenuSearch , " Replace " , " THEME:GUI:Replace.edf " , " menu:replace " ) ;
2014-05-15 21:37:39 +02:00
myMenu - > addSpacer ( ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenuSearch , " Find (previous) " , " " , " menu:find:previous " ) ;
myMenu - > add ( idMenuSearch , " Find (next) " , " " , " menu:find:next " ) ;
myMenu - > add ( idMenuSearch , " Find (all) " , " " , " menu:find:all " ) ;
myMenu - > add ( idMenuSearch , " Un-Select " , " " , " menu:find:none " ) ;
2013-10-07 22:04:21 +02:00
int32_t idMenugDisplay = myMenu - > addTitle ( " Display " ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenugDisplay , " Color Black " , " " , " menu:color:color/black/ " ) ;
myMenu - > add ( idMenugDisplay , " Color White " , " " , " menu:color:color/white/ " ) ;
myMenu - > add ( idMenugDisplay , " Shape square " , " " , " menu:shape:shape/square/ " ) ;
myMenu - > add ( idMenugDisplay , " Shape round " , " " , " menu:shape:shape/round/ " ) ;
2014-05-15 21:37:39 +02:00
myMenu - > addSpacer ( ) ;
2014-08-25 22:44:42 +02:00
myMenu - > add ( idMenugDisplay , " Reload openGl Shader " , " " , " menu:reloadShape " ) ;
myMenu - > signalSelect . bind ( shared_from_this ( ) , & MainWindows : : onCallbackMenuEvent ) ;
2014-08-07 23:41:48 +02:00
m_widgetLabelFileName = ewol : : widget : : Label : : create ( " 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 ...
2014-08-25 22:44:42 +02:00
shortCutAdd ( " ctrl+o " , " menu:open " ) ;
shortCutAdd ( " ctrl+n " , " menu:new " ) ;
2012-11-25 11:55:06 +01:00
2014-08-25 22:44:42 +02:00
shortCutAdd ( " ctrl+s " , " menu:save " ) ;
shortCutAdd ( " ctrl+shift+s " , " menu:save-all " ) ;
2012-11-25 11:55:06 +01:00
2014-08-25 22:44:42 +02:00
shortCutAdd ( " ctrl+q " , " menu:close " ) ;
shortCutAdd ( " ctrl+shift+q " , " menu:close-all " ) ;
2012-11-25 11:55:06 +01:00
2014-08-25 22:44:42 +02:00
shortCutAdd ( " ctrl+l " , " menu:goto-line " ) ;
2012-11-25 11:55:06 +01:00
2014-08-25 22:44:42 +02:00
shortCutAdd ( " ctrl+f " , " menu:search " ) ;
shortCutAdd ( " F12 " , " menu:reloade-shader " ) ;
// TODO : auto-bind on shortcut event ==> maybe do beter later ...
signalShortcut . bind ( shared_from_this ( ) , & MainWindows : : onCallbackShortCut ) ;
m_bufferManager - > signalSelectFile . bind ( shared_from_this ( ) , & MainWindows : : onCallbackShortCut ) ;
2012-01-13 13:06:15 +01:00
}
2014-05-15 21:37:39 +02:00
MainWindows : : ~ MainWindows ( ) {
2014-05-20 21:35:41 +02:00
2012-01-13 13:06:15 +01:00
}
2012-03-14 09:26:14 +01:00
2013-03-22 21:26:06 +01:00
2014-08-25 22:44:42 +02:00
void MainWindows : : onCallbackShortCut ( const std : : string & _value ) {
APPL_WARNING ( " Event from ShortCut : " < < _value ) ;
onCallbackMenuEvent ( _value ) ;
}
void MainWindows : : onCallbackMenuEvent ( const std : : string & _value ) {
APPL_WARNING ( " Event from Menu : " < < _value ) ;
if ( _value = = " menu:new " ) {
if ( m_bufferManager ! = nullptr ) {
m_bufferManager - > createNewBuffer ( ) ;
2013-11-07 21:08:57 +01:00
}
2014-08-25 22:44:42 +02:00
} else if ( _value = = " menu:open " ) {
displayOpen ( ) ;
} else if ( _value = = " menu:close " ) {
appl : : WorkerCloseFile : : create ( " " ) ;
} else if ( _value = = " menu:close-all " ) {
appl : : WorkerCloseAllFile : : create ( ) ;
} else if ( _value = = " menu:save " ) {
appl : : WorkerSaveFile : : create ( " " , false ) ;
} else if ( _value = = " menu:save-all " ) {
appl : : WorkerSaveAllFile : : create ( ) ;
} else if ( _value = = " menu:save-as " ) {
appl : : WorkerSaveFile : : create ( " " , true ) ;
} else if ( _value = = " menu:property " ) {
displayProperty ( ) ;
} else if ( _value = = " menu:search " ) {
if ( m_widgetSearch = = nullptr ) {
2013-11-07 21:08:57 +01:00
return ;
2012-04-29 15:19:36 +02:00
}
2014-08-25 22:44:42 +02:00
if ( m_widgetSearch - > isHide ( ) ) {
m_widgetSearch - > show ( ) ;
m_widgetSearch - > selectSearch ( ) ;
} else {
m_widgetSearch - > hide ( ) ;
}
} else if ( _value = = " menu:replace " ) {
if ( m_widgetSearch = = nullptr ) {
return ;
2013-11-07 21:08:57 +01:00
}
2014-08-25 22:44:42 +02:00
if ( m_widgetSearch - > isHide ( ) ) {
m_widgetSearch - > show ( ) ;
m_widgetSearch - > selectReplace ( ) ;
2013-11-15 23:42:00 +01:00
} else {
2014-08-25 22:44:42 +02:00
m_widgetSearch - > hide ( ) ;
2013-11-15 23:42:00 +01:00
}
2014-08-25 22:44:42 +02:00
} else if ( _value = = " menu:find:previous " ) {
APPL_TODO ( " Event from Menu : " < < _value ) ;
} else if ( _value = = " menu:find:next " ) {
APPL_TODO ( " Event from Menu : " < < _value ) ;
} else if ( _value = = " menu:find:all " ) {
APPL_TODO ( " Event from Menu : " < < _value ) ;
} else if ( _value = = " menu:find:none " ) {
APPL_TODO ( " Event from Menu : " < < _value ) ;
} else if ( _value = = " menu:color:color/black/ "
| | _value = = " menu:color:color/white/ " ) {
etk : : theme : : setName ( " COLOR " , std : : string ( _value , 12 ) ) ;
2013-11-20 21:57:00 +01:00
ewol : : getContext ( ) . getResourcesManager ( ) . reLoadResources ( ) ;
ewol : : getContext ( ) . forceRedrawAll ( ) ;
2014-08-25 22:44:42 +02:00
} else if ( _value = = " menu:shape:shape/square/ "
| | _value = = " menu:shape:shape/round/ " ) {
etk : : theme : : setName ( " GUI " , std : : string ( _value , 12 ) ) ;
2014-01-18 14:34:33 +01:00
ewol : : getContext ( ) . getResourcesManager ( ) . reLoadResources ( ) ;
ewol : : getContext ( ) . forceRedrawAll ( ) ;
2014-08-25 22:44:42 +02:00
} else if ( _value = = " menu:reloadShape " ) {
2013-11-15 23:42:00 +01:00
ewol : : getContext ( ) . getResourcesManager ( ) . reLoadResources ( ) ;
ewol : : getContext ( ) . forceRedrawAll ( ) ;
2014-08-25 22:44:42 +02:00
} else {
APPL_ERROR ( " Event from Menu UNKNOW : ' " < < _value < < " ' " ) ;
2013-11-15 23:42:00 +01:00
}
2014-08-25 22:44:42 +02:00
}
/* TODO :
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 ;
}
2014-08-07 23:41:48 +02:00
std : : shared_ptr < appl : : Buffer > tmpBuffer = m_bufferManager - > get ( _msg . getData ( ) ) ;
2014-06-05 22:01:24 +02:00
if ( tmpBuffer = = nullptr ) {
2013-11-14 23:44:55 +01:00
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 ;
}
2014-08-07 23:41:48 +02:00
std : : shared_ptr < appl : : Buffer > tmpBuffer = m_bufferManager - > get ( _msg . getData ( ) ) ;
2014-06-05 22:01:24 +02:00
if ( tmpBuffer = = nullptr ) {
2013-11-14 23:44:55 +01:00
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 ;
}
2014-08-07 23:41:48 +02:00
std : : shared_ptr < appl : : Buffer > tmpBuffer = m_bufferManager - > get ( _msg . getData ( ) ) ;
2014-06-05 22:01:24 +02:00
if ( tmpBuffer = = nullptr ) {
2013-11-14 23:44:55 +01:00
APPL_ERROR ( " Error to get the buffer : " < < _msg . getData ( ) ) ;
return ;
}
// note: just remove ==> no check : normal case ...
2014-08-07 23:41:48 +02:00
//tmpBuffer->removeObject();
EWOL_TODO ( " call remove buffer ... " ) ;
2012-07-24 13:01:40 +02:00
}
2014-08-25 22:44:42 +02:00
*/
void MainWindows : : displayOpen ( ) {
std : : shared_ptr < ewol : : widget : : FileChooser > tmpWidget = ewol : : widget : : FileChooser : : create ( ) ;
if ( tmpWidget = = nullptr ) {
APPL_ERROR ( " Can not open File chooser !!! " ) ;
return ;
}
tmpWidget - > setTitle ( " Open files ... " ) ;
tmpWidget - > setValidateLabel ( " Open " ) ;
if ( m_bufferManager = = nullptr ) {
APPL_ERROR ( " can not call unexistant buffer manager ... " ) ;
return ;
}
// Get a ref on the buffer selected (if null, no buffer was selected ...)
std : : shared_ptr < appl : : Buffer > tmpBuffer = m_bufferManager - > getBufferSelected ( ) ;
if ( tmpBuffer ! = nullptr ) {
etk : : FSNode tmpFile = tmpBuffer - > getFileName ( ) ;
tmpWidget - > setFolder ( tmpFile . getNameFolder ( ) ) ;
}
// apply widget pop-up ...
popUpWidgetPush ( tmpWidget ) ;
tmpWidget - > signalValidate . bind ( shared_from_this ( ) , & MainWindows : : onCallbackPopUpFileSelected ) ;
}
void MainWindows : : displayProperty ( ) {
// Request the parameter GUI
std : : shared_ptr < ewol : : widget : : Parameter > tmpWidget = ewol : : widget : : Parameter : : create ( ) ;
if ( nullptr = = tmpWidget ) {
APPL_ERROR ( " Can not allocate widget == > display might be in error " ) ;
} else {
# 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 " ) ;
std : : shared_ptr < ewol : : Widget > tmpSubWidget = globals : : ParameterGlobalsGui : : create ( ) ;
tmpWidget - > menuAdd ( " Editor " , " " , tmpSubWidget ) ;
tmpWidget - > menuAdd ( " Font & Color " , " " , nullptr ) ;
tmpWidget - > menuAdd ( " Highlight " , " " , nullptr ) ;
tmpWidget - > menuAddGroup ( " General " ) ;
tmpWidget - > menuAdd ( " Display " , " " , nullptr ) ;
tmpSubWidget = ParameterAboutGui : : create ( ) ;
tmpWidget - > menuAdd ( " About " , " " , tmpSubWidget ) ;
}
2011-07-21 18:03:41 +02:00
}
2014-08-25 22:44:42 +02:00
void MainWindows : : onCallbackselectNewFile ( const std : : string & _value ) {
2014-09-12 21:36:20 +02:00
APPL_INFO ( " onCallbackselectNewFile( " < < _value < < " ) " ) ;
2014-08-25 22:44:42 +02:00
if ( m_bufferManager = = nullptr ) {
APPL_ERROR ( " can not call unexistant buffer manager ... " ) ;
return ;
}
// TODO : Remove all previous binding from the old buffer ...
onCallbackTitleUpdate ( ) ;
std : : shared_ptr < appl : : Buffer > tmpp = m_bufferManager - > getBufferSelected ( ) ;
if ( tmpp ! = nullptr ) {
tmpp - > signalIsSave . bind ( shared_from_this ( ) , & MainWindows : : onCallbackTitleUpdate ) ;
tmpp - > signalIsModify . bind ( shared_from_this ( ) , & MainWindows : : onCallbackTitleUpdate ) ;
tmpp - > signalChangeName . bind ( shared_from_this ( ) , & MainWindows : : onCallbackTitleUpdate ) ;
}
}
2014-08-25 05:55:06 +02:00
void MainWindows : : onCallbackPopUpFileSelected ( const std : : string & _value ) {
2014-09-12 21:36:20 +02:00
APPL_INFO ( " onCallbackPopUpFileSelected( " < < _value < < " ) " ) ;
2014-08-25 05:55:06 +02:00
APPL_DEBUG ( " Request opening the file : " < < _value ) ;
m_bufferManager - > open ( _value ) ;
}
void MainWindows : : onCallbackTitleUpdate ( ) {
2014-09-12 21:36:20 +02:00
APPL_INFO ( " onCallbackTitleUpdate() " ) ;
2014-08-25 05:55:06 +02:00
if ( m_bufferManager = = nullptr ) {
APPL_ERROR ( " can not call unexistant buffer manager ... " ) ;
return ;
}
// select a new Buffer ==> change title:
std : : shared_ptr < appl : : Buffer > tmpp = m_bufferManager - > getBufferSelected ( ) ;
if ( tmpp = = nullptr ) {
setTitle ( " Edn " ) ;
if ( m_widgetLabelFileName ! = nullptr ) {
m_widgetLabelFileName - > setLabel ( " " ) ;
}
} else {
std : : string nameFileSystem = etk : : FSNode ( tmpp - > getFileName ( ) ) . getFileSystemName ( ) ;
setTitle ( std : : string ( " Edn : " ) + ( tmpp - > isModify ( ) = = true ? " * " : " " ) + nameFileSystem ) ;
if ( m_widgetLabelFileName ! = nullptr ) {
m_widgetLabelFileName - > setLabel ( nameFileSystem + ( tmpp - > isModify ( ) = = true ? " * " : " " ) ) ;
}
}
}
2011-07-20 10:33:24 +02:00
2014-08-07 23:41:48 +02:00
void MainWindows : : saveAsPopUp ( const std : : shared_ptr < appl : : Buffer > & _buffer ) {
2014-06-05 22:01:24 +02:00
if ( _buffer = = nullptr ) {
APPL_ERROR ( " Call With nullptr input... " ) ;
2013-11-14 23:44:55 +01:00
return ;
}
2014-08-07 23:41:48 +02:00
std : : shared_ptr < appl : : WorkerSaveFile > tmpObject = appl : : WorkerSaveFile : : create ( _buffer - > getFileName ( ) ) ;
2013-11-14 23:44:55 +01:00
}
2014-08-07 23:41:48 +02:00
void MainWindows : : closeNotSavedFile ( const std : : shared_ptr < appl : : Buffer > & _buffer ) {
2014-06-05 22:01:24 +02:00
if ( _buffer = = nullptr ) {
APPL_ERROR ( " Call With nullptr input... " ) ;
2013-11-14 23:44:55 +01:00
return ;
}
2014-08-07 23:41:48 +02:00
std : : shared_ptr < ewol : : widget : : StdPopUp > tmpPopUp = ewol : : widget : : StdPopUp : : create ( ) ;
2014-06-05 22:01:24 +02:00
if ( tmpPopUp = = nullptr ) {
2013-11-14 23:44:55 +01:00
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... " ) ;
2014-08-25 05:55:06 +02:00
std : : shared_ptr < ewol : : widget : : Button > bt = nullptr ;
2013-11-14 23:44:55 +01:00
if ( _buffer - > hasFileName ( ) = = true ) {
bt = tmpPopUp - > addButton ( " Save " , true ) ;
2014-06-05 22:01:24 +02:00
if ( bt ! = nullptr ) {
2013-11-14 23:44:55 +01:00
// TODO : The element is removed before beeing pressed
2014-08-25 05:55:06 +02:00
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestSaveFile, _buffer->getFileName());
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
2013-11-14 23:44:55 +01:00
}
}
bt = tmpPopUp - > addButton ( " Save As " , true ) ;
2014-06-05 22:01:24 +02:00
if ( bt ! = nullptr ) {
2014-08-25 05:55:06 +02:00
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestSaveFileAs, _buffer->getFileName());
//bt->signalPressed.bind(shared_from_this(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
2013-11-14 23:44:55 +01:00
// TODO : Request the close when saved ...
}
bt = tmpPopUp - > addButton ( " Close " , true ) ;
2014-06-05 22:01:24 +02:00
if ( bt ! = nullptr ) {
2014-08-25 05:55:06 +02:00
// TODO : bt->signalPressed.bind(shared_from_this(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
2013-11-14 23:44:55 +01:00
}
tmpPopUp - > addButton ( " Cancel " , true ) ;
tmpPopUp - > setRemoveOnExternClick ( true ) ;
popUpWidgetPush ( tmpPopUp ) ;
}