[DEV] update for build URI

This commit is contained in:
2018-09-29 21:59:06 +02:00
parent 1d65639191
commit a044d64f02
32 changed files with 245 additions and 278 deletions

View File

@@ -19,7 +19,7 @@ static void SortElementList(etk::Vector<appl::dataBufferStruct>& _list) {
size_t findPos = 0;
for(size_t jjj=0; jjj<_list.size(); jjj++) {
//EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\"");
if (tmpList[iii].m_bufferName.getNameFile() > _list[jjj].m_bufferName.getNameFile()) {
if (tmpList[iii].m_bufferName.getFileName() > _list[jjj].m_bufferName.getFileName()) {
findPos = jjj+1;
}
}
@@ -78,7 +78,7 @@ void appl::widget::BufferList::removeAllElement() {
void appl::widget::BufferList::insertAlphabetic(const appl::dataBufferStruct& _dataStruct, bool _selectNewPosition) {
// alphabetical order:
for (size_t iii = 0; iii < m_list.size(); ++iii) {
if (m_list[iii].m_bufferName.getNameFile().toLower() > _dataStruct.m_bufferName.getNameFile().toLower()) {
if (m_list[iii].m_bufferName.getFileName().toLower() > _dataStruct.m_bufferName.getFileName().toLower()) {
m_list.insert(m_list.begin() + iii, _dataStruct);
if (_selectNewPosition == true) {
m_selectedID = iii;
@@ -92,16 +92,15 @@ void appl::widget::BufferList::insertAlphabetic(const appl::dataBufferStruct& _d
}
}
void appl::widget::BufferList::onCallbackNewBuffer(const etk::String& _value) {
ememory::SharedPtr<appl::Buffer> buffer = m_bufferManager->get(_value);
if (buffer == null) {
APPL_ERROR("event on element nor exist : " << _value);
void appl::widget::BufferList::onCallbackNewBuffer(const ememory::SharedPtr<appl::Buffer>& _buffer) {
if (_buffer == null) {
return;
}
ememory::SharedPtr<appl::Buffer> buffer = _buffer;
buffer->signalIsSave.connect(sharedFromThis(), &BufferList::onCallbackIsSave);
buffer->signalIsModify.connect(sharedFromThis(), &BufferList::onCallbackIsModify);
buffer->signalChangeName.connect(sharedFromThis(), &BufferList::onCallbackChangeName);
appl::dataBufferStruct tmp(_value, buffer);
appl::dataBufferStruct tmp(_buffer->getFileName(), _buffer);
if (m_openOrderMode == true) {
m_list.pushBack(tmp);
} else {
@@ -118,13 +117,13 @@ void appl::widget::BufferList::onCallbackNewBuffer(const etk::String& _value) {
}
// TODO : Review this callback with the real shared_ptr on the buffer ...
void appl::widget::BufferList::onCallbackselectNewFile(const etk::String& _value) {
void appl::widget::BufferList::onCallbackselectNewFile(const ememory::SharedPtr<appl::Buffer>& _buffer) {
m_selectedID = -1;
for (size_t iii=0; iii<m_list.size(); iii++) {
if (m_list[iii].m_buffer == null) {
continue;
}
if (m_list[iii].m_buffer->getFileName() != _value) {
if (m_list[iii].m_buffer != _buffer) {
continue;
}
m_selectedID = iii;
@@ -185,7 +184,7 @@ ivec2 appl::widget::BufferList::getMatrixSize() const {
fluorine::Variant appl::widget::BufferList::getData(int32_t _role, const ivec2& _pos) {
switch (_role) {
case ewol::widget::ListRole::Text:
return m_list[_pos.y()].m_bufferName.getNameFile();;
return m_list[_pos.y()].m_bufferName.getFileName();;
case ewol::widget::ListRole::FgColor:
if ( m_list[_pos.y()].m_buffer != null
&& m_list[_pos.y()].m_buffer->isModify() == false) {

View File

@@ -14,12 +14,12 @@
namespace appl {
class dataBufferStruct {
public:
etk::FSNode m_bufferName;
etk::Path m_bufferName;
ememory::SharedPtr<appl::Buffer> m_buffer;
dataBufferStruct() {
};
dataBufferStruct(const etk::String& _bufferName, const ememory::SharedPtr<appl::Buffer>& _buffer) :
dataBufferStruct(const etk::Path& _bufferName, const ememory::SharedPtr<appl::Buffer>& _buffer) :
m_bufferName(_bufferName),
m_buffer(_buffer) {
@@ -74,8 +74,8 @@ namespace appl {
void onCallbackChangeName();
void onCallbackIsSave();
void onCallbackIsModify();
void onCallbackNewBuffer(const etk::String& _value);
void onCallbackselectNewFile(const etk::String& _value);
void onCallbackNewBuffer(const ememory::SharedPtr<appl::Buffer>& _buffer);
void onCallbackselectNewFile(const ememory::SharedPtr<appl::Buffer>& _buffer);
void onCallbackBufferRemoved(const ememory::SharedPtr<appl::Buffer>& _buffer);
void calculateMinMaxSize() override;
};

View File

@@ -19,7 +19,7 @@ static void SortElementList(etk::Vector<appl::dataBufferStruct>& _list) {
size_t findPos = 0;
for(size_t jjj=0; jjj<_list.size(); jjj++) {
//EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\"");
if (tmpList[iii].m_bufferName.getNameFile() > _list[jjj].m_bufferName.getNameFile()) {
if (tmpList[iii].m_bufferName.getFileName() > _list[jjj].m_bufferName.getFileName()) {
findPos = jjj+1;
}
}
@@ -53,17 +53,17 @@ void appl::widget::BufferTree::init() {
propertyCanFocus.set(true);
propertyTextIsDecorated.set(false);
if (m_bufferManager != null) {
m_bufferManager->signalNewBuffer2.connect(sharedFromThis(), &appl::widget::BufferTree::onNewBuffer);
m_bufferManager->signalSelectBuffer.connect(sharedFromThis(), &appl::widget::BufferTree::onSelectBuffer);
m_bufferManager->signalNewBuffer.connect(sharedFromThis(), &appl::widget::BufferTree::onNewBuffer);
m_bufferManager->signalSelectFile.connect(sharedFromThis(), &appl::widget::BufferTree::onSelectBuffer);
m_bufferManager->signalRemoveBuffer.connect(sharedFromThis(), &appl::widget::BufferTree::onRemoveBuffer);
}
}
static etk::String getCommonPathPart(const etk::String& _left, const etk::String& _right) {
static etk::String getCommonPathPart(const etk::Path& _left, const etk::Path& _right) {
etk::String out;
for (size_t iii=0; iii < etk::min(_left.size(), _right.size()); ++iii) {
if (_left[iii] == _right[iii]) {
out += _left[iii];
for (size_t iii=0; iii < etk::min(_left.getString().size(), _right.getString().size()); ++iii) {
if (_left.getString()[iii] == _right.getString()[iii]) {
out += _left.getString()[iii];
continue;
}
break;
@@ -75,11 +75,10 @@ static etk::String getCommonPathPart(const etk::String& _left, const etk::String
void appl::widget::BufferTree::generateFlatTree() {
// Brut Force Mode...
etk::String upperParent = getRootPath();
etk::Path upperParent = getRootPath();
// Now we have the root path...
// Need to feed all elements needed.
etk::FSNode nodeRoot = upperParent;
m_tree = etk::TreeNode<appl::TreeElement>::create(TreeElement(nodeRoot, true));
m_tree = etk::TreeNode<appl::TreeElement>::create(TreeElement(upperParent, true));
populateNodeIfNeeded(m_tree);
updateFlatTree();
}
@@ -97,11 +96,11 @@ void appl::widget::BufferTree::populateNodeIfNeeded(ememory::SharedPtr<etk::Tree
// already populated...
return;
}
etk::Vector<etk::FSNode*> child = etk::FSNode(value.m_path).folderGetSubList(false, true, true, false);
etk::Vector<etk::Path> child = etk::path::list(value.m_path);
APPL_ERROR(" nbChilds: " << child.size() << " for path: " << value.m_path);
for (auto& it: child) {
APPL_ERROR("add element: " << *it);
auto elem = etk::TreeNode<appl::TreeElement>::create(TreeElement(*it, false));
APPL_ERROR("add element: " << it);
auto elem = etk::TreeNode<appl::TreeElement>::create(TreeElement(it, false));
_node->addChild(elem);
// TODO: ETK_FREE(etk::FSNode, it);
}
@@ -114,8 +113,8 @@ void appl::widget::BufferTree::goUpper() {
return;
}
// generate new futur root node ...
etk::FSNode node = etk::FSNode(m_tree->getData().m_path).folderGetParent();
auto treeElement = etk::TreeNode<appl::TreeElement>::create(TreeElement(node, true));
etk::Path path = m_tree->getData().m_path.getParent();
auto treeElement = etk::TreeNode<appl::TreeElement>::create(TreeElement(path, true));
// Add all sub-items
populateNodeIfNeeded(treeElement);
// find old root node in the sublist:
@@ -163,8 +162,8 @@ void appl::widget::BufferTree::removeAllElement() {
//m_list.clear();
}
etk::String appl::widget::BufferTree::getRootPath() {
etk::String upperParent = "";
etk::Path appl::widget::BufferTree::getRootPath() {
etk::Path upperParent = "";
etk::Vector<appl::BufferShared> tmpNewBuffer;
for (auto& it : *m_bufferManager) {
if (it == null) {
@@ -174,18 +173,18 @@ etk::String appl::widget::BufferTree::getRootPath() {
tmpNewBuffer.pushBack(it);
continue;
}
etk::FSNode nodeName = it->getFileName();
if (upperParent == "") {
upperParent = nodeName.getNameFolder();
APPL_ERROR("init root: " << nodeName.getFileSystemName() << " root=" << upperParent);
etk::Path nodeName = it->getFileName();
if (upperParent.isEmpty() == true) {
upperParent = nodeName.getParent();
APPL_ERROR("init root: " << nodeName << " root=" << upperParent);
continue;
}
upperParent = getCommonPathPart(upperParent, nodeName.getNameFolder());
APPL_ERROR("Update: " << nodeName.getFileSystemName() << " " << nodeName.getNameFolder() << " root=" << upperParent);
upperParent = getCommonPathPart(upperParent, nodeName.getParent());
APPL_ERROR("Update: " << nodeName << " " << nodeName.getParent() << " root=" << upperParent);
}
if (upperParent == "") {
APPL_ERROR("Nothing find ==> get home path...");
upperParent = etk::FSNodeGetHomePath();
upperParent = etk::path::getHomePath();
}
APPL_ERROR("update tree: " << upperParent);
return upperParent;
@@ -196,7 +195,7 @@ void appl::widget::BufferTree::onNewBuffer(const ememory::SharedPtr<appl::Buffer
if (m_tree == null) {
generateFlatTree();
} else {
etk::String rootPath = getRootPath();
etk::Path rootPath = getRootPath();
while (rootPath != m_tree->getData().m_path ) {
goUpper();
}

View File

@@ -11,20 +11,21 @@
#include <ewol/widget/TreeView.hpp>
#include <ewol/widget/Windows.hpp>
#include <etk/FlatTree.hpp>
#include <etk/path/fileSystem.hpp>
namespace appl {
class TreeElement {
public:
TreeElement(const etk::FSNode& _node, bool _isExpand=false):
m_path(_node.getFileSystemName()),
m_nodeName(_node.getNameFile()),
m_isFolder(_node.getNodeType() == etk::typeNode_folder),
TreeElement(const etk::Path& _path, bool _isExpand = false):
m_path(_path),
m_nodeName(_path.getFileName()),
m_isFolder(etk::path::isDirectory(_path) == true),
m_buffer(null),
m_isSelected(false),
m_isExpand(_isExpand) {
}
etk::String m_path;
etk::Path m_path;
etk::String m_nodeName; // must be here ==> the buffer is optionnal..
bool m_isFolder;
ememory::SharedPtr<appl::Buffer> m_buffer;
@@ -54,7 +55,7 @@ namespace appl {
int32_t m_selectedID;
void updateFlatTree();
void generateFlatTree();
etk::String getRootPath();
etk::Path getRootPath();
void populateNodeIfNeeded(ememory::SharedPtr<etk::TreeNode<appl::TreeElement>> _node);
void goUpper();
ememory::SharedPtr<etk::TreeNode<TreeElement>> m_tree;