Add console to dcpomatic_kdm on Windows. Tweak layout a bit more.
authorCarl Hetherington <cth@carlh.net>
Wed, 4 Nov 2015 20:46:12 +0000 (20:46 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 5 Nov 2015 01:42:17 +0000 (01:42 +0000)
Remove unnecessary include from kdm_dialog.h.

Unbind selection-changed signal in ScreensPanel destructor to stop
it causing problems if it is called during ~ScreensPanel.

Add -fno-omit-frame-pointer in case it helps with Dr. Mingw.

cscript
src/tools/dcpomatic_kdm.cc
src/wx/kdm_dialog.h
src/wx/screens_panel.cc
src/wx/screens_panel.h
wscript

diff --git a/cscript b/cscript
index e4c04afb7c41fe048d2886e2f4343043a5ef0da0..b46a024bb6cbff1631d4d4513d403c71a9f192c8 100644 (file)
--- a/cscript
+++ b/cscript
@@ -259,8 +259,8 @@ def dependencies(target):
         ffmpeg_options = {}
 
     return (('ffmpeg-cdist', 'd0986a9', ffmpeg_options),
-            ('libdcp', '7c96eea'),
-            ('libsub', 'a2c4b2c'))
+            ('libdcp', 'c7cbd39'),
+            ('libsub', '72d5eb7'))
 
 def configure_options(target):
     opt = ''
index 29c32d0ff2c255086ae6f80d4b8332baa7a1cb10..6190f1416b9eeb76c66a5870c639338c0db9f84d 100644 (file)
@@ -69,6 +69,26 @@ public:
                , _config_dialog (0)
                , _job_view (0)
        {
+#if defined(DCPOMATIC_WINDOWS)
+               if (Config::instance()->win32_console ()) {
+                       AllocConsole();
+
+                       HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
+                       int hCrt = _open_osfhandle((intptr_t) handle_out, _O_TEXT);
+                       FILE* hf_out = _fdopen(hCrt, "w");
+                       setvbuf(hf_out, NULL, _IONBF, 1);
+                       *stdout = *hf_out;
+
+                       HANDLE handle_in = GetStdHandle(STD_INPUT_HANDLE);
+                       hCrt = _open_osfhandle((intptr_t) handle_in, _O_TEXT);
+                       FILE* hf_in = _fdopen(hCrt, "r");
+                       setvbuf(hf_in, NULL, _IONBF, 128);
+                       *stdin = *hf_in;
+
+                       std::cout << "DCP-o-matic KDM creator is starting." << "\n";
+               }
+#endif
+
                wxMenuBar* bar = new wxMenuBar;
                setup_menu (bar);
                SetMenuBar (bar);
@@ -95,29 +115,19 @@ public:
                _screens = new ScreensPanel (overall_panel);
                vertical->Add (_screens, 1, wxEXPAND | wxALL, DCPOMATIC_SIZER_Y_GAP);
 
-               h = new wxStaticText (overall_panel, wxID_ANY, S_("KDM|Timing"));
-               h->SetFont (subheading_font);
-               vertical->Add (h, 0, wxALIGN_CENTER_VERTICAL | wxTOP, DCPOMATIC_SIZER_Y_GAP * 2);
                _timing = new KDMTimingPanel (overall_panel);
                vertical->Add (_timing, 0, wxALL, DCPOMATIC_SIZER_Y_GAP);
 
-               h = new wxStaticText (overall_panel, wxID_ANY, _("DKDM"));
-               h->SetFont (subheading_font);
-               vertical->Add (h, 0, wxALIGN_CENTER_VERTICAL | wxTOP, DCPOMATIC_SIZER_Y_GAP * 2);
-               wxSizer* dkdm = new wxFlexGridSizer (4, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+               wxSizer* dkdm = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
                add_label_to_sizer (dkdm, overall_panel, _("DKDM file"), true);
                _dkdm = new FilePickerCtrl (overall_panel, _("Select a DKDM XML file..."), "*.xml");
                dkdm->Add (_dkdm, 1, wxEXPAND);
                add_label_to_sizer (dkdm, overall_panel, _("Content title"), true);
                _content_title_text = new wxStaticText (overall_panel, wxID_ANY, wxT(""));
                dkdm->Add (_content_title_text, 1, wxEXPAND);
-               dkdm->AddSpacer (0);
-               dkdm->AddSpacer (0);
                add_label_to_sizer (dkdm, overall_panel, _("Annotation"), true);
                _annotation_text = new wxStaticText (overall_panel, wxID_ANY, wxT(""));
                dkdm->Add (_annotation_text, 1, wxEXPAND);
-               dkdm->AddSpacer (0);
-               dkdm->AddSpacer (0);
                add_label_to_sizer (dkdm, overall_panel, _("Issue date"), true);
                _issue_date = new wxStaticText (overall_panel, wxID_ANY, wxT(""));
                dkdm->Add (_issue_date, 1, wxEXPAND);
index 6400ebb6c807b8cba9cedf499c580b70540a4753..a9edd121a5a41b5161ad2b2da1446199af81c4c2 100644 (file)
 #include "wx_util.h"
 #include <dcp/types.h>
 #include <wx/wx.h>
-#include <wx/treectrl.h>
 #include <boost/shared_ptr.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include <map>
 
-class wxTreeCtrl;
-
 class Cinema;
 class Screen;
 class Film;
index ce5f2555e308a8cd6d2e75ade7cf11dc95fbdd8a..2130600e4197b5f7b099fb86be5519f90cfe78fa 100644 (file)
@@ -27,6 +27,7 @@
 
 using std::list;
 using std::pair;
+using std::cout;
 using std::map;
 using std::make_pair;
 using boost::shared_ptr;
@@ -69,7 +70,7 @@ ScreensPanel::ScreensPanel (wxWindow* parent)
 
        sizer->Add (targets, 1, wxEXPAND);
 
-       _targets->Bind       (wxEVT_COMMAND_TREE_SEL_CHANGED, boost::bind (&ScreensPanel::selection_changed, this));
+       _targets->Bind       (wxEVT_COMMAND_TREE_SEL_CHANGED, &ScreensPanel::selection_changed, this);
 
        _add_cinema->Bind    (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ScreensPanel::add_cinema_clicked, this));
        _edit_cinema->Bind   (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ScreensPanel::edit_cinema_clicked, this));
