Subversion Repositories spk

Rev

Rev 124 | Rev 158 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 124 Rev 125
Line 159... Line 159...
159
			if ( IO::File::Exists(SystemStringFromCyString(file2)) )
159
			if ( IO::File::Exists(SystemStringFromCyString(file2)) )
160
				IO::File::Delete(SystemStringFromCyString(file2));
160
				IO::File::Delete(SystemStringFromCyString(file2));
161
			IO::File::Copy(SystemStringFromCyString(file1), SystemStringFromCyString(file2));
161
			IO::File::Copy(SystemStringFromCyString(file1), SystemStringFromCyString(file2));
162
 
162
 
163
			CCatFile CatFile;
163
			CCatFile CatFile;
164
			if ( !CCatFile::Opened(CatFile.Open(CyStringFromSystemString(file), "", CATREAD_CATDECRYPT, false), false) )
164
			if ( !CCatFile::Opened(CatFile.open(_S(file), "", CATREAD_CATDECRYPT, false), false) )
165
			{
165
			{
166
				MessageBox::Show(this, "Unable to open cat file: " + file, "Merge Error", MessageBoxButtons::OK, MessageBoxIcon::Error);
166
				MessageBox::Show(this, "Unable to open cat file: " + file, "Merge Error", MessageBoxButtons::OK, MessageBoxIcon::Error);
167
				return;
167
				return;
168
			}
168
			}
169
 
169
 
170
			// now we need to move non merge files from the 2nd mod to the new one
170
			// now we need to move non merge files from the 2nd mod to the new one
-
 
171
			Utils::CStringList list;
171
			CyStringList *list = m_pPackages->GetMergedFiles(m_pFile1, m_pFile2);
172
			m_pPackages->getMergedFiles(list, m_pFile1, m_pFile2);
172
			if ( list )
173
			if (!list.empty())
173
			{
174
			{
174
				CModDiff Diff(_S(this->textBox3->Text).token(" (", 1), "addon", Convert::ToInt32(this->numericUpDown1->Value));
175
				CModDiff Diff(_S(this->textBox3->Text).token(" (", 1), "addon", Convert::ToInt32(this->numericUpDown1->Value));
175
				if ( Diff.startDiff(_S(this->textBox2->Text)) ) {
176
				if ( Diff.startDiff(_S(this->textBox2->Text)) ) {
176
					for ( SStringList *str = list->Head(); str; str = str->;next )
177
					for(auto itr = list.begin(); itr != list.end(); itr++)
177
					{
178
					{
178
						int status = str->data.ToInt();
179
						int status = (*itr)->data.toInt();
179
						if ( status == 2 ) { // in 2nd mod
180
						if ( status == 2 ) { // in 2nd mod
180
							if ( CatFile.AppendFile(_S(this->textBox2->Text) + "::" + str->str.ToString(), str->str.ToString()) )
181
							if ( CatFile.AppendFile(_S(this->textBox2->Text) + "::" + (*itr)->str, (*itr)->str) )
181
								CatFile.WriteCatFile();
182
								CatFile.WriteCatFile();
182
						}
183
						}
183
						// finally, we need to diff the remaining files
184
						// finally, we need to diff the remaining files
184
						else if ( status == -1 ) { // in both
185
						else if ( status == -1 ) { // in both
185
							// only diffable files, we ignore the rest
186
							// only diffable files, we ignore the rest
186
							if ( CModDiff::CanBeDiffed(str->str.ToString()) ) Diff.doDiff(str->str.ToString());
187
							if ( CModDiff::CanBeDiffed((*itr)->str) ) Diff.doDiff((*itr)->str);
187
						}
188
						}
188
					}
189
					}
189
 
190
 
190
					Diff.ApplyDiff(_S(file));
191
					Diff.ApplyDiff(_S(file));
191
				}
192
				}
192
				delete list;
-
 
193
			}
193
			}
194
 
194
 
195
			MessageBox::Show(this, "Mod files have been merged to: " + file, "Mod Merged", MessageBoxButtons::OK, MessageBoxIcon::Information);
195
			MessageBox::Show(this, "Mod files have been merged to: " + file, "Mod Merged", MessageBoxButtons::OK, MessageBoxIcon::Information);
196
		}
196
		}
197
 
197
 
Line 648... Line 648...
648
#pragma endregion
648
#pragma endregion
649
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
649
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
650
			String ^openfile = this->OpenFile("Select the mod file to use as the primary mod");
650
			String ^openfile = this->OpenFile("Select the mod file to use as the primary mod");
651
			if ( openfile )
651
			if ( openfile )
652
			{
652
			{
653
				if ( m_pFile1->Open(CyStringFromSystemString(openfile), "", CATREAD_CATDECRYPT, false) == CATERR_NONE )
653
				if ( m_pFile1->open(_S(openfile), "", CATREAD_CATDECRYPT, false) == CATERR_NONE )
654
				{
654
				{
655
					this->textBox1->Text = openfile;
655
					this->textBox1->Text = openfile;
656
					this->panel2->Enabled = true;
656
					this->panel2->Enabled = true;
657
				}
657
				}
658
				else
658
				else
Line 661... Line 661...
661
		}
661
		}
662
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
662
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
663
			String ^openfile = this->OpenFile("Select the mod file to use as the secondary mod");
663
			String ^openfile = this->OpenFile("Select the mod file to use as the secondary mod");
664
			if ( openfile )
664
			if ( openfile )
665
			{
665
			{
666
				if ( m_pFile2->Open(CyStringFromSystemString(openfile), "", CATREAD_CATDECRYPT, false) == CATERR_NONE )
666
				if ( m_pFile2->open(_S(openfile), "", CATREAD_CATDECRYPT, false) == CATERR_NONE )
667
				{
667
				{
668
					this->textBox2->Text = openfile;
668
					this->textBox2->Text = openfile;
669
					this->UpdateFileList();
669
					this->UpdateFileList();
670
				}
670
				}
671
				else
671
				else