mirror of https://github.com/odrling/Aegisub
Fonts collector seemingly all fixed and done, except for lack of font caching and use of fc on unix.
Originally committed to SVN as r1272.
This commit is contained in:
parent
6319bcca7b
commit
f36ccd9e99
|
@ -112,13 +112,19 @@ Please visit http://aegisub.net to download latest version
|
|||
o Fixed glitches related to the Duration time edit box. (AMZ)
|
||||
o Tweaked the behavior of the margin boxes, now they no longer show padding zeros. (AMZ)
|
||||
o Actor and Effect fields now show a "ghosted" caption saying their name when they are not focused on and blank. (AMZ)
|
||||
- Changes to Fonts Collector:
|
||||
o Changed the font searching engine to something slower, but far more reliable. (jfs/AMZ)
|
||||
o Added option to just verify if you have the fonts. (AMZ)
|
||||
o You can now collect fonts directly to a zipped archive. (AMZ)
|
||||
o Fixed behavior of the Escape key in it. (AMZ)
|
||||
o Redesigned the interface and replaced the log window with a much better Scintilla control. (AMZ)
|
||||
o You can now collect multiple times without reopening the dialog. (AMZ)
|
||||
- Added a much-needed options dialog with all the relevant config.dat options in it. (AMZ)
|
||||
- Various fixes to better handle paths/file names with non-ANSI characters on Windows (jfs/AMZ)
|
||||
- Misc. fixes for building on Linux (Azzy, equinox, jfs)
|
||||
- Added an option to automatically save the files whenever you change anything. (AMZ)
|
||||
- Added global hotkey for Video Play (default Ctrl+P). (AMZ)
|
||||
- Commiting changes in audio to the last line will insert a new line after it. (AMZ)
|
||||
- Fonts collector can now collect fonts directly to a zipped archive; also, fixed behavior of the Escape key in it. (AMZ)
|
||||
- Added two options that allows you to specify where to keep the audio cache. (AMZ)
|
||||
- Improved Splash Screen behavior to show up even if the program is frozen loading subtitles, and to center on the current display. (AMZ)
|
||||
- Aegisub now remembers if it was maximized when it was last quit, and restores its state when opening again. (AMZ)
|
||||
|
|
|
@ -158,16 +158,36 @@ END_EVENT_TABLE()
|
|||
////////////////////
|
||||
// Start processing
|
||||
void DialogFontsCollector::OnStart(wxCommandEvent &event) {
|
||||
// Check if it's OK to do it
|
||||
wxString foldername = DestBox->GetValue();
|
||||
wxFileName folder(foldername);
|
||||
// Action being done
|
||||
int action = CollectAction->GetSelection();
|
||||
|
||||
// Check if it's OK to do it
|
||||
wxString foldername = DestBox->GetValue();
|
||||
if (action == 1) foldername += _T("//");
|
||||
wxFileName folder(foldername);
|
||||
bool isFolder = folder.IsDir();
|
||||
|
||||
// Check if it's a folder
|
||||
if (action == 1 && !isFolder) {
|
||||
wxMessageBox(_("Invalid destination."),_("Error"),wxICON_EXCLAMATION | wxOK);
|
||||
return;
|
||||
}
|
||||
|
||||
// Make folder if it doesn't exist
|
||||
if (action == 1 && !folder.DirExists()) {
|
||||
folder.Mkdir(0777,wxPATH_MKDIR_FULL);
|
||||
if (action == 1 || action == 2) {
|
||||
if (!folder.DirExists()) {
|
||||
wxMessageBox(_("Invalid destination"),_("Error"),wxICON_EXCLAMATION | wxOK);
|
||||
folder.Mkdir(0777,wxPATH_MKDIR_FULL);
|
||||
if (!folder.DirExists()) {
|
||||
wxMessageBox(_("Could not create destination folder."),_("Error"),wxICON_EXCLAMATION | wxOK);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if we have a valid archive name
|
||||
if (action == 2) {
|
||||
if (isFolder || folder.GetName().IsEmpty() || folder.GetExt() != _T("zip")) {
|
||||
wxMessageBox(_("Invalid path for .zip file."),_("Error"),wxICON_EXCLAMATION | wxOK);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -243,6 +263,7 @@ void DialogFontsCollector::Update(int value) {
|
|||
CloseButton->Enable(true);
|
||||
StartButton->Enable(true);
|
||||
CollectAction->Enable(true);
|
||||
wxString dst = DestBox->GetValue();
|
||||
|
||||
// Get value if -1
|
||||
if (value == -1) {
|
||||
|
@ -264,17 +285,10 @@ void DialogFontsCollector::Update(int value) {
|
|||
DestLabel->Enable(true);
|
||||
DestLabel->SetLabel(_("Choose the folder where the fonts will be collected to.\nIt will be created if it doesn't exist."));
|
||||
|
||||
// Remove filename from browser box
|
||||
wxFileName fname1(DestBox->GetValue()+_T("/"));
|
||||
if (fname1.DirExists()) {
|
||||
DestBox->SetValue(fname1.GetPath());
|
||||
}
|
||||
else {
|
||||
wxFileName fname2(DestBox->GetValue());
|
||||
if (fname2.DirExists()) {
|
||||
DestBox->SetValue(fname2.GetPath());
|
||||
}
|
||||
else DestBox->SetValue(((AegisubApp*)wxTheApp)->folderName);
|
||||
// Remove filename from browse box
|
||||
if (dst.Right(4) == _T(".zip")) {
|
||||
wxFileName fn(dst);
|
||||
DestBox->SetValue(fn.GetPath());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -284,6 +298,13 @@ void DialogFontsCollector::Update(int value) {
|
|||
BrowseButton->Enable(true);
|
||||
DestLabel->Enable(true);
|
||||
DestLabel->SetLabel(_("Enter the name of the destination zip file to collect the fonts to.\nIf a folder is entered, a default name will be used."));
|
||||
|
||||
// Add filename to browse box
|
||||
if (dst.Right(4) != _T(".zip")) {
|
||||
wxFileName fn(dst + _T("//"));
|
||||
fn.SetFullName(_T("fonts.zip"));
|
||||
DestBox->SetValue(fn.GetFullPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -340,6 +361,14 @@ void FontsCollectorThread::Collect() {
|
|||
return;
|
||||
}
|
||||
|
||||
// Open zip stream if saving to compressed archive
|
||||
wxFFileOutputStream *out = NULL;
|
||||
zip = NULL;
|
||||
if (oper == 2) {
|
||||
out = new wxFFileOutputStream(destFolder);
|
||||
zip = new wxZipOutputStream(*out);
|
||||
}
|
||||
|
||||
// Collect font data
|
||||
AppendText(_("Collecting font data from system... "));
|
||||
CollectFontData();
|
||||
|
@ -383,6 +412,15 @@ void FontsCollectorThread::Collect() {
|
|||
if (!result) ok = false;
|
||||
}
|
||||
|
||||
// Close ZIP archive
|
||||
if (oper == 2) {
|
||||
zip->Close();
|
||||
delete zip;
|
||||
delete out;
|
||||
|
||||
AppendText(wxString::Format(_("\nFinished writing to %s.\n"),destination.c_str()),1);
|
||||
}
|
||||
|
||||
// Final result
|
||||
if (ok) {
|
||||
if (oper == 0) AppendText(_("Done. All fonts found."),1);
|
||||
|
@ -471,7 +509,21 @@ int FontsCollectorThread::CopyFont(wxString filename) {
|
|||
////////////////
|
||||
// Archive font
|
||||
bool FontsCollectorThread::ArchiveFont(wxString filename) {
|
||||
return false;
|
||||
// Open file
|
||||
wxFFileInputStream in(filename);
|
||||
if (!in.IsOk()) return false;
|
||||
|
||||
// Write to archive
|
||||
try {
|
||||
wxFileName fn(filename);
|
||||
zip->PutNextEntry(fn.GetFullName());
|
||||
zip->Write(in);
|
||||
}
|
||||
catch (...) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ class AssFile;
|
|||
class AssOverrideParameter;
|
||||
class DialogFontsCollector;
|
||||
class FrameMain;
|
||||
class wxZipOutputStream;
|
||||
|
||||
|
||||
/////////////////
|
||||
|
@ -59,6 +60,7 @@ private:
|
|||
AssStyle *curStyle;
|
||||
wxString destination;
|
||||
DialogFontsCollector *collector;
|
||||
wxZipOutputStream *zip;
|
||||
int curLine;
|
||||
wxString destFolder;
|
||||
|
||||
|
|
Loading…
Reference in New Issue