egami/tools/viewer/appl/MainWindows.cpp

123 lines
4.3 KiB
C++

/** @file
* @author Edouard DUPIN
* @copyright 2010, Edouard DUPIN, all right reserved
* @license BSD v3 (see license file)
*/
#include <appl/debug.hpp>
#include <appl/MainWindows.hpp>
#include <ewol/widget/Image.hpp>
#include <ewol/context/Context.hpp>
#include <eproperty/Value.hpp>
appl::MainWindows::MainWindows() :
m_idDisplayed(-1) {
APPL_DEBUG("CREATE WINDOWS ... ");
addObjectType("appl::MainWindows");
}
void appl::MainWindows::init() {
ewol::widget::Windows::init();
m_image = ewol::widget::Image::create("src", etk::String("DATA:///icon.png"),
"expand", bvec2(true,true),
"fill", bvec2(true,true));
propertyTitle.set("EVI");
m_image->propertyExpand.set(bvec2(true,true));
m_image->propertyFill.set(bvec2(true,true));
setSubWidget(m_image);
shortCutAdd("F12", "menu:reloade-shader");
signalShortcut.connect(sharedFromThis(), &appl::MainWindows::onCallbackShortCut);
}
void appl::MainWindows::onCallbackShortCut(const etk::String& _value) {
APPL_WARNING("Event from ShortCut : " << _value);
if (_value == "menu:reloade-shader") {
ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll();
} else {
APPL_ERROR("Event from Menu UNKNOW : '" << _value << "'");
}
}
void appl::MainWindows::setListOfFiles(etk::Vector<etk::Path> _listImages) {
m_listImages = _listImages;
if (m_listImages.size() == 0) {
m_idDisplayed = -1;
m_image->propertySource.set("DATA:///icon.png");
propertyTitle.set("EVI");
} else {
m_idDisplayed = 0;
m_image->propertySource.set(m_listImages[0]);
propertyTitle.set("EVI:" + m_listImages[0].getString());
}
}
bool appl::MainWindows::onEventInput(const ewol::event::Input& _event) {
APPL_WARNING(" EVENT : " << _event);
return true;
}
bool appl::MainWindows::onEventEntry(const ewol::event::Entry& _event) {
if (m_idDisplayed == -1) {
return false;
}
if (_event.getStatus() == gale::key::status::down) {
if ( ( _event.getType() == gale::key::keyboard::character
&& _event.getChar() == ' ')
|| _event.getType() == gale::key::keyboard::right) {
m_idDisplayed++;
if (m_idDisplayed >= m_listImages.size()) {
m_idDisplayed--;
return true;
}
m_image->propertySource.set(m_listImages[m_idDisplayed]);
propertyTitle.set("EVI:" + m_listImages[m_idDisplayed].getString() + " " + etk::toString(m_idDisplayed+1) + "/" + etk::toString(m_listImages.size()));
return true;
}
if (_event.getType() == gale::key::keyboard::left) {
m_idDisplayed--;
if (m_idDisplayed < 0) {
m_idDisplayed++;
return true;
}
m_image->propertySource.set(m_listImages[m_idDisplayed]);
propertyTitle.set("EVI:" + m_listImages[m_idDisplayed].getString() + " " + etk::toString(m_idDisplayed+1) + "/" + etk::toString(m_listImages.size()));
return true;
}
if (_event.getType() == gale::key::keyboard::down) {
m_idDisplayed += 10;
if (m_idDisplayed >= m_listImages.size()) {
m_idDisplayed = m_listImages.size()-1;
}
m_image->propertySource.set(m_listImages[m_idDisplayed]);
propertyTitle.set("EVI:" + m_listImages[m_idDisplayed].getString() + " " + etk::toString(m_idDisplayed+1) + "/" + etk::toString(m_listImages.size()));
return true;
}
if (_event.getType() == gale::key::keyboard::up) {
m_idDisplayed -= 10;
if (m_idDisplayed < 0) {
m_idDisplayed = 0;
}
m_image->propertySource.set(m_listImages[m_idDisplayed]);
propertyTitle.set("EVI:" + m_listImages[m_idDisplayed].getString() + " " + etk::toString(m_idDisplayed+1) + "/" + etk::toString(m_listImages.size()));
return true;
}
if (_event.getType() == gale::key::keyboard::pageDown) {
m_idDisplayed = m_listImages.size()-1;
m_image->propertySource.set(m_listImages[m_idDisplayed]);
propertyTitle.set("EVI:" + m_listImages[m_idDisplayed].getString() + " " + etk::toString(m_idDisplayed+1) + "/" + etk::toString(m_listImages.size()));
return true;
}
if (_event.getType() == gale::key::keyboard::pageUp) {
m_idDisplayed = 0;
m_image->propertySource.set(m_listImages[m_idDisplayed]);
propertyTitle.set("EVI:" + m_listImages[m_idDisplayed].getString() + " " + etk::toString(m_idDisplayed+1) + "/" + etk::toString(m_listImages.size()));
return true;
}
}
return true;
}