From 003de48cd0371a60d095dc9d02ed5763c410cf5e Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 29 May 2013 12:00:36 +0100 Subject: Build fixes for OS X. --- src/tools/servomatic_gui.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/tools') diff --git a/src/tools/servomatic_gui.cc b/src/tools/servomatic_gui.cc index 5e36660eb..000c2019f 100644 --- a/src/tools/servomatic_gui.cc +++ b/src/tools/servomatic_gui.cc @@ -102,8 +102,11 @@ public: wxBitmap bitmap (wxString::Format (wxT ("%s/taskbar_icon.png"), POSIX_ICON_PREFIX), wxBITMAP_TYPE_PNG); wxIcon icon; icon.CopyFromBitmap (bitmap); -#endif +#endif +#ifndef __WXOSX__ + /* XXX: fix this for OS X */ SetIcon (icon, std_to_wx ("DVD-o-matic encode server")); +#endif Connect (ID_status, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::status)); Connect (ID_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::quit)); -- cgit v1.2.3 From 07ee845fddca9c7f4e714cf0df8f3e755af7ed81 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 29 May 2013 23:02:00 +0100 Subject: Add magic lines to put the DVD-o-matic window at the front on OS X so that it gets a menu bar. Put our Rect in a namespace to hide from Carbon's version. --- src/lib/dcp_video_frame.cc | 2 +- src/lib/subtitle.cc | 10 +++++----- src/lib/subtitle.h | 6 +++--- src/lib/util.cc | 4 ++-- src/lib/util.h | 7 +++++++ src/tools/dvdomatic.cc | 9 +++++++++ src/wx/film_viewer.cc | 2 +- 7 files changed, 28 insertions(+), 12 deletions(-) (limited to 'src/tools') diff --git a/src/lib/dcp_video_frame.cc b/src/lib/dcp_video_frame.cc index d674393a9..77b81a658 100644 --- a/src/lib/dcp_video_frame.cc +++ b/src/lib/dcp_video_frame.cc @@ -164,7 +164,7 @@ DCPVideoFrame::encode_locally () shared_ptr prepared = _input->scale_and_convert_to_rgb (_out_size, _padding, _scaler, true); if (_subtitle) { - Rect tx = subtitle_transformed_area ( + dvdomatic::Rect tx = subtitle_transformed_area ( float (_out_size.width) / _input->size().width, float (_out_size.height) / _input->size().height, _subtitle->area(), _subtitle_offset, _subtitle_scale diff --git a/src/lib/subtitle.cc b/src/lib/subtitle.cc index 5c1ad9706..5c2a0d0b5 100644 --- a/src/lib/subtitle.cc +++ b/src/lib/subtitle.cc @@ -108,13 +108,13 @@ Subtitle::Subtitle (Position p, shared_ptr i) * in the coordinate space of the source. * @param subtitle_scale scaling factor to apply to the subtitle image. */ -Rect +dvdomatic::Rect subtitle_transformed_area ( float target_x_scale, float target_y_scale, - Rect sub_area, int subtitle_offset, float subtitle_scale + dvdomatic::Rect sub_area, int subtitle_offset, float subtitle_scale ) { - Rect tx; + dvdomatic::Rect tx; sub_area.y += subtitle_offset; @@ -143,8 +143,8 @@ subtitle_transformed_area ( } /** @return area that this subtitle takes up, in the original uncropped source's coordinate space */ -Rect +dvdomatic::Rect Subtitle::area () const { - return Rect (_position.x, _position.y, _image->size().width, _image->size().height); + return dvdomatic::Rect (_position.x, _position.y, _image->size().width, _image->size().height); } diff --git a/src/lib/subtitle.h b/src/lib/subtitle.h index 38ba4e70e..e3a853695 100644 --- a/src/lib/subtitle.h +++ b/src/lib/subtitle.h @@ -46,17 +46,17 @@ public: return _image; } - Rect area () const; + dvdomatic::Rect area () const; private: Position _position; boost::shared_ptr _image; }; -Rect +dvdomatic::Rect subtitle_transformed_area ( float target_x_scale, float target_y_scale, - Rect sub_area, int subtitle_offset, float subtitle_scale + dvdomatic::Rect sub_area, int subtitle_offset, float subtitle_scale ); /** A Subtitle class with details of the time over which it should be shown */ diff --git a/src/lib/util.cc b/src/lib/util.cc index 2f8be6edd..b8b60c6f6 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -637,8 +637,8 @@ Socket::read_uint32 () /** @param other A Rect. * @return The intersection of this with `other'. */ -Rect -Rect::intersection (Rect const & other) const +dvdomatic::Rect +dvdomatic::Rect::intersection (Rect const & other) const { int const tx = max (x, other.x); int const ty = max (y, other.y); diff --git a/src/lib/util.h b/src/lib/util.h index d0c350a56..3e1d7f4b4 100644 --- a/src/lib/util.h +++ b/src/lib/util.h @@ -44,6 +44,8 @@ extern "C" { #define TIMING(...) #endif +#undef check + /** The maximum number of audio channels that we can cope with */ #define MAX_AUDIO_CHANNELS 6 @@ -150,6 +152,9 @@ struct Position int y; }; +namespace dvdomatic +{ + /** @struct Rect * @brief A rectangle. */ @@ -185,6 +190,8 @@ struct Rect Rect intersection (Rect const & other) const; }; +} + extern std::string crop_string (Position, libdcp::Size); extern int dcp_audio_sample_rate (int); extern std::string colour_lut_index_to_name (int index); diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index ff1560f0e..e6d4471db 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -23,6 +23,9 @@ #ifdef __WXMSW__ #include #endif +#ifdef __WXOSX__ +#include +#endif #include #include #include @@ -472,6 +475,12 @@ class App : public wxApp #ifdef DVDOMATIC_POSIX unsetenv ("UBUNTU_MENUPROXY"); +#endif + +#ifdef __WXOSX__ + ProcessSerialNumber serial; + GetCurrentProcess (&serial); + TransformProcessType (&serial, kProcessTransformToForegroundApplication); #endif wxInitAllImageHandlers (); diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 82490e329..79642af9c 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -329,7 +329,7 @@ FilmViewer::raw_to_display () Size const cropped_size = _film->cropped_size (_film->size ()); - Rect tx = subtitle_transformed_area ( + dvdomatic::Rect tx = subtitle_transformed_area ( float (_film_size.width) / cropped_size.width, float (_film_size.height) / cropped_size.height, _raw_sub->area(), _film->subtitle_offset(), _film->subtitle_scale() -- cgit v1.2.3 From da360487fc8764f8591e73a8682e01b90fb9c5ab Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 29 May 2013 23:27:10 +0100 Subject: Fix to windows build. --- src/tools/wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/tools') diff --git a/src/tools/wscript b/src/tools/wscript index f36f0abef..ee4e7edef 100644 --- a/src/tools/wscript +++ b/src/tools/wscript @@ -20,7 +20,7 @@ def build(bld): obj.use = ['libdvdomatic', 'libdvdomatic-wx'] obj.source = '%s.cc' % t if bld.env.TARGET_WINDOWS: - obj.source += ' ../../windows/dvdomatic.rc' + obj.source += ' ../../platform/windows/dvdomatic.rc' obj.target = t i18n.po_to_mo(os.path.join('src', 'tools'), 'dvdomatic', bld) -- cgit v1.2.3 From c8be8124ce89aee17df080745c9651d6e3975a4c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 31 May 2013 22:08:14 +0100 Subject: Various OS X tweaks. --- platform/osx/Info.plist.in | 2 +- platform/osx/make_dmg.sh | 3 +++ src/tools/dvdomatic.cc | 27 +++++++++++++++++---------- src/wx/config_dialog.cc | 6 +++--- 4 files changed, 24 insertions(+), 14 deletions(-) (limited to 'src/tools') diff --git a/platform/osx/Info.plist.in b/platform/osx/Info.plist.in index 3f4ab60ef..c904d91dd 100644 --- a/platform/osx/Info.plist.in +++ b/platform/osx/Info.plist.in @@ -9,7 +9,7 @@ CFBundleGetInfoString DCP generator CFBundleIconFile - appIcon.icns + DVD-o-matic.icns CFBundleIdentifier net.carlh.dvdomatic CFBundleInfoDictionaryVersion diff --git a/platform/osx/make_dmg.sh b/platform/osx/make_dmg.sh index 52db90575..2aeeea66a 100644 --- a/platform/osx/make_dmg.sh +++ b/platform/osx/make_dmg.sh @@ -17,10 +17,12 @@ appdir="DVD-o-matic.app" approot=$appdir/Contents libs=$approot/lib macos=$approot/MacOS +resources=$approot/Resources rm -rf $WORK/$appdir mkdir -p $WORK/$macos mkdir -p $WORK/$libs +mkdir -p $WORK/$resources cp build/src/tools/dvdomatic $WORK/$macos/ cp build/src/lib/libdvdomatic.dylib $WORK/$libs/ @@ -75,6 +77,7 @@ done cp build/platform/osx/Info.plist $WORK/$approot +cp icons/dvdomatic.icns $WORK/$resources/DVD-o-matic.icns exit 0 diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index e6d4471db..9586e8d1e 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -148,13 +148,10 @@ enum { ID_file_open, ID_file_save, ID_file_properties, - ID_file_quit, - ID_edit_preferences, ID_jobs_make_dcp, ID_jobs_send_dcp_to_tms, ID_jobs_show_dcp, ID_jobs_analyse_audio, - ID_help_about }; void @@ -168,10 +165,14 @@ setup_menu (wxMenuBar* m) file->AppendSeparator (); add_item (file, _("&Properties..."), ID_file_properties, NEEDS_FILM); file->AppendSeparator (); - add_item (file, _("&Quit"), ID_file_quit, ALWAYS); + add_item (file, _("&Exit"), wxID_EXIT, ALWAYS); +#ifdef __WXOSX__ + add_item (file, _("&Preferences..."), wxID_PREFERENCES, ALWAYS); +#else wxMenu* edit = new wxMenu; - add_item (edit, _("&Preferences..."), ID_edit_preferences, ALWAYS); + add_item (edit, _("&Preferences..."), wxID_PREFERENCES, ALWAYS); +#endif jobs_menu = new wxMenu; add_item (jobs_menu, _("&Make DCP"), ID_jobs_make_dcp, NEEDS_FILM); @@ -181,10 +182,16 @@ setup_menu (wxMenuBar* m) add_item (jobs_menu, _("&Analyse audio"), ID_jobs_analyse_audio, NEEDS_FILM); wxMenu* help = new wxMenu; - add_item (help, _("About"), ID_help_about, ALWAYS); +#ifdef __WXOSX__ + add_item (help, _("About DVD-o-matic"), wxID_ABOUT, ALWAYS); +#else + add_item (help, _("About"), wxID_ABOUT, ALWAYS); +#endif m->Append (file, _("&File")); +#ifndef __WXOSX__ m->Append (edit, _("&Edit")); +#endif m->Append (jobs_menu, _("&Jobs")); m->Append (help, _("&Help")); } @@ -210,13 +217,13 @@ public: 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 (wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_exit)); + Connect (wxID_PREFERENCES, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::edit_preferences)); Connect (ID_jobs_make_dcp, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_make_dcp)); Connect (ID_jobs_send_dcp_to_tms, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_send_dcp_to_tms)); Connect (ID_jobs_show_dcp, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_show_dcp)); Connect (ID_jobs_analyse_audio, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_analyse_audio)); - Connect (ID_help_about, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::help_about)); + Connect (wxID_ABOUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::help_about)); Connect (wxID_ANY, wxEVT_MENU_OPEN, wxMenuEventHandler (Frame::menu_opened)); @@ -367,7 +374,7 @@ private: d->Destroy (); } - void file_quit (wxCommandEvent &) + void file_exit (wxCommandEvent &) { maybe_save_then_delete_film (); Close (true); diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 98657b666..4daf581ba 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -18,7 +18,7 @@ */ /** @file src/config_dialog.cc - * @brief A dialogue to edit DCP-o-matic configuration. + * @brief A dialogue to edit DVD-o-matic configuration. */ #include @@ -43,7 +43,7 @@ using namespace std; using boost::bind; ConfigDialog::ConfigDialog (wxWindow* parent) - : wxDialog (parent, wxID_ANY, _("DCP-o-matic Preferences"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) + : wxDialog (parent, wxID_ANY, _("DVD-o-matic Preferences"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); _notebook = new wxNotebook (this, wxID_ANY); @@ -95,7 +95,7 @@ ConfigDialog::make_misc_panel () table->Add (_language, 1, wxEXPAND); table->AddSpacer (0); - wxStaticText* restart = add_label_to_sizer (table, _misc_panel, _("(restart DCP-o-matic to see language changes)")); + wxStaticText* restart = add_label_to_sizer (table, _misc_panel, _("(restart DVD-o-matic to see language changes)")); wxFont font = restart->GetFont(); font.SetStyle (wxFONTSTYLE_ITALIC); font.SetPointSize (font.GetPointSize() - 1); -- cgit v1.2.3 From 2c5542df6592b297f49f51260f7d179a88bf0e77 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 31 May 2013 23:37:13 +0100 Subject: More OS X installer tweaks. --- platform/osx/make_dmg.sh | 61 +++++++++++++++++++++++++++++++++++++----------- src/tools/dvdomatic.cc | 2 ++ 2 files changed, 50 insertions(+), 13 deletions(-) (limited to 'src/tools') diff --git a/platform/osx/make_dmg.sh b/platform/osx/make_dmg.sh index 2aeeea66a..d9e36c390 100644 --- a/platform/osx/make_dmg.sh +++ b/platform/osx/make_dmg.sh @@ -1,18 +1,13 @@ #!/bin/bash -VERSION=$1 -if [ "$VERSION" == "" ]; then - echo "Syntax: $0 " - exit 1 -fi +version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"` # DMG size in megabytes -DMG_SIZE=64 +DMG_SIZE=256 WORK=build/platform/osx ENV=/Users/carl/Environments/osx/10.8 DEPS=/Users/carl/cdist -dmg_name="DVD-o-matic-$VERSION" appdir="DVD-o-matic.app" approot=$appdir/Contents libs=$approot/lib @@ -79,11 +74,51 @@ done cp build/platform/osx/Info.plist $WORK/$approot cp icons/dvdomatic.icns $WORK/$resources/DVD-o-matic.icns -exit 0 +tmp_dmg=$WORK/dvdomatic_tmp.dmg +dmg="$WORK/DVD-o-matic $version.dmg" +vol_name=DVD-o-matic-$version -mkdir -p $WORK/mnt +mkdir -p $WORK/$vol_name + +rm -f $tmp_dmg "$dmg" +hdiutil create -megabytes $DMG_SIZE $tmp_dmg +device=$(hdid -nomount $tmp_dmg | grep Apple_HFS | cut -f 1 -d ' ') +newfs_hfs -v ${vol_name} $device +mount -t hfs "$device" $WORK/$vol_name + +cp -r $WORK/$appdir $WORK/$vol_name + +echo ' + tell application "Finder" + tell disk "'$vol_name'" + open + set current view of container window to icon view + set toolbar visible of container window to false + set statusbar visible of container window to false + set the bounds of container window to {400, 200, 800, 440} + set theViewOptions to the icon view options of container window + set arrangement of theViewOptions to not arranged + set icon size of theViewOptions to 64 + make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"} + set position of item "DVD-o-matic.app" of container window to {90, 100} + set position of item "Applications" of container window to {310, 100} + close + open + update without registering applications + delay 5 + eject + end tell + end tell +' | osascript + +chmod -Rf go-w $WORK/mnt +sync + +umount $device +hdiutil eject $device +hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg" +sips -i $WORK/$resources/DVD-o-matic.icns +DeRez -only icns $WORK/$resources/DVD-o-matic.icns > $WORK/$resources/DVD-o-matic.rsrc +Rez -append $WORK/$resources/DVD-o-matic.rsrc -o "$dmg" +SetFile -a C "$dmg" -hdiutil create -megabytes $DMG_SIZE build/platform/osx/dvdomatic.dmg -device=$(hdid -nomount build/platform/osx/dvdomatic.dmg | grep Apple_HFS | cut -f 1 -d ' ') -newfs_hfs -v "$dmg_name" "$device" -mount -t hfs "$device" build/platform/osx/mnt diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index 9586e8d1e..4c3a5260f 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -164,7 +164,9 @@ setup_menu (wxMenuBar* m) add_item (file, _("&Save"), ID_file_save, NEEDS_FILM); file->AppendSeparator (); add_item (file, _("&Properties..."), ID_file_properties, NEEDS_FILM); +#ifndef __WXOSX__ file->AppendSeparator (); +#endif add_item (file, _("&Exit"), wxID_EXIT, ALWAYS); #ifdef __WXOSX__ -- cgit v1.2.3