@@ -82,6 +83,11 @@ ScreensPanel::ScreensPanel (wxWindow* parent)
        SetSizer (sizer);
 }
 
+ScreensPanel::~ScreensPanel ()
+{
+       _targets->Unbind (wxEVT_COMMAND_TREE_SEL_CHANGED, &ScreensPanel::selection_changed, this);
+}
+
 list<pair<wxTreeItemId, shared_ptr<Cinema> > >
 ScreensPanel::selected_cinemas () const
 {
@@ -299,7 +305,7 @@ ScreensPanel::screens () const
 }
 
 void
-ScreensPanel::selection_changed ()
+ScreensPanel::selection_changed (wxTreeEvent &)
 {
        setup_sensitivity ();
        ScreensChanged ();
index f7d81b9615afbd39b93b57dec2d6d391041f5bcf..6cfff0a60f44d77bbe687c217a75d07fa253e77b 100644 (file)
@@ -30,6 +30,7 @@ class ScreensPanel : public wxPanel
 {
 public:
        ScreensPanel (wxWindow* parent);
+       ~ScreensPanel ();
 
        std::list<boost::shared_ptr<Screen> > screens () const;
        void setup_sensitivity ();
@@ -47,7 +48,7 @@ private:
        void remove_screen_clicked ();
        std::list<std::pair<wxTreeItemId, boost::shared_ptr<Cinema> > > selected_cinemas () const;
        std::list<std::pair<wxTreeItemId, boost::shared_ptr<Screen> > > selected_screens () const;
-       void selection_changed ();
+       void selection_changed (wxTreeEvent &);
 
        wxTreeCtrl* _targets;
        wxButton* _add_cinema;
diff --git a/wscript b/wscript
index 106f6b1e2f920534d6341abfbd0578e231b6a9e5..e9e1a332a0a90deba9c497882903d4ac1731fed7 100644 (file)
--- a/wscript
+++ b/wscript
@@ -83,7 +83,7 @@ def configure(conf):
                                        '-D_FILE_OFFSET_BITS=64'])
 
     if conf.options.enable_debug:
-        conf.env.append_value('CXXFLAGS', ['-g', '-DDCPOMATIC_DEBUG'])
+        conf.env.append_value('CXXFLAGS', ['-g', '-DDCPOMATIC_DEBUG', '-fno-omit-frame-pointer'])
     else:
         conf.env.append_value('CXXFLAGS', '-O2')