mirror of https://github.com/OpenRCT2/OpenRCT2.git
Get rename and delete working
This commit is contained in:
parent
821b091b25
commit
3ea81e3b8b
|
@ -38,8 +38,9 @@ bool title_sequence_name_exists(const char *name)
|
|||
{
|
||||
size_t count = title_sequence_manager_get_count();
|
||||
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 false;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "../core/Path.hpp"
|
||||
#include "../core/String.hpp"
|
||||
#include "../core/Util.hpp"
|
||||
#include "TitleSequence.h"
|
||||
#include "TitleSequenceManager.h"
|
||||
|
||||
extern "C"
|
||||
|
@ -64,6 +65,43 @@ namespace TitleSequenceManager
|
|||
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)
|
||||
{
|
||||
const utf8 * filename = Path::GetFileName(path.c_str());
|
||||
|
@ -219,8 +257,32 @@ extern "C"
|
|||
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()
|
||||
{
|
||||
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();
|
||||
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;
|
||||
|
@ -47,7 +49,10 @@ extern "C" {
|
|||
const utf8 * title_sequence_manager_get_config_id(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_name(const utf8 * name);
|
||||
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
|
||||
}
|
||||
|
|
|
@ -308,7 +308,8 @@ static void window_title_editor_mouseup(rct_window *w, int widgetIndex)
|
|||
break;
|
||||
case WIDX_TITLE_EDITOR_DELETE_BUTTON:
|
||||
if (window_title_editor_check_can_edit()) {
|
||||
// title_sequence_delete_preset(_selectedTitleSequence);
|
||||
title_sequence_manager_delete(_selectedTitleSequence);
|
||||
window_title_editor_load_sequence(0);
|
||||
}
|
||||
break;
|
||||
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_RENAME_BUTTON:
|
||||
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) {
|
||||
title_sequence_create_preset(text);
|
||||
} else if (widgetIndex == WIDX_TITLE_EDITOR_DUPLICATE_BUTTON) {
|
||||
// title_sequence_duplicate_preset(_selectedTitleSequence, text);
|
||||
} else {
|
||||
// title_sequence_rename_preset(_selectedTitleSequence, text);
|
||||
title_sequence_manager_rename(_selectedTitleSequence, text);
|
||||
_sequenceName = title_sequence_manager_get_name(_selectedTitleSequence);
|
||||
}
|
||||
config_save_default();
|
||||
window_invalidate(w);
|
||||
|
|
Loading…
Reference in New Issue