mirror of https://github.com/OpenRCT2/OpenRCT2.git
Get rename and delete working
This commit is contained in:
parent
821b091b25
commit
3ea81e3b8b
|
@ -38,9 +38,10 @@ bool title_sequence_name_exists(const char *name)
|
||||||
{
|
{
|
||||||
size_t count = title_sequence_manager_get_count();
|
size_t count = title_sequence_manager_get_count();
|
||||||
for (size_t i = 0; i < count; i++) {
|
for (size_t i = 0; i < count; i++) {
|
||||||
if (_stricmp(title_sequence_manager_get_name(i), name) == 0)
|
if (_stricmp(title_sequence_manager_get_name(i), name) == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "../core/Path.hpp"
|
#include "../core/Path.hpp"
|
||||||
#include "../core/String.hpp"
|
#include "../core/String.hpp"
|
||||||
#include "../core/Util.hpp"
|
#include "../core/Util.hpp"
|
||||||
|
#include "TitleSequence.h"
|
||||||
#include "TitleSequenceManager.h"
|
#include "TitleSequenceManager.h"
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
|
@ -64,6 +65,43 @@ namespace TitleSequenceManager
|
||||||
return &_items[i];
|
return &_items[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeleteItem(size_t i)
|
||||||
|
{
|
||||||
|
auto item = GetItem(i);
|
||||||
|
const utf8 * path = item->Path.c_str();
|
||||||
|
if (item->IsZip)
|
||||||
|
{
|
||||||
|
platform_file_delete(path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
platform_directory_delete(path);
|
||||||
|
}
|
||||||
|
_items.erase(_items.begin() + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenameItem(size_t i, const utf8 * newName)
|
||||||
|
{
|
||||||
|
auto item = &_items[i];
|
||||||
|
const utf8 * oldPath = item->Path.c_str();
|
||||||
|
|
||||||
|
utf8 newPath[MAX_PATH];
|
||||||
|
Path::GetDirectory(newPath, sizeof(newPath), oldPath);
|
||||||
|
Path::Append(newPath, sizeof(newPath), newName);
|
||||||
|
if (item->IsZip)
|
||||||
|
{
|
||||||
|
String::Append(newPath, sizeof(newPath), TITLE_SEQUENCE_EXTENSION);
|
||||||
|
platform_file_move(oldPath, newPath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
platform_file_move(oldPath, newPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
item->Name = std::string(newName);
|
||||||
|
item->Path = std::string(newPath);
|
||||||
|
}
|
||||||
|
|
||||||
static const uint16 GetPredefinedIndex(const std::string &path)
|
static const uint16 GetPredefinedIndex(const std::string &path)
|
||||||
{
|
{
|
||||||
const utf8 * filename = Path::GetFileName(path.c_str());
|
const utf8 * filename = Path::GetFileName(path.c_str());
|
||||||
|
@ -219,8 +257,32 @@ extern "C"
|
||||||
return SIZE_MAX;
|
return SIZE_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t title_sequence_manager_get_index_for_name(const utf8 * name)
|
||||||
|
{
|
||||||
|
size_t count = TitleSequenceManager::GetCount();
|
||||||
|
for (size_t i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
const utf8 * tn = title_sequence_manager_get_name(i);
|
||||||
|
if (String::Equals(tn, name))
|
||||||
|
{
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SIZE_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
void title_sequence_manager_scan()
|
void title_sequence_manager_scan()
|
||||||
{
|
{
|
||||||
TitleSequenceManager::Scan();
|
TitleSequenceManager::Scan();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void title_sequence_manager_delete(size_t i)
|
||||||
|
{
|
||||||
|
TitleSequenceManager::DeleteItem(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void title_sequence_manager_rename(size_t i, const utf8 * newName)
|
||||||
|
{
|
||||||
|
TitleSequenceManager::RenameItem(i, newName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,8 @@ namespace TitleSequenceManager
|
||||||
{
|
{
|
||||||
size_t GetCount();
|
size_t GetCount();
|
||||||
const TitleSequenceManagerItem * GetItem(size_t i);
|
const TitleSequenceManagerItem * GetItem(size_t i);
|
||||||
|
void DeleteItem(size_t i);
|
||||||
|
void RenameItem(size_t i, const utf8 * newName);
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr uint16 PREDEFINED_INDEX_CUSTOM = UINT16_MAX;
|
constexpr uint16 PREDEFINED_INDEX_CUSTOM = UINT16_MAX;
|
||||||
|
@ -47,7 +49,10 @@ extern "C" {
|
||||||
const utf8 * title_sequence_manager_get_config_id(size_t index);
|
const utf8 * title_sequence_manager_get_config_id(size_t index);
|
||||||
uint16 title_sequence_manager_get_predefined_index(size_t index);
|
uint16 title_sequence_manager_get_predefined_index(size_t index);
|
||||||
size_t title_sequence_manager_get_index_for_config_id(const utf8 * configId);
|
size_t title_sequence_manager_get_index_for_config_id(const utf8 * configId);
|
||||||
|
size_t title_sequence_manager_get_index_for_name(const utf8 * name);
|
||||||
void title_sequence_manager_scan();
|
void title_sequence_manager_scan();
|
||||||
|
void title_sequence_manager_delete(size_t i);
|
||||||
|
void title_sequence_manager_rename(size_t i, const utf8 * newName);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,7 +308,8 @@ static void window_title_editor_mouseup(rct_window *w, int widgetIndex)
|
||||||
break;
|
break;
|
||||||
case WIDX_TITLE_EDITOR_DELETE_BUTTON:
|
case WIDX_TITLE_EDITOR_DELETE_BUTTON:
|
||||||
if (window_title_editor_check_can_edit()) {
|
if (window_title_editor_check_can_edit()) {
|
||||||
// title_sequence_delete_preset(_selectedTitleSequence);
|
title_sequence_manager_delete(_selectedTitleSequence);
|
||||||
|
window_title_editor_load_sequence(0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WIDX_TITLE_EDITOR_RENAME_BUTTON:
|
case WIDX_TITLE_EDITOR_RENAME_BUTTON:
|
||||||
|
@ -600,13 +601,14 @@ static void window_title_editor_textinput(rct_window *w, int widgetIndex, char *
|
||||||
case WIDX_TITLE_EDITOR_DUPLICATE_BUTTON:
|
case WIDX_TITLE_EDITOR_DUPLICATE_BUTTON:
|
||||||
case WIDX_TITLE_EDITOR_RENAME_BUTTON:
|
case WIDX_TITLE_EDITOR_RENAME_BUTTON:
|
||||||
if (filename_valid_characters(text)) {
|
if (filename_valid_characters(text)) {
|
||||||
if (!title_sequence_name_exists(text)) {
|
if (title_sequence_manager_get_index_for_name(text) == SIZE_MAX) {
|
||||||
if (widgetIndex == WIDX_TITLE_EDITOR_NEW_BUTTON) {
|
if (widgetIndex == WIDX_TITLE_EDITOR_NEW_BUTTON) {
|
||||||
title_sequence_create_preset(text);
|
title_sequence_create_preset(text);
|
||||||
} else if (widgetIndex == WIDX_TITLE_EDITOR_DUPLICATE_BUTTON) {
|
} else if (widgetIndex == WIDX_TITLE_EDITOR_DUPLICATE_BUTTON) {
|
||||||
// title_sequence_duplicate_preset(_selectedTitleSequence, text);
|
// title_sequence_duplicate_preset(_selectedTitleSequence, text);
|
||||||
} else {
|
} else {
|
||||||
// title_sequence_rename_preset(_selectedTitleSequence, text);
|
title_sequence_manager_rename(_selectedTitleSequence, text);
|
||||||
|
_sequenceName = title_sequence_manager_get_name(_selectedTitleSequence);
|
||||||
}
|
}
|
||||||
config_save_default();
|
config_save_default();
|
||||||
window_invalidate(w);
|
window_invalidate(w);
|
||||||
|
|
Loading…
Reference in New Issue