From: Carl Hetherington Date: Mon, 17 Sep 2012 15:04:42 +0000 (+0100) Subject: Add a simple properties dialog to give an idea of disk space required for an encode. X-Git-Tag: v2.0.48~1720^2~63 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=d7135bda7b1db2ee2728c90ff4570c350834338f;p=dcpomatic.git Add a simple properties dialog to give an idea of disk space required for an encode. --- diff --git a/ChangeLog b/ChangeLog index 2f487bf35..09d671f29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ * Include servomatic in the Windows install. + * Add a simple Properties dialog to give + an estimate of disk space required for an + encode. + 2012-09-17 Carl Hetherington * Version 0.49 released. diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index df38e9d69..c42321300 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -30,6 +30,7 @@ //#include "gtk/dvd_title_dialog.h" #include "wx/wx_util.h" #include "wx/new_film_dialog.h" +#include "wx/properties_dialog.h" #include "lib/film.h" #include "lib/format.h" #include "lib/config.h" @@ -125,6 +126,7 @@ enum { ID_file_new = 1, ID_file_open, ID_file_save, + ID_file_properties, ID_file_quit, ID_edit_preferences, ID_jobs_make_dcp, @@ -144,6 +146,8 @@ setup_menu (wxMenuBar* m) file->AppendSeparator (); add_item (file, "&Save", ID_file_save, NEEDS_FILM); file->AppendSeparator (); + add_item (file, "&Properties...", ID_file_properties, NEEDS_FILM); + file->AppendSeparator (); add_item (file, "&Quit", ID_file_quit, ALWAYS); wxMenu* edit = new wxMenu; @@ -188,6 +192,7 @@ public: Connect (ID_file_new, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_new)); Connect (ID_file_open, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_open)); Connect (ID_file_save, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_save)); + Connect (ID_file_properties, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_properties)); Connect (ID_file_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_quit)); Connect (ID_edit_preferences, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::edit_preferences)); Connect (ID_jobs_make_dcp, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_make_dcp)); @@ -285,6 +290,13 @@ public: { film->write_metadata (); } + + void file_properties (wxCommandEvent &) + { + PropertiesDialog* d = new PropertiesDialog (this, film); + d->ShowModal (); + d->Destroy (); + } void file_quit (wxCommandEvent &) { diff --git a/src/wx/properties_dialog.cc b/src/wx/properties_dialog.cc new file mode 100644 index 000000000..a447091c3 --- /dev/null +++ b/src/wx/properties_dialog.cc @@ -0,0 +1,67 @@ +/* + Copyright (C) 2012 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include +#include +#include "lib/film.h" +#include "lib/config.h" +#include "properties_dialog.h" +#include "wx_util.h" + +using namespace std; +using namespace boost; + +PropertiesDialog::PropertiesDialog (wxWindow* parent, Film* film) + : wxDialog (parent, wxID_ANY, _("Film Properties"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) +{ + wxFlexGridSizer* table = new wxFlexGridSizer (2, 6, 6); + + add_label_to_sizer (table, this, "Frames"); + _frames = new wxStaticText (this, wxID_ANY, std_to_wx ("")); + table->Add (_frames, 1, wxALIGN_CENTER_VERTICAL); + + add_label_to_sizer (table, this, "Disk space for frames"); + _disk_for_frames = new wxStaticText (this, wxID_ANY, std_to_wx ("")); + table->Add (_disk_for_frames, 1, wxALIGN_CENTER_VERTICAL); + + add_label_to_sizer (table, this, "Total disk space"); + _total_disk = new wxStaticText (this, wxID_ANY, std_to_wx ("")); + table->Add (_total_disk, 1, wxALIGN_CENTER_VERTICAL); + + _frames->SetLabel (std_to_wx (lexical_cast (film->length ()))); + double const disk = ((double) Config::instance()->j2k_bandwidth() / 8) * film->length() / (film->frames_per_second () * 1073741824); + stringstream s; + s << fixed << setprecision (1) << disk << "Gb"; + _disk_for_frames->SetLabel (std_to_wx (s.str ())); + + stringstream t; + t << fixed << setprecision (1) << (disk * 2) << "Gb"; + _total_disk->SetLabel (std_to_wx (t.str ())); + + wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL); + overall_sizer->Add (table); + + wxSizer* buttons = CreateSeparatedButtonSizer (wxOK); + if (buttons) { + overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); + } + + SetSizer (overall_sizer); + overall_sizer->SetSizeHints (this); +} diff --git a/src/wx/properties_dialog.h b/src/wx/properties_dialog.h new file mode 100644 index 000000000..e74344ff6 --- /dev/null +++ b/src/wx/properties_dialog.h @@ -0,0 +1,34 @@ +/* + Copyright (C) 2012 Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include + +class Film; + +class PropertiesDialog : public wxDialog +{ +public: + PropertiesDialog (wxWindow *, Film *); + +private: + wxStaticText* _frames; + wxStaticText* _disk_for_frames; + wxStaticText* _total_disk; +}; + diff --git a/src/wx/wscript b/src/wx/wscript index 348a9cb0a..38107bb54 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -22,6 +22,7 @@ def build(bld): server_dialog.cc new_film_dialog.cc dir_picker_ctrl.cc + properties_dialog.cc """ # alignment.cc