Extracting attachments implemented

Originally committed to SVN as r445.
This commit is contained in:
Rodrigo Braz Monteiro 2006-07-01 03:06:21 +00:00
parent 509f33490e
commit 797280d7c8
3 changed files with 48 additions and 0 deletions

View file

@ -36,6 +36,7 @@
////////////
// Includes
#include <wx/wfstream.h>
#include "ass_attachment.h"
@ -146,6 +147,22 @@ const wxString AssAttachment::GetEntryData() {
}
/////////////////////
// Extract as a file
void AssAttachment::Extract(wxString filename) {
// Open file
wxFileOutputStream fp(filename);
fp.Write(&data->GetData()[0],data->GetData().size());
}
/////////////////////////////
// Read a file as attachment
void AssAttachment::Import(wxString filename) {
}
/////////////////// Attachment //////////////////
///////////////

View file

@ -79,6 +79,9 @@ public:
void AddData(wxString data);
void Finish();
void Extract(wxString filename);
void Import(wxString filename);
const wxString GetEntryData();
ASS_EntryType GetType() { return ENTRY_ATTACHMENT; }
AssEntry *Clone();

View file

@ -37,10 +37,13 @@
///////////
// Headers
#include <wx/listctrl.h>
#include <wx/dirdlg.h>
#include <wx/filedlg.h>
#include "dialog_attachments.h"
#include "ass_file.h"
#include "ass_attachment.h"
#include "utils.h"
#include "options.h"
///////////////
@ -120,6 +123,31 @@ void DialogAttachments::OnAttachFont(wxCommandEvent &event) {
///////////
// Extract
void DialogAttachments::OnExtract(wxCommandEvent &event) {
// Check if there's a selection
int i = listView->GetFirstSelected();
// Get path
if (i != -1) {
wxString path;
bool fullPath = false;
// Multiple or single?
if (listView->GetNextSelected(i) != -1) path = wxDirSelector(_("Select the path to save the files to:"),Options.AsText(_T("Fonts Collector Destination"))) + _T("/");
else {
path = wxFileSelector(_("Select the path to save the file to:"),Options.AsText(_T("Fonts Collector Destination")));
fullPath = true;
}
if (path.IsEmpty()) return;
// Loop through items in list
while (i != -1) {
AssAttachment *attach = (AssAttachment*) listView->GetItemData(i);
wxString filename = path;
if (!fullPath) filename += attach->filename;
attach->Extract(filename);
i = listView->GetNextSelected(i);
}
}
}