| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /******************************************************************************/
- #include "stdafx.h"
- namespace EE{
- namespace Edit{
- /******************************************************************************/
- Bool SaveChanges::Elm::doSaveClose() {if(_save )if(!_save(T))return false; doClose(); return true;} // if failed to save then don't close
- void SaveChanges::Elm::doClose () {if(_close)_close(T);}
- /******************************************************************************/
- void SaveChanges::create()
- {
- Gui+=super::create("Save changes to following elements?").hide(); button[2].show(); flag|=WIN_RESIZABLE;
- T +=region.create();
- T +=save .create("Yes" ).func(Save , T); save.kbSet();
- T +=close .create("No" ).func(Close , T);
- T +=cancel.create("Cancel").func(Cancel, T);
- ListColumn lc[]=
- {
- ListColumn(MEMBER(Elm, display), LCW_DATA, "name"),
- };
- region+=list.create(lc, Elms(lc), true).elmHeight(0.035f).textSize(0.035f);
- rect(Rect_C(0, 0, 1.1f, 0.57f));
- }
- /******************************************************************************/
- void SaveChanges::set(C MemPtr<Elm> &elms, void (*after_save_close)(Bool all_saved, Ptr user), Ptr user)
- {
- T. elms =elms;
- T._after_save_close=after_save_close;
- T._user =user;
- list.setData(T.elms);
- if(elms.elms())activate();else{if(_after_save_close)_after_save_close(true, _user); hide();}
- }
- /******************************************************************************/
- void SaveChanges::clear () {_after_save_close=null; list.clear(); elms.del(); hide();}
- void SaveChanges::doSave () {Bool all_saved=true; FREPA (elms)all_saved&=elms[i].doSaveClose(); if(_after_save_close)_after_save_close(all_saved, _user); clear();} // save in specified order
- void SaveChanges::doClose() { FREPAO(elms) .doClose (); if(_after_save_close)_after_save_close(true , _user); clear();} // close in specified order
- /******************************************************************************/
- Rect SaveChanges::sizeLimit( )C {Rect r=super::sizeLimit(); r.min.set(0.9f, 0.3f); return r;}
- Window& SaveChanges::rect (C Rect &rect)
- {
- super::rect(rect);
- save .rect(Rect_D(clientWidth()*0.25f, -clientHeight()+0.035f, 0.22f, 0.05f));
- close .rect(Rect_D(clientWidth()*0.50f, -clientHeight()+0.035f, 0.22f, 0.05f));
- cancel.rect(Rect_D(clientWidth()*0.75f, -clientHeight()+0.035f, 0.22f, 0.05f));
- region.rect(Rect (0.05f, save.rect().max.y+0.025f, clientWidth()-0.05f, -0.025f));
- return T;
- }
- /******************************************************************************/
- }}
- /******************************************************************************/
|