mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Issue #73 - updated masterlist editor.
Still needs stuff like input validation though.
This commit is contained in:
@@ -680,12 +680,17 @@ namespace YAML {
|
||||
inline Emitter& operator << (Emitter& out, const boss::DirtData& rhs) {
|
||||
out << BeginMap
|
||||
<< Key << "crc" << Value << rhs.CRC()
|
||||
<< Key << "itm" << Value << rhs.ITMs()
|
||||
<< Key << "udr" << Value << rhs.UDRs()
|
||||
<< Key << "nav" << Value << rhs.DeletedNavmeshes()
|
||||
<< Key << "util" << Value << rhs.CleaningUtility()
|
||||
<< Key << "guide" << Value << rhs.CleaningGuideURL()
|
||||
<< EndMap;
|
||||
<< Key << "guide" << Value << rhs.CleaningGuideURL();
|
||||
|
||||
if (rhs.ITMs() > -1)
|
||||
out << Key << "itm" << Value << rhs.ITMs();
|
||||
if (rhs.UDRs() > -1)
|
||||
out << Key << "udr" << Value << rhs.UDRs();
|
||||
if (rhs.DeletedNavmeshes() > -1)
|
||||
out << Key << "nav" << Value << rhs.DeletedNavmeshes();
|
||||
|
||||
out << EndMap;
|
||||
}
|
||||
|
||||
inline Emitter& operator << (Emitter& out, const boss::Game& rhs) {
|
||||
|
||||
+14
-6
@@ -114,9 +114,12 @@ namespace YAML {
|
||||
static Node encode(const boss::DirtData& rhs) {
|
||||
Node node;
|
||||
node["crc"] = rhs.CRC();
|
||||
node["itm"] = rhs.ITMs();
|
||||
node["udr"] = rhs.UDRs();
|
||||
node["nav"] = rhs.DeletedNavmeshes();
|
||||
if (rhs.ITMs() > -1)
|
||||
node["itm"] = rhs.ITMs();
|
||||
if (rhs.UDRs() > -1)
|
||||
node["udr"] = rhs.UDRs();
|
||||
if (rhs.DeletedNavmeshes() > -1)
|
||||
node["nav"] = rhs.DeletedNavmeshes();
|
||||
node["util"] = rhs.CleaningUtility();
|
||||
node["guide"] = rhs.CleaningGuideURL();
|
||||
|
||||
@@ -128,9 +131,14 @@ namespace YAML {
|
||||
return false;
|
||||
|
||||
uint32_t crc = node["crc"].as<uint32_t>();
|
||||
int itm = node["itm"].as<int>();
|
||||
int udr = node["udr"].as<int>();
|
||||
int nav = node["nav"].as<int>();
|
||||
int itm = -1, udr = -1, nav = -1;
|
||||
|
||||
if (node["itm"])
|
||||
itm = node["itm"].as<int>();
|
||||
if (node["udr"])
|
||||
udr = node["udr"].as<int>();
|
||||
if (node["nav"])
|
||||
nav = node["nav"].as<int>();
|
||||
|
||||
std::string util = node["util"].as<std::string>();
|
||||
std::string guide = node["guide"].as<std::string>();
|
||||
|
||||
+256
-1
@@ -26,6 +26,7 @@
|
||||
#include "../backend/streams.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
@@ -116,6 +117,7 @@ Editor::Editor(wxWindow *parent, const wxString& title, const std::string userli
|
||||
wxPanel * loadAfterTab = new wxPanel(listBook);
|
||||
wxPanel * messagesTab = new wxPanel(listBook);
|
||||
wxPanel * tagsTab = new wxPanel(listBook);
|
||||
wxPanel * dirtyTab = new wxPanel(listBook);
|
||||
|
||||
//Initialise controls.
|
||||
pluginText = new wxStaticText(this, wxID_ANY, "");
|
||||
@@ -135,6 +137,7 @@ Editor::Editor(wxWindow *parent, const wxString& title, const std::string userli
|
||||
incsList = new wxListView(incsTab, LIST_Incs, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL);
|
||||
loadAfterList = new wxListView(loadAfterTab, LIST_LoadAfter, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL);
|
||||
tagsList = new wxListView(tagsTab, LIST_BashTags, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL);
|
||||
dirtyList = new wxListView(dirtyTab, LIST_DirtyInfo, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL);
|
||||
messageList = new MessageList(messagesTab, LIST_Messages, language);
|
||||
|
||||
//Tie together notebooks and panels.
|
||||
@@ -143,6 +146,7 @@ Editor::Editor(wxWindow *parent, const wxString& title, const std::string userli
|
||||
listBook->AddPage(loadAfterTab, translate("Load After"));
|
||||
listBook->AddPage(messagesTab, translate("Messages"));
|
||||
listBook->AddPage(tagsTab, translate("Bash Tags"));
|
||||
listBook->AddPage(dirtyTab, translate("Dirty Info"));
|
||||
|
||||
//Set up list columns.
|
||||
pluginList->AppendColumn(translate("Plugins"));
|
||||
@@ -163,6 +167,13 @@ Editor::Editor(wxWindow *parent, const wxString& title, const std::string userli
|
||||
tagsList->AppendColumn(translate("Bash Tag"));
|
||||
tagsList->AppendColumn(translate("Condition"));
|
||||
|
||||
dirtyList->AppendColumn(translate("CRC"));
|
||||
dirtyList->AppendColumn(translate("ITM Count"));
|
||||
dirtyList->AppendColumn(translate("UDR Count"));
|
||||
dirtyList->AppendColumn(translate("Deleted Navmesh Count"));
|
||||
dirtyList->AppendColumn(translate("Cleaning Utility"));
|
||||
dirtyList->AppendColumn(translate("Cleaning Guide URL"));
|
||||
|
||||
//Initialise control states.
|
||||
addBtn->Enable(false);
|
||||
editBtn->Enable(false);
|
||||
@@ -183,6 +194,7 @@ Editor::Editor(wxWindow *parent, const wxString& title, const std::string userli
|
||||
Bind(wxEVT_COMMAND_LIST_ITEM_SELECTED, &Editor::OnRowSelect, this, LIST_LoadAfter);
|
||||
Bind(wxEVT_COMMAND_LIST_ITEM_SELECTED, &Editor::OnRowSelect, this, LIST_Messages);
|
||||
Bind(wxEVT_COMMAND_LIST_ITEM_SELECTED, &Editor::OnRowSelect, this, LIST_BashTags);
|
||||
Bind(wxEVT_COMMAND_LIST_ITEM_SELECTED, &Editor::OnRowSelect, this, LIST_DirtyInfo);
|
||||
Bind(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, &Editor::OnListBookChange, this, BOOK_Lists);
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &Editor::OnQuit, this, BUTTON_Apply);
|
||||
Bind(wxEVT_COMMAND_BUTTON_CLICKED, &Editor::OnQuit, this, BUTTON_Cancel);
|
||||
@@ -229,6 +241,10 @@ Editor::Editor(wxWindow *parent, const wxString& title, const std::string userli
|
||||
tabBox5->Add(tagsList, 1, wxEXPAND);
|
||||
tagsTab->SetSizer(tabBox5);
|
||||
|
||||
wxBoxSizer * tabBox6 = new wxBoxSizer(wxVERTICAL);
|
||||
tabBox6->Add(dirtyList, 1, wxEXPAND);
|
||||
dirtyTab->SetSizer(tabBox6);
|
||||
|
||||
mainBox->Add(listBook, 1, wxEXPAND|wxTOP|wxBOTTOM, 10);
|
||||
|
||||
wxBoxSizer * hbox2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
@@ -334,6 +350,18 @@ void Editor::OnPluginSelect(wxListEvent& event) {
|
||||
++i;
|
||||
}
|
||||
|
||||
set<boss::DirtData> dirtyInfo = plugin.DirtyInfo();
|
||||
i=0;
|
||||
for (set<boss::DirtData>::const_iterator it=dirtyInfo.begin(), endit=dirtyInfo.end(); it != endit; ++it) {
|
||||
dirtyList->InsertItem(i, FromUTF8(boss::IntToHexString(it->CRC())));
|
||||
dirtyList->SetItem(i, 1, FromUTF8(boss::IntToString(it->ITMs())));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(boss::IntToString(it->UDRs())));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(boss::IntToString(it->DeletedNavmeshes())));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(it->CleaningUtility()));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(it->CleaningGuideURL()));
|
||||
++i;
|
||||
}
|
||||
|
||||
//Set control states.
|
||||
prioritySpin->Enable(true);
|
||||
enableUserEditsBox->Enable(true);
|
||||
@@ -362,6 +390,10 @@ void Editor::OnListBookChange(wxBookCtrlEvent& event) {
|
||||
addBtn->SetLabel(translate("Add Bash Tag"));
|
||||
editBtn->SetLabel(translate("Edit Bash Tag"));
|
||||
removeBtn->SetLabel(translate("Remove Bash Tag"));
|
||||
} else if (event.GetSelection() == 5) {
|
||||
addBtn->SetLabel(translate("Add Dirty Info"));
|
||||
editBtn->SetLabel(translate("Edit Dirty Info"));
|
||||
removeBtn->SetLabel(translate("Remove Dirty Info"));
|
||||
}
|
||||
editBtn->Enable(false);
|
||||
removeBtn->Enable(false);
|
||||
@@ -453,6 +485,49 @@ void Editor::OnAddRow(wxCommandEvent& event) {
|
||||
tagsList->InsertItem(i, rowDialog->GetState());
|
||||
tagsList->SetItem(i, 1, rowDialog->GetName());
|
||||
tagsList->SetItem(i, 2, rowDialog->GetCondition());
|
||||
} else if (listBook->GetSelection() == 5) {
|
||||
BOOST_LOG_TRIVIAL(debug) << "Adding new dirty info row.";
|
||||
|
||||
DirtInfoEditDialog * rowDialog = new DirtInfoEditDialog(this, translate("BOSS: Add Dirty Info"));
|
||||
|
||||
if (rowDialog->ShowModal() != wxID_OK) {
|
||||
BOOST_LOG_TRIVIAL(debug) << "Cancelled adding dirty info row.";
|
||||
return;
|
||||
}
|
||||
|
||||
if (rowDialog->GetCRC().empty()) {
|
||||
BOOST_LOG_TRIVIAL(error) << "No CRC specified. Row will not be added.";
|
||||
wxMessageBox(
|
||||
translate("Error: No CRC specified. Row will not be added."),
|
||||
translate("BOSS: Error"),
|
||||
wxOK | wxICON_ERROR,
|
||||
this);
|
||||
return;
|
||||
} else if (rowDialog->GetUtility().empty()) {
|
||||
BOOST_LOG_TRIVIAL(error) << "No cleaning utility specified. Row will not be added.";
|
||||
wxMessageBox(
|
||||
translate("Error: No cleaning utility specified. Row will not be added."),
|
||||
translate("BOSS: Error"),
|
||||
wxOK | wxICON_ERROR,
|
||||
this);
|
||||
return;
|
||||
} else if (rowDialog->GetGuideURL().empty()) {
|
||||
BOOST_LOG_TRIVIAL(error) << "No cleaning guide URL specified. Row will not be added.";
|
||||
wxMessageBox(
|
||||
translate("Error: No cleaning guide URL specified. Row will not be added."),
|
||||
translate("BOSS: Error"),
|
||||
wxOK | wxICON_ERROR,
|
||||
this);
|
||||
return;
|
||||
}
|
||||
|
||||
long i = tagsList->GetItemCount();
|
||||
dirtyList->InsertItem(i, rowDialog->GetCRC());
|
||||
dirtyList->SetItem(i, 1, FromUTF8(boss::IntToString(rowDialog->GetITMs())));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(boss::IntToString(rowDialog->GetUDRs())));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(boss::IntToString(rowDialog->GetDeletedNavmeshes())));
|
||||
dirtyList->SetItem(i, 2, rowDialog->GetUtility());
|
||||
dirtyList->SetItem(i, 2, rowDialog->GetGuideURL());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,6 +622,56 @@ void Editor::OnEditRow(wxCommandEvent& event) {
|
||||
tagsList->SetItem(i, 0, rowDialog->GetState());
|
||||
tagsList->SetItem(i, 1, rowDialog->GetName());
|
||||
tagsList->SetItem(i, 2, rowDialog->GetCondition());
|
||||
} else if (listBook->GetSelection() == 5) {
|
||||
BOOST_LOG_TRIVIAL(debug) << "Editing dirty info row.";
|
||||
DirtInfoEditDialog * rowDialog = new DirtInfoEditDialog(this, translate("BOSS: Edit Dirty Info"));
|
||||
|
||||
long i = tagsList->GetFirstSelected();
|
||||
|
||||
rowDialog->SetValues(tagsList->GetItemText(i, 0),
|
||||
atoi(string(tagsList->GetItemText(i, 1)).c_str()),
|
||||
atoi(string(tagsList->GetItemText(i, 2)).c_str()),
|
||||
atoi(string(tagsList->GetItemText(i, 3)).c_str()),
|
||||
tagsList->GetItemText(i, 4),
|
||||
tagsList->GetItemText(i, 5));
|
||||
|
||||
if (rowDialog->ShowModal() != wxID_OK) {
|
||||
BOOST_LOG_TRIVIAL(debug) << "Cancelled editing tag row.";
|
||||
return;
|
||||
}
|
||||
|
||||
if (rowDialog->GetCRC().empty()) {
|
||||
BOOST_LOG_TRIVIAL(error) << "No CRC specified. Row will not be edited.";
|
||||
wxMessageBox(
|
||||
translate("Error: No CRC specified. Row will not be edited."),
|
||||
translate("BOSS: Error"),
|
||||
wxOK | wxICON_ERROR,
|
||||
this);
|
||||
return;
|
||||
} else if (rowDialog->GetUtility().empty()) {
|
||||
BOOST_LOG_TRIVIAL(error) << "No cleaning utility specified. Row will not be edited.";
|
||||
wxMessageBox(
|
||||
translate("Error: No cleaning utility specified. Row will not be edited."),
|
||||
translate("BOSS: Error"),
|
||||
wxOK | wxICON_ERROR,
|
||||
this);
|
||||
return;
|
||||
} else if (rowDialog->GetGuideURL().empty()) {
|
||||
BOOST_LOG_TRIVIAL(error) << "No cleaning guide URL specified. Row will not be edited.";
|
||||
wxMessageBox(
|
||||
translate("Error: No cleaning guide URL specified. Row will not be edited."),
|
||||
translate("BOSS: Error"),
|
||||
wxOK | wxICON_ERROR,
|
||||
this);
|
||||
return;
|
||||
}
|
||||
|
||||
dirtyList->SetItem(i, 0, rowDialog->GetCRC());
|
||||
dirtyList->SetItem(i, 1, FromUTF8(boss::IntToString(rowDialog->GetITMs())));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(boss::IntToString(rowDialog->GetUDRs())));
|
||||
dirtyList->SetItem(i, 2, FromUTF8(boss::IntToString(rowDialog->GetDeletedNavmeshes())));
|
||||
dirtyList->SetItem(i, 2, rowDialog->GetUtility());
|
||||
dirtyList->SetItem(i, 2, rowDialog->GetGuideURL());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -668,7 +793,7 @@ void Editor::OnRowSelect(wxListEvent& event) {
|
||||
removeBtn->Enable(false);
|
||||
}
|
||||
|
||||
} else {
|
||||
} else if (event.GetId() == LIST_BashTags) {
|
||||
|
||||
boss::Tag tag = RowToTag(tagsList, event.GetIndex());
|
||||
boss::Plugin plugin(string(pluginText->GetLabelText().ToUTF8()));
|
||||
@@ -692,6 +817,28 @@ void Editor::OnRowSelect(wxListEvent& event) {
|
||||
removeBtn->Enable(false);
|
||||
}
|
||||
|
||||
} else {
|
||||
boss::DirtData dirtyData = RowToDirtData(dirtyList, event.GetIndex());
|
||||
boss::Plugin plugin(string(pluginText->GetLabelText().ToUTF8()));
|
||||
|
||||
vector<boss::Plugin>::const_iterator it = std::find(_basePlugins.begin(), _basePlugins.end(), plugin);
|
||||
|
||||
if (it != _basePlugins.end())
|
||||
plugin = *it;
|
||||
else
|
||||
BOOST_LOG_TRIVIAL(warning) << "Could not find plugin in base list: " << plugin.Name();
|
||||
|
||||
set<boss::DirtData> dirtyInfo = plugin.DirtyInfo();
|
||||
|
||||
if (dirtyInfo.find(dirtyData) == dirtyInfo.end()) {
|
||||
BOOST_LOG_TRIVIAL(trace) << "Dirty info for CRC \"" << dirtyData.CRC() << "\" was not found in base plugin metadata. Editing enabled.";
|
||||
editBtn->Enable(true);
|
||||
removeBtn->Enable(true);
|
||||
} else {
|
||||
BOOST_LOG_TRIVIAL(trace) << "Dirty info for CRC \"" << dirtyData.CRC() << "\" was found in base plugin metadata. Editing disabled.";
|
||||
editBtn->Enable(false);
|
||||
removeBtn->Enable(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -814,6 +961,12 @@ boss::Plugin Editor::GetNewData(const wxString& plugin) const {
|
||||
}
|
||||
p.Tags(tags);
|
||||
|
||||
set<boss::DirtData> dirtyData;
|
||||
for (int i=0,max=dirtyList->GetItemCount(); i < max; ++i) {
|
||||
dirtyData.insert(RowToDirtData(dirtyList, i));
|
||||
}
|
||||
p.DirtyInfo(dirtyData);
|
||||
|
||||
vector<boss::Message> vec = messageList->GetItems();
|
||||
list<boss::Message> messages(vec.begin(), vec.end());
|
||||
p.Messages(messages);
|
||||
@@ -846,6 +999,22 @@ boss::Tag Editor::RowToTag(wxListView * list, long row) const {
|
||||
);
|
||||
}
|
||||
|
||||
boss::DirtData Editor::RowToDirtData(wxListView * list, long row) const {
|
||||
string text(list->GetItemText(row, 0).ToUTF8());
|
||||
uint32_t crc;
|
||||
std::stringstream ss;
|
||||
ss << std::hex << text;
|
||||
ss >> crc;
|
||||
return boss::DirtData(
|
||||
crc,
|
||||
atoi(string(list->GetItemText(row, 1).ToUTF8()).c_str()),
|
||||
atoi(string(list->GetItemText(row, 2).ToUTF8()).c_str()),
|
||||
atoi(string(list->GetItemText(row, 3).ToUTF8()).c_str()),
|
||||
string(list->GetItemText(row, 4).ToUTF8()),
|
||||
string(list->GetItemText(row, 5).ToUTF8())
|
||||
);
|
||||
}
|
||||
|
||||
FileEditDialog::FileEditDialog(wxWindow *parent, const wxString& title) : wxDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) {
|
||||
|
||||
_name = new wxTextCtrl(this, wxID_ANY);
|
||||
@@ -1136,3 +1305,89 @@ wxString TagEditDialog::GetName() const {
|
||||
wxString TagEditDialog::GetCondition() const {
|
||||
return _condition->GetValue();
|
||||
}
|
||||
|
||||
DirtInfoEditDialog::DirtInfoEditDialog(wxWindow * parent, const wxString& title) : wxDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) {
|
||||
//Initialise controls.
|
||||
_itm = new wxSpinCtrl(this, wxID_ANY, "0");
|
||||
_udr = new wxSpinCtrl(this, wxID_ANY, "0");
|
||||
_nav = new wxSpinCtrl(this, wxID_ANY, "0");
|
||||
_crc = new wxTextCtrl(this, wxID_ANY);
|
||||
_utility = new wxTextCtrl(this, wxID_ANY);
|
||||
_guideURL = new wxTextCtrl(this, wxID_ANY);
|
||||
|
||||
wxSizerFlags leftItem(0);
|
||||
leftItem.Left();
|
||||
|
||||
wxSizerFlags rightItem(1);
|
||||
rightItem.Right().Expand();
|
||||
|
||||
wxBoxSizer * bigBox = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
wxFlexGridSizer * GridSizer = new wxFlexGridSizer(2, 5, 5);
|
||||
GridSizer->AddGrowableCol(1,1);
|
||||
|
||||
GridSizer->Add(new wxStaticText(this, wxID_ANY, translate("CRC:")), leftItem);
|
||||
GridSizer->Add(_crc, rightItem);
|
||||
|
||||
GridSizer->Add(new wxStaticText(this, wxID_ANY, translate("ITM Count:")), leftItem);
|
||||
GridSizer->Add(_itm, rightItem);
|
||||
|
||||
GridSizer->Add(new wxStaticText(this, wxID_ANY, translate("UDR Count:")), leftItem);
|
||||
GridSizer->Add(_udr, rightItem);
|
||||
|
||||
GridSizer->Add(new wxStaticText(this, wxID_ANY, translate("Deleted Navmesh Count:")), leftItem);
|
||||
GridSizer->Add(_nav, rightItem);
|
||||
|
||||
GridSizer->Add(new wxStaticText(this, wxID_ANY, translate("Cleaning Utility:")), leftItem);
|
||||
GridSizer->Add(_utility, rightItem);
|
||||
|
||||
GridSizer->Add(new wxStaticText(this, wxID_ANY, translate("Cleaning Guide URL:")), leftItem);
|
||||
GridSizer->Add(_guideURL, rightItem);
|
||||
|
||||
bigBox->Add(GridSizer, 0, wxEXPAND|wxALL, 15);
|
||||
|
||||
bigBox->AddSpacer(10);
|
||||
bigBox->AddStretchSpacer(1);
|
||||
|
||||
//Need to add 'OK' and 'Cancel' buttons.
|
||||
wxSizer * sizer = CreateSeparatedButtonSizer(wxOK|wxCANCEL);
|
||||
if (sizer != NULL)
|
||||
bigBox->Add(sizer, 0, wxEXPAND|wxLEFT|wxBOTTOM|wxRIGHT, 15);
|
||||
|
||||
SetBackgroundColour(wxColour(255,255,255));
|
||||
SetIcon(wxIconLocation("BOSS.exe"));
|
||||
SetSizerAndFit(bigBox);
|
||||
}
|
||||
|
||||
void DirtInfoEditDialog::SetValues(const wxString& crc, int itm, int udr, int nav, const wxString& utility, const wxString& guideURL) {
|
||||
_crc->SetValue(crc);
|
||||
_itm->SetValue(itm);
|
||||
_udr->SetValue(udr);
|
||||
_nav->SetValue(nav);
|
||||
_utility->SetValue(utility);
|
||||
_guideURL->SetValue(guideURL);
|
||||
}
|
||||
|
||||
wxString DirtInfoEditDialog::GetCRC() const {
|
||||
return _crc->GetValue();
|
||||
}
|
||||
|
||||
int DirtInfoEditDialog::GetITMs() const {
|
||||
return _itm->GetValue();
|
||||
}
|
||||
|
||||
int DirtInfoEditDialog::GetUDRs() const {
|
||||
return _udr->GetValue();
|
||||
}
|
||||
|
||||
int DirtInfoEditDialog::GetDeletedNavmeshes() const {
|
||||
return _nav->GetValue();
|
||||
}
|
||||
|
||||
wxString DirtInfoEditDialog::GetUtility() const {
|
||||
return _utility->GetValue();
|
||||
}
|
||||
|
||||
wxString DirtInfoEditDialog::GetGuideURL() const {
|
||||
return _guideURL->GetValue();
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@ private:
|
||||
wxListView * loadAfterList;
|
||||
MessageList * messageList;
|
||||
wxListView * tagsList;
|
||||
wxListView * dirtyList;
|
||||
wxNotebook * listBook;
|
||||
wxCheckBox * enableUserEditsBox;
|
||||
wxSpinCtrl * prioritySpin;
|
||||
@@ -99,6 +100,7 @@ private:
|
||||
|
||||
boss::File RowToFile(wxListView * list, long row) const;
|
||||
boss::Tag RowToTag(wxListView * list, long row) const;
|
||||
boss::DirtData RowToDirtData(wxListView * list, long row) const;
|
||||
};
|
||||
|
||||
class FileEditDialog : public wxDialog {
|
||||
@@ -151,4 +153,24 @@ private:
|
||||
wxTextCtrl * _condition;
|
||||
};
|
||||
|
||||
class DirtInfoEditDialog : public wxDialog {
|
||||
public:
|
||||
DirtInfoEditDialog(wxWindow * parent, const wxString& title);
|
||||
|
||||
void SetValues(const wxString& crc, int itm, int udr, int nav, const wxString& utility, const wxString& guideURL);
|
||||
wxString GetCRC() const;
|
||||
int GetITMs() const;
|
||||
int GetUDRs() const;
|
||||
int GetDeletedNavmeshes() const;
|
||||
wxString GetUtility() const;
|
||||
wxString GetGuideURL() const;
|
||||
private:
|
||||
wxTextCtrl * _crc;
|
||||
wxSpinCtrl * _itm;
|
||||
wxSpinCtrl * _udr;
|
||||
wxSpinCtrl * _nav;
|
||||
wxTextCtrl * _utility;
|
||||
wxTextCtrl * _guideURL;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -53,6 +53,7 @@ enum {
|
||||
LIST_LoadAfter,
|
||||
LIST_Messages,
|
||||
LIST_BashTags,
|
||||
LIST_DirtyInfo,
|
||||
LIST_MessageContent,
|
||||
BUTTON_AddRow,
|
||||
BUTTON_EditRow,
|
||||
|
||||
Reference in New Issue
Block a user