diff options
author | sr55 <[email protected]> | 2013-02-02 15:12:19 +0000 |
---|---|---|
committer | sr55 <[email protected]> | 2013-02-02 15:12:19 +0000 |
commit | a7dfaa518ce3aaf73a64ecc3c61a88c9427aef81 (patch) | |
tree | 8efccea1be99fb4aca2fe1ad028c395095500675 | |
parent | bc3b56381c6ac214b7736a00972c9d0902902453 (diff) |
Merging trunk to cl branch.
git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/opencl@5234 b64f7644-9d1e-0410-96f1-a4d463321fa5
106 files changed, 6122 insertions, 3509 deletions
diff --git a/contrib/a52dec/A03-automake.patch b/contrib/a52dec/A03-automake.patch new file mode 100644 index 000000000..142091dc6 --- /dev/null +++ b/contrib/a52dec/A03-automake.patch @@ -0,0 +1,12 @@ +diff -Naur a52dec.orig/configure.in a52dec/configure.in +--- a52dec.orig/configure.in 2002-07-27 23:50:20.000000000 -0400 ++++ a52dec/configure.in 2013-01-28 21:06:27.000000000 -0500 +@@ -6,7 +6,7 @@ + AC_CONFIG_FILES([Makefile autotools/Makefile include/Makefile test/Makefile + doc/Makefile src/Makefile liba52/Makefile libao/Makefile vc++/Makefile]) + AM_INIT_AUTOMAKE([a52dec],[0.7.4]) +-AM_CONFIG_HEADER(include/config.h) ++AC_CONFIG_HEADER(include/config.h) + AM_MAINTAINER_MODE + AC_CANONICAL_HOST + diff --git a/contrib/automake/module.defs b/contrib/automake/module.defs index e553257da..72d39e6b0 100644 --- a/contrib/automake/module.defs +++ b/contrib/automake/module.defs @@ -1,4 +1,4 @@ $(eval $(call import.MODULE.defs,AUTOMAKE,automake,AUTOCONF)) $(eval $(call import.CONTRIB.defs,AUTOMAKE)) -AUTOMAKE.FETCH.url = http://download.handbrake.fr/handbrake/contrib/automake-1.12.3.tar.bz2 +AUTOMAKE.FETCH.url = http://download.handbrake.fr/handbrake/contrib/automake-1.13.1.tar.bz2 diff --git a/contrib/ffmpeg/A02-channel-layout-order.patch b/contrib/ffmpeg/A02-channel-layout-order.patch deleted file mode 100644 index ce57af038..000000000 --- a/contrib/ffmpeg/A02-channel-layout-order.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c -index 3852f6e..c7217c8 100644 ---- a/libavcodec/mlpdec.c -+++ b/libavcodec/mlpdec.c -@@ -28,6 +28,7 @@ - - #include "avcodec.h" - #include "libavutil/intreadwrite.h" -+#include "libavutil/channel_layout.h" - #include "get_bits.h" - #include "internal.h" - #include "libavutil/crc.h" -@@ -435,6 +436,28 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp, - s->ch_assign[ch_assign] = ch; - } - -+ if (m->avctx->codec_id == AV_CODEC_ID_TRUEHD) { -+ switch (m->avctx->channel_layout) { -+ case AV_CH_LAYOUT_6POINT1: -+ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_CENTER): -+ case (AV_CH_LAYOUT_6POINT1|AV_CH_TOP_FRONT_CENTER): -+ { -+ int i = s->ch_assign[6]; -+ s->ch_assign[6] = s->ch_assign[5]; -+ s->ch_assign[5] = s->ch_assign[4]; -+ s->ch_assign[4] = i; -+ break; -+ } -+ case AV_CH_LAYOUT_7POINT1: -+ case (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER): -+ FFSWAP(int, s->ch_assign[4], s->ch_assign[6]); -+ FFSWAP(int, s->ch_assign[5], s->ch_assign[7]); -+ break; -+ default: -+ break; -+ } -+ } -+ - checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count); - - if (checksum != get_bits(gbp, 8)) diff --git a/contrib/ffmpeg/A02-truehd-channel-order.patch b/contrib/ffmpeg/A02-truehd-channel-order.patch new file mode 100644 index 000000000..a3d767755 --- /dev/null +++ b/contrib/ffmpeg/A02-truehd-channel-order.patch @@ -0,0 +1,207 @@ +diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c +index d1a3dc1..31c79c9 100644 +--- a/libavcodec/mlp_parser.c ++++ b/libavcodec/mlp_parser.c +@@ -126,7 +126,7 @@ static uint64_t truehd_layout(int chanmap) + + int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb) + { +- int ratebits; ++ int ratebits, channel_arrangement; + uint16_t checksum; + + assert(get_bits_count(gb) == 0); +@@ -157,7 +157,9 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb) + + skip_bits(gb, 11); + +- mh->channels_mlp = get_bits(gb, 5); ++ channel_arrangement = get_bits(gb, 5); ++ mh->channels_mlp = mlp_channels[channel_arrangement]; ++ mh->channel_layout_mlp = mlp_layout[channel_arrangement]; + } else if (mh->stream_type == 0xba) { + mh->group1_bits = 24; // TODO: Is this information actually conveyed anywhere? + mh->group2_bits = 0; +@@ -168,11 +170,15 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb) + + skip_bits(gb, 8); + +- mh->channels_thd_stream1 = get_bits(gb, 5); ++ channel_arrangement = get_bits(gb, 5); ++ mh->channels_thd_stream1 = truehd_channels(channel_arrangement); ++ mh->channel_layout_thd_stream1 = truehd_layout(channel_arrangement); + + skip_bits(gb, 2); + +- mh->channels_thd_stream2 = get_bits(gb, 13); ++ channel_arrangement = get_bits(gb, 13); ++ mh->channels_thd_stream2 = truehd_channels(channel_arrangement); ++ mh->channel_layout_thd_stream2 = truehd_layout(channel_arrangement); + } else + return AVERROR_INVALIDDATA; + +@@ -316,16 +322,16 @@ static int mlp_parse(AVCodecParserContext *s, + + if (mh.stream_type == 0xbb) { + /* MLP stream */ +- avctx->channels = mlp_channels[mh.channels_mlp]; +- avctx->channel_layout = mlp_layout[mh.channels_mlp]; ++ avctx->channels = mh.channels_mlp; ++ avctx->channel_layout = mh.channel_layout_mlp; + } else { /* mh.stream_type == 0xba */ + /* TrueHD stream */ + if (mh.channels_thd_stream2) { +- avctx->channels = truehd_channels(mh.channels_thd_stream2); +- avctx->channel_layout = truehd_layout(mh.channels_thd_stream2); ++ avctx->channels = mh.channels_thd_stream2; ++ avctx->channel_layout = mh.channel_layout_thd_stream2; + } else { +- avctx->channels = truehd_channels(mh.channels_thd_stream1); +- avctx->channel_layout = truehd_layout(mh.channels_thd_stream1); ++ avctx->channels = mh.channels_thd_stream1; ++ avctx->channel_layout = mh.channel_layout_thd_stream1; + } + } + +diff --git a/libavcodec/mlp_parser.h b/libavcodec/mlp_parser.h +index 35bb312..e874426 100644 +--- a/libavcodec/mlp_parser.h ++++ b/libavcodec/mlp_parser.h +@@ -31,25 +31,28 @@ + + typedef struct MLPHeaderInfo + { +- int stream_type; ///< 0xBB for MLP, 0xBA for TrueHD ++ int stream_type; ///< 0xBB for MLP, 0xBA for TrueHD + +- int group1_bits; ///< The bit depth of the first substream +- int group2_bits; ///< Bit depth of the second substream (MLP only) ++ int group1_bits; ///< The bit depth of the first substream ++ int group2_bits; ///< Bit depth of the second substream (MLP only) + +- int group1_samplerate; ///< Sample rate of first substream +- int group2_samplerate; ///< Sample rate of second substream (MLP only) ++ int group1_samplerate; ///< Sample rate of first substream ++ int group2_samplerate; ///< Sample rate of second substream (MLP only) + +- int channels_mlp; ///< Channel arrangement for MLP streams +- int channels_thd_stream1; ///< Channel arrangement for substream 1 of TrueHD streams (5.1) +- int channels_thd_stream2; ///< Channel arrangement for substream 2 of TrueHD streams (7.1) ++ int channels_mlp; ///< Channel count for MLP streams ++ int channels_thd_stream1; ///< Channel count for substream 1 of TrueHD streams ("6-channel presentation") ++ int channels_thd_stream2; ///< Channel count for substream 2 of TrueHD streams ("8-channel presentation") ++ uint64_t channel_layout_mlp; ///< Channel layout for MLP streams ++ uint64_t channel_layout_thd_stream1; ///< Channel layout for substream 1 of TrueHD streams ("6-channel presentation") ++ uint64_t channel_layout_thd_stream2; ///< Channel layout for substream 2 of TrueHD streams ("8-channel presentation") + +- int access_unit_size; ///< Number of samples per coded frame +- int access_unit_size_pow2; ///< Next power of two above number of samples per frame ++ int access_unit_size; ///< Number of samples per coded frame ++ int access_unit_size_pow2; ///< Next power of two above number of samples per frame + +- int is_vbr; ///< Stream is VBR instead of CBR +- int peak_bitrate; ///< Peak bitrate for VBR, actual bitrate (==peak) for CBR ++ int is_vbr; ///< Stream is VBR instead of CBR ++ int peak_bitrate; ///< Peak bitrate for VBR, actual bitrate (==peak) for CBR + +- int num_substreams; ///< Number of substreams within stream ++ int num_substreams; ///< Number of substreams within stream + } MLPHeaderInfo; + + +diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c +index 3852f6e..f8c647a 100644 +--- a/libavcodec/mlpdec.c ++++ b/libavcodec/mlpdec.c +@@ -28,6 +28,7 @@ + + #include "avcodec.h" + #include "libavutil/intreadwrite.h" ++#include "libavutil/channel_layout.h" + #include "get_bits.h" + #include "internal.h" + #include "libavutil/crc.h" +@@ -56,6 +57,8 @@ typedef struct SubStream { + uint8_t max_matrix_channel; + /// For each channel output by the matrix, the output channel to map it to + uint8_t ch_assign[MAX_CHANNELS]; ++ /// The channel layout for this substream ++ uint64_t ch_layout; + + /// Channel coding parameters for channels in the substream + ChannelParams channel_params[MAX_CHANNELS]; +@@ -146,6 +149,36 @@ typedef struct MLPDecodeContext { + MLPDSPContext dsp; + } MLPDecodeContext; + ++static const uint64_t thd_channel_order[] = { ++ AV_CH_FRONT_LEFT, AV_CH_FRONT_RIGHT, // LR ++ AV_CH_FRONT_CENTER, // C ++ AV_CH_LOW_FREQUENCY, // LFE ++ AV_CH_SIDE_LEFT, AV_CH_SIDE_RIGHT, // LRs ++ AV_CH_TOP_FRONT_LEFT, AV_CH_TOP_FRONT_RIGHT, // LRvh ++ AV_CH_FRONT_LEFT_OF_CENTER, AV_CH_FRONT_RIGHT_OF_CENTER, // LRc ++ AV_CH_BACK_LEFT, AV_CH_BACK_RIGHT, // LRrs ++ AV_CH_BACK_CENTER, // Cs ++ AV_CH_TOP_CENTER, // Ts ++ AV_CH_SURROUND_DIRECT_LEFT, AV_CH_SURROUND_DIRECT_RIGHT, // LRsd ++ AV_CH_WIDE_LEFT, AV_CH_WIDE_RIGHT, // LRw ++ AV_CH_TOP_FRONT_CENTER, // Cvh ++ AV_CH_LOW_FREQUENCY_2, // LFE2 ++}; ++ ++static uint64_t thd_channel_layout_extract_channel(uint64_t channel_layout, ++ int index) ++{ ++ int i; ++ ++ if (av_get_channel_layout_nb_channels(channel_layout) <= index) ++ return 0; ++ ++ for (i = 0; i < FF_ARRAY_ELEMS(thd_channel_order); i++) ++ if (channel_layout & thd_channel_order[i] && !index--) ++ return thd_channel_order[i]; ++ return 0; ++} ++ + static VLC huff_vlc[3]; + + /** Initialize static data, constant between all invocations of the codec. */ +@@ -325,6 +358,24 @@ static int read_major_sync(MLPDecodeContext *m, GetBitContext *gb) + for (substr = 0; substr < MAX_SUBSTREAMS; substr++) + m->substream[substr].restart_seen = 0; + ++ /* Set the layout for each substream. When there's more than one, the first ++ * substream is Stereo. Subsequent substreams' layouts are indicated in the ++ * major sync. */ ++ if (m->avctx->codec_id == AV_CODEC_ID_MLP) { ++ if ((substr = (mh.num_substreams > 1))) ++ m->substream[0].ch_layout = AV_CH_LAYOUT_STEREO; ++ m->substream[substr].ch_layout = mh.channel_layout_mlp; ++ } else { ++ if ((substr = (mh.num_substreams > 1))) ++ m->substream[0].ch_layout = AV_CH_LAYOUT_STEREO; ++ if (mh.num_substreams > 2) ++ if (mh.channel_layout_thd_stream2) ++ m->substream[2].ch_layout = mh.channel_layout_thd_stream2; ++ else ++ m->substream[2].ch_layout = mh.channel_layout_thd_stream1; ++ m->substream[substr].ch_layout = mh.channel_layout_thd_stream1; ++ } ++ + return 0; + } + +@@ -426,6 +477,12 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp, + + for (ch = 0; ch <= s->max_matrix_channel; ch++) { + int ch_assign = get_bits(gbp, 6); ++ if (m->avctx->codec_id == AV_CODEC_ID_TRUEHD) { ++ uint64_t channel = thd_channel_layout_extract_channel(s->ch_layout, ++ ch_assign); ++ ch_assign = av_get_channel_layout_channel_index(s->ch_layout, ++ channel); ++ } + if (ch_assign > s->max_matrix_channel) { + av_log_ask_for_sample(m->avctx, + "Assignment of matrix channel %d to invalid output channel %d.\n", diff --git a/contrib/ffmpeg/A04-dca-resync.patch b/contrib/ffmpeg/A04-dca-resync.patch index 3e32c7a74..bbd9ad7ed 100644 --- a/contrib/ffmpeg/A04-dca-resync.patch +++ b/contrib/ffmpeg/A04-dca-resync.patch @@ -1,17 +1,17 @@ -From 021a7700ff839b295b5776d4552563de1a448df6 Mon Sep 17 00:00:00 2001 +From 9922584ba3b5b02d913e629ea74d72e994870873 Mon Sep 17 00:00:00 2001 From: John Stebbins <[email protected]> -Date: Sat, 5 Jan 2013 16:57:06 -0800 +Date: Thu, 17 Jan 2013 19:57:26 +0100 Subject: [PATCH] dca_parser: Handle changes in dca frame size A change in framesize caused a perpetual loss of synchronization. So read (and use) the frame size from the frame header instead of setting it only once. --- - libavcodec/dca_parser.c | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) + libavcodec/dca_parser.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c -index ab235cf..75e9321 100644 +index ab235cf..12180f3 100644 --- a/libavcodec/dca_parser.c +++ b/libavcodec/dca_parser.c @@ -62,10 +62,12 @@ static int dca_find_frame_end(DCAParseContext * pc1, const uint8_t * buf, @@ -46,17 +46,19 @@ index ab235cf..75e9321 100644 { GetBitContext gb; uint8_t hdr[12 + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 }; -@@ -159,6 +158,10 @@ static int dca_parse_params(const uint8_t *buf, int buf_size, int *duration, +@@ -159,7 +158,11 @@ static int dca_parse_params(const uint8_t *buf, int buf_size, int *duration, return AVERROR_INVALIDDATA; *duration = 256 * (sample_blocks / 8); +- skip_bits(&gb, 20); + *framesize = get_bits(&gb, 14) + 1; + if (*framesize < 95) + return AVERROR_INVALIDDATA; + - skip_bits(&gb, 20); ++ skip_bits(&gb, 6); sr_code = get_bits(&gb, 4); *sample_rate = avpriv_dca_sample_rates[sr_code]; + if (*sample_rate == 0) @@ -190,7 +193,7 @@ static int dca_parse(AVCodecParserContext * s, } diff --git a/contrib/libbluray/A00-automake.patch b/contrib/libbluray/A00-automake.patch new file mode 100644 index 000000000..20f7d8805 --- /dev/null +++ b/contrib/libbluray/A00-automake.patch @@ -0,0 +1,12 @@ +diff -Naur libbluray-0.2.3.orig/configure.ac libbluray-0.2.3/configure.ac +--- libbluray-0.2.3.orig/configure.ac 2012-08-17 07:27:32.000000000 -0400 ++++ libbluray-0.2.3/configure.ac 2013-01-28 23:52:04.000000000 -0500 +@@ -22,7 +22,7 @@ + AC_CONFIG_MACRO_DIR([m4]) + AC_CANONICAL_SYSTEM + AM_INIT_AUTOMAKE([foreign tar-ustar]) +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADER(config.h) + + case "${host_os}" in + "") diff --git a/contrib/libdvdread/P01-mingw-bitfields.patch b/contrib/libdvdread/P01-mingw-bitfields.patch new file mode 100644 index 000000000..ae852134a --- /dev/null +++ b/contrib/libdvdread/P01-mingw-bitfields.patch @@ -0,0 +1,19 @@ +diff -Naur libdvdread.orig/configure.ac libdvdread/configure.ac +--- libdvdread.orig/configure.ac 2009-01-08 14:57:10.000000000 -0800 ++++ libdvdread/configure.ac 2013-01-26 10:35:21.366836184 -0800 +@@ -141,6 +141,15 @@ + *mingw32*) + CFLAGS="-idirafter \$(top_srcdir)/msvc/include $CFLAGS" + LDFLAGS="-no-undefined $LDFLAGS" ++ if test "$GCC" = "yes" ; then ++ gcc_version="`$CC -dumpversion`" ++ gcc_version_major=$(echo $gcc_version | cut -d"." -f1) ++ gcc_version_minor=$(echo $gcc_version | cut -d"." -f2) ++ gcc_version_patch=$(echo $gcc_version | cut -d"." -f3) ++ if test $gcc_version_major -ge 4 -a $gcc_version_minor -ge 7 ; then ++ CFLAGS="-mno-ms-bitfields $CFLAGS" ++ fi ++ fi + ;; + *cygwin*) + LDFLAGS="-no-undefined $LDFLAGS" diff --git a/contrib/libogg/A00-automake.patch b/contrib/libogg/A00-automake.patch new file mode 100644 index 000000000..69a3f198f --- /dev/null +++ b/contrib/libogg/A00-automake.patch @@ -0,0 +1,12 @@ +diff -Naur libogg-1.3.0.orig/configure.in libogg-1.3.0/configure.in +--- libogg-1.3.0.orig/configure.in 2011-08-04 13:11:08.000000000 -0400 ++++ libogg-1.3.0/configure.in 2013-01-28 23:40:03.000000000 -0500 +@@ -19,7 +19,7 @@ + AM_PROG_CC_C_O + + dnl config.h +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADER(config.h) + + dnl Set some options based on environment + diff --git a/contrib/libvorbis/A00-automake.patch b/contrib/libvorbis/A00-automake.patch new file mode 100644 index 000000000..8c98fde69 --- /dev/null +++ b/contrib/libvorbis/A00-automake.patch @@ -0,0 +1,12 @@ +diff -Naur aotuv-b6.03_20110424.orig/configure.ac aotuv-b6.03_20110424/configure.ac +--- aotuv-b6.03_20110424.orig/configure.ac 2010-11-01 15:27:12.000000000 -0400 ++++ aotuv-b6.03_20110424/configure.ac 2013-01-28 23:43:26.000000000 -0500 +@@ -13,7 +13,7 @@ + + AM_INIT_AUTOMAKE($PACKAGE_NAME,$PACKAGE_VERSION) + AM_MAINTAINER_MODE +-AM_CONFIG_HEADER([config.h]) ++AC_CONFIG_HEADER([config.h]) + + dnl Add parameters for aclocal + AC_SUBST(ACLOCAL_AMFLAGS, "-I m4") diff --git a/contrib/x264/module.defs b/contrib/x264/module.defs index 141c64cad..7b4f62805 100644 --- a/contrib/x264/module.defs +++ b/contrib/x264/module.defs @@ -1,7 +1,7 @@ $(eval $(call import.MODULE.defs,X264,x264,YASM PTHREADW32)) $(eval $(call import.CONTRIB.defs,X264)) -X264.FETCH.url = http://download.handbrake.fr/handbrake/contrib/x264-r2216-198a7ea.tar.gz +X264.FETCH.url = http://download.handbrake.fr/handbrake/contrib/x264-r2245-bc13772.tar.gz X264.EXTRACT.tarbase = x264 X264.CONFIGURE.deps = diff --git a/contrib/yasm/module.defs b/contrib/yasm/module.defs index 90215575f..b5f3ee788 100644 --- a/contrib/yasm/module.defs +++ b/contrib/yasm/module.defs @@ -1,5 +1,5 @@ $(eval $(call import.MODULE.defs,YASM,yasm)) $(eval $(call import.CONTRIB.defs,YASM)) -YASM.FETCH.url = http://download.handbrake.fr/handbrake/contrib/yasm-1.1.0.tar.gz +YASM.FETCH.url = http://download.handbrake.fr/handbrake/contrib/yasm-1.2.0.tar.gz diff --git a/doc/BUILD-Linux b/doc/BUILD-Linux index e4f70486d..26572e0e2 100644 --- a/doc/BUILD-Linux +++ b/doc/BUILD-Linux @@ -1,4 +1,4 @@ -Guide to Building HandBrake svn4981 (2012092601) on Linux +Guide to Building HandBrake svn5208 (2013012701) on Linux ********************************************************* Table of Contents @@ -38,11 +38,11 @@ Linux; but is not necessarily the only configuration that is possible: * Intel 32-bit or 64-bit kernel - * Ubuntu 10.04, gcc 4.4.3, yasm 0.8.0 + * Ubuntu 12.04, gcc 4.5, yasm 1.2.x - * Fedora 14, gcc 4.5.1, yasm 1.0.1 + * Fedora 17 and 18, gcc 4.5, yasm 1.2.x - * gcc 4.0.0 or higher is reported to work + * gcc 4.5 or higher is reported to work Note: It is recommended to use the platform distribution's standard compiler for maximum C++ compatibility. If you build with @@ -75,7 +75,7 @@ The GTK UI introduces some significant extra build requirements. If you intend to disable building the GUI with `configure --disable-gtk' you will not need many of these packages installed: -Ubuntu 10.04 - 10.10 packages: +Ubuntu 12+ packages: * subversion (cli/gui) * yasm (cli/gui) @@ -126,7 +126,7 @@ Ubuntu 10.04 - 10.10 packages: * libgstreamer-plugins-base0.10-dev (gui) -Ubuntu 11.04 - 11.10 packages: +Ubuntu 12+ packages: * libappindicator-dev (gui) To install these packages: @@ -137,7 +137,7 @@ To install these packages: libgtk2.0-dev libgudev-1.0-dev libwebkit-dev libnotify-dev \ libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libappindicator-dev -Fedora 12 - 13 package groups: +Fedora 17+ package groups: * Development Tools * Development Libraries @@ -200,7 +200,7 @@ To install these packages: This chapter is for building from a terminal/shell environment in as few commands as possible. Upon completion of the following commands you should have a fresh build of HandBrake. Further instructions are -available beginning with *note overview:: which describes procedures +available beginning with *Note overview:: which describes procedures suitable for repeating builds. This chapter should be skipped by those seeking more than a minimalist build. @@ -590,7 +590,7 @@ Appendix A Project Repository Details root: svn://svn.handbrake.fr/HandBrake branch: trunk uuid: b64f7644-9d1e-0410-96f1-a4d463321fa5 - rev: 4981 - date: 2012-09-25 09:52:53 -0700 + rev: 5208 + date: 2013-01-26 18:47:13 +0000 type: developer diff --git a/doc/BUILD-Mac b/doc/BUILD-Mac index 07f56df84..118109581 100644 --- a/doc/BUILD-Mac +++ b/doc/BUILD-Mac @@ -1,4 +1,4 @@ -Build Guide for HandBrake 4394svn on Mac OS X +Build Guide for HandBrake 5208svn on Mac OS X ********************************************* Table of Contents @@ -55,7 +55,9 @@ possible: * llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) - * yasm 1.1.0.2352 + * yasm 1.2.x + + * xquartz (http://xquartz.macosforge.org/landing/) Note: It is recommended to use the platform distribution's standard compiler for maximum C++ compatibility. If you build with @@ -90,7 +92,7 @@ recommended you use these versions or similar: This chapter is for building from a terminal/shell environment in as few commands as possible. Upon completion of the following commands you should have a fresh build of HandBrake. Further instructions are -available beginning with *note overview:: which describes procedures +available beginning with *Note overview:: which describes procedures suitable for repeating builds. This chapter should be skipped by those seeking more than a minimalist build. @@ -699,7 +701,7 @@ Appendix A Project Repository Details root: svn://svn.handbrake.fr/HandBrake branch: trunk uuid: b64f7644-9d1e-0410-96f1-a4d463321fa5 - rev: 4394 - date: 2011-12-30 17:21:44 -0500 + rev: 5208 + date: 2013-01-26 18:47:13 +0000 type: developer diff --git a/doc/BUILD-MinGW b/doc/BUILD-MinGW index 2fa752d1a..f4b0ed98c 100644 --- a/doc/BUILD-MinGW +++ b/doc/BUILD-MinGW @@ -1,4 +1,4 @@ -Guide to Building HandBrake svn4891 (2012080501) on MinGW +Guide to Building HandBrake svn5208 (2013012701) on MinGW ********************************************************* Table of Contents @@ -38,9 +38,9 @@ MinGW; but is not necessarily the only configuration that is possible: * Intel 32-bit or 64-bit hardware - * MinGW on Fedora 16, Ubuntu or Debian, gcc 4.5+ + * MinGW on Fedora 17+, Ubuntu 12+ or Debian, gcc 4.5+ - * yasm 1.1.x.x (for i386 or x86_64 architectures) + * yasm 1.2.x (for i386 or x86_64 architectures) Note: It is recommended to use the platform distribution's standard compiler for maximum C++ compatibility. If you build with @@ -62,7 +62,7 @@ MinGW; but is not necessarily the only configuration that is possible: `g++-4' respectively and you must indicate to configure the desired versions. The following syntax should do the trick: - ../configure --cross=i686-pc-mingw32 --gcc=gcc-4 + ../configure --cross=i686-w64-mingw32 --gcc=gcc-4 The following general tools are used on various platforms and it is recommended you use these versions or similar: @@ -89,7 +89,7 @@ recommended you use these versions or similar: This chapter is for building from a terminal/shell environment in as few commands as possible. Upon completion of the following commands you should have a fresh build of HandBrake. Further instructions are -available beginning with *note overview:: which describes procedures +available beginning with *Note overview:: which describes procedures suitable for repeating builds. This chapter should be skipped by those seeking more than a minimalist build. @@ -479,6 +479,7 @@ Appendix A Project Repository Details root: svn://svn.handbrake.fr/HandBrake branch: trunk uuid: b64f7644-9d1e-0410-96f1-a4d463321fa5 - rev: 4891 - date: 2012-08-05 17:23:19 +0100 + rev: 5208 + date: 2013-01-26 18:47:13 +0000 type: developer + diff --git a/doc/texi/Building.linux.texi b/doc/texi/Building.linux.texi index 0f6ff3876..6d1daa1ea 100644 --- a/doc/texi/Building.linux.texi +++ b/doc/texi/Building.linux.texi @@ -19,9 +19,9 @@ The following are the recommended specifications for building on @value{OS.linux @itemize @bullet @item Intel 32-bit or 64-bit kernel -@item Ubuntu 10.04, gcc 4.4.3, yasm 0.8.0 -@item Fedora 14, gcc 4.5.1, yasm 1.0.1 -@item gcc 4.0.0 or higher is reported to work +@item Ubuntu 12.04, gcc 4.5, yasm 1.2.x +@item Fedora 17 and 18, gcc 4.5, yasm 1.2.x +@item gcc 4.5 or higher is reported to work @end itemize @include building/prerequisites.bundled.texi @@ -30,7 +30,7 @@ The following are the recommended specifications for building on @value{OS.linux The @b{GTK UI} introduces some significant extra build requirements. If you intend to disable building the GUI with @command{configure --disable-gtk} you will not need many of these packages installed: -Ubuntu 10.04 - 10.10 packages: +Ubuntu 12+ packages: @itemize @bullet @item subversion (cli/gui) @item yasm (cli/gui) @@ -59,7 +59,7 @@ Ubuntu 10.04 - 10.10 packages: @item libgstreamer-plugins-base0.10-dev (gui) @end itemize -Ubuntu 11.04 - 11.10 packages: +Ubuntu 12+ packages: @itemize @bullet @item libappindicator-dev (gui) @end itemize @@ -74,7 +74,7 @@ libgtk2.0-dev libgudev-1.0-dev libwebkit-dev libnotify-dev \ libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libappindicator-dev @end example -Fedora 12 - 13 package groups: +Fedora 17+ package groups: @itemize @bullet @item Development Tools @item Development Libraries diff --git a/doc/texi/Building.mingw.texi b/doc/texi/Building.mingw.texi index 572940ddb..9a1f86ebc 100644 --- a/doc/texi/Building.mingw.texi +++ b/doc/texi/Building.mingw.texi @@ -19,8 +19,8 @@ The following are the recommended specifications for building on @value{OS.mingw @itemize @bullet @item Intel 32-bit or 64-bit hardware -@item @value{OS.mingw} on Fedora 16, Ubuntu or Debian, gcc 4.5+ -@item yasm 1.1.x.x (for i386 or x86_64 architectures) +@item @value{OS.mingw} on Fedora 17+, Ubuntu 12+ or Debian, gcc 4.5+ +@item yasm 1.2.x (for i386 or x86_64 architectures) @end itemize @include building/prerequisites.bundled.texi @@ -33,7 +33,7 @@ As of this writing, @value{OS.mingw} has available to it several versions of gcc @end quotation @example -../configure --cross=i686-pc-mingw32 --gcc=gcc-4 +../configure --cross=i686-w64-mingw32 --gcc=gcc-4 @end example @include building/prerequisites.common.texi diff --git a/doc/texi/Building.osx.texi b/doc/texi/Building.osx.texi index 5c661c5eb..f9aa3fe2c 100644 --- a/doc/texi/Building.osx.texi +++ b/doc/texi/Building.osx.texi @@ -23,7 +23,8 @@ Building on @value{OS.osx} is well supported. It is the reference platform for @ @item @value{OS.osx} 10.7.2 @item Xcode 4.2.1 (Build version 4D502) @item llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) -@item yasm 1.1.0.2352 +@item yasm 1.2.x +@item xquartz (http://xquartz.macosforge.org/landing/) @end itemize @include building/prerequisites.bundled.texi diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c index d7171c3d4..e09e7fcbf 100644 --- a/gtk/src/audiohandler.c +++ b/gtk/src/audiohandler.c @@ -1206,18 +1206,25 @@ audio_remove_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) indices = gtk_tree_path_get_indices (treepath); row = indices[0]; gtk_tree_path_free(treepath); - // Remove the selected item - gtk_list_store_remove (GTK_LIST_STORE(store), &iter); - // remove from audio settings list if (row < 0) return; - widget = GHB_WIDGET (ud->builder, "audio_add"); - gtk_widget_set_sensitive(widget, TRUE); + audio_list = ghb_settings_get_value(ud->settings, "audio_list"); if (row >= ghb_array_len(audio_list)) return; + + // Update our settings list before removing the row from the + // treeview. Removing from the treeview sometimes provokes an + // immediate selection change, so the list needs to be up to date + // when this happens. GValue *old = ghb_array_get_nth(audio_list, row); ghb_value_free(old); ghb_array_remove(audio_list, row); + + // Remove the selected item + gtk_list_store_remove (GTK_LIST_STORE(store), &iter); + // remove from audio settings list + widget = GHB_WIDGET (ud->builder, "audio_add"); + gtk_widget_set_sensitive(widget, TRUE); } } diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c index 42fd3fa03..eb98553e3 100644 --- a/gtk/src/callbacks.c +++ b/gtk/src/callbacks.c @@ -833,12 +833,16 @@ dvd_device_changed_cb(GtkComboBoxText *combo, signal_user_data_t *ud) gchar *name; dialog = GHB_WIDGET(ud->builder, "source_dialog"); - device = gtk_combo_box_text_get_active_text (combo); - name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog)); - if (name == NULL || strcmp(name, device) != 0) - gtk_file_chooser_select_filename (GTK_FILE_CHOOSER(dialog), device); - if (name != NULL) - g_free(name); + device = gtk_combo_box_text_get_active_text(combo); + // Protext against unexpected NULL return value + if (device != NULL) + { + name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog)); + if (name == NULL || strcmp(name, device) != 0) + gtk_file_chooser_select_filename (GTK_FILE_CHOOSER(dialog), device); + if (name != NULL) + g_free(name); + } } } @@ -992,7 +996,21 @@ do_source_dialog(GtkButton *button, gboolean single, signal_user_data_t *ud) dialog = GHB_WIDGET(ud->builder, "source_dialog"); source_dialog_extra_widgets(ud, dialog); +#if GTK_CHECK_VERSION(3, 0, 0) + // gtk3 has a STUPID BUG! If you select the "same_path" it ends + // up selecting the "Recent Files" shortcut instead of taking you + // to the directory and file THAT YOU ASKED FOR!!! FUUUUK!!! + // + // So instead, I am just setting the current folder. It's not + // optimal because if you are processing several files in the same + // folder, you want the selection to return to where you were last + // in the list, but there's not much else I can do at this point. + gchar *dirname = g_path_get_dirname(sourcename); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), dirname); + g_free(dirname); +#else gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), sourcename); +#endif response = gtk_dialog_run(GTK_DIALOG (dialog)); gtk_widget_hide(dialog); if (response == GTK_RESPONSE_NO) diff --git a/gtk/src/ghb.ui b/gtk/src/ghb.ui index dfe7cf908..c697849fa 100644 --- a/gtk/src/ghb.ui +++ b/gtk/src/ghb.ui @@ -1,6 +1,64 @@ <?xml version="1.0"?> <!--*- mode: xml -*--> <interface> + <object class="GtkLabel" id="SubTrackLabel"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Track</b></property> + <property name="tooltip-text" translatable="yes">The source subtitle track + +You can choose any of the subtitles +recognized in your source file. + +In addition, there is a special track option +"Foreign Audio Search". This option will add +an extra pass to the encode that searches for +subtitles that may correspond to a foreign +language scene. This option is best used in +conjunction with the "Forced" option.</property> + <property name="use_markup">True</property> + </object> + <object class="GtkLabel" id="SubForcedLabel"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Forced Only</b></property> + <property name="tooltip-text" translatable="yes">Use only subtitles that have been flagged +as forced in the source subtitle track + +"Forced" subtitles are usually used to show +subtitles during scenes where someone is speaking +a foreign language.</property> + <property name="use_markup">True</property> + </object> + <object class="GtkLabel" id="SubBurnedLabel"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Burned In</b></property> + <property name="tooltip-text" translatable="yes">Render the subtitle over the video. + +The subtitle will be part of the video and can not be disabled.</property> + <property name="use_markup">True</property> + </object> + <object class="GtkLabel" id="SubDefaultLabel"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Default</b></property> + <property name="tooltip-text" translatable="yes">Set the default output subtitle track. + +Most players will automatically display this +subtitle track whenever the video is played. + +This is usefule for creating a "forced" track +in your output.</property> + <property name="use_markup">True</property> + </object> + <object class="GtkLabel" id="SubSRTOffsetLabel"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>SRT Offset</b></property> + <property name="tooltip-text" translatable="yes">Add (or subtract) an offset (in milliseconds) +to the start of the SRT subtitle track. + +Often, the start of an external SRT file +does not coincide with the start of the video. +This setting allows you to synchronize the files.</property> + <property name="use_markup">True</property> + </object> <object class="GtkAdjustment" id="adjustment1"> <property name="upper">100</property> <property name="lower">1</property> @@ -542,12 +600,6 @@ </popup> </ui> </object> - <object class="GtkListStore" id="device_list"> - <columns> - <!-- column-name device --> - <column type="gchararray"/> - </columns> - </object> <object class="GtkMenu" id="presets_menu"> <child> @@ -1679,27 +1731,20 @@ <property name="visible">True</property> <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> <child> - <object class="GtkFrame" id="frame8"> + <object class="GtkAlignment" id="alignment19"> <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="bottom_padding">4</property> + <property name="left_padding">4</property> + <property name="right_padding">4</property> + <property name="yalign">1</property> <child> - <object class="GtkAlignment" id="alignment19"> + <object class="GtkImage" id="preview_button_image"> + <property name="width_request">448</property> + <property name="height_request">200</property> <property name="visible">True</property> - <property name="bottom_padding">4</property> - <property name="left_padding">4</property> - <property name="right_padding">4</property> - <property name="yalign">1</property> - <child> - <object class="GtkImage" id="preview_button_image"> - <property name="width_request">448</property> - <property name="height_request">200</property> - <property name="visible">True</property> - <property name="icon_name">hb-icon</property> - <property name="pixel-size">128</property> - <signal name="size_allocate" handler="preview_button_size_allocate_cb"/> - </object> - </child> + <property name="icon_name">hb-icon</property> + <property name="pixel-size">128</property> + <signal name="size_allocate" handler="preview_button_size_allocate_cb"/> </object> </child> </object> @@ -8443,14 +8488,8 @@ libx264 authors: <child> <object class="GtkComboBoxText" id="source_device"> <property name="visible">True</property> - <property name="model">device_list</property> + <property name="entry-text-column">0</property> <signal handler="dvd_device_changed_cb" name="changed"/> - <child> - <object class="GtkCellRendererText" id="cellrenderertext1"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> </object> </child> </object> diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c index 3426e5adc..bdd53c959 100644 --- a/gtk/src/hb-backend.c +++ b/gtk/src/hb-backend.c @@ -2085,53 +2085,35 @@ x264_tune_opts_set(GtkBuilder *builder, const gchar *name) } static void -x264_profile_opts_set(GtkBuilder *builder, const gchar *name) +h264_profile_opts_set(GtkBuilder *builder, const gchar *name) { GtkTreeIter iter; GtkListStore *store; gint ii, count = 0; const char * const *profiles; - profiles = hb_x264_profiles(); + profiles = hb_h264_profiles(); while (profiles && profiles[count]) count++; - g_debug("x264_profile_opts_set ()\n"); + g_debug("h264_profile_opts_set ()\n"); store = get_combo_box_store(builder, name); gtk_list_store_clear(store); - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, - 0, "Auto", - 1, TRUE, - 2, "auto", - 3, (gdouble)0, - 4, "auto", - -1); - for (ii = 0; ii < count; ii++) { - // HandBrake doesn't support high10 (10 bit encoding) - // or high422 (YUV422) - if (!strcasecmp("high10", profiles[ii]) || - !strcasecmp("high422", profiles[ii]) || - !strcasecmp("high444", profiles[ii])) - { - continue; - } - gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, profiles[ii], 1, TRUE, 2, profiles[ii], - 3, (gdouble)ii + 1, + 3, (gdouble)ii, 4, profiles[ii], -1); } } static void -x264_level_opts_set(GtkBuilder *builder, const gchar *name) +h264_level_opts_set(GtkBuilder *builder, const gchar *name) { GtkTreeIter iter; GtkListStore *store; @@ -2141,19 +2123,10 @@ x264_level_opts_set(GtkBuilder *builder, const gchar *name) levels = hb_h264_levels(); while (levels && levels[count]) count++; - g_debug("x264_level_opts_set ()\n"); + g_debug("h264_level_opts_set ()\n"); store = get_combo_box_store(builder, name); gtk_list_store_clear(store); - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, - 0, "Auto", - 1, TRUE, - 2, "auto", - 3, (gdouble)0, - 4, "auto", - -1); - for (ii = 0; ii < count; ii++) { gtk_list_store_append(store, &iter); @@ -2161,7 +2134,7 @@ x264_level_opts_set(GtkBuilder *builder, const gchar *name) 0, levels[ii], 1, TRUE, 2, levels[ii], - 3, (gdouble)ii + 1, + 3, (gdouble)ii, 4, levels[ii], -1); } @@ -3040,8 +3013,8 @@ ghb_update_ui_combo_box( small_opts_set(ud->builder, "x264_analyse", &analyse_opts); small_opts_set(ud->builder, "x264_trellis", &trellis_opts); x264_tune_opts_set(ud->builder, "x264Tune"); - x264_profile_opts_set(ud->builder, "h264Profile"); - x264_level_opts_set(ud->builder, "h264Level"); + h264_profile_opts_set(ud->builder, "h264Profile"); + h264_level_opts_set(ud->builder, "h264Level"); } else { @@ -3074,9 +3047,9 @@ ghb_update_ui_combo_box( else if (strcmp(name, "x264Tune") == 0) x264_tune_opts_set(ud->builder, "x264Tune"); else if (strcmp(name, "h264Profile") == 0) - x264_profile_opts_set(ud->builder, "h264Profile"); + h264_profile_opts_set(ud->builder, "h264Profile"); else if (strcmp(name, "h264Level") == 0) - x264_level_opts_set(ud->builder, "h264Level"); + h264_level_opts_set(ud->builder, "h264Level"); else generic_opts_set(ud->builder, name, find_combo_table(name)); } @@ -3200,10 +3173,10 @@ void ghb_set_video_encoder_opts(hb_job_t *job, GValue *js) hb_job_set_x264_tune(job, tunes); if (profile != NULL && strcasecmp(profile, "auto")) - hb_job_set_x264_profile(job, profile); + hb_job_set_h264_profile(job, profile); if (level != NULL && strcasecmp(level, "auto")) - hb_job_set_x264_level(job, level); + hb_job_set_h264_level(job, level); hb_job_set_advanced_opts(job, opts); diff --git a/gtk/src/main.c b/gtk/src/main.c index 891abd088..9f3dc8b24 100644 --- a/gtk/src/main.c +++ b/gtk/src/main.c @@ -419,6 +419,8 @@ bind_subtitle_tree_model(signal_user_data_t *ud) cell = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( _("Track"), cell, "text", 0, NULL); + widget = GHB_WIDGET(ud->builder, "SubTrackLabel"); + gtk_tree_view_column_set_widget(column, widget); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_column_set_min_width(column, 350); gtk_tree_view_column_set_max_width(column, 350); @@ -426,6 +428,8 @@ bind_subtitle_tree_model(signal_user_data_t *ud) cell = gtk_cell_renderer_toggle_new(); column = gtk_tree_view_column_new_with_attributes( _("Forced Only"), cell, "active", 1, "visible", 7, NULL); + widget = GHB_WIDGET(ud->builder, "SubForcedLabel"); + gtk_tree_view_column_set_widget(column, widget); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); g_signal_connect(cell, "toggled", subtitle_forced_toggled_cb, ud); @@ -433,6 +437,8 @@ bind_subtitle_tree_model(signal_user_data_t *ud) gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(cell), TRUE); column = gtk_tree_view_column_new_with_attributes( _("Burned In"), cell, "active", 2, "visible", 8, NULL); + widget = GHB_WIDGET(ud->builder, "SubBurnedLabel"); + gtk_tree_view_column_set_widget(column, widget); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); g_signal_connect(cell, "toggled", subtitle_burned_toggled_cb, ud); @@ -440,12 +446,16 @@ bind_subtitle_tree_model(signal_user_data_t *ud) gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(cell), TRUE); column = gtk_tree_view_column_new_with_attributes( _("Default"), cell, "active", 3, NULL); + widget = GHB_WIDGET(ud->builder, "SubDefaultLabel"); + gtk_tree_view_column_set_widget(column, widget); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); g_signal_connect(cell, "toggled", subtitle_default_toggled_cb, ud); cell = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( _("Srt Offset"), cell, "text", 4, "visible", 9, NULL); + widget = GHB_WIDGET(ud->builder, "SubSRTOffsetLabel"); + gtk_tree_view_column_set_widget(column, widget); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); diff --git a/gtk/src/subtitlehandler.c b/gtk/src/subtitlehandler.c index 5a6ca8864..121654ac5 100644 --- a/gtk/src/subtitlehandler.c +++ b/gtk/src/subtitlehandler.c @@ -1348,25 +1348,34 @@ subtitle_remove_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) { gtk_tree_selection_select_iter (selection, &nextIter); } + // Get the row number treepath = gtk_tree_model_get_path (store, &iter); indices = gtk_tree_path_get_indices (treepath); row = indices[0]; gtk_tree_path_free(treepath); - // Remove the selected item - gtk_list_store_remove (GTK_LIST_STORE(store), &iter); - // remove from subtitle settings list if (row < 0) return; - widget = GHB_WIDGET (ud->builder, "subtitle_add"); - gtk_widget_set_sensitive(widget, TRUE); - widget = GHB_WIDGET (ud->builder, "srt_add"); - gtk_widget_set_sensitive(widget, TRUE); + subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list"); if (row >= ghb_array_len(subtitle_list)) return; + + // Update our settings list before removing the row from the + // treeview. Removing from the treeview sometimes provokes an + // immediate selection change, so the list needs to be up to date + // when this happens. GValue *old = ghb_array_get_nth(subtitle_list, row); ghb_value_free(old); ghb_array_remove(subtitle_list, row); + + // Remove the selected item + gtk_list_store_remove (GTK_LIST_STORE(store), &iter); + // remove from subtitle settings list + widget = GHB_WIDGET (ud->builder, "subtitle_add"); + gtk_widget_set_sensitive(widget, TRUE); + widget = GHB_WIDGET (ud->builder, "srt_add"); + gtk_widget_set_sensitive(widget, TRUE); + ghb_live_reset(ud); } } diff --git a/libhb/common.c b/libhb/common.c index c10eae93d..bf2da46b6 100644 --- a/libhb/common.c +++ b/libhb/common.c @@ -1760,8 +1760,8 @@ static void job_clean( hb_job_t * job ) job->x264_preset = NULL; free(job->x264_tune); job->x264_tune = NULL; - free(job->x264_profile); - job->x264_profile = NULL; + free(job->h264_profile); + job->h264_profile = NULL; free(job->h264_level); job->h264_level = NULL; @@ -1901,15 +1901,15 @@ void hb_job_set_x264_tune( hb_job_t *job, const char *tune ) } } -void hb_job_set_x264_profile( hb_job_t *job, const char *profile ) +void hb_job_set_h264_profile( hb_job_t *job, const char *profile ) { if ( job ) { - hb_update_str( &job->x264_profile, profile ); + hb_update_str( &job->h264_profile, profile ); } } -void hb_job_set_x264_level( hb_job_t *job, const char *level ) +void hb_job_set_h264_level( hb_job_t *job, const char *level ) { if ( job ) { diff --git a/libhb/common.h b/libhb/common.h index 8586d2a6b..3fc4b22aa 100644 --- a/libhb/common.h +++ b/libhb/common.h @@ -125,8 +125,8 @@ void hb_fix_aspect( hb_job_t * job, int keep ); void hb_job_set_advanced_opts( hb_job_t *job, const char *advanced_opts ); void hb_job_set_x264_preset( hb_job_t *job, const char *preset ); void hb_job_set_x264_tune( hb_job_t *job, const char *tune ); -void hb_job_set_x264_profile( hb_job_t *job, const char *profile ); -void hb_job_set_x264_level( hb_job_t *job, const char *level ); +void hb_job_set_h264_profile( hb_job_t *job, const char *profile ); +void hb_job_set_h264_level( hb_job_t *job, const char *level ); void hb_job_set_file( hb_job_t *job, const char *file ); hb_audio_t *hb_audio_copy(const hb_audio_t *src); @@ -368,10 +368,10 @@ struct hb_job_s int cfr; int pass; int fastfirstpass; - char *advanced_opts; - char *x264_profile; char *x264_preset; char *x264_tune; + char *advanced_opts; + char *h264_profile; char *h264_level; int areBframes; @@ -1112,13 +1112,13 @@ const char * hb_subsource_name( int source ); // unparse a set of x264 settings to an HB encopts string char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune, - const char *x264_encopts, const char *x264_profile, + const char *x264_encopts, const char *h264_profile, const char *h264_level, int width, int height); -// x264 preset/tune/profile & h264 level helpers +// x264 preset/tune & h264 profile/level helpers const char * const * hb_x264_presets(); const char * const * hb_x264_tunes(); -const char * const * hb_x264_profiles(); +const char * const * hb_h264_profiles(); const char * const * hb_h264_levels(); // x264 option name/synonym helper diff --git a/libhb/decmpeg2.c b/libhb/decmpeg2.c index 15c0d21d5..0e1d78eda 100644 --- a/libhb/decmpeg2.c +++ b/libhb/decmpeg2.c @@ -60,6 +60,7 @@ typedef struct hb_libmpeg2_s int64_t start; // start time of this frame hb_buffer_t * cc_buf; // captions for this frame } tags[NTAGS]; + uint8_t cc_tag_pending; struct SwsContext *sws_context; // if we have to rescale or convert color space int sws_width; @@ -84,7 +85,7 @@ static hb_libmpeg2_t * hb_libmpeg2_init() int i; for ( i = 0; i < NTAGS; ++i ) { - m->tags[i].start = -1; + m->tags[i].start = -2; } return m; @@ -258,7 +259,7 @@ static void next_tag( hb_libmpeg2_t *m, hb_buffer_t *buf_es ) { if ( m->tags[m->cur_tag].start < 0 || ( m->got_iframe && m->tags[m->cur_tag].start >= m->first_pts ) ) - hb_log("mpeg2 tag botch: pts %"PRId64", tag pts %"PRId64" buf 0x%p", + hb_log("mpeg2 tag botch: pts %"PRId64", tag pts %"PRId64" buf %p", buf_es->s.start, m->tags[m->cur_tag].start, m->tags[m->cur_tag].cc_buf); if ( m->tags[m->cur_tag].cc_buf ) hb_buffer_close( &m->tags[m->cur_tag].cc_buf ); @@ -363,6 +364,7 @@ static int hb_libmpeg2_decode( hb_libmpeg2_t * m, hb_buffer_t * buf_es, if( buf_es->s.start >= 0 ) { next_tag( m, buf_es ); + m->cc_tag_pending = 1; } mpeg2_buffer( m->libmpeg2, buf_es->data, buf_es->data + buf_es->size ); } @@ -385,22 +387,32 @@ static int hb_libmpeg2_decode( hb_libmpeg2_t * m, hb_buffer_t * buf_es, // if we don't have a tag for the captions, make one if ( m->last_cc1_buf && m->tags[m->cur_tag].cc_buf != m->last_cc1_buf ) { - if (m->tags[m->cur_tag].cc_buf) + // If we have not set a CC tag for the picture and + // we have a new CC buffer, make a new tag. + if (!m->cc_tag_pending && m->tags[m->cur_tag].cc_buf != NULL) { - hb_log("mpeg2 tag botch2: pts %"PRId64", tag pts %"PRId64" buf 0x%p", + next_tag( m, buf_es ); + } + else if (m->tags[m->cur_tag].cc_buf) + { + hb_log("mpeg2 tag botch2: pts %"PRId64", tag pts %"PRId64" buf %p", buf_es->s.start, m->tags[m->cur_tag].start, m->tags[m->cur_tag].cc_buf); hb_buffer_close( &m->tags[m->cur_tag].cc_buf ); } // see if we already made a tag for the timestamp. If so we // can just use it, otherwise make a new tag. - if (m->tags[m->cur_tag].start < 0) + if (m->tags[m->cur_tag].start == -2) { next_tag( m, buf_es ); } m->tags[m->cur_tag].cc_buf = m->last_cc1_buf; } } - if( state == STATE_SEQUENCE ) + if( state == STATE_PICTURE ) + { + m->cc_tag_pending = 0; + } + else if( state == STATE_SEQUENCE ) { if( !( m->width && m->height && m->rate ) ) { @@ -463,7 +475,7 @@ static int hb_libmpeg2_decode( hb_libmpeg2_t * m, hb_buffer_t * buf_es, int t = m->info->display_picture->tag; buf->s.start = m->tags[t].start; cc_buf = m->tags[t].cc_buf; - m->tags[t].start = -1; + m->tags[t].start = -2; m->tags[t].cc_buf = NULL; } if( buf->s.start < 0 && m->last_pts >= 0 ) diff --git a/libhb/dvdnav.c b/libhb/dvdnav.c index e9cd44053..14d8100c6 100644 --- a/libhb/dvdnav.c +++ b/libhb/dvdnav.c @@ -992,7 +992,7 @@ static int try_button( dvdnav_t * dvdnav, int button, hb_list_t * list_title ) cur_title = title; - for (jj = 0; jj < 5; jj++) + for (jj = 0; jj < 10; jj++) { for (ii = 0; ii < 2000; ii++) { diff --git a/libhb/encx264.c b/libhb/encx264.c index f5808963f..b52832416 100644 --- a/libhb/encx264.c +++ b/libhb/encx264.c @@ -275,9 +275,9 @@ int encx264Init( hb_work_object_t * w, hb_job_t * job ) } /* Apply profile and level settings last, if present. */ - if (job->x264_profile != NULL && *job->x264_profile) + if (job->h264_profile != NULL && *job->h264_profile) { - if (x264_param_apply_profile(¶m, job->x264_profile)) + if (hb_apply_h264_profile(¶m, job->h264_profile, 1)) { free(pv); pv = NULL; @@ -287,7 +287,7 @@ int encx264Init( hb_work_object_t * w, hb_job_t * job ) if (job->h264_level != NULL && *job->h264_level) { if (hb_apply_h264_level(¶m, job->h264_level, - job->x264_profile, 1) < 0) + job->h264_profile, 1) < 0) { free(pv); pv = NULL; @@ -629,6 +629,60 @@ int encx264Work( hb_work_object_t * w, hb_buffer_t ** buf_in, return HB_WORK_OK; } +int hb_apply_h264_profile(x264_param_t *param, const char *h264_profile, + int verbose) +{ + if (h264_profile != NULL && + strcasecmp(h264_profile, hb_h264_profile_names[0]) != 0) + { + /* + * baseline profile doesn't support interlacing + */ + if ((param->b_interlaced || + param->b_fake_interlaced) && + !strcasecmp(h264_profile, "baseline")) + { + if (verbose) + { + hb_log("hb_apply_h264_profile [warning]: baseline profile doesn't support interlacing, disabling"); + } + param->b_interlaced = param->b_fake_interlaced = 0; + } + /* + * lossless requires High 4:4:4 Predictive profile + */ + if (param->rc.f_rf_constant < 1.0 && + param->rc.i_rc_method == X264_RC_CRF && + strcasecmp(h264_profile, "high444") != 0) + { + if (verbose) + { + hb_log("hb_apply_h264_profile [warning]: lossless requires high444 profile, disabling"); + } + param->rc.f_rf_constant = 1.0; + } + if (!strcasecmp(h264_profile, "high10") || + !strcasecmp(h264_profile, "high422")) + { + // arbitrary profile names may be specified via the CLI + // map unsupported high10 and high422 profiles to high + return x264_param_apply_profile(param, "high"); + } + return x264_param_apply_profile(param, h264_profile); + } + else if (!strcasecmp(h264_profile, hb_h264_profile_names[0])) + { + // "auto", do nothing + return 0; + } + else + { + // error (profile not a string), abort + hb_error("hb_apply_h264_profile: no profile specified"); + return -1; + } +} + int hb_check_h264_level(const char *h264_level, int width, int height, int fps_num, int fps_den, int interlaced, int fake_interlaced) @@ -645,24 +699,65 @@ int hb_check_h264_level(const char *h264_level, int width, int height, } int hb_apply_h264_level(x264_param_t *param, const char *h264_level, - const char *x264_profile, int verbose) + const char *h264_profile, int verbose) { float f_framerate; const x264_level_t *x264_level = NULL; int i, i_mb_size, i_mb_rate, i_mb_width, i_mb_height, max_mb_side, ret; /* + * find the x264_level_t corresponding to the requested level + */ + if (h264_level != NULL && + strcasecmp(h264_level, hb_h264_level_names[0]) != 0) + { + for (i = 0; hb_h264_level_values[i]; i++) + { + if (!strcmp(hb_h264_level_names[i], h264_level)) + { + int val = hb_h264_level_values[i]; + for (i = 0; x264_levels[i].level_idc; i++) + { + if (x264_levels[i].level_idc == val) + { + x264_level = &x264_levels[i]; + break; + } + } + break; + } + } + if (x264_level == NULL) + { + // error (invalid or unsupported level), abort + hb_error("hb_apply_h264_level: invalid level %s", h264_level); + return -1; + } + } + else if(!strcasecmp(h264_level, hb_h264_level_names[0])) + { + // "auto", do nothing + return 0; + } + else + { + // error (level not a string), abort + hb_error("hb_apply_h264_level: no level specified"); + return -1; + } + + /* * the H.264 profile determines VBV constraints */ enum { // Main or Baseline (equivalent) - HB_H264_PROFILE_MAIN, + HB_ENCX264_PROFILE_MAIN, // High (no 4:2:2 or 10-bit support, so anything lossy is equivalent) - HB_H264_PROFILE_HIGH, + HB_ENCX264_PROFILE_HIGH, // Lossless (4:2:0 8-bit for now) - HB_H264_PROFILE_HIGH444, - } h264_profile; + HB_ENCX264_PROFILE_HIGH444, + } hb_encx264_profile; /* * H.264 profile @@ -674,21 +769,21 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level, * re-enabled. */ #if 0 - if (x264_profile != NULL && *x264_profile) + if (h264_profile != NULL && *h264_profile) { // if the user explicitly specified a profile, don't guess it - if (!strcasecmp(x264_profile, "high444")) + if (!strcasecmp(h264_profile, "high444")) { - h264_profile = HB_H264_PROFILE_HIGH444; + hb_encx264_profile = HB_ENCX264_PROFILE_HIGH444; } - else if (!strcasecmp(x264_profile, "main") || - !strcasecmp(x264_profile, "baseline")) + else if (!strcasecmp(h264_profile, "main") || + !strcasecmp(h264_profile, "baseline")) { - h264_profile = HB_H264_PROFILE_MAIN; + hb_encx264_profile = HB_ENCX264_PROFILE_MAIN; } else { - h264_profile = HB_H264_PROFILE_HIGH; + hb_encx264_profile = HB_ENCX264_PROFILE_HIGH; } } else @@ -698,53 +793,18 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level, if (param->rc.i_rc_method == X264_RC_CRF && param->rc.f_rf_constant < 1.0) { - h264_profile = HB_H264_PROFILE_HIGH444; + hb_encx264_profile = HB_ENCX264_PROFILE_HIGH444; } else if (param->analyse.b_transform_8x8 || param->i_cqm_preset != X264_CQM_FLAT) { - h264_profile = HB_H264_PROFILE_HIGH; + hb_encx264_profile = HB_ENCX264_PROFILE_HIGH; } else { - h264_profile = HB_H264_PROFILE_MAIN; - } - } - - /* - * find the x264_level_t corresponding to the requested level - */ - if (h264_level != NULL && *h264_level) - { - for (i = 0; hb_h264_level_values[i]; i++) - { - if (!strcmp(hb_h264_level_names[i], h264_level)) - { - int val = hb_h264_level_values[i]; - for (i = 0; x264_levels[i].level_idc; i++) - { - if (x264_levels[i].level_idc == val) - { - x264_level = &x264_levels[i]; - break; - } - } - break; - } - } - if (x264_level == NULL) - { - // error (invalid or unsupported level), abort - hb_error("hb_apply_h264_level: invalid level %s", h264_level); - return -1; + hb_encx264_profile = HB_ENCX264_PROFILE_MAIN; } } - else - { - // error (level not a string), abort - hb_error("hb_apply_h264_level: no level specified"); - return -1; - } /* * we need at least width and height in order to apply a level correctly @@ -805,7 +865,7 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level, if (param->i_keyint_max != 1) { int i_max_dec_frame_buffering = - MAX(MIN(x264_level->dpb / (384 * i_mb_size), 16), 1); + MAX(MIN(x264_level->dpb / i_mb_size, 16), 1); param->i_frame_reference = MIN(i_max_dec_frame_buffering, param->i_frame_reference); /* @@ -825,10 +885,10 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level, /* * set and/or sanitize the VBV (if not lossless) */ - if (h264_profile != HB_H264_PROFILE_HIGH444) + if (hb_encx264_profile != HB_ENCX264_PROFILE_HIGH444) { // High profile allows for higher VBV bufsize/maxrate - int cbp_factor = h264_profile == HB_H264_PROFILE_HIGH ? 5 : 4; + int cbp_factor = hb_encx264_profile == HB_ENCX264_PROFILE_HIGH ? 5 : 4; if (!param->rc.i_vbv_max_bitrate) { param->rc.i_vbv_max_bitrate = (x264_level->bitrate * cbp_factor) / 4; @@ -918,7 +978,7 @@ int hb_apply_h264_level(x264_param_t *param, const char *h264_level, } char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune, - const char *x264_encopts, const char *x264_profile, + const char *x264_encopts, const char *h264_profile, const char *h264_level, int width, int height) { int i; @@ -979,24 +1039,10 @@ char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune, /* * apply the x264 profile, if specified */ - if (x264_profile != NULL && *x264_profile) + if (h264_profile != NULL && *h264_profile) { - if (x264_param_apply_profile(¶m, x264_profile) < 0) - { - /* - * Note: x264_param_apply_profile can bail even when the specified - * profile is valid; examples: - * - * 1) when profile is baseline and interlaced is set - * 2) when profile is not high444 and lossless is set - * - * So this can happen even when calling hb_x264_param_unparse from a - * GUI - maybe we should sanitize settings before calling - * x264_param_apply_profile()? - */ - hb_dict_free(&x264_opts); - return strdup("hb_x264_param_unparse: could not apply x264 profile"); - } + // be quiet so at to not pollute GUI logs + hb_apply_h264_profile(¶m, h264_profile, 0); } /* @@ -1008,7 +1054,7 @@ char * hb_x264_param_unparse(const char *x264_preset, const char *x264_tune, param.i_width = width; param.i_height = height; // be quiet so at to not pollute GUI logs - hb_apply_h264_level(¶m, h264_level, x264_profile, 0); + hb_apply_h264_level(¶m, h264_level, h264_profile, 0); } /* @@ -1590,9 +1636,9 @@ const char * const * hb_x264_tunes() return x264_tune_names; } -const char * const * hb_x264_profiles() +const char * const * hb_h264_profiles() { - return x264_profile_names; + return hb_h264_profile_names; } const char * const * hb_h264_levels() diff --git a/libhb/encx264.h b/libhb/encx264.h index b989c6281..963797afe 100644 --- a/libhb/encx264.h +++ b/libhb/encx264.h @@ -9,8 +9,9 @@ #include "x264.h" -static const char * const hb_h264_level_names[] = { "1.0", "1b", "1.1", "1.2", "1.3", "2.0", "2.1", "2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2", "5.0", "5.1", "5.2", NULL }; -static const int const hb_h264_level_values[] = { 10, 9, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 0 }; +static const char * const hb_h264_profile_names[] = { "auto", "high", "main", "baseline", NULL, }; +static const char * const hb_h264_level_names[] = { "auto", "1.0", "1b", "1.1", "1.2", "1.3", "2.0", "2.1", "2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2", "5.0", "5.1", "5.2", NULL, }; +static const int const hb_h264_level_values[] = { -1, 10, 9, 11, 12, 13, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 52, 0, }; /* x264 preferred option names (left) and synonyms (right). * The "preferred" names match names used in x264's param2string function more @@ -68,3 +69,12 @@ int hb_check_h264_level(const char *h264_level, int width, int height, */ int hb_apply_h264_level(x264_param_t *param, const char *h264_level, const char *x264_profile, int verbose); + +/* + * Applies the restrictions of the requested H.264 profile to an x264_param_t. + * + * x264_param_apply_profile wrapper designed to always succeed when a valid + * H.264 profile is specified (unlike x264's function). + */ +int hb_apply_h264_profile(x264_param_t *param, const char *h264_profile, + int verbose); diff --git a/libhb/hb.c b/libhb/hb.c index c1188caa2..0dbe8f528 100644 --- a/libhb/hb.c +++ b/libhb/hb.c @@ -1484,8 +1484,8 @@ void hb_add( hb_handle_t * h, hb_job_t * job ) job_copy->x264_preset = strdup( job->x264_preset ); if ( job->x264_tune ) job_copy->x264_tune = strdup( job->x264_tune ); - if ( job->x264_profile ) - job_copy->x264_profile = strdup( job->x264_profile ); + if ( job->h264_profile ) + job_copy->h264_profile = strdup( job->h264_profile ); if ( job->h264_level ) job_copy->h264_level = strdup( job->h264_level ); diff --git a/libhb/sync.c b/libhb/sync.c index 5ad5bfedb..444f2f98b 100644 --- a/libhb/sync.c +++ b/libhb/sync.c @@ -1162,7 +1162,7 @@ static void InsertSilence( hb_work_object_t * w, int64_t duration ) hb_sync_audio_t *sync = &pv->type.audio; hb_buffer_t *buf; hb_fifo_t *fifo; - int frame_dur, frame_count; + int frame_dur; // to keep pass-thru and regular audio in sync we generate silence in // frame-sized units. If the silence duration isn't an integer multiple @@ -1178,9 +1178,8 @@ static void InsertSilence( hb_work_object_t * w, int64_t duration ) frame_dur = ( 90000 * w->audio->config.out.samples_per_frame ) / w->audio->config.in.samplerate; } - frame_count = ( duration + (frame_dur >> 1) ) / frame_dur; - while ( --frame_count >= 0 ) + while (duration >= frame_dur >> 2) { if( w->audio->config.out.codec & HB_ACODEC_PASS_FLAG ) { @@ -1189,15 +1188,31 @@ static void InsertSilence( hb_work_object_t * w, int64_t duration ) buf->s.stop = buf->s.start + frame_dur; memcpy( buf->data, sync->silence_buf, buf->size ); fifo = w->audio->priv.fifo_out; + duration -= frame_dur; } else { - buf = hb_buffer_init( sizeof( float ) * w->audio->config.out.samples_per_frame * - hb_mixdown_get_discrete_channel_count( w->audio->config.out.mixdown ) ); + int channel_count = hb_mixdown_get_discrete_channel_count( w->audio->config.out.mixdown ); + int size = sizeof( float ) * + w->audio->config.out.samples_per_frame * + channel_count; + if (frame_dur > duration) + { + int samples = duration * w->audio->config.in.samplerate / 90000; + if (samples == 0) + { + break; + } + size = sizeof(float) * samples * channel_count; + frame_dur = (90000 * samples) / w->audio->config.in.samplerate; + } + buf = hb_buffer_init(size); buf->s.start = sync->next_start; + buf->s.duration = frame_dur; buf->s.stop = buf->s.start + frame_dur; memset( buf->data, 0, buf->size ); fifo = w->audio->priv.fifo_sync; + duration -= frame_dur; } buf = OutputAudioFrame( w->audio, buf, sync ); hb_fifo_push( fifo, buf ); diff --git a/libhb/work.c b/libhb/work.c index 6625d5ff7..4791c7dfd 100644 --- a/libhb/work.c +++ b/libhb/work.c @@ -354,10 +354,10 @@ void hb_display_job_info( hb_job_t * job ) { hb_log( " + options: %s", job->advanced_opts ); } - if( job->x264_profile && *job->x264_profile && + if( job->h264_profile && *job->h264_profile && job->vcodec == HB_VCODEC_X264 ) { - hb_log( " + x264 profile: %s", job->x264_profile ); + hb_log( " + h264 profile: %s", job->h264_profile ); } if( job->h264_level && *job->h264_level && job->vcodec == HB_VCODEC_X264 ) diff --git a/macosx/Controller.h b/macosx/Controller.h index c7667a620..5182ac6fe 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -93,10 +93,12 @@ BOOL fIsDragging; IBOutlet NSTextField * fQueueStatus; /* Output panel */ - HBOutputPanelController *outputPanel; + HBOutputPanelController * outputPanel; /* Source box */ IBOutlet NSProgressIndicator * fScanIndicator; + IBOutlet NSBox * fScanHorizontalLine; + NSString * sourceDisplayName; IBOutlet NSTextField * fSrcDVD2Field; IBOutlet NSTextField * fSrcTitleField; diff --git a/macosx/Controller.m b/macosx/Controller.m index d19f7f754..1a4b1fa8d 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -846,6 +846,8 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [fScanIndicator setIndeterminate: NO]; [fScanIndicator setDoubleValue: 0.0]; [fScanIndicator setHidden: YES]; + [fScanHorizontalLine setHidden: NO]; + [self showNewScan:nil]; } @@ -863,6 +865,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It NSLocalizedString( @"Scanning title %d of %d…", @"" ), p.title_cur, p.title_count]]; [fScanIndicator setHidden: NO]; + [fScanHorizontalLine setHidden: YES]; [fScanIndicator setDoubleValue: 100.0 * ((double)( p.title_cur - 1 ) / p.title_count)]; break; } @@ -874,6 +877,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [fScanIndicator setIndeterminate: NO]; [fScanIndicator setDoubleValue: 0.0]; [fScanIndicator setHidden: YES]; + [fScanHorizontalLine setHidden: NO]; [self writeToActivityLog:"ScanDone state received from fHandle"]; [self showNewScan:nil]; [[fWindow toolbar] validateVisibleItems]; @@ -1025,7 +1029,15 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It pass_desc = @""; } - string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: %@ \nPass %d %@ of %d, %.2f %%", @"" ), currentQueueEncodeNameString, p.job_cur, pass_desc, p.job_count, 100.0 * p.progress]; + + if ([pass_desc length]) + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: %@ \nPass %d %@ of %d, %.2f %%", @"" ), currentQueueEncodeNameString, p.job_cur, pass_desc, p.job_count, 100.0 * p.progress]; + } + else + { + string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: %@ \nPass %d of %d, %.2f %%", @"" ), currentQueueEncodeNameString, p.job_cur, p.job_count, 100.0 * p.progress]; + } if( p.seconds > -1 ) { @@ -1868,6 +1880,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It /* We setup the scan status in the main window to indicate a source title scan */ [fSrcDVD2Field setStringValue: @"Opening a new source title…"]; [fScanIndicator setHidden: NO]; + [fScanHorizontalLine setHidden: YES]; [fScanIndicator setIndeterminate: YES]; [fScanIndicator startAnimation: nil]; @@ -1884,7 +1897,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It { /* use a bool to determine whether or not we can decrypt using vlc */ BOOL cancelScanDecrypt = 0; - BOOL vlcFound = 0; NSString *path = scanPath; HBDVDDetector *detector = [HBDVDDetector detectorForPath:path]; @@ -1913,16 +1925,23 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It path = [detector devicePath]; [self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]]; - /* lets check for vlc here to make sure we have a dylib available to use for decrypting */ + + NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; + NSInteger suppressWarning = [prefs integerForKey:@"suppresslibdvdcss"]; + + /* Notify the user that we don't support removal of copy proteciton. */ void *dvdcss = dlopen("libdvdcss.2.dylib", RTLD_LAZY); - if (dvdcss == NULL) + if (dvdcss == NULL && suppressWarning != 1) { + /* Only show the user this warning once. They may be using a solution we don't know about. Notifying them each time is annoying. */ + [prefs setInteger:1 forKey:@"suppresslibdvdcss"]; + /*compatible vlc not found, so we set the bool to cancel scanning to 1 */ cancelScanDecrypt = 1; [self writeToActivityLog: "libdvdcss.2.dylib not found for decrypting physical dvd"]; int status; - status = NSRunAlertPanel(@"HandBrake could not find a compatible version of libdvdcss (32-bit libdvdcss is not compatible with 64-bit HandBrake and vice-versa).", - @"Please download and install libdvdcss.pkg if you wish to read encrypted DVDs.", @"Get libdvdcss.pkg", @"Cancel Scan", @"Attempt Scan Anyway"); + status = NSRunAlertPanel(@"Please note that HandBrake does not support the removal of copy-protection from DVD Discs. You can if you wish install libdvdcss or any other 3rd party software for this function.", + @"Videolan.org provides libdvdcss if you are not currently using another solution.", @"Get libdvdcss.pkg", @"Cancel Scan", @"Attempt Scan Anyway"); [NSApp requestUserAttention:NSCriticalRequest]; if (status == NSAlertDefaultReturn) @@ -1933,13 +1952,13 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It else if (status == NSAlertAlternateReturn) { /* User chose to cancel the scan */ - [self writeToActivityLog: "cannot open physical dvd, scan cancelled"]; + [self writeToActivityLog: "Cannot open physical dvd, scan cancelled"]; } else { /* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */ cancelScanDecrypt = 0; - [self writeToActivityLog: "user overrode dvdcss warning - trying to open physical dvd without decryption"]; + [self writeToActivityLog: "User overrode copy-proteciton warning - trying to open physical dvd without decryption"]; } } @@ -1947,7 +1966,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It { /* VLC was found in /Applications so all is well, we can carry on using vlc's libdvdcss.dylib for decrypting if needed */ [self writeToActivityLog: "libdvdcss.2.dylib found for decrypting physical dvd"]; - vlcFound = 1; dlclose(dvdcss); } } @@ -2792,50 +2810,6 @@ fWorkingCount = 0; */ NSString *path = scanPath; HBDVDDetector *detector = [HBDVDDetector detectorForPath:path]; - - if( [detector isVideoDVD] ) - { - // The chosen path was actually on a DVD, so use the raw block - // device path instead. - path = [detector devicePath]; - [self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]]; - - /* lets check for vlc here to make sure we have a dylib available to use for decrypting */ - void *dvdcss = dlopen("libdvdcss.2.dylib", RTLD_LAZY); - if (dvdcss == NULL) - { - /*vlc not found in /Applications so we set the bool to cancel scanning to 1 */ - cancelScanDecrypt = 1; - [self writeToActivityLog: "VLC app not found for decrypting physical dvd"]; - int status; - status = NSRunAlertPanel(@"HandBrake could not find VLC.",@"Please download and install VLC media player in your /Applications folder if you wish to read encrypted DVDs.", @"Get VLC", @"Cancel Scan", @"Attempt Scan Anyway"); - [NSApp requestUserAttention:NSCriticalRequest]; - - if (status == NSAlertDefaultReturn) - { - /* User chose to go download vlc (as they rightfully should) so we send them to the vlc site */ - [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.videolan.org/"]]; - } - else if (status == NSAlertAlternateReturn) - { - /* User chose to cancel the scan */ - [self writeToActivityLog: "cannot open physical dvd , scan cancelled"]; - } - else - { - /* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */ - cancelScanDecrypt = 0; - [self writeToActivityLog: "user overrode vlc warning -trying to open physical dvd without decryption"]; - } - - } - else - { - /* VLC was found in /Applications so all is well, we can carry on using vlc's libdvdcss.dylib for decrypting if needed */ - dlclose(dvdcss); - [self writeToActivityLog: "VLC app found for decrypting physical dvd"]; - } - } if (cancelScanDecrypt == 0) { @@ -2879,11 +2853,11 @@ fWorkingCount = 0; */ if (job->indepth_scan == 1) { - char *x264_preset_tmp = job->x264_preset != NULL ? strdup(job->x264_preset) : NULL; - char *x264_tune_tmp = job->x264_tune != NULL ? strdup(job->x264_tune) : NULL; - char *advanced_opts_tmp = job->advanced_opts != NULL ? job->advanced_opts : NULL; - char *h264_profile_tmp = job->x264_profile != NULL ? strdup(job->x264_profile) : NULL; - char *h264_level_tmp = job->h264_level != NULL ? strdup(job->h264_level) : NULL; + char *x264_preset_tmp = job->x264_preset != NULL ? strdup(job->x264_preset) : NULL; + char *x264_tune_tmp = job->x264_tune != NULL ? strdup(job->x264_tune) : NULL; + char *advanced_opts_tmp = job->advanced_opts != NULL ? strdup(job->advanced_opts) : NULL; + char *h264_profile_tmp = job->h264_profile != NULL ? strdup(job->h264_profile) : NULL; + char *h264_level_tmp = job->h264_level != NULL ? strdup(job->h264_level) : NULL; /* * When subtitle scan is enabled do a fast pre-scan job * which will determine which subtitles to enable, if any. @@ -2891,8 +2865,8 @@ fWorkingCount = 0; hb_job_set_x264_preset (job, NULL); hb_job_set_x264_tune (job, NULL); hb_job_set_advanced_opts(job, NULL); - hb_job_set_x264_profile (job, NULL); - hb_job_set_x264_level (job, NULL); + hb_job_set_h264_profile (job, NULL); + hb_job_set_h264_level (job, NULL); job->pass = -1; hb_add(fQueueEncodeLibhb, job); /* @@ -2901,8 +2875,8 @@ fWorkingCount = 0; hb_job_set_x264_preset (job, x264_preset_tmp); hb_job_set_x264_tune (job, x264_tune_tmp); hb_job_set_advanced_opts(job, advanced_opts_tmp); - hb_job_set_x264_profile (job, h264_profile_tmp); - hb_job_set_x264_level (job, h264_level_tmp); + hb_job_set_h264_profile (job, h264_profile_tmp); + hb_job_set_h264_level (job, h264_level_tmp); free(x264_preset_tmp); free(x264_tune_tmp); free(advanced_opts_tmp); @@ -3102,19 +3076,30 @@ fWorkingCount = 0; job->modulus = [[queueToApply objectForKey:@"PictureModulus"] intValue]; - /* we check to make sure the presets width/height does not exceed the sources width/height */ - if (fTitle->width < [[queueToApply objectForKey:@"PictureWidth"] intValue] || fTitle->height < [[queueToApply objectForKey:@"PictureHeight"] intValue]) - { - /* if so, then we use the sources height and width to avoid scaling up */ - //job->width = fTitle->width; - //job->height = fTitle->height; + /* + * if the preset specifies neither max. width nor height + * (both are 0), use the max. picture size + * + * if the specified non-zero dimensions exceed those of the + * source, also use the max. picture size (no upscaling) + */ + if (([[queueToApply objectForKey:@"PictureWidth"] intValue] <= 0 && + [[queueToApply objectForKey:@"PictureHeight"] intValue] <= 0) || + ([[queueToApply objectForKey:@"PictureWidth"] intValue] > fTitle->width && + [[queueToApply objectForKey:@"PictureHeight"] intValue] > fTitle->height) || + ([[queueToApply objectForKey:@"PictureHeight"] intValue] <= 0 && + [[queueToApply objectForKey:@"PictureWidth"] intValue] > fTitle->width) || + ([[queueToApply objectForKey:@"PictureWidth"] intValue] <= 0 && + [[queueToApply objectForKey:@"PictureHeight"] intValue] > fTitle->height)) + { + /* use the source's width/height to avoid upscaling */ [self revertPictureSizeToMax:nil]; } - else // source width/height is >= the preset height/width + else // source width/height is >= preset width/height { - /* we can go ahead and use the presets values for height and width */ - job->width = [[queueToApply objectForKey:@"PictureWidth"] intValue]; - job->height = [[queueToApply objectForKey:@"PictureHeight"] intValue]; + /* use the preset values for width/height */ + job->width = [[queueToApply objectForKey:@"PictureWidth"] intValue]; + job->height = [[queueToApply objectForKey:@"PictureHeight"] intValue]; } job->keep_ratio = [[queueToApply objectForKey:@"PictureKeepRatio"] intValue]; if (job->keep_ratio == 1) @@ -3321,8 +3306,8 @@ fWorkingCount = 0; hb_job_set_x264_preset (job, x264_preset); hb_job_set_x264_tune (job, x264_tune); hb_job_set_advanced_opts(job, advanced_opts); - hb_job_set_x264_profile (job, h264_profile); - hb_job_set_x264_level (job, h264_level); + hb_job_set_h264_profile (job, h264_profile); + hb_job_set_h264_level (job, h264_level); } else if (job->vcodec & HB_VCODEC_FFMPEG_MASK) { @@ -3846,8 +3831,8 @@ bool one_burned = FALSE; hb_job_set_x264_preset (job, x264_preset); hb_job_set_x264_tune (job, x264_tune); hb_job_set_advanced_opts(job, advanced_opts); - hb_job_set_x264_profile (job, h264_profile); - hb_job_set_x264_level (job, h264_level); + hb_job_set_h264_profile (job, h264_profile); + hb_job_set_h264_level (job, h264_level); } else if (job->vcodec & HB_VCODEC_FFMPEG_MASK) { @@ -5291,9 +5276,8 @@ the user is using "Custom" settings by determining the sender*/ NSUInteger i; /* * now we populate the x264 system widgets via hb_x264_presets(), - * hb_x264_tunes(), hb_x264_profiles(), hb_h264_levels() + * hb_x264_tunes(), hb_h264_profiles(), hb_h264_levels() */ - // store x264 preset names const char * const * x264_presets = hb_x264_presets(); NSMutableArray *tmp_array = [[NSMutableArray alloc] init]; @@ -5320,9 +5304,9 @@ the user is using "Custom" settings by determining the sender*/ [fX264TunePopUp addItemWithTitle: @"none"]; const char * const * x264_tunes = hb_x264_tunes(); for (int i = 0; x264_tunes[i] != NULL; i++) - { + { // we filter out "fastdecode" as we have a dedicated checkbox for it - if (strcasecmp(x264_tunes[i], "fastdecode")) + if (strcasecmp(x264_tunes[i], "fastdecode") != 0) { [fX264TunePopUp addItemWithTitle: [NSString stringWithUTF8String:x264_tunes[i]]]; } @@ -5331,18 +5315,16 @@ the user is using "Custom" settings by determining the sender*/ [fX264FastDecodeCheck setState: NSOffState]; // setup the h264 profile popup [fX264ProfilePopUp removeAllItems]; - [fX264ProfilePopUp addItemWithTitle: @"auto"]; - const char * const * x264_profiles = hb_x264_profiles(); - for (int i = 0; x264_profiles[i] != NULL; i++) - { - [fX264ProfilePopUp addItemWithTitle: [NSString stringWithUTF8String:x264_profiles[i]]]; + const char * const * h264_profiles = hb_h264_profiles(); + for (int i = 0; h264_profiles[i] != NULL; i++) + { + [fX264ProfilePopUp addItemWithTitle: [NSString stringWithUTF8String:h264_profiles[i]]]; } // setup the h264 level popup [fX264LevelPopUp removeAllItems]; - [fX264LevelPopUp addItemWithTitle: @"auto"]; const char * const * h264_levels = hb_h264_levels(); for (int i = 0; h264_levels[i] != NULL; i++) - { + { [fX264LevelPopUp addItemWithTitle: [NSString stringWithUTF8String:h264_levels[i]]]; } // clear the additional x264 options @@ -5569,7 +5551,7 @@ the user is using "Custom" settings by determining the sender*/ * char * hb_x264_param_unparse(const char *x264_preset, * const char *x264_tune, * const char *x264_encopts, - * const char *x264_profile, + * const char *h264_profile, * const char *h264_level, * int width, int height); */ @@ -5614,9 +5596,16 @@ the user is using "Custom" settings by determining the sender*/ h264_level, width, height); // update the text field - [fDisplayX264PresetsUnparseTextField setStringValue: - [NSString stringWithFormat:@"x264 Unparse: %s", - fX264PresetsUnparsedUTF8String]]; + if (fX264PresetsUnparsedUTF8String != NULL) + { + [fDisplayX264PresetsUnparseTextField setStringValue: + [NSString stringWithFormat:@"x264 Unparse: %s", + fX264PresetsUnparsedUTF8String]]; + } + else + { + [fDisplayX264PresetsUnparseTextField setStringValue:@"x264 Unparse:"]; + } } #pragma mark - @@ -6523,8 +6512,10 @@ return YES; job->modulus = 16; } - /* Check to see if the objectForKey:@"UsesPictureSettings is 2 which is "Use Max for the source */ - if ([[chosenPreset objectForKey:@"UsesPictureSettings"] intValue] == 2 || [[chosenPreset objectForKey:@"UsesMaxPictureSettings"] intValue] == 1) + /* Check to see if the objectForKey:@"UsesPictureSettings" is 2, + * which means "Use max. picture size for the source" */ + if ([[chosenPreset objectForKey:@"UsesPictureSettings"] intValue] == 2 || + [[chosenPreset objectForKey:@"UsesMaxPictureSettings"] intValue] == 1) { /* Use Max Picture settings for whatever the dvd is.*/ [self revertPictureSizeToMax:nil]; @@ -6540,21 +6531,34 @@ return YES; } job->anamorphic.mode = [[chosenPreset objectForKey:@"PicturePAR"] intValue]; } - else // /* If not 0 or 2 we assume objectForKey:@"UsesPictureSettings is 1 which is "Use picture sizing from when the preset was set" */ + /* If not 0 or 2 we assume objectForKey:@"UsesPictureSettings" is 1, + * which means "Use the picture size specified in the preset" */ + else { - /* we check to make sure the presets width/height does not exceed the sources width/height */ - if (fTitle->width < [[chosenPreset objectForKey:@"PictureWidth"] intValue] || fTitle->height < [[chosenPreset objectForKey:@"PictureHeight"] intValue]) + /* + * if the preset specifies neither max. width nor height + * (both are 0), use the max. picture size + * + * if the specified non-zero dimensions exceed those of the + * source, also use the max. picture size (no upscaling) + */ + if (([[chosenPreset objectForKey:@"PictureWidth"] intValue] <= 0 && + [[chosenPreset objectForKey:@"PictureHeight"] intValue] <= 0) || + ([[chosenPreset objectForKey:@"PictureWidth"] intValue] > fTitle->width && + [[chosenPreset objectForKey:@"PictureHeight"] intValue] > fTitle->height) || + ([[chosenPreset objectForKey:@"PictureHeight"] intValue] <= 0 && + [[chosenPreset objectForKey:@"PictureWidth"] intValue] > fTitle->width) || + ([[chosenPreset objectForKey:@"PictureWidth"] intValue] <= 0 && + [[chosenPreset objectForKey:@"PictureHeight"] intValue] > fTitle->height)) { - /* if so, then we use the sources height and width to avoid scaling up */ - //job->width = fTitle->width; - //job->height = fTitle->height; + /* use the source's width/height to avoid upscaling */ [self revertPictureSizeToMax:nil]; } - else // source width/height is >= the preset height/width + else // source width/height is >= preset width/height { - /* we can go ahead and use the presets values for height and width */ - job->width = [[chosenPreset objectForKey:@"PictureWidth"] intValue]; - job->height = [[chosenPreset objectForKey:@"PictureHeight"] intValue]; + /* use the preset values for width/height */ + job->width = [[chosenPreset objectForKey:@"PictureWidth"] intValue]; + job->height = [[chosenPreset objectForKey:@"PictureHeight"] intValue]; } job->keep_ratio = [[chosenPreset objectForKey:@"PictureKeepRatio"] intValue]; if (job->keep_ratio == 1) diff --git a/macosx/English.lproj/MainMenu.xib b/macosx/English.lproj/MainMenu.xib index e4b943f72..a77f08d63 100644 --- a/macosx/English.lproj/MainMenu.xib +++ b/macosx/English.lproj/MainMenu.xib @@ -2,47 +2,47 @@ <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> <data> <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">11G63</string> - <string key="IBDocument.InterfaceBuilderVersion">1938</string> - <string key="IBDocument.AppKitVersion">1138.51</string> - <string key="IBDocument.HIToolboxVersion">569.00</string> + <string key="IBDocument.SystemVersion">12C60</string> + <string key="IBDocument.InterfaceBuilderVersion">2844</string> + <string key="IBDocument.AppKitVersion">1187.34</string> + <string key="IBDocument.HIToolboxVersion">625.00</string> <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="NS.object.0">1938</string> + <string key="NS.object.0">2844</string> </object> <object class="NSArray" key="IBDocument.IntegratedClassDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>NSTabView</string> - <string>NSScroller</string> - <string>NSMenu</string> - <string>NSSliderCell</string> + <string>NSArrayController</string> + <string>NSBox</string> <string>NSButton</string> - <string>NSTableHeaderView</string> - <string>NSMatrix</string> + <string>NSButtonCell</string> <string>NSCustomObject</string> - <string>NSArrayController</string> - <string>NSImageView</string> - <string>NSTableView</string> <string>NSCustomView</string> - <string>NSSlider</string> + <string>NSDrawer</string> <string>NSImageCell</string> - <string>NSTextField</string> + <string>NSImageView</string> + <string>NSMatrix</string> + <string>NSMenu</string> + <string>NSMenuItem</string> <string>NSNumberFormatter</string> - <string>NSWindowTemplate</string> - <string>NSTextFieldCell</string> - <string>NSButtonCell</string> - <string>NSTableColumn</string> - <string>NSBox</string> - <string>NSView</string> <string>NSOutlineView</string> + <string>NSPopUpButton</string> <string>NSPopUpButtonCell</string> + <string>NSProgressIndicator</string> <string>NSScrollView</string> + <string>NSScroller</string> + <string>NSSlider</string> + <string>NSSliderCell</string> + <string>NSTabView</string> <string>NSTabViewItem</string> - <string>NSProgressIndicator</string> + <string>NSTableColumn</string> + <string>NSTableHeaderView</string> + <string>NSTableView</string> + <string>NSTextField</string> + <string>NSTextFieldCell</string> <string>NSUserDefaultsController</string> - <string>NSPopUpButton</string> - <string>NSMenuItem</string> - <string>NSDrawer</string> + <string>NSView</string> + <string>NSWindowTemplate</string> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -91,7 +91,7 @@ <reference key="NSNextKeyView" ref="1007421233"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="10523918"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4325376</int> <string type="base64-UTF8" key="NSContents">RE8gTk9UIFRSQU5TTEFURSBUSElTIE5JQiBGSUxFLAo</string> <object class="NSFont" key="NSSupport" id="26"> @@ -119,11 +119,11 @@ </object> </object> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSProgressIndicator" id="222334056"> <reference key="NSNextResponder" ref="168918359"/> <int key="NSvFlags">1288</int> - <object class="NSPSMatrix" key="NSDrawMatrix"/> <string key="NSFrame">{{18, -26}, {930, 20}}</string> <reference key="NSSuperview" ref="168918359"/> <reference key="NSWindow"/> @@ -156,7 +156,7 @@ <reference key="NSNextKeyView" ref="888819828"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="200565868"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents">Video Quality:</string> <reference key="NSSupport" ref="26"/> @@ -164,6 +164,7 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="783405221"> <reference key="NSNextResponder" ref="1053078401"/> @@ -174,7 +175,7 @@ <reference key="NSNextKeyView" ref="1000247853"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="351953267"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">4326400</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -196,6 +197,7 @@ <reference key="NSColor" ref="544409939"/> </object> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSSlider" id="239657287"> <reference key="NSNextResponder" ref="1053078401"/> @@ -206,7 +208,7 @@ <reference key="NSNextKeyView" ref="783405221"/> <bool key="NSEnabled">YES</bool> <object class="NSSliderCell" key="NSCell" id="160453387"> - <int key="NSCellFlags">67501824</int> + <int key="NSCellFlags">67371264</int> <int key="NSCellFlags2">262144</int> <object class="NSMutableString" key="NSContents"> <characters key="NS.bytes"/> @@ -226,6 +228,7 @@ <bool key="NSAllowsTickMarkValuesOnly">YES</bool> <bool key="NSVertical">NO</bool> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="987137669"> <reference key="NSNextResponder" ref="1053078401"/> @@ -236,7 +239,7 @@ <reference key="NSNextKeyView" ref="690364175"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="537000521"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents">Picture Size: </string> <reference key="NSSupport" ref="26"/> @@ -244,6 +247,7 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="690304958"> <reference key="NSNextResponder" ref="1053078401"/> @@ -254,7 +258,7 @@ <reference key="NSNextKeyView" ref="239657287"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="923732752"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">-2143158272</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -272,7 +276,7 @@ <string>numberStyle</string> <string>positiveInfinitySymbol</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <boolean value="YES"/> <integer value="1040"/> @@ -329,6 +333,7 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="323705695"> <reference key="NSNextResponder" ref="1053078401"/> @@ -339,7 +344,7 @@ <reference key="NSNextKeyView" ref="690304958"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="936221726"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4325376</int> <string key="NSContents">RF:</string> <reference key="NSSupport" ref="26"/> @@ -347,17 +352,18 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="690364175"> <reference key="NSNextResponder" ref="1053078401"/> <int key="NSvFlags">256</int> - <string key="NSFrame">{{14, 15}, {892, 14}}</string> + <string key="NSFrame">{{14, 17}, {892, 14}}</string> <reference key="NSSuperview" ref="1053078401"/> <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="503933842"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="508148739"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents">Picture Cropping:</string> <reference key="NSSupport" ref="26"/> @@ -365,17 +371,18 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="503933842"> <reference key="NSNextResponder" ref="1053078401"/> <int key="NSvFlags">256</int> - <string key="NSFrame">{{14, 2}, {892, 14}}</string> + <string key="NSFrame">{{14, 3}, {892, 14}}</string> <reference key="NSSuperview" ref="1053078401"/> <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="794651271"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="109092334"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents">Video Filters:</string> <reference key="NSSupport" ref="26"/> @@ -383,6 +390,7 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="222980245"> <reference key="NSNextResponder" ref="1053078401"/> @@ -393,11 +401,11 @@ <reference key="NSNextKeyView" ref="521019277"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="343952154"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">132096</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="222980245"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="26"/> <string key="NSAlternateContents"/> @@ -439,6 +447,7 @@ <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="1000247853"> <reference key="NSNextResponder" ref="1053078401"/> @@ -449,12 +458,12 @@ <reference key="NSNextKeyView" ref="447003158"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="860863090"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">2-pass encoding</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="1000247853"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <object class="NSButtonImageSource" key="NSAlternateImage" id="624832340"> <string key="NSImageName">NSSwitch</string> @@ -464,6 +473,7 @@ <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="447003158"> <reference key="NSNextResponder" ref="1053078401"/> @@ -474,12 +484,12 @@ <reference key="NSNextKeyView" ref="954159030"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="1070893195"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Turbo first pass</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="447003158"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <object class="NSCustomResource" key="NSNormalImage" id="887198214"> <string key="NSClassName">NSImage</string> @@ -491,6 +501,7 @@ <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="12330413"> <reference key="NSNextResponder" ref="1053078401"/> @@ -501,11 +512,11 @@ <reference key="NSNextKeyView" ref="463960465"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="1018849574"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">132096</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="12330413"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="26"/> <string key="NSAlternateContents"/> @@ -541,6 +552,7 @@ <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="463960465"> <reference key="NSNextResponder" ref="1053078401"/> @@ -551,7 +563,7 @@ <reference key="NSNextKeyView" ref="222980245"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="509250281"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">Framerate (FPS):</string> <reference key="NSSupport" ref="26"/> @@ -559,6 +571,7 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="1064150725"> <reference key="NSNextResponder" ref="1053078401"/> @@ -569,7 +582,7 @@ <reference key="NSNextKeyView" ref="12330413"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="451922400"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents">Video Codec:</string> <reference key="NSSupport" ref="26"/> @@ -577,6 +590,7 @@ <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSMatrix" id="1036976683"> <reference key="NSNextResponder" ref="1053078401"/> @@ -586,18 +600,19 @@ <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="323705695"/> <bool key="NSEnabled">YES</bool> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <int key="NSNumRows">2</int> <int key="NSNumCols">1</int> <object class="NSMutableArray" key="NSCells"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSButtonCell" id="613962178"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Constant Quality</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="1036976683"/> <int key="NSTag">1</int> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">0</int> <object class="NSButtonImageSource" key="NSAlternateImage" id="860784734"> <string key="NSImageName">NSRadioButton</string> @@ -608,12 +623,12 @@ <int key="NSPeriodicInterval">25</int> </object> <object class="NSButtonCell" id="878990764"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Average Bitrate (kbps):</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="1036976683"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">0</int> <object class="NSImage" key="NSNormalImage"> <int key="NSImageFlags">549453824</int> @@ -721,7 +736,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes> <int key="NSMatrixFlags">1151868928</int> <string key="NSCellClass">NSActionCell</string> <object class="NSButtonCell" key="NSProtoCell" id="121093497"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Radio</string> <object class="NSFont" key="NSSupport" id="273283760"> @@ -729,7 +744,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes> <double key="NSSize">13</double> <int key="NSfFlags">1044</int> </object> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">0</int> <object class="NSImage" key="NSNormalImage"> <int key="NSImageFlags">549453824</int> @@ -789,18 +804,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="1036976683"/> <bool key="NSEnabled">YES</bool> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <int key="NSNumRows">2</int> <int key="NSNumCols">1</int> <object class="NSMutableArray" key="NSCells"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSButtonCell" id="329026312"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Variable Framerate</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="888819828"/> <int key="NSTag">1</int> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">0</int> <reference key="NSAlternateImage" ref="860784734"/> <string key="NSAlternateContents"/> @@ -809,12 +825,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicInterval">25</int> </object> <object class="NSButtonCell" id="995154792"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Constant Framerate</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="888819828"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">0</int> <object class="NSImage" key="NSNormalImage"> <int key="NSImageFlags">549453824</int> @@ -919,11 +935,11 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes> <int key="NSMatrixFlags">1151868928</int> <string key="NSCellClass">NSActionCell</string> <object class="NSButtonCell" key="NSProtoCell" id="217044635"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Radio</string> <reference key="NSSupport" ref="273283760"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">0</int> <object class="NSImage" key="NSNormalImage"> <int key="NSImageFlags">549453824</int> @@ -988,14 +1004,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <object class="NSSlider" id="480823072"> <reference key="NSNextResponder" ref="443817184"/> <int key="NSvFlags">268</int> - <string key="NSFrame">{{212, 105}, {660, 16}}</string> + <string key="NSFrame">{{243, 105}, {629, 16}}</string> <reference key="NSSuperview" ref="443817184"/> <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="1031662534"/> <string key="NSReuseIdentifierKey">_NS:779</string> <bool key="NSEnabled">YES</bool> <object class="NSSliderCell" key="NSCell" id="690637620"> - <int key="NSCellFlags">-2079981824</int> + <int key="NSCellFlags">-2080112384</int> <int key="NSCellFlags2">262144</int> <string key="NSContents"/> <string key="NSCellIdentifier">_NS:779</string> @@ -1009,6 +1025,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAllowsTickMarkValuesOnly">YES</bool> <bool key="NSVertical">NO</bool> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="139432403"> <reference key="NSNextResponder" ref="443817184"/> @@ -1019,7 +1036,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="527737261"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="367754591"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">x264 Preset:</string> <reference key="NSSupport" ref="26"/> @@ -1027,6 +1044,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="1031662534"> <reference key="NSNextResponder" ref="443817184"/> @@ -1037,7 +1055,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="610425389"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="444043003"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">x264 Tune:</string> <reference key="NSSupport" ref="26"/> @@ -1045,6 +1063,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="102651997"> <reference key="NSNextResponder" ref="443817184"/> @@ -1055,14 +1074,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="112458239"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="858212432"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> - <string key="NSContents">x264 Profile:</string> + <string key="NSContents">h264 Profile:</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="102651997"/> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="8023338"> <reference key="NSNextResponder" ref="443817184"/> @@ -1073,14 +1093,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="144142005"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="248169798"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> - <string key="NSContents">x264 Level:</string> + <string key="NSContents">h264 Level:</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="8023338"/> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="610425389"> <reference key="NSNextResponder" ref="443817184"/> @@ -1092,12 +1113,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:868</string> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="1050851477"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">264192</int> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:868</string> <reference key="NSControlView" ref="610425389"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -1151,6 +1172,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="112458239"> <reference key="NSNextResponder" ref="443817184"/> @@ -1162,12 +1184,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:868</string> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="1012707648"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">264192</int> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:868</string> <reference key="NSControlView" ref="112458239"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -1221,6 +1243,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="144142005"> <reference key="NSNextResponder" ref="443817184"/> @@ -1232,12 +1255,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:868</string> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="379682863"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">264192</int> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:868</string> <reference key="NSControlView" ref="144142005"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -1291,6 +1314,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="884471415"> <reference key="NSNextResponder" ref="443817184"/> @@ -1302,13 +1326,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:771</string> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="140128742"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Fast Decode</string> <reference key="NSSupport" ref="26"/> <string key="NSCellIdentifier">_NS:771</string> <reference key="NSControlView" ref="884471415"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -1317,6 +1341,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="796460997"> <reference key="NSNextResponder" ref="443817184"/> @@ -1327,7 +1352,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="8023338"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="934066385"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">Additional Options:</string> <reference key="NSSupport" ref="26"/> @@ -1335,6 +1360,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="487526549"> <reference key="NSNextResponder" ref="443817184"/> @@ -1347,7 +1373,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSAntiCompressionPriority">{250, 750}</string> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="284269747"> - <int key="NSCellFlags">-1805517311</int> + <int key="NSCellFlags">-1805647871</int> <int key="NSCellFlags2">272760832</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -1357,24 +1383,26 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="527737261"> <reference key="NSNextResponder" ref="443817184"/> <int key="NSvFlags">256</int> - <string key="NSFrame">{{96, 107}, {95, 13}}</string> + <string key="NSFrame">{{96, 107}, {129, 13}}</string> <reference key="NSSuperview" ref="443817184"/> <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="480823072"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="513519725"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">138412032</int> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">4194304</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="527737261"/> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="902460295"> <reference key="NSNextResponder" ref="443817184"/> @@ -1386,13 +1414,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:771</string> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="191360965"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Use x264 Advanced Options Panel</string> <reference key="NSSupport" ref="26"/> <string key="NSCellIdentifier">_NS:771</string> <reference key="NSControlView" ref="902460295"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -1401,17 +1429,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="349581420"> <reference key="NSNextResponder" ref="443817184"/> <int key="NSvFlags">256</int> - <string key="NSFrame">{{22, 6}, {853, 29}}</string> + <string key="NSFrame">{{12, 6}, {863, 29}}</string> <reference key="NSSuperview" ref="443817184"/> <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="987137669"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="812860538"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents">x264 Unparse:</string> <reference key="NSSupport" ref="26"/> @@ -1419,6 +1448,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrame">{{1, 1}, {890, 155}}</string> @@ -1435,7 +1465,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:18</string> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">x264 Presets</string> <reference key="NSSupport" ref="26"/> @@ -1490,6 +1520,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="528259747"/> <reference key="NSNextKeyView" ref="496546489"/> <bool key="NSEnabled">YES</bool> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <bool key="NSControlAllowsExpansionToolTips">YES</bool> <object class="NSTableHeaderView" key="NSHeaderView" id="146611085"> <reference key="NSNextResponder" ref="230332532"/> <int key="NSvFlags">256</int> @@ -1513,7 +1545,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">40</double> <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Track</string> <reference key="NSSupport" ref="26"/> @@ -1529,11 +1561,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="871837653"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="792464451"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <object class="NSFont" key="NSAlternateImage" id="995413175"> <string key="NSName">LucidaGrande</string> @@ -1579,7 +1611,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Codec</string> <reference key="NSSupport" ref="26"/> @@ -1592,11 +1624,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="4014313"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="792464451"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -1639,7 +1671,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Mixdown</string> <reference key="NSSupport" ref="26"/> @@ -1647,11 +1679,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="1037917692"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="792464451"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -1694,7 +1726,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Samplerate</string> <reference key="NSSupport" ref="26"/> @@ -1702,11 +1734,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="257530638"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="792464451"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -1749,7 +1781,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Bitrate</string> <reference key="NSSupport" ref="26"/> @@ -1757,11 +1789,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="238248766"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="792464451"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -1804,7 +1836,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028234663852886e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">134219776</int> <string key="NSContents">Gain</string> <reference key="NSSupport" ref="26"/> @@ -1812,7 +1844,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSSliderCell" key="NSDataCell" id="723141526"> - <int key="NSCellFlags">-2079981824</int> + <int key="NSCellFlags">-2080112384</int> <int key="NSCellFlags2">131072</int> <string key="NSContents"/> <reference key="NSControlView" ref="792464451"/> @@ -1837,7 +1869,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028234663852886e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -1845,7 +1877,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSTextFieldCell" key="NSDataCell" id="718953459"> - <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags">337641536</int> <int key="NSCellFlags2">133120</int> <string key="NSContents">Text Cell</string> <reference key="NSSupport" ref="26"/> @@ -1869,7 +1901,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">134219776</int> <string key="NSContents">DRC</string> <reference key="NSSupport" ref="26"/> @@ -1877,7 +1909,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSSliderCell" key="NSDataCell" id="852982078"> - <int key="NSCellFlags">-2079981824</int> + <int key="NSCellFlags">-2080112384</int> <int key="NSCellFlags2">131072</int> <string key="NSContents"/> <reference key="NSControlView" ref="792464451"/> @@ -1902,7 +1934,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -1910,7 +1942,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSTextFieldCell" key="NSDataCell" id="750418243"> - <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags">337641536</int> <int key="NSCellFlags2">272761856</int> <string key="NSContents">Text</string> <reference key="NSSupport" ref="26"/> @@ -1960,6 +1992,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSFrame">{{-100, -100}, {15, 206}}</string> <reference key="NSSuperview" ref="933946879"/> <reference key="NSNextKeyView" ref="821562152"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <reference key="NSTarget" ref="933946879"/> <string key="NSAction">_doScroller:</string> <double key="NSCurValue">37</double> @@ -1971,6 +2004,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSFrame">{{-100, -100}, {685, 15}}</string> <reference key="NSSuperview" ref="933946879"/> <reference key="NSNextKeyView" ref="727606062"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <int key="NSsFlags">1</int> <reference key="NSTarget" ref="933946879"/> <string key="NSAction">_doScroller:</string> @@ -2001,6 +2035,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSContentView" ref="528259747"/> <reference key="NSHeaderClipView" ref="230332532"/> <bytes key="NSScrollAmts">QSAAAEEgAABB2AAAQdgAAA</bytes> + <double key="NSMinMagnification">0.25</double> + <double key="NSMaxMagnification">4</double> + <double key="NSMagnification">1</double> </object> <object class="NSButton" id="883603583"> <reference key="NSNextResponder" ref="577274772"/> @@ -2010,18 +2047,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="334448622"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="327570663"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134479872</int> <string key="NSContents">Add All Tracks</string> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="883603583"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSBox" id="334448622"> <reference key="NSNextResponder" ref="577274772"/> @@ -2042,13 +2080,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:771</string> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="707344957"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">262144</int> <string key="NSContents">MP3</string> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:771</string> <reference key="NSControlView" ref="162512199"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2057,6 +2095,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="354328979"> <reference key="NSNextResponder" ref="754802956"/> @@ -2067,13 +2106,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:771</string> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="243873688"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">262144</int> <string key="NSContents">AAC</string> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:771</string> <reference key="NSControlView" ref="354328979"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2082,6 +2121,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="453548414"> <reference key="NSNextResponder" ref="754802956"/> @@ -2092,13 +2132,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:771</string> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="368344404"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">262144</int> <string key="NSContents">AC3</string> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:771</string> <reference key="NSControlView" ref="453548414"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2107,6 +2147,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="485809563"> <reference key="NSNextResponder" ref="754802956"/> @@ -2117,13 +2158,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:771</string> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="118300837"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">262144</int> <string key="NSContents">DTS</string> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:771</string> <reference key="NSControlView" ref="485809563"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2132,6 +2173,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="1024961404"> <reference key="NSNextResponder" ref="754802956"/> @@ -2142,13 +2184,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:771</string> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="735750065"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">262144</int> <string key="NSContents">DTS-HD</string> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:771</string> <reference key="NSControlView" ref="1024961404"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2157,6 +2199,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="586044455"> <reference key="NSNextResponder" ref="754802956"/> @@ -2167,12 +2210,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:868</string> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="141259846"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">264192</int> <reference key="NSSupport" ref="22"/> <string key="NSCellIdentifier">_NS:868</string> <reference key="NSControlView" ref="586044455"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -2226,6 +2269,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">2</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="1010907474"> <reference key="NSNextResponder" ref="754802956"/> @@ -2235,7 +2279,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="162512199"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="935575109"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71565312</int> <string key="NSContents">Auto Passthru:</string> <reference key="NSSupport" ref="22"/> @@ -2243,6 +2287,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="431725280"> <reference key="NSNextResponder" ref="754802956"/> @@ -2252,7 +2297,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="586044455"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="121164790"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71565312</int> <string key="NSContents">Passthru Fallback:</string> <reference key="NSSupport" ref="22"/> @@ -2260,6 +2305,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrame">{{1, 1}, {552, 29}}</string> @@ -2274,7 +2320,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSReuseIdentifierKey">_NS:18</string> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Auto Passthru</string> <reference key="NSSupport" ref="26"/> @@ -2326,6 +2372,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSFrameSize">{884, 241}</string> <reference key="NSSuperview" ref="705918581"/> <bool key="NSEnabled">YES</bool> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <bool key="NSControlAllowsExpansionToolTips">YES</bool> <object class="NSTableHeaderView" key="NSHeaderView" id="569585004"> <reference key="NSNextResponder" ref="139191276"/> <int key="NSvFlags">256</int> @@ -2347,7 +2395,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">40</double> <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Track</string> <reference key="NSSupport" ref="26"/> @@ -2358,11 +2406,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="426946554"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">264192</int> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="587237088"/> - <int key="NSButtonFlags">100679935</int> + <int key="NSButtonFlags">100679680</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -2402,7 +2450,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">134219776</int> <string key="NSContents">Forced Only</string> <reference key="NSSupport" ref="26"/> @@ -2410,12 +2458,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSButtonCell" key="NSDataCell" id="13236417"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Check</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="587237088"/> - <int key="NSButtonFlags">1215582719</int> + <int key="NSButtonFlags">1215582464</int> <int key="NSButtonFlags2">130</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2435,7 +2483,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">134219776</int> <string key="NSContents">Burned In</string> <reference key="NSSupport" ref="26"/> @@ -2443,12 +2491,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSButtonCell" key="NSDataCell" id="704907857"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Check</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="587237088"/> - <int key="NSButtonFlags">1215582719</int> + <int key="NSButtonFlags">1215582464</int> <int key="NSButtonFlags2">130</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2468,7 +2516,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">134219776</int> <string key="NSContents">Default</string> <reference key="NSSupport" ref="26"/> @@ -2476,12 +2524,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSButtonCell" key="NSDataCell" id="299034685"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Check</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="587237088"/> - <int key="NSButtonFlags">1215582719</int> + <int key="NSButtonFlags">1215582464</int> <int key="NSButtonFlags2">130</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -2501,7 +2549,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Srt Language</string> <reference key="NSSupport" ref="26"/> @@ -2509,11 +2557,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="688461412"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="587237088"/> - <int key="NSButtonFlags">100679935</int> + <int key="NSButtonFlags">100679680</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -2555,7 +2603,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Srt Char Code</string> <reference key="NSSupport" ref="26"/> @@ -2563,11 +2611,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSPopUpButtonCell" key="NSDataCell" id="483232645"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="587237088"/> - <int key="NSButtonFlags">100679935</int> + <int key="NSButtonFlags">100679680</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -2609,7 +2657,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">10</double> <double key="NSMaxWidth">3.4028229999999999e+38</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Srt Offset</string> <reference key="NSSupport" ref="26"/> @@ -2617,7 +2665,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSTextFieldCell" key="NSDataCell" id="43785715"> - <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags">337641536</int> <int key="NSCellFlags2">272630784</int> <string key="NSContents">Text</string> <reference key="NSSupport" ref="273283760"/> @@ -2659,6 +2707,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSvFlags">-2147483392</int> <string key="NSFrame">{{-100, -100}, {15, 206}}</string> <reference key="NSSuperview" ref="596256174"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <reference key="NSTarget" ref="596256174"/> <string key="NSAction">_doScroller:</string> <double key="NSCurValue">37</double> @@ -2669,6 +2718,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSvFlags">-2147483392</int> <string key="NSFrame">{{-100, -100}, {685, 15}}</string> <reference key="NSSuperview" ref="596256174"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <int key="NSsFlags">1</int> <reference key="NSTarget" ref="596256174"/> <string key="NSAction">_doScroller:</string> @@ -2699,6 +2749,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSContentView" ref="705918581"/> <reference key="NSHeaderClipView" ref="139191276"/> <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes> + <double key="NSMinMagnification">0.25</double> + <double key="NSMaxMagnification">4</double> + <double key="NSMagnification">1</double> </object> <object class="NSButton" id="377401502"> <reference key="NSNextResponder" ref="756255803"/> @@ -2707,18 +2760,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="756255803"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="206924163"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134479872</int> <string key="NSContents">Add External SRT ...</string> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="377401502"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrame">{{10, 25}, {920, 305}}</string> @@ -2751,7 +2805,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="815869140"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Box</string> <reference key="NSSupport" ref="26"/> @@ -2799,6 +2853,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="272816362"/> <reference key="NSNextKeyView" ref="1033243513"/> <bool key="NSEnabled">YES</bool> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <bool key="NSControlAllowsExpansionToolTips">YES</bool> <object class="NSTableHeaderView" key="NSHeaderView" id="928480858"> <reference key="NSNextResponder" ref="814110287"/> <int key="NSvFlags">256</int> @@ -2822,7 +2878,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">40</double> <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Chapter</string> <reference key="NSSupport" ref="26"/> @@ -2833,7 +2889,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSTextFieldCell" key="NSDataCell" id="686068440"> - <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags">337641536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Text Cell</string> <reference key="NSSupport" ref="995413175"/> @@ -2851,7 +2907,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">77.217290000000006</double> <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Chapter Title</string> <reference key="NSSupport" ref="26"/> @@ -2859,7 +2915,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSTextFieldCell" key="NSDataCell" id="237660698"> - <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags">337641536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Text Cell</string> <reference key="NSSupport" ref="995413175"/> @@ -2901,6 +2957,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSvFlags">256</int> <string key="NSFrame">{{870, 17}, {15, 242}}</string> <reference key="NSSuperview" ref="307620967"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <reference key="NSTarget" ref="307620967"/> <string key="NSAction">_doScroller:</string> <double key="NSPercent">0.9736842</double> @@ -2911,6 +2968,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSFrame">{{-100, -100}, {488, 15}}</string> <reference key="NSSuperview" ref="307620967"/> <reference key="NSNextKeyView" ref="814110287"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <int key="NSsFlags">1</int> <reference key="NSTarget" ref="307620967"/> <string key="NSAction">_doScroller:</string> @@ -2941,6 +2999,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSContentView" ref="272816362"/> <reference key="NSHeaderClipView" ref="814110287"/> <bytes key="NSScrollAmts">AAAAAAAAAABBmAAAQZgAAA</bytes> + <double key="NSMinMagnification">0.25</double> + <double key="NSMaxMagnification">4</double> + <double key="NSMagnification">1</double> </object> <object class="NSButton" id="262106913"> <reference key="NSNextResponder" ref="440990725"/> @@ -2950,12 +3011,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="307620967"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="719511430"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Create chapter markers</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="262106913"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSAlternateImage" ref="624832340"/> <string key="NSAlternateContents"/> @@ -2963,6 +3024,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="959722284"> <reference key="NSNextResponder" ref="440990725"/> @@ -2971,18 +3033,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="440990725"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="100898939"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134479872</int> <string key="NSContents">Import Chapters ...</string> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="959722284"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="931485910"> <reference key="NSNextResponder" ref="440990725"/> @@ -2991,18 +3054,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="440990725"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="843416672"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134479872</int> <string key="NSContents">Export Chapters ...</string> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="931485910"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">129</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrame">{{10, 25}, {920, 305}}</string> @@ -3032,7 +3096,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="854767306"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="121574898"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4325376</int> <string key="NSContents">Source:</string> <object class="NSFont" key="NSSupport" id="27"> @@ -3044,6 +3108,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="806469067"> <reference key="NSNextResponder" ref="168918359"/> @@ -3054,7 +3119,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="766125203"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="177567437"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">Title:</string> <reference key="NSSupport" ref="26"/> @@ -3062,6 +3127,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="766125203"> <reference key="NSNextResponder" ref="168918359"/> @@ -3072,11 +3138,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="303369850"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="821198683"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">263168</int> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="766125203"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <object class="NSFont" key="NSAlternateImage" id="1010451086"> <string key="NSName">LucidaGrande</string> @@ -3116,6 +3182,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="482831442"> <reference key="NSNextResponder" ref="168918359"/> @@ -3126,11 +3193,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="971754180"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="266952854"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">263168</int> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="482831442"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="1010451086"/> <string key="NSAlternateContents"/> @@ -3155,6 +3222,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="303369850"> <reference key="NSNextResponder" ref="168918359"/> @@ -3165,7 +3233,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="460320725"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="677126774"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">Angle:</string> <reference key="NSSupport" ref="26"/> @@ -3173,6 +3241,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="460320725"> <reference key="NSNextResponder" ref="168918359"/> @@ -3183,11 +3252,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="482831442"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="567459641"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">263168</int> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="460320725"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="1010451086"/> <string key="NSAlternateContents"/> @@ -3223,6 +3292,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="1023408378"> <reference key="NSNextResponder" ref="168918359"/> @@ -3233,7 +3303,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="186223550"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="834340599"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">File:</string> <reference key="NSSupport" ref="26"/> @@ -3241,6 +3311,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="713493964"> <reference key="NSNextResponder" ref="168918359"/> @@ -3251,7 +3322,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="955053416"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="1038625481"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">Duration:</string> <reference key="NSSupport" ref="26"/> @@ -3259,6 +3330,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="955053416"> <reference key="NSNextResponder" ref="168918359"/> @@ -3269,7 +3341,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="138115732"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="362196160"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -3280,6 +3352,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="138115732"> <reference key="NSNextResponder" ref="168918359"/> @@ -3290,7 +3363,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="104002862"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="510160694"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4325376</int> <string key="NSContents">Destination</string> <reference key="NSSupport" ref="27"/> @@ -3298,6 +3371,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="732193996"> <reference key="NSNextResponder" ref="168918359"/> @@ -3308,11 +3382,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="553453876"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="264217237"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">132096</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="732193996"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="26"/> <string key="NSAlternateContents"/> @@ -3346,6 +3420,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="210289606"> <reference key="NSNextResponder" ref="168918359"/> @@ -3356,12 +3431,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="35106907"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="295879492"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134348800</int> <string key="NSContents">Browse…</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="210289606"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -3371,6 +3446,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSBox" id="10346684"> <reference key="NSNextResponder" ref="168918359"/> @@ -3381,7 +3457,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="1023408378"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Box</string> <reference key="NSSupport" ref="273283760"/> @@ -3405,7 +3481,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="519699512"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="689580100"> - <int key="NSCellFlags">69336641</int> + <int key="NSCellFlags">69206081</int> <int key="NSCellFlags2">4327936</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -3416,6 +3492,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="186223550"> <reference key="NSNextResponder" ref="168918359"/> @@ -3426,7 +3503,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="210289606"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="988599137"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">4326400</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -3435,6 +3512,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="104002862"> <reference key="NSNextResponder" ref="168918359"/> @@ -3445,7 +3523,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="978025076"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="371961838"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">71566336</int> <string key="NSContents"/> <reference key="NSSupport" ref="22"/> @@ -3454,6 +3532,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="398989741"> <reference key="NSNextResponder" ref="168918359"/> @@ -3464,7 +3543,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="453345136"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="506346481"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">71566336</int> <string key="NSContents"/> <reference key="NSSupport" ref="22"/> @@ -3473,6 +3552,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="19055068"> <reference key="NSNextResponder" ref="168918359"/> @@ -3483,7 +3563,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="164276139"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="778187711"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">4457472</int> <string key="NSContents"/> <reference key="NSSupport" ref="22"/> @@ -3492,6 +3572,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="164276139"> <reference key="NSNextResponder" ref="168918359"/> @@ -3502,7 +3583,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="10346684"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="1039518079"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">4457472</int> <string key="NSContents"/> <reference key="NSSupport" ref="22"/> @@ -3511,6 +3592,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="35106907"> <reference key="NSNextResponder" ref="168918359"/> @@ -3521,7 +3603,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="574185541"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="293028864"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4325376</int> <string key="NSContents">Output Settings:</string> <reference key="NSSupport" ref="27"/> @@ -3529,6 +3611,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSBox" id="151388399"> <reference key="NSNextResponder" ref="168918359"/> @@ -3539,7 +3622,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="87961628"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Box</string> <reference key="NSSupport" ref="273283760"/> @@ -3563,7 +3646,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="151388399"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="488791842"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272629760</int> <string key="NSContents"/> <reference key="NSSupport" ref="27"/> @@ -3571,6 +3654,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="1007421233"> <reference key="NSNextResponder" ref="168918359"/> @@ -3581,7 +3665,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="222334056"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="224806210"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71434240</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -3589,6 +3673,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="87961628"> <reference key="NSNextResponder" ref="168918359"/> @@ -3599,7 +3684,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="732193996"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="51600927"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">Format:</string> <reference key="NSSupport" ref="26"/> @@ -3607,6 +3692,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSBox" id="454206717"> <reference key="NSNextResponder" ref="168918359"/> @@ -3617,7 +3703,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="806469067"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Box</string> <reference key="NSSupport" ref="273283760"/> @@ -3634,8 +3720,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> <object class="NSProgressIndicator" id="519699512"> <reference key="NSNextResponder" ref="168918359"/> - <int key="NSvFlags">-2147482356</int> - <object class="NSPSMatrix" key="NSDrawMatrix"/> + <int key="NSvFlags">-2147483380</int> <string key="NSFrame">{{385, 532}, {562, 12}}</string> <reference key="NSSuperview" ref="168918359"/> <reference key="NSWindow"/> @@ -3652,12 +3737,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="921877174"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="832863281"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Web optimized</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="581806074"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -3666,6 +3751,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="553453876"> <reference key="NSNextResponder" ref="168918359"/> @@ -3676,12 +3762,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="581806074"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="294332300"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Large file size</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="553453876"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -3690,6 +3776,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="921877174"> <reference key="NSNextResponder" ref="168918359"/> @@ -3700,12 +3787,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="712502892"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="547085070"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">iPod 5G support</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="921877174"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -3714,6 +3801,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="978025076"> <reference key="NSNextResponder" ref="168918359"/> @@ -3724,7 +3812,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="398989741"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="138681808"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">138412032</int> <string key="NSContents">through</string> <reference key="NSSupport" ref="26"/> @@ -3732,6 +3820,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="971754180"> <reference key="NSNextResponder" ref="168918359"/> @@ -3742,11 +3831,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="713493964"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="286887304"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">263168</int> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="971754180"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="1010451086"/> <string key="NSAlternateContents"/> @@ -3782,6 +3871,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="453345136"> <reference key="NSNextResponder" ref="168918359"/> @@ -3792,11 +3882,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSNextKeyView" ref="19055068"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="564669343"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">263168</int> <reference key="NSSupport" ref="22"/> <reference key="NSControlView" ref="453345136"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="1010451086"/> <string key="NSAlternateContents"/> @@ -3832,6 +3922,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrameSize">{959, 558}</string> @@ -3839,7 +3930,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSWindow"/> <reference key="NSNextKeyView" ref="586321835"/> </object> - <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> + <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> <string key="NSMinSize">{213, 129}</string> <string key="NSMaxSize">{10000000000000, 10000000000000}</string> <bool key="NSWindowIsRestorable">YES</bool> @@ -4594,7 +4685,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="168254512"/> <bool key="NSEnabled">YES</bool> <object class="NSImageCell" key="NSCell" id="72412547"> - <int key="NSCellFlags">130560</int> + <int key="NSCellFlags">134217728</int> <int key="NSCellFlags2">33554432</int> <object class="NSCustomResource" key="NSContents"> <string key="NSClassName">NSImage</string> @@ -4605,6 +4696,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSStyle">0</int> <bool key="NSAnimates">NO</bool> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <bool key="NSEditable">YES</bool> </object> <object class="NSButton" id="764659803"> @@ -4614,12 +4706,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="168254512"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="938246142"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">137887744</int> <string key="NSContents">Ahuh !</string> <reference key="NSSupport" ref="273283760"/> <reference key="NSControlView" ref="764659803"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">1</int> <object class="NSFont" key="NSAlternateImage"> <string key="NSName">Helvetica</string> @@ -4631,6 +4723,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="640205151"> <reference key="NSNextResponder" ref="168254512"/> @@ -4639,7 +4732,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="168254512"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="160092001"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">138412032</int> <string key="NSContents">Rip done !</string> <reference key="NSSupport" ref="273283760"/> @@ -4647,11 +4740,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrameSize">{300, 233}</string> </object> - <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> + <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> <string key="NSMinSize">{213, 129}</string> <string key="NSMaxSize">{10000000000000, 10000000000000}</string> <bool key="NSWindowIsRestorable">YES</bool> @@ -4688,6 +4782,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="NSFrameSize">{247, 506}</string> <reference key="NSSuperview" ref="421228634"/> <bool key="NSEnabled">YES</bool> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <bool key="NSControlAllowsExpansionToolTips">YES</bool> <object class="_NSCornerView" key="NSCornerView"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> @@ -4701,7 +4797,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <double key="NSMinWidth">40</double> <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags">75497536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Presets</string> <reference key="NSSupport" ref="26"/> @@ -4712,7 +4808,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSTextColor" ref="188451177"/> </object> <object class="NSTextFieldCell" key="NSDataCell" id="384895213"> - <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags">337641536</int> <int key="NSCellFlags2">2048</int> <string key="NSContents">Text Cell</string> <reference key="NSSupport" ref="995413175"/> @@ -4760,6 +4856,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSvFlags">256</int> <string key="NSFrame">{{248, 1}, {11, 506}}</string> <reference key="NSSuperview" ref="33643505"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <int key="NSsFlags">256</int> <reference key="NSTarget" ref="33643505"/> <string key="NSAction">_doScroller:</string> @@ -4770,6 +4867,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSvFlags">-2147483392</int> <string key="NSFrame">{{-100, -100}, {183, 15}}</string> <reference key="NSSuperview" ref="33643505"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> <int key="NSsFlags">1</int> <reference key="NSTarget" ref="33643505"/> <string key="NSAction">_doScroller:</string> @@ -4784,6 +4882,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSHScroller" ref="573337548"/> <reference key="NSContentView" ref="421228634"/> <bytes key="NSScrollAmts">QSAAAEEgAABBgAAAQYAAAA</bytes> + <double key="NSMinMagnification">0.25</double> + <double key="NSMaxMagnification">4</double> + <double key="NSMagnification">1</double> </object> <object class="NSButton" id="241719587"> <reference key="NSNextResponder" ref="621751818"/> @@ -4792,7 +4893,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="621751818"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="501219161"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents"/> <object class="NSFont" key="NSSupport" id="575851035"> @@ -4801,7 +4902,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSfFlags">2072</int> </object> <reference key="NSControlView" ref="241719587"/> - <int key="NSButtonFlags">-2030804737</int> + <int key="NSButtonFlags">-2030804992</int> <int key="NSButtonFlags2">34</int> <object class="NSCustomResource" key="NSNormalImage"> <string key="NSClassName">NSImage</string> @@ -4812,6 +4913,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">400</int> <int key="NSPeriodicInterval">75</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="699919504"> <reference key="NSNextResponder" ref="621751818"/> @@ -4820,12 +4922,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="621751818"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="489159603"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">134217728</int> <string key="NSContents"/> <reference key="NSSupport" ref="575851035"/> <reference key="NSControlView" ref="699919504"/> - <int key="NSButtonFlags">-2032901889</int> + <int key="NSButtonFlags">-2032902144</int> <int key="NSButtonFlags2">34</int> <object class="NSCustomResource" key="NSNormalImage"> <string key="NSClassName">NSImage</string> @@ -4836,6 +4938,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">400</int> <int key="NSPeriodicInterval">75</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="886184281"> <reference key="NSNextResponder" ref="621751818"/> @@ -4844,11 +4947,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="621751818"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="492120702"> - <int key="NSCellFlags">71433792</int> + <int key="NSCellFlags">71303232</int> <int key="NSCellFlags2">2048</int> <reference key="NSSupport" ref="273283760"/> <reference key="NSControlView" ref="886184281"/> - <int key="NSButtonFlags">-2031075073</int> + <int key="NSButtonFlags">-2031075328</int> <int key="NSButtonFlags2">162</int> <string key="NSAlternateContents"/> <string key="NSKeyEquivalent"/> @@ -4907,6 +5010,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">2</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrameSize">{270, 550}</string> @@ -4937,12 +5041,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="107603394"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134217728</int> <string key="NSContents">Add</string> <reference key="NSSupport" ref="273283760"/> <reference key="NSControlView" ref="636581183"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">1</int> <object class="NSFont" key="NSAlternateImage" id="212993004"> <string key="NSName">LucidaGrande</string> @@ -4954,6 +5058,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="586136427"> <reference key="NSNextResponder" ref="69290042"/> @@ -4962,12 +5067,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="231870318"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134217728</int> <string key="NSContents">Cancel</string> <reference key="NSSupport" ref="273283760"/> <reference key="NSControlView" ref="586136427"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="212993004"/> <string key="NSAlternateContents"/> @@ -4975,6 +5080,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="978853241"> <reference key="NSNextResponder" ref="69290042"/> @@ -4983,7 +5089,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="479246832"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">272761856</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -4992,6 +5098,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSPopUpButton" id="167356719"> <reference key="NSNextResponder" ref="69290042"/> @@ -5000,11 +5107,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSPopUpButtonCell" key="NSCell" id="17688962"> - <int key="NSCellFlags">-2076049856</int> + <int key="NSCellFlags">-2076180416</int> <int key="NSCellFlags2">133120</int> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="167356719"/> - <int key="NSButtonFlags">109199615</int> + <int key="NSButtonFlags">109199360</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -5062,6 +5169,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <bool key="NSAltersState">YES</bool> <int key="NSArrowPosition">1</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="343391844"> <reference key="NSNextResponder" ref="69290042"/> @@ -5070,7 +5178,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="658438349"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272760832</int> <string type="base64-UTF8" key="NSContents">UHJlc2V0IE5hbWU6Cg</string> <reference key="NSSupport" ref="26"/> @@ -5078,6 +5186,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="340554114"> <reference key="NSNextResponder" ref="69290042"/> @@ -5086,7 +5195,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="70981869"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272760832</int> <string key="NSContents">Picture Settings:</string> <reference key="NSSupport" ref="26"/> @@ -5094,6 +5203,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="384547934"> <reference key="NSNextResponder" ref="69290042"/> @@ -5102,7 +5212,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="207651610"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272760832</int> <string key="NSContents">Description:</string> <reference key="NSSupport" ref="26"/> @@ -5110,6 +5220,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="511645357"> <reference key="NSNextResponder" ref="69290042"/> @@ -5118,7 +5229,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="855042909"> - <int key="NSCellFlags">-1805517311</int> + <int key="NSCellFlags">-1805647871</int> <int key="NSCellFlags2">272760832</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> @@ -5127,6 +5238,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="31472093"> <reference key="NSNextResponder" ref="69290042"/> @@ -5135,7 +5247,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="31665321"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71434240</int> <string key="NSContents">Use Picture Size:</string> <reference key="NSSupport" ref="26"/> @@ -5143,6 +5255,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="1024752086"> <reference key="NSNextResponder" ref="69290042"/> @@ -5151,12 +5264,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="625635488"> - <int key="NSCellFlags">-2080244224</int> + <int key="NSCellFlags">-2080374784</int> <int key="NSCellFlags2">131072</int> <string key="NSContents"/> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="1024752086"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -5165,6 +5278,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="786415813"> <reference key="NSNextResponder" ref="69290042"/> @@ -5173,12 +5287,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="977106207"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">131072</int> <string key="NSContents">Preset Folder ( if checked disregard below )</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="786415813"/> - <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags">1211912448</int> <int key="NSButtonFlags2">2</int> <reference key="NSNormalImage" ref="887198214"/> <reference key="NSAlternateImage" ref="624832340"/> @@ -5187,6 +5301,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSBox" id="5085381"> <reference key="NSNextResponder" ref="69290042"/> @@ -5195,7 +5310,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Box</string> <reference key="NSSupport" ref="273283760"/> @@ -5217,7 +5332,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Box</string> <reference key="NSSupport" ref="273283760"/> @@ -5239,7 +5354,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="155469085"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71434240</int> <string key="NSContents">Use Picture Filters:</string> <reference key="NSSupport" ref="26"/> @@ -5247,6 +5362,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSBox" id="277759901"> <reference key="NSNextResponder" ref="69290042"/> @@ -5265,7 +5381,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="956968044"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="862361869"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">71566336</int> <string key="NSContents"/> <reference key="NSSupport" ref="22"/> @@ -5274,6 +5390,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="358179065"> <reference key="NSNextResponder" ref="956968044"/> @@ -5282,7 +5399,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="956968044"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="14541127"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">138543104</int> <string key="NSContents">X</string> <reference key="NSSupport" ref="26"/> @@ -5290,6 +5407,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="525081109"> <reference key="NSNextResponder" ref="956968044"/> @@ -5298,7 +5416,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="956968044"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="945554305"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">4457472</int> <string key="NSContents"/> <reference key="NSSupport" ref="22"/> @@ -5307,6 +5425,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrameSize">{155, 32}</string> @@ -5317,7 +5436,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="69290042"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> <string key="NSContents">Box</string> <reference key="NSSupport" ref="26"/> @@ -5336,7 +5455,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> <string key="NSFrameSize">{338, 318}</string> </object> - <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> + <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> <string key="NSMinSize">{338, 254}</string> <string key="NSMaxSize">{10000000000000, 10000000000000}</string> <bool key="NSWindowIsRestorable">YES</bool> @@ -5367,7 +5486,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="874724779"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272629760</int> <string key="NSContents">Source Path Here</string> <reference key="NSSupport" ref="26"/> @@ -5375,6 +5494,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="293908248"> <reference key="NSNextResponder" ref="867624722"/> @@ -5383,7 +5503,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="290236859"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272629760</int> <string key="NSContents">for</string> <reference key="NSSupport" ref="26"/> @@ -5391,6 +5511,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="535532677"> <reference key="NSNextResponder" ref="867624722"/> @@ -5399,7 +5520,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="1026393301"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">71303168</int> <string key="NSContents">Scan title number</string> <reference key="NSSupport" ref="26"/> @@ -5407,6 +5528,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="290568055"> <reference key="NSNextResponder" ref="867624722"/> @@ -5415,7 +5537,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="412266408"> - <int key="NSCellFlags">-1804468671</int> + <int key="NSCellFlags">-1804599231</int> <int key="NSCellFlags2">138544128</int> <string key="NSContents">0</string> <reference key="NSSupport" ref="26"/> @@ -5424,6 +5546,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="138233214"/> <reference key="NSTextColor" ref="378140636"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="35126402"> <reference key="NSNextResponder" ref="867624722"/> @@ -5432,12 +5555,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="935162329"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134348800</int> <string key="NSContents">Cancel</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="35126402"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -5447,6 +5570,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSButton" id="1029080172"> <reference key="NSNextResponder" ref="867624722"/> @@ -5455,12 +5579,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="1020926636"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">134348800</int> <string key="NSContents">Open Title</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="1029080172"/> - <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags">-2038284288</int> <int key="NSButtonFlags2">1</int> <reference key="NSAlternateImage" ref="995413175"/> <string key="NSAlternateContents"/> @@ -5468,6 +5592,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <int key="NSPeriodicDelay">200</int> <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="1010749064"> <reference key="NSNextResponder" ref="867624722"/> @@ -5476,7 +5601,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="938406174"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">4194304</int> <string key="NSContents">Note: (entering 0 or leaving blank will result in a full source scan)</string> <reference key="NSSupport" ref="26"/> @@ -5484,6 +5609,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="610976437"> <reference key="NSNextResponder" ref="867624722"/> @@ -5492,7 +5618,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="802225466"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272629760</int> <string key="NSContents">Source Path:</string> <reference key="NSSupport" ref="26"/> @@ -5500,6 +5626,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> <object class="NSTextField" id="655257851"> <reference key="NSNextResponder" ref="867624722"/> @@ -5508,7 +5635,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSSuperview" ref="867624722"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="19595360"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">272629760</int> <string key="NSContents">Small System Font Text</string> <reference key="NSSupport" ref="26"/> @@ -5516,11 +5643,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="NSBackgroundColor" ref="242973447"/> <reference key="NSTextColor" ref="701609070"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> <string key="NSFrameSize">{392, 144}</string> </object> - <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> + <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> <string key="NSMinSize">{213, 129}</string> <string key="NSMaxSize">{10000000000000, 10000000000000}</string> <bool key="NSWindowIsRestorable">YES</bool> @@ -7151,6 +7279,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> + <string key="label">fScanHorizontalLine</string> + <reference key="source" ref="2258723"/> + <reference key="destination" ref="454206717"/> + </object> + <int key="connectionID">6004</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> <string key="label">parentWindow</string> <reference key="source" ref="972647787"/> <reference key="destination" ref="192660081"/> @@ -7283,7 +7419,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>NSCreatesSortDescriptor</string> <string>NSValidatesImmediately</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <boolean value="NO"/> <boolean value="YES"/> @@ -7662,7 +7798,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>NSCreatesSortDescriptor</string> <string>NSValidatesImmediately</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <boolean value="NO"/> <boolean value="YES"/> @@ -10772,10 +10908,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference ref="112458239"/> <reference ref="796460997"/> <reference ref="487526549"/> - <reference ref="884471415"/> <reference ref="527737261"/> <reference ref="902460295"/> <reference ref="349581420"/> + <reference ref="884471415"/> </object> <reference key="parent" ref="1053078401"/> </object> @@ -11533,7 +11669,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>971.IBPluginDependency</string> <string>973.IBPluginDependency</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -11739,7 +11875,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <object class="IBToolTipAttribute" key="NS.object.0"> <string key="name">ToolTip</string> <reference key="object" ref="581806074"/> - <string key="toolTip">Mixed</string> + <string key="toolTip">This rearranges the header of the MP4 file to optimize it for streaming across the web.</string> </object> </object> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -11820,7 +11956,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <object class="IBToolTipAttribute" key="NS.object.0"> <string key="name">ToolTip</string> <reference key="object" ref="921877174"/> - <string key="toolTip">Mixed</string> + <string key="toolTip">This option adds an atom to the MP4 file which allows older iPods (5th Generation classic style) to play the file.</string> </object> </object> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -12038,7 +12174,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <reference key="dict.values" ref="0"/> </object> <nil key="sourceID"/> - <int key="maxID">6003</int> + <int key="maxID">6004</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -12085,7 +12221,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>customSettingUsed:</string> <string>deleteFactoryPresets:</string> <string>deletePreset:</string> - <string>updateX264Widgets:</string> <string>encodeStartStopPopUpChanged:</string> <string>formatPopUpChanged:</string> <string>getDefaultPresets:</string> @@ -12099,7 +12234,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>selectDefaultPreset:</string> <string>selectPreset:</string> <string>setDefaultPreset:</string> - <string>setupX264PresetsWidgets:</string> <string>showAboutPanel:</string> <string>showAddPresetPanel:</string> <string>showDebugOutputPanel:</string> @@ -12113,14 +12247,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>startEndSecValueChanged:</string> <string>titlePopUpChanged:</string> <string>twoPassCheckboxChanged:</string> + <string>updateX264Widgets:</string> <string>videoEncoderPopUpChanged:</string> <string>videoFrameRateChanged:</string> <string>videoMatrixChanged:</string> <string>x264PresetsChangedDisplayExpandedOptions:</string> - <string>x264PresetsSetJobVariables:</string> <string>x264PresetsSliderChanged:</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>id</string> <string>id</string> @@ -12181,8 +12315,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>id</string> <string>id</string> <string>id</string> - <string>id</string> - <string>id</string> </object> </object> <object class="NSMutableDictionary" key="actionInfosByName"> @@ -12216,7 +12348,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>customSettingUsed:</string> <string>deleteFactoryPresets:</string> <string>deletePreset:</string> - <string>updateX264Widgets:</string> <string>encodeStartStopPopUpChanged:</string> <string>formatPopUpChanged:</string> <string>getDefaultPresets:</string> @@ -12230,7 +12361,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>selectDefaultPreset:</string> <string>selectPreset:</string> <string>setDefaultPreset:</string> - <string>setupX264PresetsWidgets:</string> <string>showAboutPanel:</string> <string>showAddPresetPanel:</string> <string>showDebugOutputPanel:</string> @@ -12244,14 +12374,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>startEndSecValueChanged:</string> <string>titlePopUpChanged:</string> <string>twoPassCheckboxChanged:</string> + <string>updateX264Widgets:</string> <string>videoEncoderPopUpChanged:</string> <string>videoFrameRateChanged:</string> <string>videoMatrixChanged:</string> <string>x264PresetsChangedDisplayExpandedOptions:</string> - <string>x264PresetsSetJobVariables:</string> <string>x264PresetsSliderChanged:</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="IBActionInfo"> <string key="name">Cancel:</string> @@ -12362,10 +12492,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="candidateClassName">id</string> </object> <object class="IBActionInfo"> - <string key="name">updateX264Widgets:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> <string key="name">encodeStartStopPopUpChanged:</string> <string key="candidateClassName">id</string> </object> @@ -12418,10 +12544,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="candidateClassName">id</string> </object> <object class="IBActionInfo"> - <string key="name">setupX264PresetsWidgets:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> <string key="name">showAboutPanel:</string> <string key="candidateClassName">id</string> </object> @@ -12474,6 +12596,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="candidateClassName">id</string> </object> <object class="IBActionInfo"> + <string key="name">updateX264Widgets:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> <string key="name">videoEncoderPopUpChanged:</string> <string key="candidateClassName">id</string> </object> @@ -12490,10 +12616,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="candidateClassName">id</string> </object> <object class="IBActionInfo"> - <string key="name">x264PresetsSetJobVariables:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo"> <string key="name">x264PresetsSliderChanged:</string> <string key="candidateClassName">id</string> </object> @@ -12552,6 +12674,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>fQueueStatus</string> <string>fRipIndicator</string> <string>fSaveChaptersButton</string> + <string>fScanHorizontalLine</string> <string>fScanIndicator</string> <string>fScanSrcTitleCancelButton</string> <string>fScanSrcTitleNumField</string> @@ -12608,7 +12731,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>fX264TunePopUpLabel</string> <string>fx264UseAdvancedOptionsCheck</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>NSPanel</string> <string>NSBox</string> @@ -12619,7 +12742,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>NSButton</string> <string>NSBox</string> <string>HBAudioController</string> - <string>NSButton</string> + <string>NSPopUpButton</string> <string>NSButton</string> <string>NSTableView</string> <string>NSTableColumn</string> @@ -12659,6 +12782,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>NSTextField</string> <string>NSProgressIndicator</string> <string>NSButton</string> + <string>NSBox</string> <string>NSProgressIndicator</string> <string>NSButton</string> <string>NSTextField</string> @@ -12769,6 +12893,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>fQueueStatus</string> <string>fRipIndicator</string> <string>fSaveChaptersButton</string> + <string>fScanHorizontalLine</string> <string>fScanIndicator</string> <string>fScanSrcTitleCancelButton</string> <string>fScanSrcTitleNumField</string> @@ -12825,7 +12950,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>fX264TunePopUpLabel</string> <string>fx264UseAdvancedOptionsCheck</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="IBToOneOutletInfo"> <string key="name">fAddPresetPanel</string> @@ -12865,7 +12990,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> <object class="IBToOneOutletInfo"> <string key="name">fAudioFallbackPopUp</string> - <string key="candidateClassName">NSButton</string> + <string key="candidateClassName">NSPopUpButton</string> </object> <object class="IBToOneOutletInfo"> <string key="name">fBrowseSrtFileButton</string> @@ -13024,6 +13149,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string key="candidateClassName">NSButton</string> </object> <object class="IBToOneOutletInfo"> + <string key="name">fScanHorizontalLine</string> + <string key="candidateClassName">NSBox</string> + </object> + <object class="IBToOneOutletInfo"> <string key="name">fScanIndicator</string> <string key="candidateClassName">NSProgressIndicator</string> </object> @@ -13314,7 +13443,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>NSRemoveTemplate</string> <string>NSSwitch</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>{128, 128}</string> <string>{15, 15}</string> diff --git a/macosx/English.lproj/PicturePreview.xib b/macosx/English.lproj/PicturePreview.xib index 397307a3f..460057859 100644 --- a/macosx/English.lproj/PicturePreview.xib +++ b/macosx/English.lproj/PicturePreview.xib @@ -2,10 +2,10 @@ <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> <data> <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">11C74</string> - <string key="IBDocument.InterfaceBuilderVersion">1938</string> - <string key="IBDocument.AppKitVersion">1138.23</string> - <string key="IBDocument.HIToolboxVersion">567.00</string> + <string key="IBDocument.SystemVersion">12D61</string> + <string key="IBDocument.InterfaceBuilderVersion">3084</string> + <string key="IBDocument.AppKitVersion">1187.37</string> + <string key="IBDocument.HIToolboxVersion">626.00</string> <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSArray" key="dict.sortedKeys"> @@ -13,32 +13,30 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.QTKitIBPlugin</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>1938</string> - <string>822</string> + <string>3084</string> + <string>2053</string> </object> </object> <object class="NSArray" key="IBDocument.IntegratedClassDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>NSPopUpButton</string> + <string>NSBox</string> <string>NSButton</string> + <string>NSButtonCell</string> + <string>NSCustomObject</string> <string>NSMenu</string> - <string>NSTextFieldCell</string> <string>NSMenuItem</string> - <string>NSButtonCell</string> - <string>NSBox</string> + <string>NSPopUpButton</string> + <string>NSPopUpButtonCell</string> <string>NSProgressIndicator</string> - <string>NSImageView</string> - <string>NSImageCell</string> - <string>QTMovieView</string> <string>NSSlider</string> <string>NSSliderCell</string> - <string>NSCustomObject</string> + <string>NSTextField</string> + <string>NSTextFieldCell</string> <string>NSView</string> <string>NSWindowTemplate</string> - <string>NSTextField</string> - <string>NSPopUpButtonCell</string> + <string>QTMovieView</string> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -76,782 +74,779 @@ <int key="NSvFlags">274</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSBox" id="289177107"> + <object class="QTMovieView" id="48693112"> <reference key="NSNextResponder" ref="49161063"/> - <int key="NSvFlags">18</int> + <int key="NSvFlags">274</int> + <object class="NSMutableSet" key="NSDragTypes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="set.sortedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>Apple URL pasteboard type</string> + <string>CorePasteboardFlavorType 0x6D6F6F76</string> + <string>NSFilenamesPboardType</string> + <string>QTMoviePasteboardType</string> + </object> + </object> + <string key="NSFrameSize">{480, 360}</string> + <reference key="NSSuperview" ref="49161063"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="768906858"/> + <object class="NSColor" key="kCoderFillColor"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA</bytes> + </object> + <boolean value="YES" key="kCoderControllerVisible"/> + <boolean value="YES" key="kCoderPreservesAspectRatio"/> + <nil key="kCoderMovie"/> + <boolean value="NO" key="kCoderEditable"/> + </object> + <object class="NSBox" id="92351498"> + <reference key="NSNextResponder" ref="49161063"/> + <int key="NSvFlags">-2147483611</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSView" id="353606868"> - <reference key="NSNextResponder" ref="289177107"/> + <object class="NSView" id="385854969"> + <reference key="NSNextResponder" ref="92351498"/> <int key="NSvFlags">274</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSImageView" id="844127024"> - <reference key="NSNextResponder" ref="353606868"/> - <int key="NSvFlags">274</int> - <object class="NSMutableSet" key="NSDragTypes"> + <object class="NSButton" id="798240356"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">292</int> + <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="set.sortedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>Apple PDF pasteboard type</string> - <string>Apple PICT pasteboard type</string> - <string>Apple PNG pasteboard type</string> - <string>NSFilenamesPboardType</string> - <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> - <string>NeXT TIFF v4.0 pasteboard type</string> + </object> + <string key="NSFrame">{{17, 11}, {77, 16}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="66510867"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> + </object> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> </object> </object> - <string key="NSFrame">{{-3, -3}, {488, 368}}</string> - <reference key="NSSuperview" ref="353606868"/> - <reference key="NSNextKeyView" ref="48693112"/> <bool key="NSEnabled">YES</bool> - <object class="NSImageCell" key="NSCell" id="955430771"> - <int key="NSCellFlags">130560</int> - <int key="NSCellFlags2">33554432</int> - <int key="NSAlign">0</int> - <int key="NSScale">1</int> - <int key="NSStyle">3</int> - <bool key="NSAnimates">NO</bool> + <object class="NSButtonCell" key="NSCell" id="975305481"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134479872</int> + <string key="NSContents">Live Preview</string> + <object class="NSFont" key="NSSupport" id="22"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">9</double> + <int key="NSfFlags">3614</int> + </object> + <reference key="NSControlView" ref="798240356"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <reference key="NSAlternateImage" ref="22"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> </object> - <bool key="NSEditable">YES</bool> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> - <object class="QTMovieView" id="48693112"> - <reference key="NSNextResponder" ref="353606868"/> - <int key="NSvFlags">274</int> - <object class="NSMutableSet" key="NSDragTypes"> + <object class="NSButton" id="141370142"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">289</int> + <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="set.sortedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>Apple URL pasteboard type</string> - <string>CorePasteboardFlavorType 0x6D6F6F76</string> - <string>NSFilenamesPboardType</string> - <string>QTMoviePasteboardType</string> + </object> + <string key="NSFrame">{{370, 11}, {59, 16}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="700607930"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> + </object> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> </object> </object> - <string key="NSFrameSize">{482, 362}</string> - <reference key="NSSuperview" ref="353606868"/> - <reference key="NSNextKeyView" ref="768906858"/> - <object class="NSColor" key="kCoderFillColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA</bytes> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="606007744"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134479872</int> + <string key="NSContents">Settings</string> + <reference key="NSSupport" ref="22"/> + <reference key="NSControlView" ref="141370142"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <reference key="NSAlternateImage" ref="22"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> </object> - <boolean value="YES" key="kCoderControllerVisible"/> - <boolean value="YES" key="kCoderPreservesAspectRatio"/> - <nil key="kCoderMovie"/> - <boolean value="NO" key="kCoderEditable"/> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> - <object class="NSBox" id="92351498"> - <reference key="NSNextResponder" ref="353606868"/> - <int key="NSvFlags">-2147483611</int> + <object class="NSButton" id="81685190"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">289</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSView" id="385854969"> - <reference key="NSNextResponder" ref="92351498"/> - <int key="NSvFlags">274</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSButton" id="798240356"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 9}, {77, 16}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="66510867"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="975305481"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134479872</int> - <string key="NSContents">Live Preview</string> - <object class="NSFont" key="NSSupport" id="22"> - <string key="NSName">LucidaGrande</string> - <double key="NSSize">9</double> - <int key="NSfFlags">3614</int> - </object> - <reference key="NSControlView" ref="798240356"/> - <int key="NSButtonFlags">-2038284033</int> - <int key="NSButtonFlags2">129</int> - <reference key="NSAlternateImage" ref="22"/> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> - </object> - <object class="NSButton" id="141370142"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">289</int> - <string key="NSFrame">{{357, 10}, {59, 16}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="700607930"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="606007744"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134479872</int> - <string key="NSContents">Settings</string> - <reference key="NSSupport" ref="22"/> - <reference key="NSControlView" ref="141370142"/> - <int key="NSButtonFlags">-2038284033</int> - <int key="NSButtonFlags2">129</int> - <reference key="NSAlternateImage" ref="22"/> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> - </object> - <object class="NSButton" id="81685190"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">289</int> - <string key="NSFrame">{{259, 10}, {92, 16}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="141370142"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="847033897"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134479872</int> - <string key="NSContents">Scale To Screen</string> - <reference key="NSSupport" ref="22"/> - <reference key="NSControlView" ref="81685190"/> - <int key="NSButtonFlags">-2038284033</int> - <int key="NSButtonFlags2">129</int> - <object class="NSFont" key="NSAlternateImage" id="354866114"> - <string key="NSName">LucidaGrande</string> - <double key="NSSize">9</double> - <int key="NSfFlags">16</int> - </object> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> - </object> - <object class="NSTextField" id="66510867"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">289</int> - <string key="NSFrame">{{101, 14}, {75, 11}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="598619000"/> - <bool key="NSEnabled">YES</bool> - <object class="NSTextFieldCell" key="NSCell" id="567286013"> - <int key="NSCellFlags">68288064</int> - <int key="NSCellFlags2">71566336</int> - <string key="NSContents">Duration (sec):</string> - <object class="NSFont" key="NSSupport" id="811969608"> - <string key="NSName">LucidaGrande-Bold</string> - <double key="NSSize">9</double> - <int key="NSfFlags">16</int> - </object> - <reference key="NSControlView" ref="66510867"/> - <object class="NSColor" key="NSBackgroundColor" id="407686733"> - <int key="NSColorSpace">6</int> - <string key="NSCatalogName">System</string> - <string key="NSColorName">controlColor</string> - <object class="NSColor" key="NSColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> - </object> - </object> - <object class="NSColor" key="NSTextColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC44MDAwMDAwMSAwLjgwMDAwMDAxIDAuODAwMDAwMDEAA</bytes> - </object> - </object> - </object> - <object class="NSPopUpButton" id="598619000"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">289</int> - <string key="NSFrame">{{184, 11}, {58, 15}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="81685190"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSPopUpButtonCell" key="NSCell" id="953108737"> - <int key="NSCellFlags">-2076049856</int> - <int key="NSCellFlags2">264192</int> - <reference key="NSSupport" ref="22"/> - <reference key="NSControlView" ref="598619000"/> - <int key="NSButtonFlags">109199615</int> - <int key="NSButtonFlags2">1</int> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">400</int> - <int key="NSPeriodicInterval">75</int> - <object class="NSMenuItem" key="NSMenuItem" id="372655630"> - <reference key="NSMenu" ref="501672847"/> - <string key="NSTitle">Item 1</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <int key="NSState">1</int> - <object class="NSCustomResource" key="NSOnImage" id="858043985"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">NSMenuCheckmark</string> - </object> - <object class="NSCustomResource" key="NSMixedImage" id="700487240"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">NSMenuMixedState</string> - </object> - <string key="NSAction">_popUpItemAction:</string> - <reference key="NSTarget" ref="953108737"/> - </object> - <bool key="NSMenuItemRespectAlignment">YES</bool> - <object class="NSMenu" key="NSMenu" id="501672847"> - <string key="NSTitle">OtherViews</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="372655630"/> - <object class="NSMenuItem" id="607756368"> - <reference key="NSMenu" ref="501672847"/> - <string key="NSTitle">Item 2</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="858043985"/> - <reference key="NSMixedImage" ref="700487240"/> - <string key="NSAction">_popUpItemAction:</string> - <reference key="NSTarget" ref="953108737"/> - </object> - <object class="NSMenuItem" id="272743761"> - <reference key="NSMenu" ref="501672847"/> - <string key="NSTitle">Item 3</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="858043985"/> - <reference key="NSMixedImage" ref="700487240"/> - <string key="NSAction">_popUpItemAction:</string> - <reference key="NSTarget" ref="953108737"/> - </object> - </object> - </object> - <int key="NSPreferredEdge">1</int> - <bool key="NSUsesItemFromMenu">YES</bool> - <bool key="NSAltersState">YES</bool> - <int key="NSArrowPosition">2</int> - </object> - </object> - <object class="NSSlider" id="396925210"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">290</int> - <string key="NSFrame">{{18, 39}, {402, 16}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="798240356"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSSliderCell" key="NSCell" id="639767004"> - <int key="NSCellFlags">67501824</int> - <int key="NSCellFlags2">262144</int> - <string key="NSContents"/> - <reference key="NSSupport" ref="22"/> - <reference key="NSControlView" ref="396925210"/> - <double key="NSMaxValue">9</double> - <double key="NSMinValue">0.0</double> - <double key="NSValue">0.0</double> - <double key="NSAltIncValue">0.0</double> - <int key="NSNumberOfTickMarks">10</int> - <int key="NSTickMarkPosition">1</int> - <bool key="NSAllowsTickMarkValuesOnly">YES</bool> - <bool key="NSVertical">NO</bool> - </object> - </object> - <object class="NSTextField" id="628196212"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">290</int> - <string key="NSFrame">{{15, 55}, {408, 20}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="396925210"/> - <bool key="NSEnabled">YES</bool> - <object class="NSTextFieldCell" key="NSCell" id="921881842"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">4325376</int> - <string key="NSContents"/> - <object class="NSFont" key="NSSupport" id="476446081"> - <string key="NSName">LucidaGrande-Bold</string> - <double key="NSSize">11</double> - <int key="NSfFlags">16</int> - </object> - <reference key="NSControlView" ref="628196212"/> - <bool key="NSDrawsBackground">YES</bool> - <reference key="NSBackgroundColor" ref="407686733"/> - <object class="NSColor" key="NSTextColor" id="978544139"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEAA</bytes> - </object> - </object> - </object> - <object class="NSTextField" id="245200984"> - <reference key="NSNextResponder" ref="385854969"/> - <int key="NSvFlags">290</int> - <string key="NSFrame">{{16, 80}, {408, 12}}</string> - <reference key="NSSuperview" ref="385854969"/> - <reference key="NSNextKeyView" ref="628196212"/> - <bool key="NSEnabled">YES</bool> - <object class="NSTextFieldCell" key="NSCell" id="1032360651"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">4456448</int> - <string key="NSContents"/> - <reference key="NSSupport" ref="811969608"/> - <reference key="NSControlView" ref="245200984"/> - <bool key="NSDrawsBackground">YES</bool> - <reference key="NSBackgroundColor" ref="407686733"/> - <reference key="NSTextColor" ref="978544139"/> - </object> - </object> + </object> + <string key="NSFrame">{{272, 11}, {92, 16}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="141370142"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> </object> - <string key="NSFrame">{{1, 1}, {438, 97}}</string> - <reference key="NSSuperview" ref="92351498"/> - <reference key="NSNextKeyView" ref="245200984"/> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> </object> </object> - <string key="NSFrame">{{21, 121}, {440, 99}}</string> - <reference key="NSSuperview" ref="353606868"/> - <reference key="NSNextKeyView" ref="385854969"/> - <string key="NSOffsets">{0, 0}</string> - <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">0</int> - <string key="NSContents">Picture Controls</string> - <object class="NSFont" key="NSSupport" id="26"> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="847033897"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134479872</int> + <string key="NSContents">Scale To Screen</string> + <reference key="NSSupport" ref="22"/> + <reference key="NSControlView" ref="81685190"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <object class="NSFont" key="NSAlternateImage" id="354866114"> <string key="NSName">LucidaGrande</string> - <double key="NSSize">11</double> - <int key="NSfFlags">3100</int> + <double key="NSSize">9</double> + <int key="NSfFlags">16</int> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="66510867"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{108, 14}, {75, 11}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="598619000"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="567286013"> + <int key="NSCellFlags">68157504</int> + <int key="NSCellFlags2">71566336</int> + <string key="NSContents">Duration (sec):</string> + <object class="NSFont" key="NSSupport" id="811969608"> + <string key="NSName">LucidaGrande-Bold</string> + <double key="NSSize">9</double> + <int key="NSfFlags">16</int> </object> - <object class="NSColor" key="NSBackgroundColor" id="384686844"> + <reference key="NSControlView" ref="66510867"/> + <object class="NSColor" key="NSBackgroundColor" id="407686733"> <int key="NSColorSpace">6</int> <string key="NSCatalogName">System</string> - <string key="NSColorName">textBackgroundColor</string> + <string key="NSColorName">controlColor</string> <object class="NSColor" key="NSColor"> <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> </object> </object> - <object class="NSColor" key="NSTextColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> + <object class="NSColor" key="NSTextColor" id="978544139"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MSAxIDEAA</bytes> </object> </object> - <reference key="NSContentView" ref="385854969"/> - <int key="NSBorderType">1</int> - <int key="NSBoxType">4</int> - <int key="NSTitlePosition">0</int> - <bool key="NSTransparent">NO</bool> - <double key="NSCornerRadius2">12</double> - <object class="NSColor" key="NSBorderColor2"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEgMC41AA</bytes> - </object> - <object class="NSColor" key="NSFillColor2"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MCAwIDAgMC42AA</bytes> - </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> - <object class="NSBox" id="700607930"> - <reference key="NSNextResponder" ref="353606868"/> - <int key="NSvFlags">-2147483611</int> - <object class="NSMutableArray" key="NSSubviews"> + <object class="NSPopUpButton" id="598619000"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{187, 12}, {58, 15}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="81685190"/> + <object class="NSArray" key="NSViewContentFilters"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSView" id="1068222891"> - <reference key="NSNextResponder" ref="700607930"/> - <int key="NSvFlags">274</int> - <object class="NSMutableArray" key="NSSubviews"> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> + </object> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> + </object> + </object> + <bool key="NSEnabled">YES</bool> + <object class="NSPopUpButtonCell" key="NSCell" id="953108737"> + <int key="NSCellFlags">-2076180416</int> + <int key="NSCellFlags2">264192</int> + <reference key="NSSupport" ref="22"/> + <reference key="NSControlView" ref="598619000"/> + <int key="NSButtonFlags">109199360</int> + <int key="NSButtonFlags2">1</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + <object class="NSMenuItem" key="NSMenuItem" id="372655630"> + <reference key="NSMenu" ref="501672847"/> + <string key="NSTitle">Item 1</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <int key="NSState">1</int> + <object class="NSCustomResource" key="NSOnImage" id="858043985"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="700487240"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="953108737"/> + </object> + <bool key="NSMenuItemRespectAlignment">YES</bool> + <object class="NSMenu" key="NSMenu" id="501672847"> + <string key="NSTitle">OtherViews</string> + <object class="NSMutableArray" key="NSMenuItems"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSSlider" id="886140787"> - <reference key="NSNextResponder" ref="1068222891"/> - <int key="NSvFlags">290</int> - <string key="NSFrame">{{18, 27}, {407, 21}}</string> - <reference key="NSSuperview" ref="1068222891"/> - <reference key="NSNextKeyView" ref="964331174"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSSliderCell" key="NSCell" id="493667684"> - <int key="NSCellFlags">67501824</int> - <int key="NSCellFlags2">0</int> - <string key="NSContents"/> - <reference key="NSControlView" ref="886140787"/> - <double key="NSMaxValue">100</double> - <double key="NSMinValue">0.0</double> - <double key="NSValue">0.0</double> - <double key="NSAltIncValue">0.0</double> - <int key="NSNumberOfTickMarks">0</int> - <int key="NSTickMarkPosition">1</int> - <bool key="NSAllowsTickMarkValuesOnly">NO</bool> - <bool key="NSVertical">NO</bool> - </object> - </object> - <object class="NSButton" id="102183813"> - <reference key="NSNextResponder" ref="1068222891"/> - <int key="NSvFlags">268</int> - <string key="NSFrame">{{200, 53}, {39, 25}}</string> - <reference key="NSSuperview" ref="1068222891"/> - <reference key="NSNextKeyView" ref="894608246"/> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="19809002"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134217728</int> - <string key="NSContents"/> - <object class="NSFont" key="NSSupport" id="353643025"> - <string key="NSName">LucidaGrande</string> - <double key="NSSize">13</double> - <int key="NSfFlags">1044</int> - </object> - <reference key="NSControlView" ref="102183813"/> - <int key="NSButtonFlags">-2038169345</int> - <int key="NSButtonFlags2">134</int> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> + <reference ref="372655630"/> + <object class="NSMenuItem" id="607756368"> + <reference key="NSMenu" ref="501672847"/> + <string key="NSTitle">Item 2</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="858043985"/> + <reference key="NSMixedImage" ref="700487240"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="953108737"/> </object> - <object class="NSButton" id="897614796"> - <reference key="NSNextResponder" ref="1068222891"/> - <int key="NSvFlags">268</int> - <string key="NSFrame">{{171, 53}, {30, 25}}</string> - <reference key="NSSuperview" ref="1068222891"/> - <reference key="NSNextKeyView" ref="102183813"/> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="913339095"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134217728</int> - <string key="NSContents">|<</string> - <reference key="NSSupport" ref="353643025"/> - <reference key="NSControlView" ref="897614796"/> - <int key="NSButtonFlags">-2038038273</int> - <int key="NSButtonFlags2">134</int> - <object class="NSFont" key="NSAlternateImage"> - <string key="NSName">LucidaGrande</string> - <double key="NSSize">13</double> - <int key="NSfFlags">16</int> - </object> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> - </object> - <object class="NSButton" id="894608246"> - <reference key="NSNextResponder" ref="1068222891"/> - <int key="NSvFlags">268</int> - <string key="NSFrame">{{238, 53}, {32, 25}}</string> - <reference key="NSSuperview" ref="1068222891"/> - <reference key="NSNextKeyView" ref="630042886"/> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="117507013"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134479872</int> - <string key="NSContents">>|</string> - <reference key="NSSupport" ref="22"/> - <reference key="NSControlView" ref="894608246"/> - <int key="NSButtonFlags">-2038169345</int> - <int key="NSButtonFlags2">134</int> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> - </object> - <object class="NSButton" id="630042886"> - <reference key="NSNextResponder" ref="1068222891"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{331, 56}, {77, 16}}</string> - <reference key="NSSuperview" ref="1068222891"/> - <reference key="NSNextKeyView" ref="886140787"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="999505395"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134479872</int> - <string key="NSContents">Still Previews</string> - <reference key="NSSupport" ref="22"/> - <reference key="NSControlView" ref="630042886"/> - <int key="NSButtonFlags">-2038284033</int> - <int key="NSButtonFlags2">129</int> - <reference key="NSAlternateImage" ref="22"/> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> - </object> - <object class="NSTextField" id="964331174"> - <reference key="NSNextResponder" ref="1068222891"/> - <int key="NSvFlags">290</int> - <string key="NSFrame">{{18, 10}, {399, 12}}</string> - <reference key="NSSuperview" ref="1068222891"/> - <reference key="NSNextKeyView"/> - <bool key="NSEnabled">YES</bool> - <object class="NSTextFieldCell" key="NSCell" id="113790059"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">4456448</int> - <string key="NSContents"/> - <reference key="NSSupport" ref="811969608"/> - <reference key="NSControlView" ref="964331174"/> - <bool key="NSDrawsBackground">YES</bool> - <reference key="NSBackgroundColor" ref="407686733"/> - <reference key="NSTextColor" ref="978544139"/> - </object> + <object class="NSMenuItem" id="272743761"> + <reference key="NSMenu" ref="501672847"/> + <string key="NSTitle">Item 3</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="858043985"/> + <reference key="NSMixedImage" ref="700487240"/> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="953108737"/> </object> </object> - <string key="NSFrame">{{1, 1}, {438, 97}}</string> - <reference key="NSSuperview" ref="700607930"/> - <reference key="NSNextKeyView" ref="897614796"/> + </object> + <int key="NSPreferredEdge">1</int> + <bool key="NSUsesItemFromMenu">YES</bool> + <bool key="NSAltersState">YES</bool> + <int key="NSArrowPosition">2</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSSlider" id="396925210"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">290</int> + <string key="NSFrame">{{18, 39}, {410, 16}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="798240356"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> + </object> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> + </object> + </object> + <bool key="NSEnabled">YES</bool> + <object class="NSSliderCell" key="NSCell" id="639767004"> + <int key="NSCellFlags">67371264</int> + <int key="NSCellFlags2">262144</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="22"/> + <reference key="NSControlView" ref="396925210"/> + <double key="NSMaxValue">9</double> + <double key="NSMinValue">0.0</double> + <double key="NSValue">0.0</double> + <double key="NSAltIncValue">0.0</double> + <int key="NSNumberOfTickMarks">10</int> + <int key="NSTickMarkPosition">1</int> + <bool key="NSAllowsTickMarkValuesOnly">YES</bool> + <bool key="NSVertical">NO</bool> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="628196212"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">290</int> + <string key="NSFrame">{{15, 55}, {420, 20}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="396925210"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="921881842"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">4325376</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport" id="476446081"> + <string key="NSName">LucidaGrande-Bold</string> + <double key="NSSize">11</double> + <int key="NSfFlags">16</int> + </object> + <reference key="NSControlView" ref="628196212"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="407686733"/> + <reference key="NSTextColor" ref="978544139"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="245200984"> + <reference key="NSNextResponder" ref="385854969"/> + <int key="NSvFlags">290</int> + <string key="NSFrame">{{15, 77}, {416, 12}}</string> + <reference key="NSSuperview" ref="385854969"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="628196212"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="1032360651"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">4456448</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="811969608"/> + <reference key="NSControlView" ref="245200984"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="407686733"/> + <reference key="NSTextColor" ref="978544139"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + </object> + <string key="NSFrame">{{2, 2}, {446, 96}}</string> + <reference key="NSSuperview" ref="92351498"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="245200984"/> + </object> + </object> + <string key="NSFrame">{{15, 132}, {450, 100}}</string> + <reference key="NSSuperview" ref="49161063"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="385854969"/> + <string key="NSOffsets">{0, 0}</string> + <object class="NSTextFieldCell" key="NSTitleCell"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Picture Controls</string> + <object class="NSFont" key="NSSupport" id="26"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">11</double> + <int key="NSfFlags">3100</int> + </object> + <object class="NSColor" key="NSBackgroundColor" id="384686844"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> + </object> + </object> + <reference key="NSContentView" ref="385854969"/> + <int key="NSBorderType">1</int> + <int key="NSBoxType">4</int> + <int key="NSTitlePosition">0</int> + <bool key="NSTransparent">NO</bool> + <real value="2" key="NSBorderWidth2"/> + <double key="NSCornerRadius2">12</double> + <object class="NSColor" key="NSBorderColor2"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MSAxIDEgMC44AA</bytes> + </object> + <object class="NSColor" key="NSFillColor2"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MCAwIDAgMC42AA</bytes> + </object> + </object> + <object class="NSBox" id="700607930"> + <reference key="NSNextResponder" ref="49161063"/> + <int key="NSvFlags">-2147483611</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSView" id="1068222891"> + <reference key="NSNextResponder" ref="700607930"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSSlider" id="886140787"> + <reference key="NSNextResponder" ref="1068222891"/> + <int key="NSvFlags">290</int> + <string key="NSFrame">{{16, 16}, {355, 21}}</string> + <reference key="NSSuperview" ref="1068222891"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="964331174"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> + </object> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> </object> </object> - <string key="NSFrame">{{21, 16}, {440, 99}}</string> - <reference key="NSSuperview" ref="353606868"/> - <reference key="NSNextKeyView" ref="1068222891"/> - <string key="NSOffsets">{0, 0}</string> - <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <bool key="NSEnabled">YES</bool> + <object class="NSSliderCell" key="NSCell" id="493667684"> + <int key="NSCellFlags">67371264</int> <int key="NSCellFlags2">0</int> - <string key="NSContents">Playback Controls</string> - <reference key="NSSupport" ref="26"/> - <reference key="NSBackgroundColor" ref="384686844"/> - <object class="NSColor" key="NSTextColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> + <string key="NSContents"/> + <reference key="NSControlView" ref="886140787"/> + <double key="NSMaxValue">100</double> + <double key="NSMinValue">0.0</double> + <double key="NSValue">0.0</double> + <double key="NSAltIncValue">0.0</double> + <int key="NSNumberOfTickMarks">0</int> + <int key="NSTickMarkPosition">1</int> + <bool key="NSAllowsTickMarkValuesOnly">NO</bool> + <bool key="NSVertical">NO</bool> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSButton" id="102183813"> + <reference key="NSNextResponder" ref="1068222891"/> + <int key="NSvFlags">268</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <string key="NSFrame">{{205, 43}, {36, 36}}</string> + <reference key="NSSuperview" ref="1068222891"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="894608246"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="19809002"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport" id="353643025"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="102183813"/> + <int key="NSButtonFlags">-931921920</int> + <int key="NSButtonFlags2">134</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">play-p</string> + </object> + <object class="NSCustomResource" key="NSAlternateImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">pause-p</string> </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> </object> - <reference key="NSContentView" ref="1068222891"/> - <int key="NSBorderType">1</int> - <int key="NSBoxType">4</int> - <int key="NSTitlePosition">0</int> - <bool key="NSTransparent">NO</bool> - <double key="NSCornerRadius2">12</double> - <object class="NSColor" key="NSBorderColor2"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEgMC41AA</bytes> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSButton" id="897614796"> + <reference key="NSNextResponder" ref="1068222891"/> + <int key="NSvFlags">268</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> </object> - <object class="NSColor" key="NSFillColor2"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MCAwIDAgMC42AA</bytes> + <string key="NSFrame">{{163, 48}, {32, 26}}</string> + <reference key="NSSuperview" ref="1068222891"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="102183813"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="913339095"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="353643025"/> + <reference key="NSControlView" ref="897614796"/> + <int key="NSButtonFlags">-2041839616</int> + <int key="NSButtonFlags2">134</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">prev-p</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> - <object class="NSBox" id="768906858"> - <reference key="NSNextResponder" ref="353606868"/> - <int key="NSvFlags">-2147483611</int> + <object class="NSButton" id="894608246"> + <reference key="NSNextResponder" ref="1068222891"/> + <int key="NSvFlags">268</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSView" id="1067699710"> - <reference key="NSNextResponder" ref="768906858"/> - <int key="NSvFlags">274</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSProgressIndicator" id="196868285"> - <reference key="NSNextResponder" ref="1067699710"/> - <int key="NSvFlags">-2147482368</int> - <object class="NSPSMatrix" key="NSDrawMatrix"/> - <string key="NSFrame">{{23, 26}, {336, 12}}</string> - <reference key="NSSuperview" ref="1067699710"/> - <reference key="NSNextKeyView" ref="569473100"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <int key="NSpiFlags">16650</int> - <double key="NSMinValue">20</double> - <double key="NSMaxValue">100</double> - </object> - <object class="NSButton" id="569473100"> - <reference key="NSNextResponder" ref="1067699710"/> - <int key="NSvFlags">265</int> - <string key="NSFrame">{{366, 24}, {58, 16}}</string> - <reference key="NSSuperview" ref="1067699710"/> - <reference key="NSNextKeyView" ref="92351498"/> - <object class="NSArray" key="NSViewContentFilters"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="CIColorMonochrome"> - <object class="CIColor" key="CI_inputColor"> - <float key="red">0.70196080207824707</float> - <float key="green">0.70196080207824707</float> - <float key="blue">0.70196080207824707</float> - <float key="alpha">1</float> - </object> - <integer value="1" key="CI_inputIntensity"/> - <bool key="CIEnabled">YES</bool> - </object> - </object> - <bool key="NSEnabled">YES</bool> - <object class="NSButtonCell" key="NSCell" id="908165435"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">134479872</int> - <string key="NSContents">Cancel</string> - <reference key="NSSupport" ref="22"/> - <reference key="NSControlView" ref="569473100"/> - <int key="NSButtonFlags">-2038284033</int> - <int key="NSButtonFlags2">129</int> - <reference key="NSAlternateImage" ref="354866114"/> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">200</int> - <int key="NSPeriodicInterval">25</int> - </object> - </object> - <object class="NSTextField" id="986015194"> - <reference key="NSNextResponder" ref="1067699710"/> - <int key="NSvFlags">256</int> - <string key="NSFrame">{{21, 59}, {394, 14}}</string> - <reference key="NSSuperview" ref="1067699710"/> - <reference key="NSNextKeyView" ref="196868285"/> - <bool key="NSEnabled">YES</bool> - <object class="NSTextFieldCell" key="NSCell" id="304208899"> - <int key="NSCellFlags">68288064</int> - <int key="NSCellFlags2">4326400</int> - <string key="NSContents">Preparing Preview</string> - <reference key="NSSupport" ref="476446081"/> - <reference key="NSControlView" ref="986015194"/> - <object class="NSColor" key="NSBackgroundColor"> - <int key="NSColorSpace">2</int> - <bytes key="NSRGB">MC45MDE5NjA4NSAwLjkwMTk2MDg1IDAuOTAxOTYwODUgMAA</bytes> - </object> - <reference key="NSTextColor" ref="978544139"/> - </object> - </object> + </object> + <string key="NSFrame">{{251, 48}, {32, 26}}</string> + <reference key="NSSuperview" ref="1068222891"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="630042886"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="117507013"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134479872</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="22"/> + <reference key="NSControlView" ref="894608246"/> + <int key="NSButtonFlags">-2042363904</int> + <int key="NSButtonFlags2">134</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">next-p</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSButton" id="630042886"> + <reference key="NSNextResponder" ref="1068222891"/> + <int key="NSvFlags">292</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <string key="NSFrame">{{348, 53}, {81, 16}}</string> + <reference key="NSSuperview" ref="1068222891"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="886140787"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> </object> - <string key="NSFrame">{{1, 1}, {438, 98}}</string> - <reference key="NSSuperview" ref="768906858"/> - <reference key="NSNextKeyView" ref="986015194"/> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> </object> </object> - <string key="NSFrame">{{21, 233}, {440, 100}}</string> - <reference key="NSSuperview" ref="353606868"/> - <reference key="NSNextKeyView" ref="1067699710"/> - <string key="NSOffsets">{0, 0}</string> - <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">0</int> - <string key="NSContents">Encoding Controls</string> - <reference key="NSSupport" ref="26"/> - <reference key="NSBackgroundColor" ref="384686844"/> - <object class="NSColor" key="NSTextColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="999505395"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134479872</int> + <string key="NSContents">Still Previews</string> + <reference key="NSSupport" ref="22"/> + <reference key="NSControlView" ref="630042886"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <reference key="NSAlternateImage" ref="22"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="964331174"> + <reference key="NSNextResponder" ref="1068222891"/> + <int key="NSvFlags">290</int> + <string key="NSFrame">{{364, 19}, {67, 14}}</string> + <reference key="NSSuperview" ref="1068222891"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="113790059"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">71565312</int> + <string key="NSContents">00:00:00</string> + <reference key="NSSupport" ref="476446081"/> + <reference key="NSControlView" ref="964331174"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="407686733"/> + <reference key="NSTextColor" ref="978544139"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + </object> + <string key="NSFrame">{{2, 2}, {446, 96}}</string> + <reference key="NSSuperview" ref="700607930"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="897614796"/> + </object> + </object> + <string key="NSFrame">{{15, 30}, {450, 100}}</string> + <reference key="NSSuperview" ref="49161063"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="1068222891"/> + <string key="NSOffsets">{0, 0}</string> + <object class="NSTextFieldCell" key="NSTitleCell"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Playback Controls</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSBackgroundColor" ref="384686844"/> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> + </object> + </object> + <reference key="NSContentView" ref="1068222891"/> + <int key="NSBorderType">1</int> + <int key="NSBoxType">4</int> + <int key="NSTitlePosition">0</int> + <bool key="NSTransparent">NO</bool> + <real value="2" key="NSBorderWidth2"/> + <double key="NSCornerRadius2">12</double> + <object class="NSColor" key="NSBorderColor2"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MSAxIDEgMC44AA</bytes> + </object> + <object class="NSColor" key="NSFillColor2"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MCAwIDAgMC42AA</bytes> + </object> + </object> + <object class="NSBox" id="768906858"> + <reference key="NSNextResponder" ref="49161063"/> + <int key="NSvFlags">-2147483611</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSView" id="1067699710"> + <reference key="NSNextResponder" ref="768906858"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSProgressIndicator" id="196868285"> + <reference key="NSNextResponder" ref="1067699710"/> + <int key="NSvFlags">1280</int> + <string key="NSFrame">{{18, 26}, {346, 12}}</string> + <reference key="NSSuperview" ref="1067699710"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="569473100"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> + </object> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> + </object> + </object> + <int key="NSpiFlags">16650</int> + <double key="NSMaxValue">100</double> + </object> + <object class="NSButton" id="569473100"> + <reference key="NSNextResponder" ref="1067699710"/> + <int key="NSvFlags">265</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <string key="NSFrame">{{371, 24}, {58, 16}}</string> + <reference key="NSSuperview" ref="1067699710"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="92351498"/> + <object class="NSArray" key="NSViewContentFilters"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="CIColorMonochrome"> + <object class="CIColor" key="CI_inputColor"> + <float key="red">0.70196080207824707</float> + <float key="green">0.70196080207824707</float> + <float key="blue">0.70196080207824707</float> + <float key="alpha">1</float> + </object> + <integer value="1" key="CI_inputIntensity"/> + <bool key="CIEnabled">YES</bool> </object> </object> - <reference key="NSContentView" ref="1067699710"/> - <int key="NSBorderType">1</int> - <int key="NSBoxType">4</int> - <int key="NSTitlePosition">0</int> - <bool key="NSTransparent">NO</bool> - <double key="NSCornerRadius2">11</double> - <object class="NSColor" key="NSBorderColor2"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MSAxIDEgMC41AA</bytes> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="908165435"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134479872</int> + <string key="NSContents">Cancel</string> + <reference key="NSSupport" ref="22"/> + <reference key="NSControlView" ref="569473100"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <reference key="NSAlternateImage" ref="354866114"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> </object> - <object class="NSColor" key="NSFillColor2"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MCAwIDAgMC42AA</bytes> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="986015194"> + <reference key="NSNextResponder" ref="1067699710"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{15, 59}, {406, 14}}</string> + <reference key="NSSuperview" ref="1067699710"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="196868285"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="304208899"> + <int key="NSCellFlags">68157504</int> + <int key="NSCellFlags2">4326400</int> + <string key="NSContents">Preparing Preview</string> + <reference key="NSSupport" ref="476446081"/> + <reference key="NSControlView" ref="986015194"/> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">2</int> + <bytes key="NSRGB">MC45MDE5NjA4NSAwLjkwMTk2MDg1IDAuOTAxOTYwODUgMAA</bytes> + </object> + <reference key="NSTextColor" ref="978544139"/> </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> </object> </object> - <string key="NSFrameSize">{480, 360}</string> - <reference key="NSSuperview" ref="289177107"/> - <reference key="NSNextKeyView" ref="844127024"/> + <string key="NSFrame">{{2, 2}, {446, 96}}</string> + <reference key="NSSuperview" ref="768906858"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="986015194"/> </object> </object> - <string key="NSFrameSize">{480, 360}</string> + <string key="NSFrame">{{15, 235}, {450, 100}}</string> <reference key="NSSuperview" ref="49161063"/> - <reference key="NSNextKeyView" ref="353606868"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="1067699710"/> <string key="NSOffsets">{0, 0}</string> <object class="NSTextFieldCell" key="NSTitleCell"> - <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags">67108864</int> <int key="NSCellFlags2">0</int> - <string key="NSContents">Box</string> + <string key="NSContents">Encoding Controls</string> <reference key="NSSupport" ref="26"/> <reference key="NSBackgroundColor" ref="384686844"/> <object class="NSColor" key="NSTextColor"> @@ -859,27 +854,29 @@ <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> </object> </object> - <reference key="NSContentView" ref="353606868"/> + <reference key="NSContentView" ref="1067699710"/> <int key="NSBorderType">1</int> <int key="NSBoxType">4</int> <int key="NSTitlePosition">0</int> <bool key="NSTransparent">NO</bool> - <real value="0.0" key="NSBorderWidth2"/> + <real value="2" key="NSBorderWidth2"/> + <double key="NSCornerRadius2">12</double> <object class="NSColor" key="NSBorderColor2"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MCAwLjQ0AA</bytes> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MSAxIDEgMC44AA</bytes> </object> <object class="NSColor" key="NSFillColor2"> <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MC43MDE5NjA4IDAuNzAxOTYwOCAwLjcwMTk2MDgAA</bytes> + <bytes key="NSRGB">MCAwIDAgMC42AA</bytes> </object> </object> </object> <string key="NSFrameSize">{480, 360}</string> <reference key="NSSuperview"/> - <reference key="NSNextKeyView" ref="289177107"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="48693112"/> </object> - <string key="NSScreenRect">{{0, 0}, {2560, 1578}}</string> + <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string> <string key="NSMaxSize">{10000000000000, 10000000000000}</string> <bool key="NSWindowIsRestorable">YES</bool> </object> @@ -889,67 +886,59 @@ <bool key="EncodedWithXMLCoder">YES</bool> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fInfoField</string> - <reference key="source" ref="355312334"/> - <reference key="destination" ref="628196212"/> - </object> - <int key="connectionID">73</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fPictureView</string> + <string key="label">window</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="844127024"/> + <reference key="destination" ref="616825745"/> </object> - <int key="connectionID">181</int> + <int key="connectionID">184</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">window</string> + <string key="label">fCreatePreviewMovieButton</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="616825745"/> + <reference key="destination" ref="798240356"/> </object> - <int key="connectionID">184</int> + <int key="connectionID">217</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fMovieView</string> + <string key="label">fscaleInfoField</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="48693112"/> + <reference key="destination" ref="245200984"/> </object> - <int key="connectionID">208</int> + <int key="connectionID">282</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fPictureSlider</string> + <string key="label">fPreviewMovieLengthPopUp</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="396925210"/> + <reference key="destination" ref="598619000"/> </object> - <int key="connectionID">211</int> + <int key="connectionID">232</int> </object> <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> - <string key="label">pictureSliderChanged:</string> + <string key="label">previewDurationPopUpChanged:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="396925210"/> + <reference key="destination" ref="598619000"/> </object> - <int key="connectionID">212</int> + <int key="connectionID">233</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fMovieCreationProgressIndicator</string> + <string key="label">fPictureControlBox</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="196868285"/> + <reference key="destination" ref="92351498"/> </object> - <int key="connectionID">214</int> + <int key="connectionID">254</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fCreatePreviewMovieButton</string> + <object class="IBActionConnection" key="connection"> + <string key="label">pictureSliderChanged:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="798240356"/> + <reference key="destination" ref="396925210"/> </object> - <int key="connectionID">217</int> + <int key="connectionID">212</int> </object> <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> @@ -961,115 +950,99 @@ </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fPreviewMovieStatusField</string> - <reference key="source" ref="355312334"/> - <reference key="destination" ref="986015194"/> - </object> - <int key="connectionID">225</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fPreviewMovieLengthPopUp</string> + <string key="label">fPictureSettingsToggleButton</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="598619000"/> + <reference key="destination" ref="141370142"/> </object> - <int key="connectionID">232</int> + <int key="connectionID">273</int> </object> <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> - <string key="label">previewDurationPopUpChanged:</string> + <string key="label">toggleScaleToScreen:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="598619000"/> + <reference key="destination" ref="81685190"/> </object> - <int key="connectionID">233</int> + <int key="connectionID">279</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fPreviewWindow</string> + <string key="label">fScaleToScreenToggleButton</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="616825745"/> + <reference key="destination" ref="81685190"/> </object> - <int key="connectionID">244</int> + <int key="connectionID">277</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fEncodingControlBox</string> + <string key="label">fPictureSlider</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="768906858"/> + <reference key="destination" ref="396925210"/> </object> - <int key="connectionID">253</int> + <int key="connectionID">211</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fPictureControlBox</string> + <object class="IBActionConnection" key="connection"> + <string key="label">showPictureSettings:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="92351498"/> + <reference key="destination" ref="141370142"/> </object> - <int key="connectionID">254</int> + <int key="connectionID">274</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fPictureViewArea</string> + <string key="label">fInfoField</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="289177107"/> + <reference key="destination" ref="628196212"/> </object> - <int key="connectionID">258</int> + <int key="connectionID">73</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fCancelPreviewMovieButton</string> + <string key="label">fGoToBeginningButton</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="569473100"/> + <reference key="destination" ref="897614796"/> </object> - <int key="connectionID">263</int> + <int key="connectionID">380</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fPictureSettingsToggleButton</string> + <string key="label">fMovieScrubberSlider</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="141370142"/> + <reference key="destination" ref="886140787"/> </object> - <int key="connectionID">273</int> + <int key="connectionID">371</int> </object> <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">showPictureSettings:</string> + <object class="IBOutletConnection" key="connection"> + <string key="label">fMovieInfoField</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="141370142"/> + <reference key="destination" ref="964331174"/> </object> - <int key="connectionID">274</int> + <int key="connectionID">374</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fScaleToScreenToggleButton</string> + <string key="label">fGoToEndButton</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="81685190"/> + <reference key="destination" ref="894608246"/> </object> - <int key="connectionID">277</int> + <int key="connectionID">381</int> </object> <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> - <string key="label">toggleScaleToScreen:</string> - <reference key="source" ref="355312334"/> - <reference key="destination" ref="81685190"/> - </object> - <int key="connectionID">279</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fscaleInfoField</string> + <string key="label">moviePlaybackGoToEnd:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="245200984"/> + <reference key="destination" ref="894608246"/> </object> - <int key="connectionID">282</int> + <int key="connectionID">383</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fMoviePlaybackControlBox</string> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleMoviePreviewPlayPause:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="700607930"/> + <reference key="destination" ref="102183813"/> </object> - <int key="connectionID">363</int> + <int key="connectionID">370</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> @@ -1080,92 +1053,92 @@ <int key="connectionID">364</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fGoToStillPreviewButton</string> + <object class="IBActionConnection" key="connection"> + <string key="label">moviePlaybackGoToBeginning:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="630042886"/> + <reference key="destination" ref="897614796"/> </object> - <int key="connectionID">368</int> + <int key="connectionID">382</int> </object> <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">pictureSliderChanged:</string> + <object class="IBOutletConnection" key="connection"> + <string key="label">fGoToStillPreviewButton</string> <reference key="source" ref="355312334"/> <reference key="destination" ref="630042886"/> </object> - <int key="connectionID">369</int> + <int key="connectionID">368</int> </object> <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> - <string key="label">toggleMoviePreviewPlayPause:</string> + <string key="label">previewScrubberChanged:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="102183813"/> + <reference key="destination" ref="886140787"/> </object> - <int key="connectionID">370</int> + <int key="connectionID">384</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fMovieScrubberSlider</string> + <string key="label">fMoviePlaybackControlBox</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="886140787"/> + <reference key="destination" ref="700607930"/> </object> - <int key="connectionID">371</int> + <int key="connectionID">363</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fMovieInfoField</string> + <object class="IBActionConnection" key="connection"> + <string key="label">showPicturesPreview:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="964331174"/> + <reference key="destination" ref="630042886"/> </object> - <int key="connectionID">374</int> + <int key="connectionID">396</int> </object> <object class="IBConnectionRecord"> <object class="IBOutletConnection" key="connection"> - <string key="label">fGoToBeginningButton</string> + <string key="label">fMovieCreationProgressIndicator</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="897614796"/> + <reference key="destination" ref="196868285"/> </object> - <int key="connectionID">380</int> + <int key="connectionID">214</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">fGoToEndButton</string> + <object class="IBActionConnection" key="connection"> + <string key="label">cancelCreateMoviePreview:</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="894608246"/> + <reference key="destination" ref="569473100"/> </object> - <int key="connectionID">381</int> + <int key="connectionID">395</int> </object> <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">moviePlaybackGoToBeginning:</string> + <object class="IBOutletConnection" key="connection"> + <string key="label">fPreviewMovieStatusField</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="897614796"/> + <reference key="destination" ref="986015194"/> </object> - <int key="connectionID">382</int> + <int key="connectionID">225</int> </object> <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">moviePlaybackGoToEnd:</string> + <object class="IBOutletConnection" key="connection"> + <string key="label">fCancelPreviewMovieButton</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="894608246"/> + <reference key="destination" ref="569473100"/> </object> - <int key="connectionID">383</int> + <int key="connectionID">263</int> </object> <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">previewScrubberChanged:</string> + <object class="IBOutletConnection" key="connection"> + <string key="label">fEncodingControlBox</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="886140787"/> + <reference key="destination" ref="768906858"/> </object> - <int key="connectionID">384</int> + <int key="connectionID">253</int> </object> <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">cancelCreateMoviePreview:</string> + <object class="IBOutletConnection" key="connection"> + <string key="label">fMovieView</string> <reference key="source" ref="355312334"/> - <reference key="destination" ref="569473100"/> + <reference key="destination" ref="48693112"/> </object> - <int key="connectionID">395</int> + <int key="connectionID">208</int> </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> @@ -1212,210 +1185,198 @@ <reference key="object" ref="49161063"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="289177107"/> + <reference ref="700607930"/> + <reference ref="768906858"/> + <reference ref="92351498"/> + <reference ref="48693112"/> </object> <reference key="parent" ref="616825745"/> </object> <object class="IBObjectRecord"> - <int key="objectID">257</int> - <reference key="object" ref="289177107"/> + <int key="objectID">335</int> + <reference key="object" ref="700607930"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="844127024"/> - <reference ref="92351498"/> - <reference ref="768906858"/> - <reference ref="48693112"/> - <reference ref="700607930"/> + <reference ref="102183813"/> + <reference ref="894608246"/> + <reference ref="897614796"/> + <reference ref="964331174"/> + <reference ref="886140787"/> + <reference ref="630042886"/> </object> <reference key="parent" ref="49161063"/> </object> <object class="IBObjectRecord"> - <int key="objectID">252</int> - <reference key="object" ref="768906858"/> + <int key="objectID">365</int> + <reference key="object" ref="630042886"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="196868285"/> - <reference ref="986015194"/> - <reference ref="569473100"/> + <reference ref="999505395"/> </object> - <reference key="parent" ref="289177107"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">213</int> - <reference key="object" ref="196868285"/> - <reference key="parent" ref="768906858"/> + <reference key="parent" ref="700607930"/> </object> <object class="IBObjectRecord"> - <int key="objectID">223</int> - <reference key="object" ref="986015194"/> + <int key="objectID">375</int> + <reference key="object" ref="897614796"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="304208899"/> + <reference ref="913339095"/> </object> - <reference key="parent" ref="768906858"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">224</int> - <reference key="object" ref="304208899"/> - <reference key="parent" ref="986015194"/> + <reference key="parent" ref="700607930"/> </object> <object class="IBObjectRecord"> - <int key="objectID">251</int> - <reference key="object" ref="92351498"/> + <int key="objectID">378</int> + <reference key="object" ref="894608246"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="628196212"/> - <reference ref="396925210"/> - <reference ref="245200984"/> - <reference ref="66510867"/> - <reference ref="598619000"/> - <reference ref="81685190"/> - <reference ref="798240356"/> - <reference ref="141370142"/> + <reference ref="117507013"/> </object> - <reference key="parent" ref="289177107"/> + <reference key="parent" ref="700607930"/> </object> <object class="IBObjectRecord"> - <int key="objectID">38</int> - <reference key="object" ref="628196212"/> + <int key="objectID">361</int> + <reference key="object" ref="102183813"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="921881842"/> + <reference ref="19809002"/> </object> - <reference key="parent" ref="92351498"/> + <reference key="parent" ref="700607930"/> </object> <object class="IBObjectRecord"> - <int key="objectID">215</int> - <reference key="object" ref="798240356"/> + <int key="objectID">372</int> + <reference key="object" ref="964331174"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="975305481"/> + <reference ref="113790059"/> </object> - <reference key="parent" ref="92351498"/> + <reference key="parent" ref="700607930"/> </object> <object class="IBObjectRecord"> - <int key="objectID">234</int> - <reference key="object" ref="66510867"/> + <int key="objectID">341</int> + <reference key="object" ref="886140787"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="567286013"/> + <reference ref="493667684"/> </object> - <reference key="parent" ref="92351498"/> + <reference key="parent" ref="700607930"/> </object> <object class="IBObjectRecord"> - <int key="objectID">226</int> - <reference key="object" ref="598619000"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="953108737"/> - </object> - <reference key="parent" ref="92351498"/> + <int key="objectID">346</int> + <reference key="object" ref="493667684"/> + <reference key="parent" ref="886140787"/> </object> <object class="IBObjectRecord"> - <int key="objectID">209</int> - <reference key="object" ref="396925210"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="639767004"/> - </object> - <reference key="parent" ref="92351498"/> + <int key="objectID">373</int> + <reference key="object" ref="113790059"/> + <reference key="parent" ref="964331174"/> </object> <object class="IBObjectRecord"> - <int key="objectID">210</int> - <reference key="object" ref="639767004"/> - <reference key="parent" ref="396925210"/> + <int key="objectID">362</int> + <reference key="object" ref="19809002"/> + <reference key="parent" ref="102183813"/> </object> <object class="IBObjectRecord"> - <int key="objectID">227</int> - <reference key="object" ref="953108737"/> + <int key="objectID">379</int> + <reference key="object" ref="117507013"/> + <reference key="parent" ref="894608246"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">376</int> + <reference key="object" ref="913339095"/> + <reference key="parent" ref="897614796"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">366</int> + <reference key="object" ref="999505395"/> + <reference key="parent" ref="630042886"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">252</int> + <reference key="object" ref="768906858"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="501672847"/> + <reference ref="569473100"/> + <reference ref="986015194"/> + <reference ref="196868285"/> </object> - <reference key="parent" ref="598619000"/> + <reference key="parent" ref="49161063"/> </object> <object class="IBObjectRecord"> - <int key="objectID">228</int> - <reference key="object" ref="501672847"/> + <int key="objectID">261</int> + <reference key="object" ref="569473100"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="372655630"/> - <reference ref="607756368"/> - <reference ref="272743761"/> + <reference ref="908165435"/> </object> - <reference key="parent" ref="953108737"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">231</int> - <reference key="object" ref="372655630"/> - <reference key="parent" ref="501672847"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">230</int> - <reference key="object" ref="607756368"/> - <reference key="parent" ref="501672847"/> + <reference key="parent" ref="768906858"/> </object> <object class="IBObjectRecord"> - <int key="objectID">229</int> - <reference key="object" ref="272743761"/> - <reference key="parent" ref="501672847"/> + <int key="objectID">223</int> + <reference key="object" ref="986015194"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="304208899"/> + </object> + <reference key="parent" ref="768906858"/> </object> <object class="IBObjectRecord"> - <int key="objectID">235</int> - <reference key="object" ref="567286013"/> - <reference key="parent" ref="66510867"/> + <int key="objectID">213</int> + <reference key="object" ref="196868285"/> + <reference key="parent" ref="768906858"/> </object> <object class="IBObjectRecord"> - <int key="objectID">216</int> - <reference key="object" ref="975305481"/> - <reference key="parent" ref="798240356"/> + <int key="objectID">224</int> + <reference key="object" ref="304208899"/> + <reference key="parent" ref="986015194"/> </object> <object class="IBObjectRecord"> - <int key="objectID">165</int> - <reference key="object" ref="921881842"/> - <reference key="parent" ref="628196212"/> + <int key="objectID">262</int> + <reference key="object" ref="908165435"/> + <reference key="parent" ref="569473100"/> </object> <object class="IBObjectRecord"> - <int key="objectID">261</int> - <reference key="object" ref="569473100"/> + <int key="objectID">251</int> + <reference key="object" ref="92351498"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="908165435"/> + <reference ref="66510867"/> + <reference ref="598619000"/> + <reference ref="141370142"/> + <reference ref="798240356"/> + <reference ref="81685190"/> + <reference ref="245200984"/> + <reference ref="396925210"/> + <reference ref="628196212"/> </object> - <reference key="parent" ref="768906858"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">262</int> - <reference key="object" ref="908165435"/> - <reference key="parent" ref="569473100"/> + <reference key="parent" ref="49161063"/> </object> <object class="IBObjectRecord"> - <int key="objectID">271</int> - <reference key="object" ref="141370142"/> + <int key="objectID">38</int> + <reference key="object" ref="628196212"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="606007744"/> + <reference ref="921881842"/> </object> <reference key="parent" ref="92351498"/> </object> <object class="IBObjectRecord"> - <int key="objectID">272</int> - <reference key="object" ref="606007744"/> - <reference key="parent" ref="141370142"/> + <int key="objectID">165</int> + <reference key="object" ref="921881842"/> + <reference key="parent" ref="628196212"/> </object> <object class="IBObjectRecord"> - <int key="objectID">275</int> - <reference key="object" ref="81685190"/> + <int key="objectID">209</int> + <reference key="object" ref="396925210"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="847033897"/> + <reference ref="639767004"/> </object> <reference key="parent" ref="92351498"/> </object> <object class="IBObjectRecord"> - <int key="objectID">276</int> - <reference key="object" ref="847033897"/> - <reference key="parent" ref="81685190"/> + <int key="objectID">210</int> + <reference key="object" ref="639767004"/> + <reference key="parent" ref="396925210"/> </object> <object class="IBObjectRecord"> <int key="objectID">280</int> @@ -1432,121 +1393,109 @@ <reference key="parent" ref="245200984"/> </object> <object class="IBObjectRecord"> - <int key="objectID">179</int> - <reference key="object" ref="844127024"/> + <int key="objectID">275</int> + <reference key="object" ref="81685190"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="955430771"/> + <reference ref="847033897"/> </object> - <reference key="parent" ref="289177107"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">180</int> - <reference key="object" ref="955430771"/> - <reference key="parent" ref="844127024"/> + <reference key="parent" ref="92351498"/> </object> <object class="IBObjectRecord"> - <int key="objectID">207</int> - <reference key="object" ref="48693112"/> - <reference key="parent" ref="289177107"/> + <int key="objectID">276</int> + <reference key="object" ref="847033897"/> + <reference key="parent" ref="81685190"/> </object> <object class="IBObjectRecord"> - <int key="objectID">335</int> - <reference key="object" ref="700607930"/> + <int key="objectID">215</int> + <reference key="object" ref="798240356"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="886140787"/> - <reference ref="964331174"/> - <reference ref="102183813"/> - <reference ref="894608246"/> - <reference ref="630042886"/> - <reference ref="897614796"/> + <reference ref="975305481"/> </object> - <reference key="parent" ref="289177107"/> + <reference key="parent" ref="92351498"/> </object> <object class="IBObjectRecord"> - <int key="objectID">341</int> - <reference key="object" ref="886140787"/> + <int key="objectID">216</int> + <reference key="object" ref="975305481"/> + <reference key="parent" ref="798240356"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">271</int> + <reference key="object" ref="141370142"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="493667684"/> + <reference ref="606007744"/> </object> - <reference key="parent" ref="700607930"/> + <reference key="parent" ref="92351498"/> </object> <object class="IBObjectRecord"> - <int key="objectID">346</int> - <reference key="object" ref="493667684"/> - <reference key="parent" ref="886140787"/> + <int key="objectID">272</int> + <reference key="object" ref="606007744"/> + <reference key="parent" ref="141370142"/> </object> <object class="IBObjectRecord"> - <int key="objectID">361</int> - <reference key="object" ref="102183813"/> + <int key="objectID">226</int> + <reference key="object" ref="598619000"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="19809002"/> + <reference ref="953108737"/> </object> - <reference key="parent" ref="700607930"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">362</int> - <reference key="object" ref="19809002"/> - <reference key="parent" ref="102183813"/> + <reference key="parent" ref="92351498"/> </object> <object class="IBObjectRecord"> - <int key="objectID">365</int> - <reference key="object" ref="630042886"/> + <int key="objectID">227</int> + <reference key="object" ref="953108737"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="999505395"/> + <reference ref="501672847"/> </object> - <reference key="parent" ref="700607930"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">366</int> - <reference key="object" ref="999505395"/> - <reference key="parent" ref="630042886"/> + <reference key="parent" ref="598619000"/> </object> <object class="IBObjectRecord"> - <int key="objectID">372</int> - <reference key="object" ref="964331174"/> + <int key="objectID">228</int> + <reference key="object" ref="501672847"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="113790059"/> + <reference ref="272743761"/> + <reference ref="607756368"/> + <reference ref="372655630"/> </object> - <reference key="parent" ref="700607930"/> + <reference key="parent" ref="953108737"/> </object> <object class="IBObjectRecord"> - <int key="objectID">373</int> - <reference key="object" ref="113790059"/> - <reference key="parent" ref="964331174"/> + <int key="objectID">231</int> + <reference key="object" ref="372655630"/> + <reference key="parent" ref="501672847"/> </object> <object class="IBObjectRecord"> - <int key="objectID">375</int> - <reference key="object" ref="897614796"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="913339095"/> - </object> - <reference key="parent" ref="700607930"/> + <int key="objectID">230</int> + <reference key="object" ref="607756368"/> + <reference key="parent" ref="501672847"/> </object> <object class="IBObjectRecord"> - <int key="objectID">376</int> - <reference key="object" ref="913339095"/> - <reference key="parent" ref="897614796"/> + <int key="objectID">229</int> + <reference key="object" ref="272743761"/> + <reference key="parent" ref="501672847"/> </object> <object class="IBObjectRecord"> - <int key="objectID">378</int> - <reference key="object" ref="894608246"/> + <int key="objectID">234</int> + <reference key="object" ref="66510867"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="117507013"/> + <reference ref="567286013"/> </object> - <reference key="parent" ref="700607930"/> + <reference key="parent" ref="92351498"/> </object> <object class="IBObjectRecord"> - <int key="objectID">379</int> - <reference key="object" ref="117507013"/> - <reference key="parent" ref="894608246"/> + <int key="objectID">235</int> + <reference key="object" ref="567286013"/> + <reference key="parent" ref="66510867"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">207</int> + <reference key="object" ref="48693112"/> + <reference key="parent" ref="49161063"/> </object> </object> </object> @@ -1558,8 +1507,6 @@ <string>-2.IBPluginDependency</string> <string>-3.IBPluginDependency</string> <string>165.IBPluginDependency</string> - <string>179.IBPluginDependency</string> - <string>180.IBPluginDependency</string> <string>207.IBPluginDependency</string> <string>209.IBPluginDependency</string> <string>210.IBPluginDependency</string> @@ -1592,7 +1539,6 @@ <string>252.IBViewIntegration.shadowColor</string> <string>252.IBViewIntegration.shadowOffsetHeight</string> <string>252.IBViewIntegration.shadowOffsetWidth</string> - <string>257.IBPluginDependency</string> <string>261.IBAttributePlaceholdersKey</string> <string>261.IBPluginDependency</string> <string>262.IBPluginDependency</string> @@ -1641,15 +1587,17 @@ <string>5.IBPluginDependency</string> <string>5.IBWindowTemplateEditedContentRect</string> <string>6.IBPluginDependency</string> + <string>6.IBViewIntegration.shadowBlurRadius</string> + <string>6.IBViewIntegration.shadowColor</string> + <string>6.IBViewIntegration.shadowOffsetHeight</string> + <string>6.IBViewIntegration.shadowOffsetWidth</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.QTKitIBPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> @@ -1699,7 +1647,6 @@ <reference ref="864448722"/> <integer value="0"/> <integer value="0"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <object class="NSMutableDictionary"> <string key="NS.key.0">ToolTip</string> <object class="IBToolTipAttribute" key="NS.object.0"> @@ -1797,6 +1744,10 @@ <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>{{262, 474}, {480, 360}}</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <real value="0.0"/> + <reference ref="864448722"/> + <real value="0.0"/> + <real value="0.0"/> </object> </object> <object class="NSMutableDictionary" key="unlocalizedProperties"> @@ -1811,9 +1762,323 @@ <reference key="dict.values" ref="0"/> </object> <nil key="sourceID"/> - <int key="maxID">395</int> + <int key="maxID">396</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">PreviewController</string> + <string key="superclassName">NSWindowController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>cancelCreateMoviePreview:</string> + <string>createMoviePreview:</string> + <string>moviePlaybackGoBackwardOneFrame:</string> + <string>moviePlaybackGoForwardOneFrame:</string> + <string>moviePlaybackGoToBeginning:</string> + <string>moviePlaybackGoToEnd:</string> + <string>pictureSliderChanged:</string> + <string>previewDurationPopUpChanged:</string> + <string>previewScrubberChanged:</string> + <string>settingsChanged:</string> + <string>showMoviePreview:</string> + <string>showPictureSettings:</string> + <string>showPicturesPreview:</string> + <string>toggleMoviePreviewPlayPause:</string> + <string>toggleScaleToScreen:</string> + </object> + <object class="NSArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>NSString</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>cancelCreateMoviePreview:</string> + <string>createMoviePreview:</string> + <string>moviePlaybackGoBackwardOneFrame:</string> + <string>moviePlaybackGoForwardOneFrame:</string> + <string>moviePlaybackGoToBeginning:</string> + <string>moviePlaybackGoToEnd:</string> + <string>pictureSliderChanged:</string> + <string>previewDurationPopUpChanged:</string> + <string>previewScrubberChanged:</string> + <string>settingsChanged:</string> + <string>showMoviePreview:</string> + <string>showPictureSettings:</string> + <string>showPicturesPreview:</string> + <string>toggleMoviePreviewPlayPause:</string> + <string>toggleScaleToScreen:</string> + </object> + <object class="NSArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">cancelCreateMoviePreview:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">createMoviePreview:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">moviePlaybackGoBackwardOneFrame:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">moviePlaybackGoForwardOneFrame:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">moviePlaybackGoToBeginning:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">moviePlaybackGoToEnd:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">pictureSliderChanged:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">previewDurationPopUpChanged:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">previewScrubberChanged:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">settingsChanged:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">showMoviePreview:</string> + <string key="candidateClassName">NSString</string> + </object> + <object class="IBActionInfo"> + <string key="name">showPictureSettings:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">showPicturesPreview:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">toggleMoviePreviewPlayPause:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">toggleScaleToScreen:</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>fCancelPreviewMovieButton</string> + <string>fCreatePreviewMovieButton</string> + <string>fEncodingControlBox</string> + <string>fGoBackwardOneFrameButton</string> + <string>fGoForwardOneFrameButton</string> + <string>fGoToBeginningButton</string> + <string>fGoToEndButton</string> + <string>fGoToStillPreviewButton</string> + <string>fInfoField</string> + <string>fMovieCreationProgressIndicator</string> + <string>fMovieInfoField</string> + <string>fMoviePlaybackControlBox</string> + <string>fMovieScrubberSlider</string> + <string>fMovieView</string> + <string>fPictureControlBox</string> + <string>fPictureSettingsToggleButton</string> + <string>fPictureSlider</string> + <string>fPlayPauseButton</string> + <string>fPreviewMovieLengthPopUp</string> + <string>fPreviewMovieStatusField</string> + <string>fScaleToScreenToggleButton</string> + <string>fShowPreviewMovieButton</string> + <string>fscaleInfoField</string> + </object> + <object class="NSArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSButton</string> + <string>NSButton</string> + <string>NSBox</string> + <string>NSButton</string> + <string>NSButton</string> + <string>NSButton</string> + <string>NSButton</string> + <string>NSButton</string> + <string>NSTextField</string> + <string>NSProgressIndicator</string> + <string>NSTextField</string> + <string>NSBox</string> + <string>NSSlider</string> + <string>QTMovieView</string> + <string>NSBox</string> + <string>NSButton</string> + <string>NSSlider</string> + <string>NSButton</string> + <string>NSPopUpButton</string> + <string>NSTextField</string> + <string>NSButton</string> + <string>NSButton</string> + <string>NSTextField</string> + </object> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>fCancelPreviewMovieButton</string> + <string>fCreatePreviewMovieButton</string> + <string>fEncodingControlBox</string> + <string>fGoBackwardOneFrameButton</string> + <string>fGoForwardOneFrameButton</string> + <string>fGoToBeginningButton</string> + <string>fGoToEndButton</string> + <string>fGoToStillPreviewButton</string> + <string>fInfoField</string> + <string>fMovieCreationProgressIndicator</string> + <string>fMovieInfoField</string> + <string>fMoviePlaybackControlBox</string> + <string>fMovieScrubberSlider</string> + <string>fMovieView</string> + <string>fPictureControlBox</string> + <string>fPictureSettingsToggleButton</string> + <string>fPictureSlider</string> + <string>fPlayPauseButton</string> + <string>fPreviewMovieLengthPopUp</string> + <string>fPreviewMovieStatusField</string> + <string>fScaleToScreenToggleButton</string> + <string>fShowPreviewMovieButton</string> + <string>fscaleInfoField</string> + </object> + <object class="NSArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">fCancelPreviewMovieButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fCreatePreviewMovieButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fEncodingControlBox</string> + <string key="candidateClassName">NSBox</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fGoBackwardOneFrameButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fGoForwardOneFrameButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fGoToBeginningButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fGoToEndButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fGoToStillPreviewButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fInfoField</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fMovieCreationProgressIndicator</string> + <string key="candidateClassName">NSProgressIndicator</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fMovieInfoField</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fMoviePlaybackControlBox</string> + <string key="candidateClassName">NSBox</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fMovieScrubberSlider</string> + <string key="candidateClassName">NSSlider</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fMovieView</string> + <string key="candidateClassName">QTMovieView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fPictureControlBox</string> + <string key="candidateClassName">NSBox</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fPictureSettingsToggleButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fPictureSlider</string> + <string key="candidateClassName">NSSlider</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fPlayPauseButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fPreviewMovieLengthPopUp</string> + <string key="candidateClassName">NSPopUpButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fPreviewMovieStatusField</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fScaleToScreenToggleButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fShowPreviewMovieButton</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">fscaleInfoField</string> + <string key="candidateClassName">NSTextField</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/PreviewController.h</string> + </object> + </object> + </object> </object> - <object class="IBClassDescriber" key="IBDocument.Classes"/> <int key="IBDocument.localizationMode">0</int> <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> @@ -1832,11 +2097,19 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>NSMenuCheckmark</string> <string>NSMenuMixedState</string> + <string>next-p</string> + <string>pause-p</string> + <string>play-p</string> + <string>prev-p</string> </object> - <object class="NSMutableArray" key="dict.values"> + <object class="NSArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>{9, 8}</string> - <string>{7, 2}</string> + <string>{11, 11}</string> + <string>{10, 3}</string> + <string>{48, 48}</string> + <string>{48, 48}</string> + <string>{48, 48}</string> + <string>{48, 48}</string> </object> </object> </data> diff --git a/macosx/HBPresets.h b/macosx/HBPresets.h index 2b3708cbd..598971efa 100644 --- a/macosx/HBPresets.h +++ b/macosx/HBPresets.h @@ -15,21 +15,17 @@ /* Built-In Preset Dictionaries (one for each built in preset) */ - (NSDictionary *)createDevicesPresetFolder; - (NSDictionary *)createRegularPresetFolder; -- (NSDictionary *)createLegacyPresetFolder; - (NSDictionary *)createiPadPreset; -- (NSDictionary *)createiPhone4Preset; -- (NSDictionary *)createAppleTv2Preset; +- (NSDictionary *)createAppleTV2Preset; - (NSDictionary *)createAppleTVPreset; -- (NSDictionary *)createAppleTv3Preset; -- (NSDictionary *)createAppleUniversalPreset; -- (NSDictionary *)createClassicPreset; -- (NSDictionary *)createiPhonePreset; -- (NSDictionary *)createIpodHighPreset; -- (NSDictionary *)createIpodLowPreset; +- (NSDictionary *)createAppleTV3Preset; +- (NSDictionary *)createUniversalPreset; +- (NSDictionary *)createiPhoneiPodtouchPreset; +- (NSDictionary *)createiPodPreset; - (NSDictionary *)createNormalPreset; - (NSDictionary *)createHighProfilePreset; -- (NSDictionary *)createAndroidMidPreset; -- (NSDictionary *)createAndroidHighPreset; +- (NSDictionary *)createAndroidPreset; +- (NSDictionary *)createAndroidTabletPreset; @end diff --git a/macosx/HBPresets.m b/macosx/HBPresets.m index eaf496ccb..7d3aa0eac 100644 --- a/macosx/HBPresets.m +++ b/macosx/HBPresets.m @@ -25,7 +25,6 @@ /* Built in preset folders at the root of the hierarchy */ [UserPresets addObject:[self createDevicesPresetFolder]]; [UserPresets addObject:[self createRegularPresetFolder]]; - [UserPresets addObject:[self createLegacyPresetFolder]]; /* Independent presets at the root hierarchy level would go here */ @@ -40,34 +39,29 @@ - (NSDictionary *)createDevicesPresetFolder { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; -/*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"]; - /* Get the New Preset Name from the field in the AddPresetPanel */ [preset setObject:@"Devices" forKey:@"PresetName"]; /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"]; /* Lets initalize the child array of dictionaries for folders, this is an array of dictionaries much like the root level of presets and may contain folders and presets alike, etc.*/ NSMutableArray *childrenArray = [[NSMutableArray alloc] init]; /* we actually call the methods for the nests here */ - [childrenArray addObject:[self createAppleUniversalPreset]]; - [childrenArray addObject:[self createIpodLowPreset]]; - [childrenArray addObject:[self createiPhonePreset]]; - [childrenArray addObject:[self createiPhone4Preset]]; + [childrenArray addObject:[self createUniversalPreset]]; + [childrenArray addObject:[self createiPodPreset]]; + [childrenArray addObject:[self createiPhoneiPodtouchPreset]]; [childrenArray addObject:[self createiPadPreset]]; [childrenArray addObject:[self createAppleTVPreset]]; - [childrenArray addObject:[self createAppleTv2Preset]]; - [childrenArray addObject:[self createAppleTv3Preset]]; - [childrenArray addObject:[self createAndroidMidPreset]]; - [childrenArray addObject:[self createAndroidHighPreset]]; + [childrenArray addObject:[self createAppleTV2Preset]]; + [childrenArray addObject:[self createAppleTV3Preset]]; + [childrenArray addObject:[self createAndroidPreset]]; + [childrenArray addObject:[self createAndroidTabletPreset]]; [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"]; @@ -82,18 +76,14 @@ - (NSDictionary *)createRegularPresetFolder { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; -/*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"]; - /* Get the New Preset Name from the field in the AddPresetPanel */ [preset setObject:@"Regular" forKey:@"PresetName"]; /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; + [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"]; /* Lets initalize the child array of dictionaries for folders, this is an array of dictionaries much like the root level of presets and @@ -112,40 +102,6 @@ return preset; } -- (NSDictionary *)createLegacyPresetFolder -{ - NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; -/*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: YES] forKey:@"Folder"]; - - - /* Get the New Preset Name from the field in the AddPresetPanel */ - [preset setObject:@"Legacy" forKey:@"PresetName"]; - - /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /* Lets initalize the child array of dictionaries for folders, this - is an array of dictionaries much like the root level of presets and - may contain folders and presets alike, etc.*/ - NSMutableArray *childrenArray = [[NSMutableArray alloc] init]; - /* we actually call the methods for the nests here */ - [childrenArray addObject:[self createClassicPreset]]; - [childrenArray addObject:[self createIpodHighPreset]]; - [preset setObject:[NSMutableArray arrayWithArray: childrenArray] forKey:@"ChildrenArray"]; - - [childrenArray autorelease]; - - - - [preset autorelease]; - return preset; -} - - #pragma mark - #pragma mark Built In Preset Definitions @@ -162,22 +118,16 @@ /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - /*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's settings for the AppleTV and 2009's iPhone and iPod Touch lineup. Provides a good balance between quality and file size, and pushes the devices to their limits. Includes Dolby Digital 5.1 AC3 sound for the AppleTV." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; @@ -186,16 +136,22 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String (We can use this to tweak the appleTV output)*/ - [preset setObject:@"cabac=0:ref=2:me=umh:b-pyramid=none:b-adapt=2:weightb=0:trellis=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; /* Video quality */ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ - [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; - [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; /* GrayScale */ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; @@ -210,12 +166,12 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; @@ -265,7 +221,7 @@ return preset; } -- (NSDictionary *)createAppleUniversalPreset +- (NSDictionary *)createUniversalPreset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; @@ -274,22 +230,16 @@ /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - /*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's universally compatible, full resolution settings for all current Apple devices: iPod (6G and up), iPhone, AppleTV, and Macs" forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; @@ -298,16 +248,22 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String (We can use this to tweak the appleTV output)*/ - [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:8x8dct=0:trellis=0:subme=6" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"fast" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"baseline" forKey:@"h264Profile"]; + [preset setObject:@"3.0" forKey:@"h264Level"]; /* Video quality */ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ - [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; - [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; /* GrayScale */ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; @@ -322,12 +278,12 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; @@ -386,22 +342,16 @@ /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - /*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's preset for the iPad (all generations) is optimized for a good balance between quality and filesize." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; @@ -411,10 +361,16 @@ /* x264 Option String (We can use this to tweak the output)*/ [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; /* Video quality */ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ @@ -434,12 +390,12 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; @@ -475,105 +431,7 @@ return preset; } -- (NSDictionary *)createiPhone4Preset -{ - NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; - - /* Get the New Preset Name from the field in the AddPresetPanel */ - [preset setObject:@"iPhone 4" forKey:@"PresetName"]; - - /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - /*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; - /*Set whether or not this is default, at creation set to 0*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; - - /* Get the New Preset Description from the field in the AddPresetPanel */ - [preset setObject:@"HandBrake's preset for the iPhone 4 is optimized for viewing on its 960x480 display." forKey:@"PresetDescription"]; - - /* File Format */ - [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; - - /* Chapter Markers*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; - - /* Video encoder */ - [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; - - /* x264 Option String (We can use this to tweak the output)*/ - [preset setObject:@"" forKey:@"x264Option"]; - - /* Video quality */ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; - [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; - [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; - - /* Video framerate */ - [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"]; - [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; - - /* GrayScale */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; - - /* 2 Pass Encoding */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; - - /* Basic Picture Settings */ - /* Use Max Picture settings for whatever the dvd is.*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; - [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; - [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; - - /* Explicitly set the filters for built-in presets */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; - - /* Set crop settings here */ - /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; - - /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track - * not listed will be set to "None" and not encoded */ - NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; - - /* Track 1 */ - NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; - [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; - [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; - [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; - [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; - [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; - [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; - [audioTrack1Array autorelease]; - [audioListArray addObject:audioTrack1Array]; - - [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"]; - - /* Subtitles*/ - [preset setObject:@"None" forKey:@"Subtitles"]; - - [preset autorelease]; - return preset; -} - -- (NSDictionary *)createAppleTv2Preset +- (NSDictionary *)createAppleTV2Preset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; @@ -582,22 +440,16 @@ /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - /*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's preset for the Apple TV (2nd gen) is optimized for viewing on its 1280x720 display." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; @@ -607,10 +459,16 @@ /* x264 Option String (We can use this to tweak the output)*/ [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; /* Video quality */ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ @@ -630,12 +488,12 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; @@ -686,7 +544,7 @@ return preset; } -- (NSDictionary *)createAppleTv3Preset +- (NSDictionary *)createAppleTV3Preset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; @@ -695,22 +553,16 @@ /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - /*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's preset for the Apple TV (3rd gen) is optimized for up to 1080p playback." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; @@ -719,11 +571,17 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String (We can use this to tweak the output)*/ - [preset setObject:@"b-adapt=2" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"4.0" forKey:@"h264Level"]; /* Video quality */ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ @@ -806,99 +664,6 @@ return preset; } - -- (NSDictionary *)createClassicPreset -{ - NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; - - /* Get the New Preset Name from the field in the AddPresetPanel */ - [preset setObject:@"Classic" forKey:@"PresetName"]; - - /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"]; - - /* Get the New Preset Description from the field in the AddPresetPanel */ - [preset setObject:@"HandBrake's traditional, faster, lower-quality settings." forKey:@"PresetDescription"]; - - /* File Format */ - [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* Chapter Markers*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"]; - - /* Video encoder */ - [preset setObject:@"MPEG-4 (FFmpeg)" forKey:@"VideoEncoder"]; - - /* x264 Option String */ - [preset setObject:@"" forKey:@"x264Option"]; - - /* Video quality */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"]; - [preset setObject:@"1000" forKey:@"VideoAvgBitrate"]; - - /* Video framerate */ - [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; - [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; - - /* GrayScale */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; - - /* 2 Pass Encoding */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; - - /*Picture Settings*/ - /* Use Max Picture settings for whatever the dvd is.*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"]; - - /* Explicitly set the filters for built-in presets */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; - - /* Set crop settings here */ - /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; - - /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track - * not listed will be set to "None" and not encoded */ - NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; - - /* Track 1 */ - NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; - [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; - [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; - [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; - [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; - [audioTrack1Array setObject:@"160" forKey:@"AudioBitrate"]; - [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; - [audioTrack1Array autorelease]; - [audioListArray addObject:audioTrack1Array]; - - [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"]; - - /* Subtitles*/ - [preset setObject:@"None" forKey:@"Subtitles"]; - - [preset autorelease]; - return preset; -} - - (NSDictionary *)createHighProfilePreset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; @@ -908,21 +673,16 @@ /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's general-purpose preset for High Profile H.264 video, with all the bells and whistles." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; @@ -931,11 +691,17 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String */ - [preset setObject:@"b-adapt=2:rc-lookahead=50" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"4.1" forKey:@"h264Level"]; /* Video quality */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; - [preset setObject:@"1800" forKey:@"VideoAvgBitrate"]; [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ @@ -951,11 +717,12 @@ /*Picture Settings*/ /* Use Max Picture settings for whatever the dvd is.*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; @@ -968,6 +735,7 @@ /* Set crop settings here */ /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; @@ -1011,7 +779,7 @@ return preset; } -- (NSDictionary *)createiPhonePreset +- (NSDictionary *)createiPhoneiPodtouchPreset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; @@ -1020,36 +788,40 @@ /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's settings for all iPhones and iPod Touches going back to the original iPhone 2G." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; /* Video encoder */ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + /* x264 Option String */ - [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"high" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; /* Video quality */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; - [preset setObject:@"960" forKey:@"VideoAvgBitrate"]; - [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; + [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ - [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; - [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; + [preset setObject:@"29.97 (NTSC Video)" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; /* GrayScale */ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; @@ -1058,109 +830,18 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; /*Picture Settings*/ - /* Use a width of 480 for the iPhone*/ - [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"]; - - /* Explicitly set the filters for built-in presets */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; - - /* Set crop settings here */ - /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureRightCrop"]; - - /* Audio - Is done on a track by track basis, ONLY specifiy the tracks we want set as any track - * not listed will be set to "None" and not encoded */ - NSMutableArray *audioListArray = [[NSMutableArray alloc] init]; - - /* Track 1 */ - NSMutableDictionary *audioTrack1Array = [[NSMutableDictionary alloc] init]; - [audioTrack1Array setObject:[NSNumber numberWithInt:1] forKey:@"AudioTrack"]; - [audioTrack1Array setObject:@"AAC (faac)" forKey:@"AudioEncoder"]; - [audioTrack1Array setObject:@"Dolby Pro Logic II" forKey:@"AudioMixdown"]; - [audioTrack1Array setObject:@"Auto" forKey:@"AudioSamplerate"]; - [audioTrack1Array setObject:@"128" forKey:@"AudioBitrate"]; - [audioTrack1Array setObject:[NSNumber numberWithFloat:0.0] forKey:@"AudioTrackDRCSlider"]; - [audioTrack1Array autorelease]; - [audioListArray addObject:audioTrack1Array]; - - [preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"]; - - /* Subtitles*/ - [preset setObject:@"None" forKey:@"Subtitles"]; - - [preset autorelease]; - return preset; -} - -- (NSDictionary *)createIpodHighPreset -{ - NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; - - /* Get the New Preset Name from the field in the AddPresetPanel */ - [preset setObject:@"iPod Legacy" forKey:@"PresetName"]; - - /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ + /* Use a width of 960 for the iPhone 4 and later */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; - - /* Get the New Preset Description from the field in the AddPresetPanel */ - [preset setObject:@"HandBrake's high resolution settings for older 5 and 5.5G iPods. Good video quality, great for viewing on a TV using your iPod. This is the iPod High-Rez preset from 0.9.2." forKey:@"PresetDescription"]; - - /* File Format */ - [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* Chapter Markers*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; - - /* Video encoder */ - [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; - [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"]; - /* x264 Option String */ - [preset setObject:@"level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:psy-rd=0,0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; - - /* Video quality */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"]; - [preset setObject:@"1500" forKey:@"VideoAvgBitrate"]; - - /* Video framerate */ - [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; - [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; - - /* GrayScale */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; - - /* 2 Pass Encoding */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; - - /*Picture Settings*/ - /* Use a width of 640 for iPod TV-out */ - [preset setObject:[NSNumber numberWithInt:640] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:960] forKey:@"PictureWidth"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; @@ -1196,7 +877,7 @@ return preset; } -- (NSDictionary *)createIpodLowPreset +- (NSDictionary *)createiPodPreset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; @@ -1205,35 +886,40 @@ /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's low resolution settings for the iPod (5G and up). Optimized for great playback on the iPod screen, with smaller file size." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; /* Video encoder */ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; - [preset setObject:[NSNumber numberWithInt:1] forKey:@"Mp4iPodCompatible"]; + /* x264 Option String */ - [preset setObject:@"level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"baseline" forKey:@"h264Profile"]; + [preset setObject:@"1.3" forKey:@"h264Level"]; /* Video quality */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"VideoQualityType"]; - [preset setObject:@"700" forKey:@"VideoAvgBitrate"]; + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; + [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ - [preset setObject:@"Same as source" forKey:@"VideoFramerate"]; - [preset setObject:@"vfr" forKey:@"VideoFramerateMode"]; + [preset setObject:@"30" forKey:@"VideoFramerate"]; + [preset setObject:@"pfr" forKey:@"VideoFramerateMode"]; /* GrayScale */ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoGrayScale"]; @@ -1242,23 +928,23 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; /*Picture Settings*/ - /* Use a width of 320 for the iPod screen */ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; [preset setObject:[NSNumber numberWithInt:320] forKey:@"PictureWidth"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; /* Set crop settings here */ /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; @@ -1297,18 +983,16 @@ /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's normal, default settings." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"ChapterMarkers"]; @@ -1317,11 +1001,17 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String */ - [preset setObject:@"ref=1:weightp=1:subq=2:rc-lookahead=10:trellis=0:8x8dct=0" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"veryfast" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"main" forKey:@"h264Profile"]; + [preset setObject:@"4.0" forKey:@"h264Level"]; /* Video quality */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; - [preset setObject:@"1500" forKey:@"VideoAvgBitrate"]; [preset setObject:[NSNumber numberWithFloat:20.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ @@ -1337,22 +1027,23 @@ /*Picture Settings*/ /* Use Max Picture settings for whatever the dvd is.*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureWidth"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; /* Set crop settings here */ /* The Auto Crop Matrix in the Picture Window autodetects differences in crop settings */ + [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureAutoCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureTopCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureBottomCrop"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureLeftCrop"]; @@ -1382,43 +1073,44 @@ return preset; } -- (NSDictionary *)createAndroidMidPreset +- (NSDictionary *)createAndroidPreset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; /* Get the New Preset Name from the field in the AddPresetPanel */ - [preset setObject:@"Android Mid" forKey:@"PresetName"]; + [preset setObject:@"Android" forKey:@"PresetName"]; /*Set whether or not this is a user preset or factory 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's settings for Mid-range Android 2.3 or better devices." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"]; /* Video encoder */ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; + /* x264 Option String */ - [preset setObject:@"cabac=0:ref=2:me=umh:bframes=0:weightp=0:subme=6:8x8dct=0:trellis=0" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"main" forKey:@"h264Profile"]; + [preset setObject:@"2.2" forKey:@"h264Level"]; /* Video quality */ + [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; - [preset setObject:@"960" forKey:@"VideoAvgBitrate"]; [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ @@ -1432,17 +1124,17 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; /*Picture Settings*/ - /* Use a width of 480 for the iPhone*/ - [preset setObject:[NSNumber numberWithInt:480] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; - [preset setObject:[NSNumber numberWithInt:1] forKey:@"PictureKeepRatio"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; @@ -1478,31 +1170,25 @@ return preset; } -- (NSDictionary *)createAndroidHighPreset +- (NSDictionary *)createAndroidTabletPreset { NSMutableDictionary *preset = [[NSMutableDictionary alloc] init]; /* Get the New Preset Name from the field in the AddPresetPanel */ - [preset setObject:@"Android High" forKey:@"PresetName"]; + [preset setObject:@"Android Tablet" forKey:@"PresetName"]; /*Set whether or not this is a user preset where 0 is factory, 1 is user*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Type"]; - /*Set whether or not this is a folder, 1 is bool for folder*/ - [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; - /*Set whether or not this is default, at creation set to 0*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"Default"]; - - /*Get the whether or not to apply pic settings in the AddPresetPanel*/ - [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; + [preset setObject:[NSNumber numberWithBool: NO] forKey:@"Folder"]; /* Get the New Preset Description from the field in the AddPresetPanel */ [preset setObject:@"HandBrake's preset for the Higher end Anroid 2.3 or better devices." forKey:@"PresetDescription"]; /* File Format */ [preset setObject:@"MP4 file" forKey:@"FileFormat"]; - - /* 64-bit MP4 file */ - [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4LargeFile"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"Mp4iPodCompatible"]; /* Chapter Markers*/ [preset setObject:[NSNumber numberWithInt:0] forKey:@"ChapterMarkers"]; @@ -1511,11 +1197,17 @@ [preset setObject:@"H.264 (x264)" forKey:@"VideoEncoder"]; /* x264 Option String (We can use this to tweak the output)*/ - [preset setObject:@"weightp=0:cabac=0" forKey:@"x264Option"]; + [preset setObject:@"" forKey:@"x264Option"]; + [preset setObject:[NSNumber numberWithInt:0] forKey:@"x264UseAdvancedOptions"]; + [preset setObject:@"medium" forKey:@"x264Preset"]; + [preset setObject:@"" forKey:@"x264Tune"]; + [preset setObject:@"" forKey:@"x264OptionExtra"]; + [preset setObject:@"main" forKey:@"h264Profile"]; + [preset setObject:@"3.1" forKey:@"h264Level"]; /* Video quality */ - [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:@"2500" forKey:@"VideoAvgBitrate"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"VideoQualityType"]; [preset setObject:[NSNumber numberWithFloat:22.0] forKey:@"VideoQualitySlider"]; /* Video framerate */ @@ -1529,18 +1221,17 @@ [preset setObject:[NSNumber numberWithInt:0] forKey:@"VideoTwoPass"]; /* Basic Picture Settings */ - /* Use Max Picture settings for whatever the dvd is.*/ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureSettings"]; - [preset setObject:[NSNumber numberWithInt:720] forKey:@"PictureWidth"]; + [preset setObject:[NSNumber numberWithInt:1280] forKey:@"PictureWidth"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureHeight"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureKeepRatio"]; [preset setObject:[NSNumber numberWithInt:2] forKey:@"PicturePAR"]; + [preset setObject:[NSNumber numberWithInt:2] forKey:@"PictureModulus"]; /* Explicitly set the filters for built-in presets */ [preset setObject:[NSNumber numberWithInt:1] forKey:@"UsesPictureFilters"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeinterlace"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDenoise"]; - [preset setObject:[NSNumber numberWithInt:0] forKey:@"VFR"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDeblock"]; [preset setObject:[NSNumber numberWithInt:0] forKey:@"PictureDetelecine"]; diff --git a/macosx/HBPreviewController.h b/macosx/HBPreviewController.h index 1394a9730..420e2831e 100644 --- a/macosx/HBPreviewController.h +++ b/macosx/HBPreviewController.h @@ -12,22 +12,18 @@ @class HBController; -#define HB_NUM_HBLIB_PICTURES 20 // # of preview pictures libhb should generate - -@interface PreviewController : NSWindowController +@interface PreviewController : NSWindowController <NSWindowDelegate> { hb_handle_t * fHandle; hb_title_t * fTitle; - HBController *fHBController; // reference to HBController + HBController * fHBController; // reference to HBController - IBOutlet NSWindow * fPreviewWindow; - NSWindow * fFullScreenWindow; // Full Screen window NSMutableDictionary * fPicturePreviews; // NSImages, one for each preview libhb creates, created lazily int fPicture; - IBOutlet NSImageView * fPictureView; - IBOutlet NSBox * fPictureViewArea; + CALayer * fWhiteBackground; + CALayer * fPictureLayer; IBOutlet NSBox * fPictureControlBox; IBOutlet NSBox * fEncodingControlBox; IBOutlet NSBox * fMoviePlaybackControlBox; @@ -36,23 +32,16 @@ IBOutlet NSTextField * fInfoField; IBOutlet NSTextField * fscaleInfoField; - BOOL isEncoding; - - - int MaxOutputWidth; - int MaxOutputHeight; - - int output_width, output_height, output_par_width, output_par_height; - int display_width; + CGFloat backingScaleFactor; /* Hud Control Overlay */ NSTimer * fHudTimer; int hudTimerSeconds; /* Full Screen Mode Toggle */ + BOOL scaleToScreen; IBOutlet NSButton * fScaleToScreenToggleButton; IBOutlet NSButton * fPictureSettingsToggleButton; - BOOL scaleToScreen; /* Movie Previews */ QTMovie * aMovie; @@ -68,13 +57,13 @@ IBOutlet NSTextField * fMovieInfoField; NSTimer * fMovieTimer; - IBOutlet NSButton * fCreatePreviewMovieButton; IBOutlet NSButton * fCancelPreviewMovieButton; IBOutlet NSButton * fShowPreviewMovieButton; NSString * fPreviewMoviePath; IBOutlet NSProgressIndicator * fMovieCreationProgressIndicator; hb_handle_t * fPreviewLibhb; // private libhb for creating previews + NSInteger fEncodeState; NSTimer * fLibhbTimer; // timer for retrieving state from libhb IBOutlet NSTextField * fPreviewMovieStatusField; IBOutlet NSPopUpButton * fPreviewMovieLengthPopUp; // popup of choices for length of preview in seconds @@ -83,18 +72,15 @@ - (void) SetHandle: (hb_handle_t *) handle; - (void) SetTitle: (hb_title_t *) title; -- (void)setHBController: (HBController *)controller; -- (IBAction) showPreviewWindow: (id)sender; -- (BOOL)acceptsMouseMovedEvents; +- (void) setHBController: (HBController *)controller; - (void) displayPreview; -- (IBAction) SettingsChanged: (id) sender; +- (IBAction) settingsChanged: (id) sender; - (IBAction) pictureSliderChanged: (id) sender; -- (IBAction)showPictureSettings:(id)sender; +- (IBAction) showPictureSettings:(id)sender; - (NSString*) pictureSizeInfoString; -- (IBAction)toggleScaleToScreen:(id)sender; -- (IBAction)goWindowedScreen:(id)sender; +- (IBAction) toggleScaleToScreen:(id)sender; /* HUD overlay */ - (void) enableHudControls; @@ -108,37 +94,36 @@ - (void) stopReceivingLibhbNotifications; - (void) installMovieCallbacks; -- (void)removeMovieCallbacks; +- (void) removeMovieCallbacks; - (IBAction) cancelCreateMoviePreview: (id) sender; - (IBAction) createMoviePreview: (id) sender; - (void) libhbStateChanged: (hb_state_t ) state; - (IBAction) showMoviePreview: (NSString *) path; +- (IBAction) showPicturesPreview: (id) sender; - (IBAction) toggleMoviePreviewPlayPause: (id) sender; - (IBAction) moviePlaybackGoToBeginning: (id) sender; - (IBAction) moviePlaybackGoToEnd: (id) sender; - (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender; - (IBAction) moviePlaybackGoForwardOneFrame: (id) sender; --(void) initPreviewScrubberForMovie; --(void) adjustPreviewScrubberForCurrentMovieTime; +- (void) initPreviewScrubberForMovie; +- (void) adjustPreviewScrubberForCurrentMovieTime; - (IBAction) previewScrubberChanged: (id) sender; --(void)setTime:(int)timeValue; --(void)timeToQTTime:(long)timeValue resultTime:(QTTime *)aQTTime; +- (BOOL) isPlaying; + - (void) startMovieTimer; - (void) stopMovieTimer; -- (NSString*) calculatePlaybackSMTPETimecodeForDisplay; +- (NSString*) SMTPETimecode: (QTTime)time; +- (QTTime)SliderToQTTime:(double)time; - (IBAction) previewDurationPopUpChanged: (id) sender; - -- (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title; - -+ (NSImage *) makeImageForPicture: (int)pictureIndex ++ (NSImage *) makeImageForPicture: (NSInteger)pictureIndex libhb:(hb_handle_t*)handle title:(hb_title_t*)title; -- (NSImage *) imageForPicture: (int) pictureIndex; +- (NSImage *) imageForPicture: (NSInteger) pictureIndex; - (void) purgeImageCache; @end diff --git a/macosx/HBPreviewController.m b/macosx/HBPreviewController.m index 69b6f521e..ba664059b 100644 --- a/macosx/HBPreviewController.m +++ b/macosx/HBPreviewController.m @@ -7,22 +7,28 @@ #import "HBPreviewController.h" #import "Controller.h" -@implementation QTMovieView ( HBQTkitExt ) +#define BORDER_SIZE 2.0 +#define HB_NUM_HBLIB_PICTURES 20 // # of preview pictures libhb should generate + +@implementation QTMovieView (HBExtensions) - (void) mouseMoved:(NSEvent *)theEvent { [super mouseMoved:theEvent]; } @end +#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 +@interface NSWindow(HBExtensions) + +@property (readonly) CGFloat backingScaleFactor; +@end +#endif @interface PreviewController (Private) - (NSSize)optimalViewSizeForImageSize: (NSSize)imageSize; -- (void)resizeSheetForViewSize: (NSSize)viewSize; -- (void)setViewSize: (NSSize)viewSize; -- (BOOL)viewNeedsToResizeToSize: (NSSize)newSize; - +- (void)resizeWindowForViewSize: (NSSize)viewSize; @end @implementation PreviewController @@ -45,29 +51,10 @@ /* Init libhb with check for updates libhb style set to "0" so its ignored and lets sparkle take care of it */ int loggingLevel = [[[NSUserDefaults standardUserDefaults] objectForKey:@"LoggingLevel"] intValue]; fPreviewLibhb = hb_init(loggingLevel, 0); - - - } return self; } - -//------------------------------------------------------------------------------------ -// Displays and brings the picture window to the front -//------------------------------------------------------------------------------------ -- (IBAction) showPreviewWindow: (id)sender -{ - [self showWindow:sender]; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"PreviewWindowIsOpen"]; - - /* lets set the preview window to accept mouse moved events */ - [fPreviewWindow setAcceptsMouseMovedEvents:YES]; - hudTimerSeconds = 0; - [self pictureSliderChanged:nil]; - [self startReceivingLibhbNotifications]; -} - - (void)setHBController: (HBController *)controller { fHBController = controller; @@ -75,15 +62,16 @@ - (void)awakeFromNib { - [fPreviewWindow setDelegate:self]; + [[self window] setDelegate:self]; + if( ![[self window] setFrameUsingName:@"Preview"] ) [[self window] center]; + [self setWindowFrameAutosaveName:@"Preview"]; [[self window] setExcludedFromWindowsMenu:YES]; /* lets set the preview window to accept mouse moved events */ - [fPreviewWindow setAcceptsMouseMovedEvents:YES]; - //[self pictureSliderChanged:nil]; + [[self window] setAcceptsMouseMovedEvents:YES]; [self startReceivingLibhbNotifications]; hudTimerSeconds = 0; @@ -92,35 +80,74 @@ */ [fMovieCreationProgressIndicator setUsesThreadedAnimation:NO]; - /* Setup our layers for core animation */ - [fPictureViewArea setWantsLayer:YES]; - [fPictureView setWantsLayer:YES]; + /* we set the preview length popup in seconds */ + [fPreviewMovieLengthPopUp removeAllItems]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"15"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"30"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"45"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"60"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"90"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"105"]; + [fPreviewMovieLengthPopUp addItemWithTitle: @"120"]; - [fCancelPreviewMovieButton setWantsLayer:YES]; - [fMovieCreationProgressIndicator setWantsLayer:YES]; + [fMovieView setHidden:YES]; + [fMovieView setDelegate:self]; + /* Setup our layers for core animation */ + [[[self window] contentView] setWantsLayer:YES]; [fPictureControlBox setWantsLayer:YES]; [fEncodingControlBox setWantsLayer:YES]; - [fMovieView setWantsLayer:YES]; - [fMovieView setHidden:YES]; - [fMovieView setDelegate:self]; + [fMoviePlaybackControlBox setWantsLayer:YES]; + + fWhiteBackground = [CALayer layer]; + [fWhiteBackground setBounds:CGRectMake(0.0, 0.0, 480.0, 360.0)]; + [fWhiteBackground setPosition:CGPointMake([[[self window] contentView] frame].size.width /2, + [[[self window] contentView] frame].size.height /2)]; + + [fWhiteBackground setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; + CGColorRef white = CGColorCreateGenericRGB(1.0, 1.0, 1.0, 1.0); + [fWhiteBackground setBackgroundColor: white]; + CFRelease(white); + [fWhiteBackground setShadowOpacity:0.5f]; + [fWhiteBackground setShadowOffset:CGSizeMake(0, 0)]; - /* Since the xib has everything off center for easy acess - * we align our views and windows here we an align to anything - * since it will actually change later upon source load, but - * for convenience we will use the fPictureViewArea - */ - - /* Align the still preview image view to the picture box */ - [fPictureView setFrameSize:[fPictureViewArea frame].size]; - [fMovieView setFrameSize:[fPictureViewArea frame].size]; - //[fPreviewWindow setFrameSize:[fPictureViewArea frame].size]; + fPictureLayer = [CALayer layer]; + [fPictureLayer setBounds:CGRectMake(0.0, 0.0, 476.0, 356.0)]; + [fPictureLayer setPosition:CGPointMake([[[self window] contentView] frame].size.width /2, + [[[self window] contentView] frame].size.height /2)]; + [fPictureLayer setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; + + NSMutableDictionary *actions = [NSMutableDictionary + dictionaryWithDictionary:[fPictureLayer actions]]; + + // Disable fade on contents change + [actions setObject:[NSNull null] forKey:@"contents"]; + [fPictureLayer setActions:actions]; + + [[[[self window] contentView] layer] insertSublayer:fWhiteBackground below: [fMovieView layer]]; + [[[[self window] contentView] layer] insertSublayer:fPictureLayer below: [fMovieView layer]]; + + /* relocate our hud origins */ + NSPoint hudControlBoxOrigin = [fMoviePlaybackControlBox frame].origin; + [fPictureControlBox setFrameOrigin:hudControlBoxOrigin]; + [fEncodingControlBox setFrameOrigin:hudControlBoxOrigin]; + [fMoviePlaybackControlBox setFrameOrigin:hudControlBoxOrigin]; + if( [[self window] respondsToSelector:@selector( backingScaleFactor )] ) + backingScaleFactor = [[self window] backingScaleFactor]; + else + backingScaleFactor = 1.0; + + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(titleChanged:) name: HBTitleChangedNotification object:nil]; } -- (BOOL)acceptsMouseMovedEvents + +- (void) titleChanged: (NSNotification *) aNotification { - return YES; + /* Notification from HBController, only used to stop + * an encoding while the HBController is scanning a new title + */ + [self cancelCreateMoviePreview:self]; } - (void)windowWillClose:(NSNotification *)aNotification @@ -131,22 +158,18 @@ * to go back to still previews .. just in case nothing is loaded up like in * a Launch, cancel new scan then quit type scenario. */ - if (fPicture) + + if (fEncodeState || [self isPlaying]) { - [self pictureSliderChanged:nil]; - [fMovieTimer invalidate]; - [fMovieTimer release]; + [self cancelCreateMoviePreview:self]; + [fMovieView pause:self]; + [self stopMovieTimer]; } - + hudTimerSeconds = 0; [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"PreviewWindowIsOpen"]; } -- (BOOL)windowShouldClose:(id)fPictureWindow -{ - return YES; -} - - (void) dealloc { hb_stop(fPreviewLibhb); @@ -154,7 +177,7 @@ { [[NSFileManager defaultManager] removeItemAtPath:fPreviewMoviePath error:nil]; [fPreviewMoviePath release]; - } + } [fLibhbTimer invalidate]; [fLibhbTimer release]; @@ -166,7 +189,6 @@ [fMovieTimer release]; [fPicturePreviews release]; - [fFullScreenWindow release]; hb_close(&fPreviewLibhb); @@ -179,18 +201,6 @@ { fHandle = handle; - - - /* we set the preview length popup in seconds */ - [fPreviewMovieLengthPopUp removeAllItems]; - [fPreviewMovieLengthPopUp addItemWithTitle: @"15"]; - [fPreviewMovieLengthPopUp addItemWithTitle: @"30"]; - [fPreviewMovieLengthPopUp addItemWithTitle: @"45"]; - [fPreviewMovieLengthPopUp addItemWithTitle: @"60"]; - [fPreviewMovieLengthPopUp addItemWithTitle: @"90"]; - [fPreviewMovieLengthPopUp addItemWithTitle: @"105"]; - [fPreviewMovieLengthPopUp addItemWithTitle: @"120"]; - /* adjust the preview slider length */ /* We use our advance pref to determine how many previews we scanned */ int hb_num_previews = [[[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewsNumber"] intValue]; @@ -203,56 +213,52 @@ } else { - /* currently hard set default to 10 seconds */ - [fPreviewMovieLengthPopUp selectItemAtIndex: 1]; + /* currently hard set default to 15 seconds */ + [fPreviewMovieLengthPopUp selectItemAtIndex: 0]; } } - (void) SetTitle: (hb_title_t *) title { - hb_job_t * job = title->job; - fTitle = title; fPicture = 0; - MaxOutputWidth = title->width - job->crop[2] - job->crop[3]; - MaxOutputHeight = title->height - job->crop[0] - job->crop[1]; - - [self SettingsChanged: nil]; + [self settingsChanged:nil]; } - +- (void)windowDidChangeBackingProperties:(NSNotification *)notification { + + NSWindow *theWindow = (NSWindow *)[notification object]; + + CGFloat newBackingScaleFactor = [theWindow backingScaleFactor]; + CGFloat oldBackingScaleFactor = [[[notification userInfo] + objectForKey:@"NSBackingPropertyOldScaleFactorKey"] + doubleValue]; + if( newBackingScaleFactor != oldBackingScaleFactor ) + { + // Scale factor changed, update the preview window + // to the new situation + backingScaleFactor = newBackingScaleFactor; + [self pictureSliderChanged:self]; + } +} // Adjusts the window to draw the current picture (fPicture) adjusting its size as // necessary to display as much of the picture as possible. -- (void) displayPreview +- (void) displayPreview { hb_job_t * job = fTitle->job; - /* lets make sure that the still picture view is not hidden and that - * the movie preview is - */ - aMovie = nil; - [fMovieView pause:nil]; - [fMovieView setHidden:YES]; - [fMovieView setMovie:nil]; - [fMovieCreationProgressIndicator stopAnimation: nil]; - [fMovieCreationProgressIndicator setHidden: YES]; - [fMoviePlaybackControlBox setHidden: YES]; - if( fMovieTimer ) - { - [self stopMovieTimer]; - } - [fPictureControlBox setHidden: NO]; - - [fPictureView setHidden:NO]; - + NSImage *fPreviewImage = [self imageForPicture: fPicture]; NSSize imageScaledSize = [fPreviewImage size]; - [fPictureView setImage: fPreviewImage]; - + [fPictureLayer setContents:fPreviewImage]; + NSSize displaySize = NSMakeSize( ( CGFloat )fTitle->width, ( CGFloat )fTitle->height ); NSString *sizeInfoString; + /* Set the picture size display fields below the Preview Picture*/ + int output_width, output_height, output_par_width, output_par_height; + int display_width; if( fTitle->job->anamorphic.mode == 1 ) // Original PAR Implementation { output_width = fTitle->width-fTitle->job->crop[2]-fTitle->job->crop[3]; @@ -265,7 +271,7 @@ displaySize.width = display_width; displaySize.height = fTitle->height; imageScaledSize.width = display_width; - imageScaledSize.height = output_height; + imageScaledSize.height = output_height; } else if (fTitle->job->anamorphic.mode == 2) // Loose Anamorphic { @@ -283,7 +289,6 @@ else if (fTitle->job->anamorphic.mode == 3) // Custom Anamorphic { hb_set_anamorphic_size(job, &output_width, &output_height, &output_par_width, &output_par_height); - display_width = output_width * output_par_width / output_par_height; sizeInfoString = [NSString stringWithFormat: @"Source: %dx%d, Output: %dx%d, Anamorphic: %dx%d Custom", fTitle->width, fTitle->height, output_width, output_height, fTitle->job->anamorphic.dar_width, fTitle->job->anamorphic.dar_height]; @@ -291,8 +296,8 @@ displaySize.width = fTitle->job->anamorphic.dar_width + fTitle->job->crop[2] + fTitle->job->crop[3] ; displaySize.height = fTitle->job->anamorphic.dar_height + fTitle->job->crop[0] + fTitle->job->crop[1]; imageScaledSize.width = (int)fTitle->job->anamorphic.dar_width; - imageScaledSize.height = (int)fTitle->job->height; - } + imageScaledSize.height = (int)fTitle->job->height; + } else // No Anamorphic { sizeInfoString = [NSString stringWithFormat: @@ -304,113 +309,94 @@ imageScaledSize.width = fTitle->job->width; imageScaledSize.height = fTitle->job->height; } - - - - NSSize viewSize = [self optimalViewSizeForImageSize:displaySize]; - [self resizeSheetForViewSize:viewSize]; - NSSize windowSize = [[self window] frame].size; + if( backingScaleFactor != 1.0 ) + { + // HiDPI mode usually display everything + // with douple pixel count, but we don't + // want to double the size of the video + displaySize.height /= backingScaleFactor; + displaySize.width /= backingScaleFactor; + imageScaledSize.height /= backingScaleFactor; + imageScaledSize.width /= backingScaleFactor; + } + + // Get the optimal view size for the image + NSSize viewSize = [self optimalViewSizeForImageSize:displaySize]; + viewSize.width += BORDER_SIZE * 2; + viewSize.height += BORDER_SIZE * 2; + NSSize windowSize; + if (scaleToScreen == YES) + // Scale the window to the max possible size + windowSize = [[[self window] screen] visibleFrame].size; + else + // Scale the window to the image size + windowSize = viewSize; + + [self resizeWindowForViewSize:windowSize]; + NSSize areaSize = [[[self window] contentView] frame].size; + areaSize.width -= BORDER_SIZE * 2; + areaSize.height -= BORDER_SIZE * 2; + if (scaleToScreen == YES) { - /* Note: this should probably become a utility function */ /* We are in Scale To Screen mode so, we have to get the ratio for height and width against the window *size so we can scale from there. */ - CGFloat deltaWidth = imageScaledSize.width / displaySize.width; - CGFloat deltaHeight = imageScaledSize.height /displaySize.height; - NSSize windowSize = [[self window] frame].size; CGFloat pictureAspectRatio = imageScaledSize.width / imageScaledSize.height; + CGFloat areaAspectRatio = areaSize.width / areaSize.height; - /* Set our min size to the storage size */ - NSSize minSize; - minSize.width = fTitle->width; - minSize.height = fTitle->height; - - /* Set delta's based on minimum size */ - if (imageScaledSize.width < minSize.width) - { - deltaWidth = imageScaledSize.width / minSize.width; - } - else - { - deltaWidth = 1.0; - } - - if (imageScaledSize.height < minSize.height) - { - deltaHeight = imageScaledSize.height / minSize.height; - } - else - { - deltaHeight = 1.0; - } - - /* Now apply our deltas to the full screen view */ - if (pictureAspectRatio > 1.0) // we are wider than taller, so expand the width to fill the area and scale the height + if (pictureAspectRatio > areaAspectRatio) { - viewSize.width = windowSize.width * deltaWidth; + viewSize.width = areaSize.width; viewSize.height = viewSize.width / pictureAspectRatio; - } else { - viewSize.height = windowSize.height * deltaHeight; + viewSize.height = areaSize.height; viewSize.width = viewSize.height * pictureAspectRatio; } - } else { - viewSize.width = viewSize.width - (viewSize.width - imageScaledSize.width); - viewSize.height = viewSize.height - (viewSize.height - imageScaledSize.height); - - if (fTitle->width > windowSize.width || fTitle->height > windowSize.height) + // If the image is larger then the window, scale the image + viewSize = imageScaledSize; + + if (imageScaledSize.width > areaSize.width || imageScaledSize.height > areaSize.height) { - CGFloat viewSizeAspect = viewSize.width / viewSize.height; - if (viewSizeAspect > 1.0) // we are wider than taller, so expand the width to fill the area and scale the height + CGFloat pictureAspectRatio = imageScaledSize.width / imageScaledSize.height; + CGFloat areaAspectRatio = areaSize.width / areaSize.height; + + if (pictureAspectRatio > areaAspectRatio) { - viewSize.width = viewSize.width * (windowSize.width / fTitle->width) ; - viewSize.height = viewSize.width / viewSizeAspect; + viewSize.width = areaSize.width; + viewSize.height = viewSize.width / pictureAspectRatio; } else { - viewSize.height = viewSize.height * (windowSize.height / fTitle->height); - viewSize.width = viewSize.height * viewSizeAspect; + viewSize.height = areaSize.height; + viewSize.width = viewSize.height * pictureAspectRatio; } } - } - - [self setViewSize:viewSize]; - - /* relocate our hud origins as per setViewSize */ - NSPoint hudControlBoxOrigin = [fPictureControlBox frame].origin; - hudControlBoxOrigin.y = ([[self window] frame].size.height / 2) - (viewSize.height / 2); - hudControlBoxOrigin.x = ([[self window] frame].size.width / 2) - ([fPictureControlBox frame].size.width / 2); - [fPictureControlBox setFrameOrigin:hudControlBoxOrigin]; - [fEncodingControlBox setFrameOrigin:hudControlBoxOrigin]; - [fMoviePlaybackControlBox setFrameOrigin:hudControlBoxOrigin]; + // Resize the CALayers + [fWhiteBackground setBounds:CGRectMake(0, 0, viewSize.width + (BORDER_SIZE * 2), viewSize.height + (BORDER_SIZE * 2))]; + [fPictureLayer setBounds:CGRectMake(0, 0, viewSize.width, viewSize.height)]; NSString *scaleString; - CGFloat scale = ( ( CGFloat )[fPictureView frame].size.width) / ( ( CGFloat )imageScaledSize.width); + CGFloat scale = ( ( CGFloat )[fPictureLayer frame].size.width) / ( ( CGFloat )imageScaledSize.width); if (scale * 100.0 != 100) - { scaleString = [NSString stringWithFormat: NSLocalizedString( @" (%.0f%% actual size)", @"String shown when a preview is scaled" ), scale * 100.0]; - } else - { scaleString = @"(Actual size)"; - } if (scaleToScreen == YES) - { scaleString = [scaleString stringByAppendingString:@" Scaled To Screen"]; - } + /* Set the info fields in the hud controller */ [fInfoField setStringValue: [NSString stringWithFormat: @"%@", sizeInfoString]]; @@ -423,17 +409,15 @@ - (IBAction) previewDurationPopUpChanged: (id) sender { - [[NSUserDefaults standardUserDefaults] setObject:[fPreviewMovieLengthPopUp titleOfSelectedItem] forKey:@"PreviewLength"]; +} -} - -- (IBAction) SettingsChanged: (id) sender +- (IBAction) settingsChanged: (id) sender { - // Purge the existing picture previews so they get recreated the next time - // they are needed. - [self purgeImageCache]; - [self pictureSliderChanged:nil]; + // Purge the existing picture previews so they get recreated the next time + // they are needed. + [self purgeImageCache]; + [self pictureSliderChanged:nil]; } - (IBAction) pictureSliderChanged: (id) sender @@ -442,11 +426,14 @@ [self cancelCreateMoviePreview:nil]; // Show the picture view - [fPictureView setHidden:NO]; - [fMovieView pause:nil]; - [fMovieView setHidden:YES]; - [fMovieView setMovie:nil]; - [fEncodingControlBox setHidden: YES]; + if (aMovie) + { + [fMoviePlaybackControlBox setHidden:YES]; + [fMovieView pause:nil]; + [fMovieView setHidden:YES]; + [fMovieView setMovie:nil]; + aMovie = nil; + } int newPicture = [fPictureSlider intValue]; if (newPicture != fPicture) @@ -457,23 +444,13 @@ } -- (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title +- (IBAction)showWindow:(id)sender { - if ([fPreviewWindow isVisible]) - { - [fPreviewWindow close]; - } - else - { - [self showWindow:sender]; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"PreviewWindowIsOpen"]; - [fPreviewWindow setAcceptsMouseMovedEvents:YES]; - scaleToScreen = NO; - [self pictureSliderChanged:nil]; - } + if (aMovie) + [self startMovieTimer]; + [super showWindow:sender]; } - - (NSString*) pictureSizeInfoString { return [fInfoField stringValue]; @@ -511,12 +488,12 @@ NSPoint mouseLoc = [theEvent locationInWindow]; /* Test for mouse location to show/hide hud controls */ - if( isEncoding == NO ) + if( fEncodeState != 1 ) { /* Since we are not encoding, verify which control hud to show * or hide based on aMovie ( aMovie indicates we need movie controls ) */ - NSBox * hudBoxToShow; + NSBox *hudBoxToShow; if ( aMovie == nil ) // No movie loaded up { hudBoxToShow = fPictureControlBox; @@ -531,7 +508,7 @@ [[hudBoxToShow animator] setHidden: NO]; [self stopHudTimer]; } - else if( NSPointInRect( mouseLoc, [fPictureViewArea frame] ) ) + else if( NSPointInRect( mouseLoc, [[[self window] contentView] frame] ) ) { [[hudBoxToShow animator] setHidden: NO]; [self startHudTimer]; @@ -578,8 +555,6 @@ } } - - - (IBAction)toggleScaleToScreen:(id)sender { if (scaleToScreen == YES) @@ -599,85 +574,14 @@ } - - -// Title-less windows normally don't receive key presses, override this -- (BOOL)canBecomeKeyWindow -{ - return YES; -} - -// Title-less windows normally can't become main which means that another -// non-fullscreen window will have the "active" titlebar in expose. Bad, fix it. -- (BOOL)canBecomeMainWindow -{ - return YES; -} - - -- (IBAction)goWindowedScreen:(id)sender -{ - - /* Get the screen info to release the display but don't actually do - * it until the windowed screen is setup. - */ - scaleToScreen = NO; - [self pictureSliderChanged:nil]; - [fScaleToScreenToggleButton setTitle:@"<->"]; - - NSScreen* mainScreen = [NSScreen mainScreen]; - NSDictionary* screenInfo = [mainScreen deviceDescription]; - NSNumber* screenID = [screenInfo objectForKey:@"NSScreenNumber"]; - CGDirectDisplayID displayID = (CGDirectDisplayID)[screenID longValue]; - - [fFullScreenWindow dealloc]; - [fFullScreenWindow release]; - - - [fPreviewWindow setContentView:fPictureViewArea]; - [fPictureViewArea setNeedsDisplay:YES]; - [self setWindow:fPreviewWindow]; - - // Show the window. - [fPreviewWindow makeKeyAndOrderFront:self]; - - /* Set the window back to regular level */ - [fPreviewWindow setLevel:NSNormalWindowLevel]; - - /* Set the isFullScreen flag back to NO */ - //isFullScreen = NO; - scaleToScreen = NO; - /* make sure we are set to a still preview */ - [self pictureSliderChanged:nil]; - [self showPreviewWindow:nil]; - - /* Change the name of fFullScreenToggleButton appropriately */ - //[fFullScreenToggleButton setTitle: @"Full Screen"]; - // [fScaleToScreenToggleButton setHidden:YES]; - /* set the picture settings pallete back to normal level */ - [fHBController picturePanelWindowed]; - - /* Release the display now that the we are back in windowed mode */ - CGDisplayRelease(displayID); - - [fPreviewWindow setAcceptsMouseMovedEvents:YES]; - //[fFullScreenWindow setAcceptsMouseMovedEvents:NO]; - - hudTimerSeconds = 0; - [self startHudTimer]; - -} - - #pragma mark Still Preview Image Processing - // This function converts an image created by libhb (specified via pictureIndex) into // an NSImage suitable for the GUI code to use. If removeBorders is YES, // makeImageForPicture crops the image generated by libhb stripping off the gray // border around the content. This is the low-level method that generates the image. // -imageForPicture calls this function whenever it can't find an image in its cache. -+ (NSImage *) makeImageForPicture: (int)pictureIndex ++ (NSImage *) makeImageForPicture: (NSInteger)pictureIndex libhb:(hb_handle_t*)handle title:(hb_title_t*)title { @@ -696,7 +600,7 @@ buffer = (uint8_t *) realloc( buffer, bufferSize ); } - hb_get_preview( handle, title->job, pictureIndex, buffer ); + hb_get_preview( handle, title->job, (int)pictureIndex, buffer ); // Create an NSBitmapImageRep and copy the libhb image into it, converting it from // libhb's format to one suitable for NSImage. Along the way, we'll strip off the @@ -742,11 +646,11 @@ // cache or by calling makeImageForPicture if it is not cached. Generally, you should // use imageForPicture so that images are cached. Calling makeImageForPicture will // always generate a new copy of the image. -- (NSImage *) imageForPicture: (int) pictureIndex +- (NSImage *) imageForPicture: (NSInteger) pictureIndex { // The preview for the specified index may not currently exist, so this method // generates it if necessary. - NSString * key = [NSString stringWithFormat:@"%d", pictureIndex]; + NSNumber * key = [NSNumber numberWithInteger:pictureIndex]; NSImage * theImage = [fPicturePreviews objectForKey:key]; if (!theImage) { @@ -763,59 +667,33 @@ [fPicturePreviews removeAllObjects]; } - - #pragma mark Movie Preview - (IBAction) cancelCreateMoviePreview: (id) sender { - hb_state_t s; hb_get_state2( fPreviewLibhb, &s ); - if(isEncoding && (s.state == HB_STATE_WORKING || s.state == HB_STATE_PAUSED)) + if(fEncodeState && (s.state == HB_STATE_WORKING || s.state == HB_STATE_PAUSED)) { + fEncodeState = 2; hb_stop( fPreviewLibhb ); - [fPictureView setHidden:NO]; - [fMovieView pause:nil]; - [fMovieView setHidden:YES]; - [fMovieView setMovie:nil]; - [fPictureSlider setHidden:NO]; - isEncoding = NO; - - [self pictureSliderChanged:nil]; - + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fEncodingControlBox animator] setHidden:YES]; + [[fPictureControlBox animator] setHidden:NO]; + [NSAnimationContext endGrouping]; + return; } - } - (IBAction) createMoviePreview: (id) sender -{ - - - /* Lets make sure the still picture previews are showing in case - * there is currently a movie showing */ - [self pictureSliderChanged:nil]; - +{ /* Rip or Cancel ? */ hb_state_t s; hb_get_state2( fPreviewLibhb, &s ); - if(sender == fCancelPreviewMovieButton && (s.state == HB_STATE_WORKING || s.state == HB_STATE_PAUSED)) - { - hb_stop( fPreviewLibhb ); - [fPictureView setHidden:NO]; - [fMovieView pause:nil]; - [fMovieView setHidden:YES]; - [fMovieView setMovie:nil]; - [fPictureSlider setHidden:NO]; - isEncoding = NO; - - return; - } - - /* we use controller.mm's prepareJobForPreview to go ahead and set all of our settings * however, we want to use a temporary destination field of course * so that we do not put our temp preview in the users chosen @@ -907,15 +785,16 @@ /* we need to clean up the various lists after the job(s) have been set */ hb_job_reset( job ); - [fEncodingControlBox setHidden: NO]; - [fPictureControlBox setHidden: YES]; - - [fMovieCreationProgressIndicator setHidden: NO]; - [fPreviewMovieStatusField setHidden: NO]; - - isEncoding = YES; + [fMovieCreationProgressIndicator setDoubleValue:0]; + + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fEncodingControlBox animator] setHidden: NO]; + [[fPictureControlBox animator] setHidden: YES]; + [NSAnimationContext endGrouping]; /* Let fPreviewLibhb do the job */ + fEncodeState = 1; hb_start( fPreviewLibhb ); } @@ -943,7 +822,6 @@ hb_state_t s; hb_get_state( fPreviewLibhb, &s ); [self libhbStateChanged: s]; - } - (void) libhbStateChanged: (hb_state_t)state @@ -958,7 +836,6 @@ case HB_STATE_WORKING: { #define p state.param.working - NSMutableString * string; /* Update text field */ string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding preview: %.2f %%", @"" ), 100.0 * p.progress]; @@ -973,23 +850,20 @@ [fMovieCreationProgressIndicator setIndeterminate: NO]; /* Update slider */ - [fMovieCreationProgressIndicator setDoubleValue: 100.0 * p.progress]; - - [fCreatePreviewMovieButton setTitle: @"Cancel Preview"]; + [fMovieCreationProgressIndicator setDoubleValue: 100.0 * p.progress]; break; } #undef p -#define p state.param.muxing +#define p state.param.muxing case HB_STATE_MUXING: { // Update fMovieCreationProgressIndicator [fMovieCreationProgressIndicator setIndeterminate: YES]; [fMovieCreationProgressIndicator startAnimation: nil]; - [fPreviewMovieStatusField setStringValue: [NSString stringWithFormat: - NSLocalizedString( @"Muxing Preview ...", @"" )]]; + [fPreviewMovieStatusField setStringValue: NSLocalizedString( @"Muxing Preview ...", @"" )]; break; } #undef p @@ -1005,18 +879,15 @@ hb_rem( fHandle, job ); [fPreviewMovieStatusField setStringValue: @""]; - [fPreviewMovieStatusField setHidden: YES]; - [fMovieCreationProgressIndicator stopAnimation: nil]; - [fMovieCreationProgressIndicator setHidden: YES]; - [fEncodingControlBox setHidden: YES]; - [fPictureControlBox setHidden: YES]; - isEncoding = NO; - - // Show the movie view - [self showMoviePreview:fPreviewMoviePath]; - [fCreatePreviewMovieButton setTitle: @"Live Preview"]; + if (fEncodeState != 2) + { + // Show the movie view + [self showMoviePreview:fPreviewMoviePath]; + } + + fEncodeState = 0; break; } } @@ -1031,18 +902,17 @@ * object, given that, we detect the rate to determine whether the movie * is playing or not. */ - if ([aMovie rate] != 0) // we are playing + if ([self isPlaying]) // we are playing { [fMovieView pause:aMovie]; - [fPlayPauseButton setTitle: @">"]; + [fPlayPauseButton setState: NSOnState]; } else // we are paused or stopped { [fMovieView play:aMovie]; - [fPlayPauseButton setTitle: @"||"]; + [fPlayPauseButton setState: NSOffState]; } } - } - (IBAction) moviePlaybackGoToBeginning: (id) sender @@ -1051,8 +921,7 @@ if (aMovie != nil) { [fMovieView gotoBeginning:aMovie]; - } - + } } - (IBAction) moviePlaybackGoToEnd: (id) sender @@ -1061,8 +930,7 @@ if (aMovie != nil) { [fMovieView gotoEnd:aMovie]; - } - + } } - (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender @@ -1073,7 +941,6 @@ [fMovieView pause:aMovie]; // Pause the movie [fMovieView stepBackward:aMovie]; } - } - (IBAction) moviePlaybackGoForwardOneFrame: (id) sender @@ -1084,10 +951,8 @@ [fMovieView pause:aMovie]; // Pause the movie [fMovieView stepForward:aMovie]; } - } - - (void) startMovieTimer { if( fMovieTimer ) { @@ -1110,13 +975,28 @@ - (void) movieTimerFired: (NSTimer*)theTimer { - if (aMovie != nil) + if (aMovie != nil) { [self adjustPreviewScrubberForCurrentMovieTime]; - [fMovieInfoField setStringValue: [NSString stringWithFormat:NSLocalizedString( @"%@", @"" ),[self calculatePlaybackSMTPETimecodeForDisplay]]]; + [fMovieInfoField setStringValue: [self SMTPETimecode:[aMovie currentTime]]]; } } +- (IBAction) showPicturesPreview: (id) sender +{ + [fMovieView pause:self]; + [self stopMovieTimer]; + + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fMoviePlaybackControlBox animator] setHidden:YES]; + [[fMovieView animator] setHidden:YES]; + [[fPictureControlBox animator] setHidden:NO]; + [NSAnimationContext endGrouping]; + + [fMovieView setMovie:nil]; + aMovie = nil; +} - (IBAction) showMoviePreview: (NSString *) path @@ -1131,7 +1011,6 @@ /* Load the new movie into fMovieView */ if (path) { - //QTMovie * aMovie; NSError *outError; NSURL *movieUrl = [NSURL fileURLWithPath:path]; NSDictionary *movieAttributes = [NSDictionary dictionaryWithObjectsAndKeys: @@ -1146,36 +1025,22 @@ aMovie = [[[QTMovie alloc] initWithAttributes:movieAttributes error:&outError] autorelease]; - if (!aMovie) { - NSLog(@"Unable to open movie"); + [fHBController writeToActivityLog: "showMoviePreview: Unable to open movie"]; } else { NSRect movieBounds; + + [fMovieView setControllerVisible:NO]; + /* we get some size information from the preview movie */ - NSSize movieSize= [[aMovie attributeForKey:QTMovieNaturalSizeAttribute] sizeValue]; + NSSize movieSize = [[aMovie attributeForKey:QTMovieNaturalSizeAttribute] sizeValue]; movieBounds = [fMovieView movieBounds]; movieBounds.size.height = movieSize.height; /* We also get our view size to use for scaling fMovieView's size */ - NSSize scaledMovieViewSize = [fPictureView frame].size; - [fMovieView setControllerVisible:FALSE]; - if ([fMovieView isControllerVisible]) - { - CGFloat controllerBarHeight = [fMovieView controllerBarHeight]; - if ( controllerBarHeight != 0 ) //Check if QTKit return a real value or not. - { - movieBounds.size.height += controllerBarHeight; - scaledMovieViewSize.height += controllerBarHeight; - } - else - { - movieBounds.size.height += 15; - scaledMovieViewSize.height += 15; - } - } - + NSSize scaledMovieViewSize = [fPictureLayer frame].size; movieBounds.size.width = movieSize.width; /* we need to account for an issue where the scaledMovieViewSize > the window size */ @@ -1184,23 +1049,18 @@ [fHBController writeToActivityLog: "showMoviePreview: Our window is not tall enough to show the controller bar ..."]; } - - /* Scale the fMovieView to scaledMovieViewSize */ [fMovieView setFrameSize:scaledMovieViewSize]; /*set our origin try using fPictureViewArea or fPictureView */ - NSPoint origin = [fPictureView frame].origin; - origin.x += trunc( ( [fPictureView frame].size.width - + NSPoint origin = [fPictureLayer frame].origin; + origin.x += trunc( ( [fPictureLayer frame].size.width - [fMovieView frame].size.width ) / 2.0 ); - origin.y += trunc( ( ( [fPictureView frame].size.height - - [fMovieView frame].size.height ) / 2.0 ) - 7.5 ); + origin.y += trunc( ( ( [fPictureLayer frame].size.height - + [fMovieView frame].size.height ) / 2.0 ) ); [fMovieView setFrameOrigin:origin]; [fMovieView setMovie:aMovie]; - [fMovieView setHidden:NO]; - [fMoviePlaybackControlBox setHidden: NO]; - [fPictureControlBox setHidden: YES]; // get and enable subtitles NSArray *subtitlesArray; @@ -1223,87 +1083,47 @@ } // to actually play the movie - + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.2]; + [[fEncodingControlBox animator] setHidden: YES]; + [[fMovieView animator] setHidden:NO]; + [[fMoviePlaybackControlBox animator] setHidden: NO]; + [NSAnimationContext endGrouping]; + [self initPreviewScrubberForMovie]; [self startMovieTimer]; /* Install amovie notifications */ [aMovie setDelegate:self]; [self installMovieCallbacks]; [fMovieView play:aMovie]; - } } - isEncoding = NO; -} -#pragma mark *** Movie Playback Scrubber and time code methods *** - -/* Since MacOSX Leopard QTKit has taken over some responsibility for assessing movie playback - * information from the old QuickTime carbon api ( time code information as well as fps, etc.). - * However, the QTKit devs at apple were not really big on documentation and further ... - * QuickTimes ability to playback HB's largely variable framerate output makes perfectly frame - * accurate information at best convoluted. Still, for the purpose of a custom hud based custom - * playback scrubber slider this has so far proven to be as accurate as I have found. To say it - * could use some better accuracy is not understating it enough probably. - * Most of this was gleaned from this obscure Apple Mail list thread: - * http://www.mailinglistarchive.com/[email protected]/msg05642.html - * Now as we currently do not show a QTKit control bar with scrubber for display sizes > container - * size, this seems to facilitate playback control from the HB custom HUD controller fairly close - * to the built in controller bar. - * Further work needs to be done to try to get accurate frame by frame playback display if we want it. - * Note that the keyboard commands for frame by frame step through etc. work as always. - */ - -// Returns a human readable string from the currentTime of movie playback -- (NSString*) calculatePlaybackSMTPETimecodeForDisplay -{ - QTTime time = [aMovie currentTime]; - - NSString *smtpeTimeCodeString; - int days, hour, minute, second, frame; - long long result; - - result = time.timeValue / time.timeScale; // second - frame = (time.timeValue % time.timeScale) / 100; - - second = result % 60; - - result = result / 60; // minute - minute = result % 60; - - result = result / 60; // hour - hour = result % 24; - days = result; - - smtpeTimeCodeString = [NSString stringWithFormat:@"Time: %02d:%02d:%02d", hour, minute, second]; // hh:mm:ss - return smtpeTimeCodeString; - } +#pragma mark *** Movie Playback Scrubber and time code methods *** // Initialize the preview scrubber min/max to appropriate values for the current movie -(void) initPreviewScrubberForMovie { if (aMovie) { - QTTime duration = [aMovie duration]; - float result = duration.timeValue / duration.timeScale; + CGFloat result = duration.timeValue / duration.timeScale; [fMovieScrubberSlider setMinValue:0.0]; - [fMovieScrubberSlider setMaxValue: (float)result]; - [fMovieScrubberSlider setFloatValue: 0.0]; + [fMovieScrubberSlider setMaxValue: result]; + [fMovieScrubberSlider setDoubleValue: 0.0]; } } - -(void) adjustPreviewScrubberForCurrentMovieTime { if (aMovie) { QTTime time = [aMovie currentTime]; - float result = (float)time.timeValue / (float)time.timeScale;; - [fMovieScrubberSlider setFloatValue:result]; + CGFloat result = (CGFloat)time.timeValue / (CGFloat)time.timeScale;; + [fMovieScrubberSlider setDoubleValue:result]; } } @@ -1311,28 +1131,43 @@ { if (aMovie) { - [fMovieView pause:aMovie]; // Pause the movie - QTTime time = [aMovie currentTime]; - [self setTime: time.timeScale * [fMovieScrubberSlider floatValue]]; - [self calculatePlaybackSMTPETimecodeForDisplay]; + [fMovieView pause:aMovie]; + QTTime time = [self SliderToQTTime:[fMovieScrubberSlider doubleValue]]; + [aMovie setCurrentTime:time]; + [fMovieInfoField setStringValue: [self SMTPETimecode:time]]; } } -#pragma mark *** Movie Notifications *** -- (void) installMovieCallbacks +- (BOOL) isPlaying { + if (aMovie != nil) + { + /* For some stupid reason there is no "isPlaying" method for a QTMovie + * object, given that, we detect the rate to determine whether the movie + * is playing or not. + */ + if ([aMovie rate] != 0.0f) // we are playing + return YES; + else // we are paused or stopped + return NO; + } + return NO; +} +#pragma mark *** Movie Notifications *** -/*Notification for any time the movie rate changes */ - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(movieRateDidChange:) - name:@"QTMovieRateDidChangeNotification" - object:aMovie]; - /*Notification for when the movie ends */ - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(movieDidEnd:) - name:@"QTMovieDidEndNotification" - object:aMovie]; +- (void) installMovieCallbacks +{ + /*Notification for any time the movie rate changes */ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(movieRateDidChange:) + name:@"QTMovieRateDidChangeNotification" + object:aMovie]; + /*Notification for when the movie ends */ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(movieDidEnd:) + name:@"QTMovieDidEndNotification" + object:aMovie]; } - (void)removeMovieCallbacks @@ -1354,59 +1189,128 @@ { if (aMovie != nil) { - /* For some stupid reason there is no "isPlaying" method for a QTMovie - * object, given that, we detect the rate to determine whether the movie - * is playing or not. - */ - //[self adjustPreviewScrubberForCurrentMovieTime]; - if ([aMovie rate] != 0) // we are playing - { - [fPlayPauseButton setTitle: @"||"]; - } - else // we are paused or stopped - { - [fPlayPauseButton setTitle: @">"]; - } + if ([self isPlaying]) + [fPlayPauseButton setState: NSOnState]; + else + [fPlayPauseButton setState: NSOffState]; } } + /* This notification is not currently used. However we should keep it "just in case" as * live preview playback is enhanced. */ - (void)movieDidEnd:(NSNotification *)notification { - //[fHBController writeToActivityLog: "Movie DidEnd Notification Received"]; } - -#pragma mark *** QTTime Utilities *** - - // convert a time value (long) to a QTTime structure --(void)timeToQTTime:(long)timeValue resultTime:(QTTime *)aQTTime +/* fMovieView Keyboard controls */ +- (void)keyDown:(NSEvent *)event { - NSNumber *timeScaleObj; - long timeScaleValue; + unichar key = [[event charactersIgnoringModifiers] characterAtIndex:0]; - timeScaleObj = [aMovie attributeForKey:QTMovieTimeScaleAttribute]; - timeScaleValue = [timeScaleObj longValue]; + if (aMovie) + { + if (key == 32) + { + if ([self isPlaying]) + [fMovieView pause:aMovie]; + else + [fMovieView play:aMovie]; + } + else if (key == 'k') + [fMovieView pause:aMovie]; + else if (key == 'l') + { + float rate = [aMovie rate]; + rate += 1.0f; + [fMovieView play:aMovie]; + [aMovie setRate:rate]; + } + else if (key == 'j') + { + float rate = [aMovie rate]; + rate -= 1.0f; + [fMovieView play:aMovie]; + [aMovie setRate:rate]; + } + else if ([event modifierFlags] & NSAlternateKeyMask && key == NSLeftArrowFunctionKey) + [fMovieView gotoBeginning:self]; + else if ([event modifierFlags] & NSAlternateKeyMask && key == NSRightArrowFunctionKey) + [fMovieView gotoEnd:self]; + else if (key == NSLeftArrowFunctionKey) + [fMovieView stepBackward:self]; + else if (key == NSRightArrowFunctionKey) + [fMovieView stepForward:self]; + else + [super keyDown:event]; + } + else if (!fEncodeState) + { + if (key == NSLeftArrowFunctionKey) + { + [fPictureSlider setIntegerValue:fPicture > [fPictureSlider minValue] ? fPicture - 1 : fPicture]; + [self pictureSliderChanged:self]; + } + else if (key == NSRightArrowFunctionKey) + { + [fPictureSlider setIntegerValue:fPicture < [fPictureSlider maxValue] ? fPicture + 1 : fPicture]; + [self pictureSliderChanged:self]; + } + [super keyDown:event]; + } - *aQTTime = QTMakeTime(timeValue, timeScaleValue); + [super keyDown:event]; } - // set the movie's current time --(void)setTime:(int)timeValue +#pragma mark *** QTTime Utilities *** + + // convert a time value (long) to a QTTime structure +-(QTTime)SliderToQTTime:(double)value { - QTTime movieQTTime; - NSValue *valueForQTTime; - - [self timeToQTTime:timeValue resultTime:&movieQTTime]; + long timeScale = [[aMovie attributeForKey:QTMovieTimeScaleAttribute] longValue]; + return QTMakeTime(value * timeScale, timeScale); +} - valueForQTTime = [NSValue valueWithQTTime:movieQTTime]; +/* Since MacOSX Leopard QTKit has taken over some responsibility for assessing movie playback + * information from the old QuickTime carbon api ( time code information as well as fps, etc.). + * However, the QTKit devs at apple were not really big on documentation and further ... + * QuickTimes ability to playback HB's largely variable framerate output makes perfectly frame + * accurate information at best convoluted. Still, for the purpose of a custom hud based custom + * playback scrubber slider this has so far proven to be as accurate as I have found. To say it + * could use some better accuracy is not understating it enough probably. + * Most of this was gleaned from this obscure Apple Mail list thread: + * http://www.mailinglistarchive.com/[email protected]/msg05642.html + * Now as we currently do not show a QTKit control bar with scrubber for display sizes > container + * size, this seems to facilitate playback control from the HB custom HUD controller fairly close + * to the built in controller bar. + * Further work needs to be done to try to get accurate frame by frame playback display if we want it. + * Note that the keyboard commands for frame by frame step through etc. work as always. + */ - [aMovie setAttribute:valueForQTTime forKey:QTMovieCurrentTimeAttribute]; +// Returns a human readable string from the currentTime of movie playback +- (NSString*) SMTPETimecode:(QTTime)time +{ + NSString *smtpeTimeCodeString; + int days, hour, minute, second, frame; + long long result; + + result = time.timeValue / time.timeScale; // second + frame = (time.timeValue % time.timeScale) / 100; + + second = result % 60; + + result = result / 60; // minute + minute = result % 60; + + result = result / 60; // hour + hour = result % 24; + days = result; + + smtpeTimeCodeString = [NSString stringWithFormat:@"%02d:%02d:%02d", hour, minute, second]; // hh:mm:ss + return smtpeTimeCodeString; } - @end @implementation PreviewController (Private) @@ -1424,56 +1328,16 @@ CGFloat minHeight = 360.0; NSSize screenSize = [[[self window] screen] visibleFrame].size; - NSSize sheetSize = [[self window] frame].size; - NSSize viewAreaSize = [fPictureViewArea frame].size; - CGFloat paddingX = 0.00; - CGFloat paddingY = 0.00; - - if (fTitle->width > screenSize.width || fTitle->height > screenSize.height) - { - if (scaleToScreen == YES) - { - paddingX = screenSize.width - imageSize.width; - paddingY = screenSize.height - imageSize.height; - } - - else - { - paddingX = sheetSize.width - viewAreaSize.width; - paddingY = sheetSize.height - viewAreaSize.height; - } + CGFloat maxWidth = screenSize.width; + CGFloat maxHeight = screenSize.height; - } - - CGFloat maxWidth; - CGFloat maxHeight; - maxWidth = screenSize.width - paddingX; - maxHeight = screenSize.height - paddingY; - NSSize resultSize = imageSize; CGFloat resultPar = resultSize.width / resultSize.height; //note, a mbp 15" at 1440 x 900 is a 1.6 ar CGFloat screenAspect = screenSize.width / screenSize.height; - // Note, a standard dvd will use 720 x 480 which is a 1.5 - CGFloat viewAreaAspect = viewAreaSize.width / viewAreaSize.height; - - if (scaleToScreen == YES) - { - - if (screenAspect < viewAreaAspect) - { - resultSize.width = screenSize.width; - resultSize.height = (screenSize.width / viewAreaAspect); - } - else - { - resultSize.height = screenSize.height; - resultSize.width = resultSize.height * viewAreaAspect; - } - - } - else if ( resultSize.width > maxWidth || resultSize.height > maxHeight ) + + if ( resultSize.width > maxWidth || resultSize.height > maxHeight ) { // Source is larger than screen in one or more dimensions if ( resultPar > screenAspect ) @@ -1492,56 +1356,51 @@ // If necessary, grow to minimum dimensions to ensure controls overlay is not obstructed if ( resultSize.width < minWidth ) - { resultSize.width = minWidth; - } if ( resultSize.height < minHeight ) - { resultSize.height = minHeight; - } - - return resultSize; - + return resultSize; } // -// -[PictureController(Private) resizePanelForViewSize:animate:] +// -[PictureController(Private) resizeWindowForViewSize:] // // Resizes the entire window to accomodate a view of a particular size. // -- (void)resizeSheetForViewSize: (NSSize)viewSize +- (void)resizeWindowForViewSize: (NSSize)viewSize { // Figure out the deltas for the new frame area - NSSize currentSize = [fPictureViewArea frame].size; + NSSize currentSize = [[[self window] contentView] frame].size; CGFloat deltaX = viewSize.width - currentSize.width; CGFloat deltaY = viewSize.height - currentSize.height; // Now resize the whole panel by those same deltas, but don't exceed the min NSRect frame = [[self window] frame]; NSSize maxSize = [[[self window] screen] visibleFrame].size; - /* if we are not Scale To Screen, put an 85% of visible screen on the window */ + /* if we are not Scale To Screen, put an 10% of visible screen on the window */ if (scaleToScreen == NO ) { - maxSize.width = maxSize.width * 0.85; - maxSize.height = maxSize.height * 0.85; + maxSize.width = maxSize.width * 0.90; + maxSize.height = maxSize.height * 0.90; } /* Set our min size to the storage size */ NSSize minSize; - minSize.width = fTitle->width; - minSize.height = fTitle->height; + minSize.width = fTitle->width / backingScaleFactor; + minSize.height = fTitle->height / backingScaleFactor; frame.size.width += deltaX; frame.size.height += deltaY; if( frame.size.width < minSize.width ) { frame.size.width = minSize.width; + deltaX = frame.size.width - currentSize.width; } - if( frame.size.height < minSize.height ) { frame.size.height = minSize.height; + deltaY = frame.size.height - currentSize.height; } /* compare frame to max size of screen */ @@ -1555,103 +1414,41 @@ frame.size.height = maxSize.height; } - - - - // But now the sheet is off-center, so also shift the origin to center it and // keep the top aligned. if( frame.size.width != [[self window] frame].size.width ) frame.origin.x -= (deltaX / 2.0); - - /* Since upon launch we can open up the preview window if it was open - * the last time we quit (and at the size it was) we want to make - * sure that upon resize we do not have the window off the screen - * So check the origin against the screen origin and adjust if - * necessary. - */ - NSSize screenSize = [[[self window] screen] visibleFrame].size; - NSPoint screenOrigin = [[[self window] screen] frame].origin; - if (screenSize.height < frame.size.height) - { - frame.size.height = screenSize.height; - } - if (screenSize.width < frame.size.width) - { - frame.size.width = screenSize.width; - } - - - /* our origin is off the screen to the left*/ - if (frame.origin.x < screenOrigin.x) - { - /* so shift our origin to the right */ - frame.origin.x = screenOrigin.x; - } - else if ((frame.origin.x + frame.size.width) > (screenOrigin.x + screenSize.width)) - { - /* the right side of the preview is off the screen, so shift to the left */ - frame.origin.x = (screenOrigin.x + screenSize.width) - frame.size.width; - } - - [[self window] setFrame:frame display:YES animate:YES]; - - -} - -// -// -[PictureController(Private) setViewSize:] -// -// Changes the view's size and centers it vertically inside of its area. -// Assumes resizeSheetForViewSize: has already been called. -// -- (void)setViewSize: (NSSize)viewSize -{ - - /* special case for scaleToScreen */ - NSSize areaSize = [fPictureViewArea frame].size; - CGFloat viewSizeAspect = viewSize.width / viewSize.height; - - if (viewSize.width > areaSize.width || viewSize.height > areaSize.height) + /* Since upon launch we can open up the preview window if it was open + * the last time we quit (and at the size it was) we want to make + * sure that upon resize we do not have the window off the screen + * So check the origin against the screen origin and adjust if + * necessary. + */ + NSSize screenSize = [[[self window] screen] visibleFrame].size; + NSPoint screenOrigin = [[[self window] screen] frame].origin; + if (screenSize.height < frame.size.height) { - - if (viewSizeAspect > 1.0) // we are wider than taller, so expand the width to fill the area and scale the height - { - viewSize.width = areaSize.width; - viewSize.height = viewSize.width / viewSizeAspect; - } - else - { - viewSize.height = areaSize.height; - viewSize.width = viewSize.height * viewSizeAspect; - } - + frame.size.height = screenSize.height; + } + if (screenSize.width < frame.size.width) + { + frame.size.width = screenSize.width; } - [fPictureView setFrameSize:viewSize]; - - - // center it vertically and horizontally - NSPoint origin = [fPictureViewArea frame].origin; - origin.y += ([fPictureViewArea frame].size.height - - [fPictureView frame].size.height) / 2.0; - - origin.x += ([fPictureViewArea frame].size.width - - [fPictureView frame].size.width) / 2.0; - - origin.x = floor( origin.x ); - origin.y = floor( origin.y ); - - [fPictureView setFrameOrigin:origin]; + /* our origin is off the screen to the left*/ + if (frame.origin.x < screenOrigin.x) + { + /* so shift our origin to the right */ + frame.origin.x = screenOrigin.x; + } + else if ((frame.origin.x + frame.size.width) > (screenOrigin.x + screenSize.width)) + { + /* the right side of the preview is off the screen, so shift to the left */ + frame.origin.x = (screenOrigin.x + screenSize.width) - frame.size.width; + } -} - - -- (BOOL)viewNeedsToResizeToSize: (NSSize)newSize -{ - NSSize viewSize = [fPictureViewArea frame].size; - return (newSize.width != viewSize.width || newSize.height != viewSize.height); + [[self window] setFrame:frame display:YES animate:YES]; } @end diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index aaa49109f..bb73b72cf 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -138,6 +138,11 @@ 27D6C77314B102DA00B785E4 /* libxml2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C74014B102DA00B785E4 /* libxml2.a */; }; 3490BCB41614CF8D002A5AD7 /* HandBrake.icns in Resources */ = {isa = PBXBuildFile; fileRef = 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */; }; 46AB433515F98A2B009C0961 /* DockTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 46AB433415F98A2B009C0961 /* DockTextField.m */; }; + A9E1467B16BC2ABD00C307BC /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */; }; + A9E1468016BC2AD800C307BC /* next-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467C16BC2AD800C307BC /* next-p.pdf */; }; + A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467D16BC2AD800C307BC /* pause-p.pdf */; }; + A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467E16BC2AD800C307BC /* play-p.pdf */; }; + A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */ = {isa = PBXBuildFile; fileRef = A9E1467F16BC2AD800C307BC /* prev-p.pdf */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -307,10 +312,15 @@ 27D6C73E14B102DA00B785E4 /* libvorbisenc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvorbisenc.a; path = external/contrib/lib/libvorbisenc.a; sourceTree = BUILT_PRODUCTS_DIR; }; 27D6C73F14B102DA00B785E4 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = external/contrib/lib/libx264.a; sourceTree = BUILT_PRODUCTS_DIR; }; 27D6C74014B102DA00B785E4 /* libxml2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxml2.a; path = external/contrib/lib/libxml2.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = HandBrake.icns; path = HandBrake.icns; sourceTree = "<group>"; }; + 3490BCB31614CF8D002A5AD7 /* HandBrake.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = HandBrake.icns; sourceTree = "<group>"; }; 34FF2FC014EEC363004C2400 /* HBAdvancedController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBAdvancedController.h; sourceTree = "<group>"; }; 46AB433315F98A2B009C0961 /* DockTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DockTextField.h; sourceTree = "<group>"; }; 46AB433415F98A2B009C0961 /* DockTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DockTextField.m; sourceTree = "<group>"; }; + A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; }; + A9E1467C16BC2AD800C307BC /* next-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "next-p.pdf"; sourceTree = "<group>"; }; + A9E1467D16BC2AD800C307BC /* pause-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "pause-p.pdf"; sourceTree = "<group>"; }; + A9E1467E16BC2AD800C307BC /* play-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "play-p.pdf"; sourceTree = "<group>"; }; + A9E1467F16BC2AD800C307BC /* prev-p.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "prev-p.pdf"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -357,6 +367,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + A9E1467B16BC2ABD00C307BC /* QuartzCore.framework in Frameworks */, 273F21C114ADE7A20021BE6D /* Growl.framework in Frameworks */, 273F21C214ADE7BC0021BE6D /* Sparkle.framework in Frameworks */, 273F20C914ADC5150021BE6D /* AudioToolbox.framework in Frameworks */, @@ -478,6 +489,7 @@ 273F203414ADBAC30021BE6D /* Frameworks */ = { isa = PBXGroup; children = ( + A9E1467A16BC2ABD00C307BC /* QuartzCore.framework */, 273F20C714ADC4FF0021BE6D /* QTKit.framework */, 273F202F14ADB9790021BE6D /* AudioToolbox.framework */, 273F203B14ADBC210021BE6D /* Cocoa.framework */, @@ -563,6 +575,10 @@ 273F212014ADCBF70021BE6D /* icons */ = { isa = PBXGroup; children = ( + A9E1467C16BC2AD800C307BC /* next-p.pdf */, + A9E1467D16BC2AD800C307BC /* pause-p.pdf */, + A9E1467E16BC2AD800C307BC /* play-p.pdf */, + A9E1467F16BC2AD800C307BC /* prev-p.pdf */, 273F212114ADCBF70021BE6D /* ActivityWindow.tiff */, 273F212214ADCBF70021BE6D /* AddToQueue.tiff */, 273F212414ADCBF70021BE6D /* Brushed_Window.png */, @@ -787,6 +803,10 @@ 273F219014ADDDA10021BE6D /* Preferences.xib in Resources */, 273F219114ADDDA10021BE6D /* Queue.xib in Resources */, 3490BCB41614CF8D002A5AD7 /* HandBrake.icns in Resources */, + A9E1468016BC2AD800C307BC /* next-p.pdf in Resources */, + A9E1468116BC2AD800C307BC /* pause-p.pdf in Resources */, + A9E1468216BC2AD800C307BC /* play-p.pdf in Resources */, + A9E1468316BC2AD800C307BC /* prev-p.pdf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/macosx/icons/next-p.pdf b/macosx/icons/next-p.pdf Binary files differnew file mode 100644 index 000000000..bb11381cd --- /dev/null +++ b/macosx/icons/next-p.pdf diff --git a/macosx/icons/pause-p.pdf b/macosx/icons/pause-p.pdf Binary files differnew file mode 100644 index 000000000..6a6224a75 --- /dev/null +++ b/macosx/icons/pause-p.pdf diff --git a/macosx/icons/play-p.pdf b/macosx/icons/play-p.pdf Binary files differnew file mode 100644 index 000000000..028feb270 --- /dev/null +++ b/macosx/icons/play-p.pdf diff --git a/macosx/icons/prev-p.pdf b/macosx/icons/prev-p.pdf Binary files differnew file mode 100644 index 000000000..7f37c9af7 --- /dev/null +++ b/macosx/icons/prev-p.pdf diff --git a/macosx/main.mm b/macosx/main.mm index 260a8ad92..24cd7547f 100644 --- a/macosx/main.mm +++ b/macosx/main.mm @@ -23,10 +23,10 @@ void SigHandler( int signal ) * this is the only place I could find that looked like C :) ****************************************************************************/ extern "C" { -void hb_error_handler( const char *errmsg ) -{ - fprintf(stderr, "GUI ERROR dialog: %s\n", errmsg ); -} + void hb_error_handler( const char *errmsg ) + { + fprintf(stderr, "GUI ERROR dialog: %s\n", errmsg ); + } } char * str_printf(const char *fmt, ...) @@ -64,80 +64,8 @@ char * str_printf(const char *fmt, ...) } } -#define EXTRA_VLC_DYLD_PATH "/Applications/VLC.app/Contents/MacOS/lib" -#define DEFAULT_DYLD_PATH "/usr/local/lib:/usr/lib" - int main( int argc, const char ** argv ) { - char *dylib_path; - int no_exec = 0; - - // Check for flag that prevents exec bomb. It - // incidentally can be used to prevent adding - // our modifications to the dyld env vars. - if ( argc > 1 && strncmp(argv[1], "-n", 2) == 0 ) - no_exec = 1; - - if ( !no_exec ) - { - dylib_path = getenv("DYLD_FALLBACK_LIBRARY_PATH"); - if ( dylib_path == NULL || - strstr( dylib_path, "/Applications/VLC.app/Contents/MacOS/lib" ) == NULL ) - { - char *path = NULL; - char *home; - int result = -1; - - home = getenv("HOME"); - - if ( dylib_path == NULL ) - { - // Set the system default of $HOME/lib:/usr/local/lib:/usr/lib - // And add our extra path - if ( home != NULL ) - { - path = str_printf("%s/lib:%s:%s:%s%s", home, - DEFAULT_DYLD_PATH, - EXTRA_VLC_DYLD_PATH, - home, EXTRA_VLC_DYLD_PATH); - } - else - { - path = str_printf("%s:%s", DEFAULT_DYLD_PATH, EXTRA_VLC_DYLD_PATH); - } - if ( path != NULL ) - result = setenv("DYLD_FALLBACK_LIBRARY_PATH", path, 1); - } - else - { - // add our extra path - if ( home != NULL ) - { - path = str_printf("%s:%s:%s%s", dylib_path, EXTRA_VLC_DYLD_PATH, - home, EXTRA_VLC_DYLD_PATH); - } - else - { - path = str_printf("%s:%s", dylib_path, EXTRA_VLC_DYLD_PATH); - } - if ( path != NULL ) - result = setenv("DYLD_FALLBACK_LIBRARY_PATH", path, 1); - } - if ( result == 0 ) - { - const char ** new_argv; - int i; - - new_argv = (const char**)malloc( (argc + 2) * sizeof(char*) ); - new_argv[0] = argv[0]; - new_argv[1] = "-n"; - for (i = 1; i < argc; i++) - new_argv[i+1] = argv[i]; - new_argv[i+1] = NULL; - execv(new_argv[0], (char* const*)new_argv); - } - } - } signal( SIGINT, SigHandler ); hb_register_error_handler(&hb_error_handler); return NSApplicationMain( argc, argv ); diff --git a/make/configure.py b/make/configure.py index 0fc32de0f..9c2a7981a 100644 --- a/make/configure.py +++ b/make/configure.py @@ -818,6 +818,7 @@ class ToolProbe( Action ): self.name = self.names[0] self.pretext = self.name self.pathname = self.names[0] + self.minversion = kwargs.get('minversion', None) def _action( self ): self.session = [] @@ -832,6 +833,8 @@ class ToolProbe( Action ): break if self.fail: self.msg_end = 'not found' + elif self.minversion: + self.version = VersionProbe( [self.pathname, '--version'], minversion=self.minversion ) def cli_add_option( self, parser ): parser.add_option( '--'+self.name, metavar='PROG', @@ -847,6 +850,93 @@ class ToolProbe( Action ): ############################################################################### +############################################################################### +## +## version probe: passes --version to command and only cares about first line +## of output. If probe fails, a default version of '0.0.0' results. +## The default rexpr is useful for some very simple version strings. A Custom +## expression would be required for more complex version strings. +## +## command = full command and arguments to pipe +## rexpr = a regular expression which must return named subgroups: +## name: mandatory. The tool name. +## svers: mandatory. The whole version tuple to be represented as string. +## i0: mandatory. First element of version tuple to be parsed as int. +## i1: optional. Second element of version tuple to be parsed as int. +## i2: optional. Third element of version tuple to be parsed as int. +## All matching is case-insensitive. +## abort = if true configure will exit on probe fail +## session = result. array of lines (stdout/stderr) from command +## fail = result. true if probe failed +## svers = result. string of version tuple +## ivers = result. int[3] of version tuple +## +class VersionProbe( Action ): + def __init__( self, command, minversion=None, rexpr=None, abort=False ): + super( VersionProbe, self ).__init__( 'version probe', os.path.basename(command[0]), abort ) + self.command = command + self.minversion = minversion + if not rexpr: + rexpr = '(?P<name>[^.]+)\s+(?P<svers>(?P<i0>\d+)(\.(?P<i1>\d+))?(\.(?P<i2>\d+))?)' + self.rexpr = rexpr + + def _action( self ): + ## pipe and redirect stderr to stdout; effects communicate result + pipe = subprocess.Popen( self.command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) + + ## read data into memory buffers + data = pipe.communicate() + self.fail = pipe.returncode != 0 + + if data[0]: + self.session = data[0].splitlines() + else: + self.session = [] + + self.svers = '0.0.0' + self.ivers = [0,0,0] + + try: + if not self.fail and self.session and len(self.session): + self.fail = True + self._parse() + self.fail = False + self.msg_end = self.svers + except Exception, x: + self.svers = '0.0.0' + self.ivers = [0,0,0] + self.msg_end = str(x) + + def _dumpSession( self, printf ): + printf( ' + %s\n', ' '.join(self.command) ) + super( VersionProbe, self )._dumpSession( printf ) + + def _parse( self ): + mo = re.match( self.rexpr, self.session[0], re.IGNORECASE ) + md = mo.groupdict() + self.svers = md['svers'] + if 'i0' in md and md['i0']: + self.ivers[0] = int(md['i0']) + if 'i1' in md and md['i1']: + self.ivers[1] = int(md['i1']) + if 'i2' in md and md['i2']: + self.ivers[2] = int(md['i2']) + + def inadequate( self ): + if not self.minversion: + return False + return self.lesser( self.minversion ) + + def lesser( self, ivers ): + for i in range(0,3): + if self.ivers[i] < ivers[i]: + return True + elif self.ivers[i] > ivers[i]: + return False + return False + +############################################################################### + class SelectTool( Action ): selects = [] @@ -1285,7 +1375,7 @@ try: strip = ToolProbe( 'STRIP.exe', 'strip' ) tar = ToolProbe( 'TAR.exe', 'gtar', 'tar' ) wget = ToolProbe( 'WGET.exe', 'wget', abort=False ) - yasm = ToolProbe( 'YASM.exe', 'yasm', abort=False ) + yasm = ToolProbe( 'YASM.exe', 'yasm', abort=False, minversion=[1,2,0] ) autoconf = ToolProbe( 'AUTOCONF.exe', 'autoconf', abort=False ) automake = ToolProbe( 'AUTOMAKE.exe', 'automake', abort=False ) libtool = ToolProbe( 'LIBTOOL.exe', 'libtool', abort=False ) @@ -1345,12 +1435,19 @@ try: for action in Action.actions: action.run() - ## enable local yasm when yasm probe fails - if not options.enable_local_yasm and Tools.yasm.fail: - options.enable_local_yasm = True + ## enable local yasm when yasm probe fails or version is too old + ## x264 requires 1.2.0+ + if not options.enable_local_yasm: + if Tools.yasm.fail: + stdout.write( 'note: enabling local yasm: missing system yasm\n' ) + options.enable_local_yasm = True + elif Tools.yasm.version.inadequate(): + stdout.write( 'note: enabling local yasm: minimum required version is %s and %s is %s\n' % ('.'.join([str(i) for i in Tools.yasm.version.minversion]),Tools.yasm.pathname,Tools.yasm.version.svers) ) + options.enable_local_yasm = True ## enable local autotools when any of { autoconf, automake, libtool } probe fails if not options.enable_local_autotools and (Tools.autoconf.fail or Tools.automake.fail or Tools.libtool.fail): + stdout.write( 'note: enabling local autotools\n' ) options.enable_local_autotools = True if build.system == 'mingw': diff --git a/make/xcodemake b/make/xcodemake index 0eaab1fec..a5950811b 100755 --- a/make/xcodemake +++ b/make/xcodemake @@ -126,7 +126,7 @@ if [ -n "$reconfigure" ]; then case "$CONFIGURATION" in debug*) - debug="--debug=max --optimize=none" + debug="--debug=std --optimize=none" ;; release*|*) debug= diff --git a/pkg/linux/debian/control.quantal b/pkg/linux/debian/control.quantal index 20894fd04..4fff9a296 100644 --- a/pkg/linux/debian/control.quantal +++ b/pkg/linux/debian/control.quantal @@ -2,7 +2,7 @@ Source: handbrake Section: graphics Priority: optional Maintainer: John Stebbins <[email protected]> -Build-Depends: debhelper (>= 6), autotools-dev, libtool, libgudev-1.0-dev, intltool, autoconf, yasm (>= 1.1.0), libbz2-dev, zlib1g-dev, libwebkitgtk-dev, libnotify-dev, libgstreamer0.10-dev, libgstreamer-plugins-base0.10-dev, wget, subversion, python (>= 2.6), libappindicator-dev, libfribidi-dev (>= 0.19.0), libxml2-dev, libogg-dev, libtheora-dev, libvorbis-dev, libsamplerate0-dev, libfreetype6-dev, libfontconfig1-dev, libass-dev +Build-Depends: debhelper (>= 6), autotools-dev, libtool, libgudev-1.0-dev, intltool, autoconf, yasm (>= 1.1.0), libbz2-dev, zlib1g-dev, libgtk-3-dev, libwebkitgtk-3.0-dev, libnotify-dev, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev, wget, subversion, python (>= 2.6), libappindicator3-dev, libfribidi-dev (>= 0.19.0), libxml2-dev, libogg-dev, libtheora-dev, libvorbis-dev, libsamplerate0-dev, libfreetype6-dev, libfontconfig1-dev, libass-dev Standards-Version: 3.8.4 Homepage: http://www.handbrake.fr/ @@ -19,7 +19,7 @@ Description: versatile DVD ripper and video transcoder - command line Package: handbrake-gtk Architecture: i386 amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, libwebkitgtk-1.0-0, libnotify4 +Depends: ${shlibs:Depends}, ${misc:Depends}, gstreamer1.0-libav, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, gstreamer1.0-pulseaudio Conflicts: handbrake Description: versatile DVD ripper and video transcoder - GTK GUI HandBrake is a versatile, easy-to-use tool for converting DVDs and other videos diff --git a/pkg/linux/debian/rules.natty b/pkg/linux/debian/rules.natty new file mode 100755 index 000000000..2545b4de6 --- /dev/null +++ b/pkg/linux/debian/rules.natty @@ -0,0 +1,85 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) +CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) +else +CROSS= --build $(DEB_BUILD_GNU_TYPE) +endif + +PKGDESTDIR = ../ +CONFIGURE = ./configure +BUILDDIR = build +FORCEVERSION = + +$(BUILDDIR)/GNUmakefile: $(CONFIGURE) + dh_testdir + unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr + +build: $(BUILDDIR)/GNUmakefile + dh_testdir + #We must build both the main project and the GTK project + unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR) + +clean: + dh_testdir + dh_testroot + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_installdirs + $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs -i + dh_installdocs -i + dh_install --sourcedir=debian/tmp -i + dh_icons -i + dh_link -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + dh_gencontrol -i $(FORCEVERSION) + dh_md5sums -i + dh_builddeb --destdir=$(PKGDESTDIR) -i + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_install --sourcedir=debian/tmp -a + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a + dh_installman -a + dh_link -a + dh_icons -a + dh_strip -a + dh_compress -a + dh_fixperms -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a $(FORCEVERSION) + dh_md5sums -a + dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2 + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/pkg/linux/debian/rules.oneiric b/pkg/linux/debian/rules.oneiric new file mode 100755 index 000000000..2545b4de6 --- /dev/null +++ b/pkg/linux/debian/rules.oneiric @@ -0,0 +1,85 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) +CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) +else +CROSS= --build $(DEB_BUILD_GNU_TYPE) +endif + +PKGDESTDIR = ../ +CONFIGURE = ./configure +BUILDDIR = build +FORCEVERSION = + +$(BUILDDIR)/GNUmakefile: $(CONFIGURE) + dh_testdir + unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr + +build: $(BUILDDIR)/GNUmakefile + dh_testdir + #We must build both the main project and the GTK project + unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR) + +clean: + dh_testdir + dh_testroot + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_installdirs + $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs -i + dh_installdocs -i + dh_install --sourcedir=debian/tmp -i + dh_icons -i + dh_link -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + dh_gencontrol -i $(FORCEVERSION) + dh_md5sums -i + dh_builddeb --destdir=$(PKGDESTDIR) -i + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_install --sourcedir=debian/tmp -a + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a + dh_installman -a + dh_link -a + dh_icons -a + dh_strip -a + dh_compress -a + dh_fixperms -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a $(FORCEVERSION) + dh_md5sums -a + dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2 + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/pkg/linux/debian/rules.precise b/pkg/linux/debian/rules.precise new file mode 100755 index 000000000..2545b4de6 --- /dev/null +++ b/pkg/linux/debian/rules.precise @@ -0,0 +1,85 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) +CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) +else +CROSS= --build $(DEB_BUILD_GNU_TYPE) +endif + +PKGDESTDIR = ../ +CONFIGURE = ./configure +BUILDDIR = build +FORCEVERSION = + +$(BUILDDIR)/GNUmakefile: $(CONFIGURE) + dh_testdir + unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr + +build: $(BUILDDIR)/GNUmakefile + dh_testdir + #We must build both the main project and the GTK project + unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR) + +clean: + dh_testdir + dh_testroot + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_installdirs + $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs -i + dh_installdocs -i + dh_install --sourcedir=debian/tmp -i + dh_icons -i + dh_link -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + dh_gencontrol -i $(FORCEVERSION) + dh_md5sums -i + dh_builddeb --destdir=$(PKGDESTDIR) -i + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_install --sourcedir=debian/tmp -a + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a + dh_installman -a + dh_link -a + dh_icons -a + dh_strip -a + dh_compress -a + dh_fixperms -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a $(FORCEVERSION) + dh_md5sums -a + dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2 + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/pkg/linux/debian/rules.quantal b/pkg/linux/debian/rules.quantal new file mode 100755 index 000000000..2545b4de6 --- /dev/null +++ b/pkg/linux/debian/rules.quantal @@ -0,0 +1,85 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) +CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) +else +CROSS= --build $(DEB_BUILD_GNU_TYPE) +endif + +PKGDESTDIR = ../ +CONFIGURE = ./configure +BUILDDIR = build +FORCEVERSION = + +$(BUILDDIR)/GNUmakefile: $(CONFIGURE) + dh_testdir + unset CFLAGS; unset CPPLAGS; unset CXXLAGS; $(CONFIGURE) --enable-local-yasm --disable-gtk-update-checks --prefix=/usr + +build: $(BUILDDIR)/GNUmakefile + dh_testdir + #We must build both the main project and the GTK project + unset CFLAGS ; unset CPPLAGS ; unset CXXLAGS; $(MAKE) -C $(BUILDDIR) + +clean: + dh_testdir + dh_testroot + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_installdirs + $(MAKE) -C $(BUILDDIR) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs -i + dh_installdocs -i + dh_install --sourcedir=debian/tmp -i + dh_icons -i + dh_link -i + dh_compress -i + dh_fixperms -i + dh_installdeb -i + dh_gencontrol -i $(FORCEVERSION) + dh_md5sums -i + dh_builddeb --destdir=$(PKGDESTDIR) -i + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_install --sourcedir=debian/tmp -a + dh_installchangelogs -a + dh_installdocs -a + dh_installexamples -a + dh_installman -a + dh_link -a + dh_icons -a + dh_strip -a + dh_compress -a + dh_fixperms -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a $(FORCEVERSION) + dh_md5sums -a + dh_builddeb -a --destdir=$(PKGDESTDIR) -- -Zbzip2 + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/pkg/linux/module.rules b/pkg/linux/module.rules index 950aeca7e..af38b061a 100644 --- a/pkg/linux/module.rules +++ b/pkg/linux/module.rules @@ -73,6 +73,7 @@ $(PKG.src.deb.stamp): GNUmakefile $(CP.exe) -a $(SRC/)download $(STAGE.out.src/)quantal/$(PKG.deb.basename) cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)quantal/$(PKG.deb.basename) $(CP.exe) $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/control.quantal $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/control + $(CP.exe) $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/rules.quantal $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/rules echo "handbrake ($(HB.version)ppa1~quantal1) quantal; urgency=low" > $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/changelog echo " * Snapshot" >> $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/changelog echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)quantal/$(PKG.deb.basename)/debian/changelog @@ -84,6 +85,7 @@ $(PKG.src.deb.stamp): GNUmakefile $(CP.exe) -a $(SRC/)download $(STAGE.out.src/)precise/$(PKG.deb.basename) cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)precise/$(PKG.deb.basename) $(CP.exe) $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/control.precise $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/control + $(CP.exe) $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/rules.precise $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/rules echo "handbrake ($(HB.version)ppa1~precise1) precise; urgency=low" > $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/changelog echo " * Snapshot" >> $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/changelog echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)precise/$(PKG.deb.basename)/debian/changelog @@ -95,6 +97,7 @@ $(PKG.src.deb.stamp): GNUmakefile $(CP.exe) -a $(SRC/)download $(STAGE.out.src/)oneiric/$(PKG.deb.basename) cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)oneiric/$(PKG.deb.basename) $(CP.exe) $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/control.oneiric $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/control + $(CP.exe) $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/rules.oneiric $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/rules echo "handbrake ($(HB.version)ppa1~oneiric1) oneiric; urgency=low" > $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/changelog echo " * Snapshot" >> $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/changelog echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)oneiric/$(PKG.deb.basename)/debian/changelog @@ -106,6 +109,7 @@ $(PKG.src.deb.stamp): GNUmakefile $(CP.exe) -a $(SRC/)download $(STAGE.out.src/)natty/$(PKG.deb.basename) cp -a $(PWD)/$(PKG.debian) $(STAGE.out.src/)natty/$(PKG.deb.basename) $(CP.exe) $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/control.natty $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/control + $(CP.exe) $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/rules.natty $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/rules echo "handbrake ($(HB.version)ppa1~natty1) natty; urgency=low" > $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog echo " * Snapshot" >> $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog echo " - See timeline at http://trac.handbrake.fr/timeline" >> $(STAGE.out.src/)natty/$(PKG.deb.basename)/debian/changelog diff --git a/scripts/manicure.rb b/scripts/manicure.rb index ae6346622..1b331272c 100755 --- a/scripts/manicure.rb +++ b/scripts/manicure.rb @@ -592,26 +592,27 @@ class Display if hash["VideoTurboTwoPass"] == 1 then commandString << " -T" end #Advanced Options - if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom" + if hash["x264UseAdvancedOptions"] != 1 + if hash["x264Preset"] != "" commandString << " --x264-preset " commandString << hash["x264Preset"] - - if hash["x264Tune"] != "" && hash["x264Tune"] != "none" - commandString << " --x264-tune " - commandString << hash["x264Tune"] - end - if hash["x264Profile"] != "" && hash["x264Profile"] != "auto" - commandString << " --x264-profile " - commandString << hash["x264Profile"] - end - if hash["x264Level"] != "" && hash["x264Level"] != "auto" - commandString << " --h264-level " - commandString << hash["x264Level"] - end - if hash["x264OptionExtra"] != "" - commandString << " -x " - commandString << hash["x264OptionExtra"] - end + end + if hash["x264Tune"] != "" && hash["x264Tune"] != "none" + commandString << " --x264-tune " + commandString << hash["x264Tune"] + end + if hash["h264Profile"] != "" && hash["h264Profile"] != "auto" + commandString << " --h264-profile " + commandString << hash["h264Profile"] + end + if hash["h264Level"] != "" && hash["h264Level"] != "auto" + commandString << " --h264-level " + commandString << hash["h264Level"] + end + if hash["x264OptionExtra"] != "" + commandString << " -x " + commandString << hash["x264OptionExtra"] + end elsif hash["x264Option"] != "" commandString << " -x " commandString << hash["x264Option"] @@ -965,26 +966,27 @@ class Display if hash["VideoTurboTwoPass"] == 1 then commandString << " -T" end #Advanced Options - if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom" + if hash["x264UseAdvancedOptions"] != 1 + if hash["x264Preset"] != "" commandString << " --x264-preset " commandString << hash["x264Preset"] - - if hash["x264Tune"] != "" && hash["x264Tune"] != "none" - commandString << " --x264-tune " - commandString << hash["x264Tune"] - end - if hash["x264Profile"] != "" && hash["x264Profile"] != "auto" - commandString << " --x264-profile " - commandString << hash["x264Profile"] - end - if hash["x264Level"] != "" && hash["x264Level"] != "auto" - commandString << " --h264-level " - commandString << hash["x264Level"] - end - if hash["x264OptionExtra"] != "" - commandString << " -x " - commandString << hash["x264OptionExtra"] - end + end + if hash["x264Tune"] != "" && hash["x264Tune"] != "none" + commandString << " --x264-tune " + commandString << hash["x264Tune"] + end + if hash["h264Profile"] != "" && hash["h264Profile"] != "auto" + commandString << " --h264-profile " + commandString << hash["h264Profile"] + end + if hash["h264Level"] != "" && hash["h264Level"] != "auto" + commandString << " --h264-level " + commandString << hash["h264Level"] + end + if hash["x264OptionExtra"] != "" + commandString << " -x " + commandString << hash["x264OptionExtra"] + end elsif hash["x264Option"] != "" commandString << " -x " commandString << hash["x264Option"] @@ -1263,42 +1265,43 @@ class Display end #Advanced Options - if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom" + if hash["x264UseAdvancedOptions"] != 1 + if hash["x264Preset"] != "" commandString << "if (x264_preset == NULL)\n " commandString << "{\n " commandString << " x264_preset = strdup(\"" commandString << hash["x264Preset"] << "\");\n " commandString << "}\n " - - if hash["x264Tune"] != "" && hash["x264Tune"] != "none" - commandString << "if (x264_tune == NULL)\n " - commandString << "{\n " - commandString << " x264_tune = strdup(\"" - commandString << hash["x264Tune"] - commandString << "\");\n " - commandString << "}\n " - end - if hash["x264Profile"] != "" && hash["x264Profile"] != "auto" - commandString << "if (x264_profile == NULL)\n " - commandString << "{\n " - commandString << " x264_profile = strdup(\"" - commandString << hash["x264Profile"] << "\");\n " - commandString << "}\n " - end - if hash["x264Level"] != "" && hash["x264Level"] != "auto" - commandString << "if (h264_level == NULL)\n " - commandString << "{\n " - commandString << " h264_level = strdup(\"" - commandString << hash["x264Level"] << "\");\n " - commandString << "}\n " - end - if hash["x264OptionExtra"] != "" - commandString << "if (advanced_opts == NULL)\n " - commandString << "{\n " - commandString << " advanced_opts = strdup(\"" - commandString << hash["x264OptionExtra"] << "\");\n " - commandString << "}\n " - end + end + if hash["x264Tune"] != "" && hash["x264Tune"] != "none" + commandString << "if (x264_tune == NULL)\n " + commandString << "{\n " + commandString << " x264_tune = strdup(\"" + commandString << hash["x264Tune"] + commandString << "\");\n " + commandString << "}\n " + end + if hash["h264Profile"] != "" && hash["h264Profile"] != "auto" + commandString << "if (h264_profile == NULL)\n " + commandString << "{\n " + commandString << " h264_profile = strdup(\"" + commandString << hash["h264Profile"] << "\");\n " + commandString << "}\n " + end + if hash["h264Level"] != "" && hash["h264Level"] != "auto" + commandString << "if (h264_level == NULL)\n " + commandString << "{\n " + commandString << " h264_level = strdup(\"" + commandString << hash["h264Level"] << "\");\n " + commandString << "}\n " + end + if hash["x264OptionExtra"] != "" + commandString << "if (advanced_opts == NULL)\n " + commandString << "{\n " + commandString << " advanced_opts = strdup(\"" + commandString << hash["x264OptionExtra"] << "\");\n " + commandString << "}\n " + end elsif hash["x264Option"] != "" commandString << "if (advanced_opts == NULL)\n " commandString << "{\n " @@ -1765,30 +1768,31 @@ class Display if hash["VideoTwoPass"] == 1 then commandString << " -2" end if hash["VideoTurboTwoPass"] == 1 then commandString << " -T" end - #Advanced Options - if hash["x264Preset"] != nil && hash["x264Preset"] != "" && hash["x264Preset"] != "custom" + #Advanced Options + if hash["x264UseAdvancedOptions"] != 1 + if hash["x264Preset"] != "" commandString << " --x264-preset " commandString << hash["x264Preset"] - - if hash["x264Tune"] != "" && hash["x264Tune"] != "none" - commandString << " --x264-tune " - commandString << hash["x264Tune"] - end - if hash["x264Profile"] != "" && hash["x264Profile"] != "auto" - commandString << " --x264-profile " - commandString << hash["x264Profile"] - end - if hash["x264Level"] != "" && hash["x264Level"] != "auto" - commandString << " --h264-level " - commandString << hash["x264Level"] - end - if hash["x264OptionExtra"] != "" - commandString << " -x " - commandString << hash["x264OptionExtra"] - end - elsif hash["x264Option"] != "" + end + if hash["x264Tune"] != "" && hash["x264Tune"] != "none" + commandString << " --x264-tune " + commandString << hash["x264Tune"] + end + if hash["h264Profile"] != "" && hash["h264Profile"] != "auto" + commandString << " --h264-profile " + commandString << hash["h264Profile"] + end + if hash["h264Level"] != "" && hash["h264Level"] != "auto" + commandString << " --h264-level " + commandString << hash["h264Level"] + end + if hash["x264OptionExtra"] != "" commandString << " -x " - commandString << hash["x264Option"] + commandString << hash["x264OptionExtra"] + end + elsif hash["x264Option"] != "" + commandString << " -x " + commandString << hash["x264Option"] end commandString << "\\n\");" diff --git a/test/test.c b/test/test.c index 42c53ab8d..15d3447d7 100644 --- a/test/test.c +++ b/test/test.c @@ -113,10 +113,10 @@ static int chapter_start = 0; static int chapter_end = 0; static int chapter_markers = 0; static char * marker_file = NULL; -static char * advanced_opts = NULL; -static char * x264_profile = NULL; static char * x264_preset = NULL; static char * x264_tune = NULL; +static char * advanced_opts = NULL; +static char * h264_profile = NULL; static char * h264_level = NULL; static int maxHeight = 0; static int maxWidth = 0; @@ -378,7 +378,7 @@ int main( int argc, char ** argv ) free(x264_preset); free(x264_tune); free(advanced_opts); - free(x264_profile); + free(h264_profile); free(h264_level); // write a carriage return to stdout @@ -749,9 +749,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("fast"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("baseline"); + h264_profile = strdup("baseline"); } if (h264_level == NULL) { @@ -804,9 +804,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("baseline"); + h264_profile = strdup("baseline"); } if (h264_level == NULL) { @@ -855,9 +855,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("high"); + h264_profile = strdup("high"); } if (h264_level == NULL) { @@ -910,9 +910,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("high"); + h264_profile = strdup("high"); } if (h264_level == NULL) { @@ -965,9 +965,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("high"); + h264_profile = strdup("high"); } if (h264_level == NULL) { @@ -1024,9 +1024,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("high"); + h264_profile = strdup("high"); } if (h264_level == NULL) { @@ -1079,9 +1079,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("high"); + h264_profile = strdup("high"); } if (h264_level == NULL) { @@ -1135,9 +1135,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("main"); + h264_profile = strdup("main"); } if (h264_level == NULL) { @@ -1188,9 +1188,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("main"); + h264_profile = strdup("main"); } if (h264_level == NULL) { @@ -1238,9 +1238,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("veryfast"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("main"); + h264_profile = strdup("main"); } if (h264_level == NULL) { @@ -1290,9 +1290,9 @@ static int HandleEvents( hb_handle_t * h ) { x264_preset = strdup("medium"); } - if (x264_profile == NULL) + if (h264_profile == NULL) { - x264_profile = strdup("high"); + h264_profile = strdup("high"); } if (h264_level == NULL) { @@ -2475,8 +2475,8 @@ static int HandleEvents( hb_handle_t * h ) hb_job_set_x264_preset(job, x264_preset); hb_job_set_x264_tune(job, x264_tune); - hb_job_set_x264_profile(job, x264_profile); - hb_job_set_x264_level(job, h264_level); + hb_job_set_h264_profile(job, h264_profile); + hb_job_set_h264_level(job, h264_level); if (maxWidth) job->maxWidth = maxWidth; @@ -2798,10 +2798,10 @@ static void ShowHelp() " -x, --encopts <string> Specify advanced encoder options in the\n" " same style as mencoder (x264 and ffmpeg only):\n" " option1=value1:option2=value2\n" - " --x264-profile When using x264, ensures compliance with the\n" - " <string> specified h.264 profile:\n" + " --h264-profile When using x264, ensures compliance with the\n" + " <string> specified H.264 profile:\n" " "); - x264_opts = hb_x264_profiles(); + x264_opts = hb_h264_profiles(); tmp[0] = 0; len = 0; while( x264_opts && *x264_opts ) @@ -2821,7 +2821,7 @@ static void ShowHelp() fprintf( out, "%s\n", tmp ); fprintf( out, " --h264-level When using x264, ensures compliance with the\n" - " <string> specified h.264 level:\n" + " <string> specified H.264 level:\n" " "); x264_opts = hb_h264_levels(); tmp[0] = 0; @@ -3097,19 +3097,19 @@ static void ShowPresets() fprintf( stderr, "%s - %s - %s\n", HB_PROJECT_TITLE, HB_PROJECT_BUILD_TITLE, HB_PROJECT_URL_WEBSITE ); printf("\n< Devices\n"); - printf("\n + Universal: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 -m --x264-preset fast --x264-profile baseline --h264-level 3.0\n"); - printf("\n + iPod: -e x264 -q 22.0 -r 30 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 320 --modulus 2 -m --x264-preset medium --x264-profile baseline --h264-level 1.3\n"); - printf("\n + iPhone & iPod Touch: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1\n"); - printf("\n + iPad: -e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1\n"); - printf("\n + AppleTV: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1 -x cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\n"); - printf("\n + AppleTV 2: -e x264 -q 20.0 -r 29.97 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 3.1\n"); - printf("\n + AppleTV 3: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1920 --decomb=fast --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 4.0\n"); - printf("\n + Android: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 --x264-preset medium --x264-profile main --h264-level 2.2\n"); - printf("\n + Android Tablet: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 1280 --loose-anamorphic --modulus 2 --x264-preset medium --x264-profile main --h264-level 3.1\n"); + printf("\n + Universal: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 -m --x264-preset fast --h264-profile baseline --h264-level 3.0\n"); + printf("\n + iPod: -e x264 -q 22.0 -r 30 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 320 --modulus 2 -m --x264-preset medium --h264-profile baseline --h264-level 1.3\n"); + printf("\n + iPhone & iPod Touch: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1\n"); + printf("\n + iPad: -e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1\n"); + printf("\n + AppleTV: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 960 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1 -x cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\n"); + printf("\n + AppleTV 2: -e x264 -q 20.0 -r 29.97 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1280 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1\n"); + printf("\n + AppleTV 3: -e x264 -q 20.0 -r 30 --pfr -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 -X 1920 --decomb=fast --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 4.0\n"); + printf("\n + Android: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 720 --loose-anamorphic --modulus 2 --x264-preset medium --h264-profile main --h264-level 2.2\n"); + printf("\n + Android Tablet: -e x264 -q 22.0 -r 29.97 --pfr -a 1 -E faac -B 128 -6 dpl2 -R Auto -D 0.0 -f mp4 -X 1280 --loose-anamorphic --modulus 2 --x264-preset medium --h264-profile main --h264-level 3.1\n"); printf("\n>\n"); printf("\n< Regular\n"); - printf("\n + Normal: -e x264 -q 20.0 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 --loose-anamorphic --modulus 2 -m --x264-preset veryfast --x264-profile main --h264-level 4.0\n"); - printf("\n + High Profile: -e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 --decomb --loose-anamorphic --modulus 2 -m --x264-preset medium --x264-profile high --h264-level 4.1\n"); + printf("\n + Normal: -e x264 -q 20.0 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 --loose-anamorphic --modulus 2 -m --x264-preset veryfast --h264-profile main --h264-level 4.0\n"); + printf("\n + High Profile: -e x264 -q 20.0 -a 1,1 -E faac,copy:ac3 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 -4 --decomb --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 4.1\n"); printf("\n>\n"); } @@ -3223,9 +3223,9 @@ static int ParseOptions( int argc, char ** argv ) #define ALLOWED_AUDIO_COPY 280 #define AUDIO_FALLBACK 281 #define LOOSE_CROP 282 - #define X264_PROFILE 283 - #define X264_PRESET 284 - #define X264_TUNE 285 + #define X264_PRESET 283 + #define X264_TUNE 284 + #define H264_PROFILE 285 #define H264_LEVEL 286 #define NO_OPENCL 287 #define NORMALIZE_MIX 288 @@ -3302,11 +3302,11 @@ static int ParseOptions( int argc, char ** argv ) { "ac", required_argument, NULL, 'C' }, { "rate", required_argument, NULL, 'r' }, { "arate", required_argument, NULL, 'R' }, - { "encopts", required_argument, NULL, 'x' }, - { "x264-profile", required_argument, NULL, X264_PROFILE }, - { "h264-profile", required_argument, NULL, X264_PROFILE }, { "x264-preset", required_argument, NULL, X264_PRESET }, { "x264-tune", required_argument, NULL, X264_TUNE }, + { "encopts", required_argument, NULL, 'x' }, + { "x264-profile", required_argument, NULL, H264_PROFILE }, + { "h264-profile", required_argument, NULL, H264_PROFILE }, { "h264-level", required_argument, NULL, H264_LEVEL }, { "turbo", no_argument, NULL, 'T' }, { "maxHeight", required_argument, NULL, 'Y' }, @@ -3748,18 +3748,18 @@ static int ParseOptions( int argc, char ** argv ) case 'C': acompressions = str_split( optarg, ',' ); break; - case 'x': - advanced_opts = strdup( optarg ); - break; - case X264_PROFILE: - x264_profile = strdup( optarg ); - break; case X264_PRESET: x264_preset = strdup( optarg ); break; case X264_TUNE: x264_tune = strdup( optarg ); break; + case 'x': + advanced_opts = strdup( optarg ); + break; + case H264_PROFILE: + h264_profile = strdup( optarg ); + break; case H264_LEVEL: h264_level = strdup( optarg ); break; diff --git a/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs b/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs new file mode 100644 index 000000000..2687508b2 --- /dev/null +++ b/win/CS/HandBrake.ApplicationServices/EventArgs/SettingChangedEventArgs.cs @@ -0,0 +1,27 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="SettingChangedEventArgs.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The setting changed event args.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrake.ApplicationServices.EventArgs
+{
+ /// <summary>
+ /// The setting changed event args.
+ /// </summary>
+ public class SettingChangedEventArgs
+ {
+ /// <summary>
+ /// Gets or sets the key.
+ /// </summary>
+ public string Key { get; set; }
+
+ /// <summary>
+ /// Gets or sets the value.
+ /// </summary>
+ public object Value { get; set; }
+ }
+}
diff --git a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj index 56df4d218..1448380b0 100644 --- a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj +++ b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj @@ -84,6 +84,7 @@ <ItemGroup>
<Compile Include="Collections\SerializableDictionary.cs" />
<Compile Include="Converters\EnumToDescConverter.cs" />
+ <Compile Include="EventArgs\SettingChangedEventArgs.cs" />
<Compile Include="Exceptions\GeneralApplicationException.cs" />
<Compile Include="EventArgs\EncodeCompletedEventArgs.cs" />
<Compile Include="EventArgs\EncodeProgressEventArgs.cs" />
diff --git a/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs b/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs index f9053a8bb..36d416c9d 100644 --- a/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs +++ b/win/CS/HandBrake.ApplicationServices/Model/EncodeTask.cs @@ -12,6 +12,8 @@ namespace HandBrake.ApplicationServices.Model using System.Collections.ObjectModel;
using System.Linq;
+ using Caliburn.Micro;
+
using HandBrake.ApplicationServices.Model.Encoding;
using HandBrake.Interop.Model;
using HandBrake.Interop.Model.Encoding;
@@ -22,8 +24,17 @@ namespace HandBrake.ApplicationServices.Model /// <summary>
/// An Encode Task
/// </summary>
- public class EncodeTask
+ public class EncodeTask : PropertyChangedBase
{
+ #region Private Fields
+
+ /// <summary>
+ /// The advanced panel enabled.
+ /// </summary>
+ private bool showAdvancedTab;
+
+ #endregion
+
/// <summary>
/// Initializes a new instance of the <see cref="EncodeTask"/> class.
/// </summary>
@@ -436,7 +447,7 @@ namespace HandBrake.ApplicationServices.Model public bool FastDecode { get; set; }
/// <summary>
- /// Extra Advanced Arguments for the Video Tab.
+ /// Gets or sets Extra Advanced Arguments for the Video Tab.
/// </summary>
public string ExtraAdvancedArguments { get; set; }
@@ -493,6 +504,25 @@ namespace HandBrake.ApplicationServices.Model /// Gets or sets PreviewEncodeStartAt.
/// </summary>
public string PreviewEncodeStartAt { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether advanced panel enabled.
+ /// </summary>
+ public bool ShowAdvancedTab
+ {
+ get
+ {
+ return this.showAdvancedTab;
+ }
+ set
+ {
+ if (!object.Equals(value, this.showAdvancedTab))
+ {
+ this.showAdvancedTab = value;
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
+ }
#endregion
}
}
diff --git a/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs b/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs index db3794151..1a20379f4 100644 --- a/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs +++ b/win/CS/HandBrake.ApplicationServices/Model/Encoding/ChapterMarker.cs @@ -9,6 +9,8 @@ namespace HandBrake.ApplicationServices.Model.Encoding
{
+ using System;
+
using Caliburn.Micro;
/// <summary>
@@ -37,10 +39,14 @@ namespace HandBrake.ApplicationServices.Model.Encoding /// <param name="name">
/// The name.
/// </param>
- public ChapterMarker(int number, string name)
+ /// <param name="duration">
+ /// The duration.
+ /// </param>
+ public ChapterMarker(int number, string name, TimeSpan duration)
{
this.ChapterName = name;
this.ChapterNumber = number;
+ this.Duration = duration;
}
/// <summary>
@@ -54,6 +60,7 @@ namespace HandBrake.ApplicationServices.Model.Encoding {
this.ChapterName = chapter.ChapterName;
this.ChapterNumber = chapter.ChapterNumber;
+ this.Duration = chapter.Duration;
}
/// <summary>
@@ -62,6 +69,11 @@ namespace HandBrake.ApplicationServices.Model.Encoding public int ChapterNumber { get; set; }
/// <summary>
+ /// Gets or sets the duration.
+ /// </summary>
+ public TimeSpan Duration { get; set; }
+
+ /// <summary>
/// Gets or sets ChapterName.
/// </summary>
public string ChapterName
diff --git a/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs b/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs index 15f158381..84e9eee9f 100644 --- a/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs +++ b/win/CS/HandBrake.ApplicationServices/Model/QueueTask.cs @@ -30,6 +30,14 @@ namespace HandBrake.ApplicationServices.Model #region Properties
/// <summary>
+ /// Initializes a new instance of the <see cref="QueueTask"/> class.
+ /// </summary>
+ public QueueTask()
+ {
+ this.Status = QueueItemStatus.Waiting;
+ }
+
+ /// <summary>
/// Gets or sets ScannedSource.
/// </summary>
public Source ScannedSource { get; set; }
@@ -62,5 +70,66 @@ namespace HandBrake.ApplicationServices.Model public EncodeTask Task { get; set; }
#endregion
+
+ /// <summary>
+ /// The equals.
+ /// </summary>
+ /// <param name="other">
+ /// The other.
+ /// </param>
+ /// <returns>
+ /// The <see cref="bool"/>.
+ /// </returns>
+ protected bool Equals(QueueTask other)
+ {
+ return Equals(this.ScannedSource, other.ScannedSource) && this.CustomQuery.Equals(other.CustomQuery) && Equals(this.Task, other.Task) && this.status == other.status;
+ }
+
+ /// <summary>
+ /// The equals.
+ /// </summary>
+ /// <param name="obj">
+ /// The obj.
+ /// </param>
+ /// <returns>
+ /// The <see cref="bool"/>.
+ /// </returns>
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj))
+ {
+ return false;
+ }
+
+ if (ReferenceEquals(this, obj))
+ {
+ return true;
+ }
+
+ if (obj.GetType() != this.GetType())
+ {
+ return false;
+ }
+
+ return Equals((QueueTask)obj);
+ }
+
+ /// <summary>
+ /// The get hash code.
+ /// </summary>
+ /// <returns>
+ /// The <see cref="int"/>.
+ /// </returns>
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ int hashCode = (this.ScannedSource != null ? this.ScannedSource.GetHashCode() : 0);
+ hashCode = (hashCode * 397) ^ this.CustomQuery.GetHashCode();
+ hashCode = (hashCode * 397) ^ (this.Task != null ? this.Task.GetHashCode() : 0);
+ hashCode = (hashCode * 397) ^ (int)this.status;
+ return hashCode;
+ }
+ }
}
}
\ No newline at end of file diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs index 7f79e8aec..f17a6a51b 100644 --- a/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs +++ b/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs @@ -78,10 +78,6 @@ namespace HandBrake.ApplicationServices.Parsing /// </summary>
public event ScanProgressEventHandler OnScanProgress;
- /// <summary>
- /// Raised upon the catching of a "Scanning title # of #..." in the stream
- /// </summary>
- public event EncodeProgressEventHandler OnEncodeProgress;
/// <summary>
/// Gets the buffer of data that came from the CLI standard input/error
@@ -133,34 +129,5 @@ namespace HandBrake.ApplicationServices.Parsing return tmp;
}
-
- /// <summary>
- /// Pase the CLI status output (from standard output)
- /// </summary>
- public void ReadEncodeStatus()
- {
- string tmp = base.ReadLine();
-
- Match m = Regex.Match(tmp, @"^Encoding: task ([0-9]*) of ([0-9]*), ([0-9]*\.[0-9]*) %( \(([0-9]*\.[0-9]*) fps, avg ([0-9]*\.[0-9]*) fps, ETA ([0-9]{2})h([0-9]{2})m([0-9]{2})s\))?");
- if (m.Success && OnEncodeProgress != null)
- {
- int currentTask = int.Parse(m.Groups[1].Value);
- int totalTasks = int.Parse(m.Groups[2].Value);
- float percent = float.Parse(m.Groups[3].Value, CultureInfo.InvariantCulture);
- float currentFps = m.Groups[5].Value == string.Empty ? 0.0F : float.Parse(m.Groups[5].Value, CultureInfo.InvariantCulture);
- float avgFps = m.Groups[6].Value == string.Empty ? 0.0F : float.Parse(m.Groups[6].Value, CultureInfo.InvariantCulture);
- string remaining = string.Empty;
- if (m.Groups[7].Value != string.Empty)
- {
- remaining = m.Groups[7].Value + ":" + m.Groups[8].Value + ":" + m.Groups[9].Value;
- }
- if (string.IsNullOrEmpty(remaining))
- {
- remaining = "Calculating ...";
- }
-
- OnEncodeProgress(this, currentTask, totalTasks, percent, currentFps, avgFps, remaining);
- }
- }
}
}
\ No newline at end of file diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs index 00488eac8..324e97c16 100644 --- a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs +++ b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs @@ -16,9 +16,6 @@ namespace HandBrake.ApplicationServices.Parsing using System.Linq;
using System.Text.RegularExpressions;
- using Caliburn.Micro;
-
- using HandBrake.ApplicationServices.Services.Interfaces;
using HandBrake.Interop.Model;
using Size = System.Drawing.Size;
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs b/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs index 8ef67b28d..866edb794 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/Base/EncodeBase.cs @@ -10,8 +10,12 @@ namespace HandBrake.ApplicationServices.Services.Base
{
using System;
+ using System.Globalization;
using System.IO;
using System.Text;
+ using System.Text.RegularExpressions;
+
+ using Caliburn.Micro;
using HandBrake.ApplicationServices.EventArgs;
using HandBrake.ApplicationServices.Exceptions;
@@ -148,11 +152,15 @@ namespace HandBrake.ApplicationServices.Services.Base /// </param>
public void InvokeEncodeStatusChanged(EncodeProgressEventArgs e)
{
- EncodeProgessStatus handler = this.EncodeStatusChanged;
- if (handler != null)
- {
- handler(this, e);
- }
+ Execute.OnUIThread(
+ () =>
+ {
+ EncodeProgessStatus handler = this.EncodeStatusChanged;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ });
}
/// <summary>
@@ -163,11 +171,15 @@ namespace HandBrake.ApplicationServices.Services.Base /// </param>
public void InvokeEncodeCompleted(EncodeCompletedEventArgs e)
{
- EncodeCompletedStatus handler = this.EncodeCompleted;
- if (handler != null)
- {
- handler(this, e);
- }
+ Execute.OnUIThread(
+ () =>
+ {
+ EncodeCompletedStatus handler = this.EncodeCompleted;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ });
}
/// <summary>
@@ -178,11 +190,14 @@ namespace HandBrake.ApplicationServices.Services.Base /// </param>
public void InvokeEncodeStarted(EventArgs e)
{
- EventHandler handler = this.EncodeStarted;
- if (handler != null)
- {
- handler(this, e);
- }
+ Execute.OnUIThread(() =>
+ {
+ EventHandler handler = this.EncodeStarted;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ });
}
#endregion
@@ -192,10 +207,7 @@ namespace HandBrake.ApplicationServices.Services.Base /// <summary>
/// A Stop Method to be implemeneted.
/// </summary>
- /// <param name="exc">
- /// The Exception that occured that required a STOP action.
- /// </param>
- public virtual void Stop(Exception exc)
+ public virtual void Stop()
{
// Do Nothing
}
@@ -249,6 +261,73 @@ namespace HandBrake.ApplicationServices.Services.Base }
}
+
+ /// <summary>
+ /// Pase the CLI status output (from standard output)
+ /// </summary>
+ /// <param name="encodeStatus">
+ /// The encode Status.
+ /// </param>
+ /// <param name="startTime">
+ /// The start Time.
+ /// </param>
+ /// <returns>
+ /// The <see cref="EncodeProgressEventArgs"/>.
+ /// </returns>
+ public EncodeProgressEventArgs ReadEncodeStatus(string encodeStatus, DateTime startTime)
+ {
+ try
+ {
+ Match m = Regex.Match(
+ encodeStatus,
+ @"^Encoding: task ([0-9]*) of ([0-9]*), ([0-9]*\.[0-9]*) %( \(([0-9]*\.[0-9]*) fps, avg ([0-9]*\.[0-9]*) fps, ETA ([0-9]{2})h([0-9]{2})m([0-9]{2})s\))?");
+
+ if (m.Success)
+ {
+ int currentTask = int.Parse(m.Groups[1].Value);
+ int totalTasks = int.Parse(m.Groups[2].Value);
+ float percent = float.Parse(m.Groups[3].Value, CultureInfo.InvariantCulture);
+ float currentFps = m.Groups[5].Value == string.Empty
+ ? 0.0F
+ : float.Parse(m.Groups[5].Value, CultureInfo.InvariantCulture);
+ float avgFps = m.Groups[6].Value == string.Empty
+ ? 0.0F
+ : float.Parse(m.Groups[6].Value, CultureInfo.InvariantCulture);
+ string remaining = string.Empty;
+ if (m.Groups[7].Value != string.Empty)
+ {
+ remaining = m.Groups[7].Value + ":" + m.Groups[8].Value + ":" + m.Groups[9].Value;
+ }
+ if (string.IsNullOrEmpty(remaining))
+ {
+ remaining = "Calculating ...";
+ }
+
+ EncodeProgressEventArgs eventArgs = new EncodeProgressEventArgs
+ {
+ AverageFrameRate = avgFps,
+ CurrentFrameRate = currentFps,
+ EstimatedTimeLeft =
+ Converters.EncodeToTimespan(
+ remaining),
+ PercentComplete = percent,
+ Task = currentTask,
+ TaskCount = totalTasks,
+ ElapsedTime =
+ DateTime.Now - startTime,
+ };
+
+ return eventArgs;
+ }
+
+ return null;
+ }
+ catch (Exception exc)
+ {
+ return null;
+ }
+ }
+
/// <summary>
/// Setup the logging.
/// </summary>
@@ -286,8 +365,8 @@ namespace HandBrake.ApplicationServices.Services.Base this.fileWriter = new StreamWriter(logFile) { AutoFlush = true };
this.fileWriter.WriteLine(header);
- this.fileWriter.WriteLine(String.Format("CLI Query: {0}", query));
- this.fileWriter.WriteLine(String.Format("User Query: {0}", encodeQueueTask.CustomQuery));
+ this.fileWriter.WriteLine(string.Format("CLI Query: {0}", query));
+ this.fileWriter.WriteLine(string.Format("User Query: {0}", encodeQueueTask.CustomQuery));
this.fileWriter.WriteLine();
}
catch (Exception)
@@ -324,22 +403,9 @@ namespace HandBrake.ApplicationServices.Services.Base if (this.fileWriter != null && this.fileWriter.BaseStream.CanWrite)
{
this.fileWriter.WriteLine(message);
-
- // If the logging grows past 100MB, kill the encode and stop.
- if (this.fileWriter.BaseStream.Length > 100000000)
- {
- this.Stop(
- new GeneralApplicationException(
- "The encode has been stopped. The log file has grown to over 100MB which indicates a serious problem has occured with the encode.",
- "Please check the encode log for an indication of what the problem is.", null));
- }
}
}
}
- catch (GeneralApplicationException)
- {
- throw;
- }
catch (Exception exc)
{
// Do Nothing.
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Encode.cs b/win/CS/HandBrake.ApplicationServices/Services/Encode.cs index c136c18ee..577067050 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/Encode.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/Encode.cs @@ -11,18 +11,18 @@ namespace HandBrake.ApplicationServices.Services {
using System;
using System.Diagnostics;
+ using System.Globalization;
using System.IO;
- using System.Threading;
using System.Windows.Forms;
+ using Caliburn.Micro;
+
using HandBrake.ApplicationServices.EventArgs;
using HandBrake.ApplicationServices.Model;
using HandBrake.ApplicationServices.Services.Base;
using HandBrake.ApplicationServices.Services.Interfaces;
using HandBrake.ApplicationServices.Utilities;
- using Parser = HandBrake.ApplicationServices.Parsing.Parser;
-
/// <summary>
/// Class which handles the CLI
/// </summary>
@@ -36,11 +36,6 @@ namespace HandBrake.ApplicationServices.Services private readonly IUserSettingService userSettingService;
/// <summary>
- /// Gets The Process Handle
- /// </summary>
- private IntPtr processHandle;
-
- /// <summary>
/// Gets the Process ID
/// </summary>
private int processId;
@@ -55,6 +50,11 @@ namespace HandBrake.ApplicationServices.Services /// </summary>
private QueueTask currentTask;
+ /// <summary>
+ /// The init shutdown.
+ /// </summary>
+ private bool initShutdown;
+
#endregion
/// <summary>
@@ -66,8 +66,7 @@ namespace HandBrake.ApplicationServices.Services public Encode(IUserSettingService userSettingService)
: base(userSettingService)
{
- this.userSettingService = userSettingService;
- this.EncodeStarted += this.EncodeEncodeStarted;
+ this.userSettingService = userSettingService;
}
#region Properties
@@ -83,6 +82,7 @@ namespace HandBrake.ApplicationServices.Services /// <summary>
/// Execute a HandBrakeCLI process.
+ /// This should only be called from the UI thread.
/// </summary>
/// <param name="encodeQueueTask">
/// The encodeQueueTask.
@@ -94,8 +94,6 @@ namespace HandBrake.ApplicationServices.Services {
try
{
- this.currentTask = encodeQueueTask;
-
if (this.IsEncoding)
{
throw new Exception("HandBrake is already encodeing.");
@@ -103,6 +101,8 @@ namespace HandBrake.ApplicationServices.Services this.IsEncoding = true;
+ this.currentTask = encodeQueueTask;
+
if (enableLogging)
{
try
@@ -160,8 +160,10 @@ namespace HandBrake.ApplicationServices.Services this.HbProcess.BeginErrorReadLine();
}
+ this.HbProcess.OutputDataReceived += HbProcess_OutputDataReceived;
+ this.HbProcess.BeginOutputReadLine();
+
this.processId = this.HbProcess.Id;
- this.processHandle = this.HbProcess.Handle;
// Set the process Priority
if (this.processId != -1)
@@ -207,21 +209,9 @@ namespace HandBrake.ApplicationServices.Services }
/// <summary>
- /// Stop the Encode
- /// </summary>
- public void Stop()
- {
- this.Stop(null);
- }
-
- /// <summary>
/// Kill the CLI process
/// </summary>
- /// <param name="exc">
- /// The Exception that has occured.
- /// This will get bubbled up through the EncodeCompletedEventArgs
- /// </param>
- public override void Stop(Exception exc)
+ public override void Stop()
{
try
{
@@ -234,11 +224,6 @@ namespace HandBrake.ApplicationServices.Services {
// No need to report anything to the user. If it fails, it's probably already stopped.
}
-
- this.InvokeEncodeCompleted(
- exc == null
- ? new EncodeCompletedEventArgs(true, null, string.Empty)
- : new EncodeCompletedEventArgs(false, exc, "An Unknown Error has occured when trying to Stop this encode."));
}
/// <summary>
@@ -264,25 +249,12 @@ namespace HandBrake.ApplicationServices.Services /// </param>
private void HbProcessExited(object sender, EventArgs e)
{
- this.IsEncoding = false;
- if (this.WindowsSeven.IsWindowsSeven)
- {
- this.WindowsSeven.SetTaskBarProgressToNoProgress();
- }
-
- if (this.userSettingService.GetUserSetting<bool>(ASUserSettingConstants.PreventSleep))
- {
- Win32.AllowSleep();
- }
+ HbProcess.WaitForExit();
try
{
- // This is just a quick hack to ensure that we are done processing the logging data.
- // Logging data comes in after the exit event has processed sometimes. We should really impliment ISyncronizingInvoke
- // and set the SyncObject on the process. I think this may resolve this properly.
- // For now, just wait 2.5 seconds to let any trailing log messages come in and be processed.
- Thread.Sleep(2500);
this.HbProcess.CancelErrorRead();
+ this.HbProcess.CancelOutputRead();
this.ShutdownFileWriter();
}
catch (Exception exc)
@@ -290,8 +262,22 @@ namespace HandBrake.ApplicationServices.Services // This exception doesn't warrent user interaction, but it should be logged (TODO)
}
- this.currentTask.Status = QueueItemStatus.Completed;
- this.InvokeEncodeCompleted(new EncodeCompletedEventArgs(true, null, string.Empty));
+ Execute.OnUIThread(() =>
+ {
+ if (this.WindowsSeven.IsWindowsSeven)
+ {
+ this.WindowsSeven.SetTaskBarProgressToNoProgress();
+ }
+
+ if (this.userSettingService.GetUserSetting<bool>(ASUserSettingConstants.PreventSleep))
+ {
+ Win32.AllowSleep();
+ }
+
+ this.currentTask.Status = QueueItemStatus.Completed;
+ this.IsEncoding = false;
+ this.InvokeEncodeCompleted(new EncodeCompletedEventArgs(true, null, string.Empty));
+ });
}
/// <summary>
@@ -303,88 +289,69 @@ namespace HandBrake.ApplicationServices.Services /// <param name="e">
/// DataReceived EventArgs
/// </param>
+ /// <remarks>
+ /// Worker Thread.
+ /// </remarks>
private void HbProcErrorDataReceived(object sender, DataReceivedEventArgs e)
{
if (!String.IsNullOrEmpty(e.Data))
{
+ if (initShutdown && this.LogBuffer.Length < 25000000)
+ {
+ initShutdown = false; // Reset this flag.
+ }
+
+ if (this.LogBuffer.Length > 25000000 && !initShutdown) // Approx 23.8MB and make sure it's only printed once
+ {
+ this.ProcessLogMessage("ERROR: Initiating automatic shutdown of encode process. The size of the log file inidcates that there is an error! ");
+ initShutdown = true;
+ this.Stop();
+ }
+
this.ProcessLogMessage(e.Data);
}
}
/// <summary>
- /// Encode Started
+ /// The hb process output data received.
/// </summary>
/// <param name="sender">
/// The sender.
/// </param>
/// <param name="e">
- /// The EventArgs.
+ /// The e.
/// </param>
- private void EncodeEncodeStarted(object sender, EventArgs e)
+ private void HbProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
- Thread monitor = new Thread(this.EncodeMonitor);
- monitor.Start();
- }
-
- /// <summary>
- /// Monitor the QueueTask
- /// </summary>
- private void EncodeMonitor()
- {
- try
+ if (!String.IsNullOrEmpty(e.Data) && this.IsEncoding)
{
- Parser encode = new Parser(this.HbProcess.StandardOutput.BaseStream);
- encode.OnEncodeProgress += this.EncodeOnEncodeProgress;
- while (!encode.EndOfStream)
+ EncodeProgressEventArgs eventArgs = this.ReadEncodeStatus(e.Data, this.startTime);
+ if (eventArgs != null)
{
- encode.ReadEncodeStatus();
+ Execute.OnUIThread(
+ () =>
+ {
+ if (!this.IsEncoding)
+ {
+ // We can get events out of order since the CLI progress is monitored on a background thread.
+ // So make sure we don't send a status update after an encode complete event.
+ return;
+ }
+
+ this.InvokeEncodeStatusChanged(eventArgs);
+
+ if (this.WindowsSeven.IsWindowsSeven)
+ {
+ int percent;
+ int.TryParse(
+ Math.Round(eventArgs.PercentComplete).ToString(CultureInfo.InvariantCulture),
+ out percent);
+
+ this.WindowsSeven.SetTaskBarProgress(percent);
+ }
+ });
}
}
- catch (Exception)
- {
- this.EncodeOnEncodeProgress(null, 0, 0, 0, 0, 0, "Unknown, status not available..");
- }
- }
-
- /// <summary>
- /// Displays the Encode status in the GUI
- /// </summary>
- /// <param name="sender">The sender</param>
- /// <param name="currentTask">The current task</param>
- /// <param name="taskCount">Number of tasks</param>
- /// <param name="percentComplete">Percent complete</param>
- /// <param name="currentFps">Current encode speed in fps</param>
- /// <param name="avg">Avg encode speed</param>
- /// <param name="timeRemaining">Time Left</param>
- private void EncodeOnEncodeProgress(object sender, int currentTask, int taskCount, float percentComplete, float currentFps, float avg, string timeRemaining)
- {
- if (!this.IsEncoding)
- {
- // We can get events out of order since the CLI progress is monitored on a background thread.
- // So make sure we don't send a status update after an encode complete event.
- return;
- }
-
- EncodeProgressEventArgs eventArgs = new EncodeProgressEventArgs
- {
- AverageFrameRate = avg,
- CurrentFrameRate = currentFps,
- EstimatedTimeLeft = Converters.EncodeToTimespan(timeRemaining),
- PercentComplete = percentComplete,
- Task = currentTask,
- TaskCount = taskCount,
- ElapsedTime = DateTime.Now - this.startTime,
- };
-
- this.InvokeEncodeStatusChanged(eventArgs);
-
- if (this.WindowsSeven.IsWindowsSeven)
- {
- int percent;
- int.TryParse(Math.Round(percentComplete).ToString(), out percent);
-
- this.WindowsSeven.SetTaskBarProgress(percent);
- }
}
#endregion
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs index 0a952e516..b4c8872c0 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IQueueProcessor.cs @@ -10,7 +10,7 @@ namespace HandBrake.ApplicationServices.Services.Interfaces
{
using System;
- using System.Collections.ObjectModel;
+ using System.ComponentModel;
using HandBrake.ApplicationServices.Model;
@@ -70,7 +70,7 @@ namespace HandBrake.ApplicationServices.Services.Interfaces /// <summary>
/// Gets The current queue.
/// </summary>
- ObservableCollection<QueueTask> Queue { get; }
+ BindingList<QueueTask> Queue { get; }
#endregion
diff --git a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs index d7bba9550..bf6cb9c91 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs @@ -9,12 +9,30 @@ namespace HandBrake.ApplicationServices.Services.Interfaces
{
+ using HandBrake.ApplicationServices.EventArgs;
+
+ /// <summary>
+ /// The setting event handler.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ public delegate void SettingEventHandler(object sender, SettingChangedEventArgs e);
+
/// <summary>
/// The User Setting Service Interace.
/// </summary>
public interface IUserSettingService
{
/// <summary>
+ /// The setting changed.
+ /// </summary>
+ event SettingEventHandler SettingChanged;
+
+ /// <summary>
/// Set the specified user setting.
/// </summary>
/// <param name="name">
diff --git a/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs b/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs index 64d604a34..320b96f1b 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/LibEncode.cs @@ -12,7 +12,6 @@ namespace HandBrake.ApplicationServices.Services using System;
using System.Diagnostics;
- using HandBrake.ApplicationServices.Exceptions;
using HandBrake.ApplicationServices.Model;
using HandBrake.ApplicationServices.Services.Base;
using HandBrake.ApplicationServices.Services.Interfaces;
@@ -169,19 +168,7 @@ namespace HandBrake.ApplicationServices.Services /// <summary>
/// Kill the CLI process
/// </summary>
- public void Stop()
- {
- this.Stop(null);
- }
-
- /// <summary>
- /// Kill the CLI process
- /// </summary>
- /// <param name="exc">
- /// The Exception that has occured.
- /// This will get bubbled up through the EncodeCompletedEventArgs
- /// </param>
- public override void Stop(Exception exc)
+ public override void Stop()
{
try
{
@@ -192,11 +179,6 @@ namespace HandBrake.ApplicationServices.Services {
// Do Nothing.
}
-
- this.InvokeEncodeCompleted(
- exc == null
- ? new EncodeCompletedEventArgs(true, null, string.Empty)
- : new EncodeCompletedEventArgs(false, exc, "An Error has occured."));
}
/// <summary>
diff --git a/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs b/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs index 7aefd285f..172fe7291 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/QueueProcessor.cs @@ -11,7 +11,7 @@ namespace HandBrake.ApplicationServices.Services {
using System;
using System.Collections.Generic;
- using System.Collections.ObjectModel;
+ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
@@ -41,7 +41,7 @@ namespace HandBrake.ApplicationServices.Services /// <summary>
/// The Queue of Job objects
/// </summary>
- private readonly ObservableCollection<QueueTask> queue = new ObservableCollection<QueueTask>();
+ private readonly BindingList<QueueTask> queue = new BindingList<QueueTask>();
/// <summary>
/// The User Setting Service
@@ -152,7 +152,7 @@ namespace HandBrake.ApplicationServices.Services /// <summary>
/// Gets The current queue.
/// </summary>
- public ObservableCollection<QueueTask> Queue
+ public BindingList<QueueTask> Queue
{
get
{
@@ -595,13 +595,6 @@ namespace HandBrake.ApplicationServices.Services /// </summary>
private void ProcessNextJob()
{
- if (this.EncodeService.IsEncoding || !this.IsProcessing)
- {
- // We don't want to try start a second encode, so just return out. The event will trigger the next encode automatically.
- // Also, we don't want to start a new encode if we are paused.
- return;
- }
-
QueueTask job = this.GetNextJobForProcessing();
if (job != null)
{
diff --git a/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs b/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs index ab77ce800..db7389637 100644 --- a/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs +++ b/win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs @@ -16,6 +16,7 @@ namespace HandBrake.ApplicationServices.Services using System.Xml.Serialization;
using HandBrake.ApplicationServices.Collections;
+ using HandBrake.ApplicationServices.EventArgs;
using HandBrake.ApplicationServices.Exceptions;
using HandBrake.ApplicationServices.Services.Interfaces;
@@ -48,6 +49,11 @@ namespace HandBrake.ApplicationServices.Services }
/// <summary>
+ /// The setting changed.
+ /// </summary>
+ public event SettingEventHandler SettingChanged;
+
+ /// <summary>
/// Set the specified user setting.
/// </summary>
/// <param name="name">
@@ -60,6 +66,8 @@ namespace HandBrake.ApplicationServices.Services {
this.userSettings[name] = value;
this.Save();
+
+ this.OnSettingChanged(new SettingChangedEventArgs {Key = name, Value = value});
}
/// <summary>
@@ -99,6 +107,21 @@ namespace HandBrake.ApplicationServices.Services }
/// <summary>
+ /// The on setting changed.
+ /// </summary>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ protected virtual void OnSettingChanged(SettingChangedEventArgs e)
+ {
+ SettingEventHandler handler = this.SettingChanged;
+ if (handler != null)
+ {
+ handler(this, e);
+ }
+ }
+
+ /// <summary>
/// Save the User Settings
/// </summary>
private void Save()
diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs b/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs index 618dd43cc..63a98abe4 100644 --- a/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs +++ b/win/CS/HandBrake.ApplicationServices/Utilities/InteropModelCreator.cs @@ -23,10 +23,6 @@ namespace HandBrake.ApplicationServices.Utilities /// </summary>
public class InteropModelCreator
{
- /*
- * TODO: This conversion class needs to be finished off before libencode will work.
- */
-
/// <summary>
/// Get an EncodeJob model for a LibHB Encode.
/// </summary>
@@ -182,12 +178,37 @@ namespace HandBrake.ApplicationServices.Utilities // job.SourceType = work.Type;
job.Title = work.Title;
- // TODO Setup subtitles
+ // Subtitles
job.Subtitles = new Subtitles { SourceSubtitles = new List<SourceSubtitle>(), SrtSubtitles = new List<SrtSubtitle>() };
- //foreach (SubtitleTrack track in work.SubtitleTracks)
- //{
- // // TODO
- //}
+ foreach (SubtitleTrack track in work.SubtitleTracks)
+ {
+ if (track.IsSrtSubtitle)
+ {
+ job.Subtitles.SrtSubtitles.Add(
+ new SrtSubtitle
+ {
+ CharacterCode = track.SrtCharCode,
+ Default = track.Default,
+ FileName = track.SrtFileName,
+ LanguageCode = track.SrtLang,
+ Offset = track.SrtOffset
+ });
+ }
+ else
+ {
+ if (track.SourceTrack != null)
+ {
+ job.Subtitles.SourceSubtitles.Add(
+ new SourceSubtitle
+ {
+ BurnedIn = track.Burned,
+ Default = track.Default,
+ Forced = track.Forced,
+ TrackNumber = track.SourceTrack.TrackNumber
+ });
+ }
+ }
+ }
return job;
}
diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs b/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs index acc8948a1..81d4846ec 100644 --- a/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs +++ b/win/CS/HandBrake.ApplicationServices/Utilities/Win32.cs @@ -168,7 +168,7 @@ namespace HandBrake.ApplicationServices.Utilities /// </summary>
public static void AllowSleep()
{
- SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS);
+ executor(() => SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS));
}
/// <summary>
diff --git a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs index 344759c1d..fbe8e8532 100644 --- a/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs +++ b/win/CS/HandBrake.Interop/HandBrakeInterop/SourceData/Title.cs @@ -19,9 +19,20 @@ namespace HandBrake.Interop.SourceData /// </summary>
public class Title
{
- private readonly List<AudioTrack> audioTracks;
- private readonly List<Chapter> chapters;
- private readonly List<Subtitle> subtitles;
+ /// <summary>
+ /// The audio tracks.
+ /// </summary>
+ private readonly List<AudioTrack> audioTracks;
+
+ /// <summary>
+ /// The chapters.
+ /// </summary>
+ private readonly List<Chapter> chapters;
+
+ /// <summary>
+ /// The subtitles.
+ /// </summary>
+ private readonly List<Subtitle> subtitles;
/// <summary>
/// Initializes a new instance of the Title class.
diff --git a/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml new file mode 100644 index 000000000..3fdc8d22f --- /dev/null +++ b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml @@ -0,0 +1,175 @@ +<UserControl x:Class="HandBrakeWPF.Controls.TimeSpanBox"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ Loaded="UserControl_Loaded">
+ <UserControl.Resources>
+ <Style x:Key="Arrow" TargetType="Polygon">
+ <Setter Property="Fill" Value="#333" />
+ </Style>
+ <!-- UpButton and DownButton are identical except for the border radius in the control template.
+ We can't pass that through so we need to duplicate the template. After a change is made from one button
+ template it should be copied to the other. -->
+ <Style x:Key="UpButton" TargetType="Button">
+ <Setter Property="Margin" Value="0"/>
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#EEE" Offset="0.4"/>
+ <GradientStop Color="#BBB" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <Border
+ Name="border"
+ BorderThickness="1"
+ BorderBrush="#888"
+ CornerRadius="0,2,0,0"
+ Background="{TemplateBinding Background}">
+ <ContentPresenter
+ Name="content"
+ HorizontalAlignment="Center" VerticalAlignment="Center" />
+ </Border>
+ <ControlTemplate.Triggers>
+ <Trigger Property="IsMouseOver" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
+ <Setter Property="Foreground" Value="#FF4788c8" />
+ </Trigger>
+ <Trigger Property="IsPressed" Value="True">
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#CCC" Offset="0.4"/>
+ <GradientStop Color="#999" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter TargetName="content" Property="RenderTransform" >
+ <Setter.Value>
+ <TranslateTransform Y="1.0" />
+ </Setter.Value>
+ </Setter>
+ </Trigger>
+ <Trigger Property="IsDefaulted" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsFocused" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsEnabled" Value="False">
+ <Setter TargetName="border" Property="Opacity" Value="0.7" />
+ <Setter Property="Foreground" Value="Gray" />
+ </Trigger>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="DownButton" TargetType="Button">
+ <Setter Property="Margin" Value="0"/>
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#EEE" Offset="0.4"/>
+ <GradientStop Color="#BBB" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <Border
+ Name="border"
+ BorderThickness="1"
+ BorderBrush="#888"
+ CornerRadius="0,0,2,0"
+ Background="{TemplateBinding Background}">
+ <ContentPresenter
+ Name="content"
+ HorizontalAlignment="Center" VerticalAlignment="Center" />
+ </Border>
+ <ControlTemplate.Triggers>
+ <Trigger Property="IsMouseOver" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
+ <Setter Property="Foreground" Value="#FF4788c8" />
+ </Trigger>
+ <Trigger Property="IsPressed" Value="True">
+ <Setter Property="Background" >
+ <Setter.Value>
+ <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
+ <GradientStop Color="#CCC" Offset="0.4"/>
+ <GradientStop Color="#999" Offset="1"/>
+ </LinearGradientBrush>
+ </Setter.Value>
+ </Setter>
+ <Setter TargetName="content" Property="RenderTransform" >
+ <Setter.Value>
+ <TranslateTransform Y="1.0" />
+ </Setter.Value>
+ </Setter>
+ </Trigger>
+ <Trigger Property="IsDefaulted" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsFocused" Value="True">
+ <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
+ </Trigger>
+ <Trigger Property="IsEnabled" Value="False">
+ <Setter TargetName="border" Property="Opacity" Value="0.7" />
+ <Setter Property="Foreground" Value="Gray" />
+ </Trigger>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </UserControl.Resources>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+ <TextBox
+ Name="numberBox"
+ Grid.Column="0"
+ GotFocus="NumberBoxGotFocus"
+ LostFocus="NumberBoxLostFocus"
+ PreviewTextInput="NumberBoxPreviewTextInput"
+ PreviewKeyDown="NumberBoxPreviewKeyDown"
+ PreviewMouseDown="NumberBoxPreviewMouseDown"
+ PreviewMouseUp="NumberBoxPreviewMouseUp"
+ TextChanged="NumberBoxTextChanged"
+ VerticalContentAlignment="Center"/>
+ <Grid
+ Name="incrementButtonsGrid"
+ Grid.Column="1"
+ Width="16">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*" />
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+ <Button
+ Style="{StaticResource UpButton}"
+ Grid.Row="0"
+ FontSize="4"
+ PreviewMouseLeftButtonDown="UpButtonMouseLeftButtonDown"
+ PreviewMouseLeftButtonUp="UpButtonMouseLeftButtonUp">
+ <Polygon
+ Style="{StaticResource Arrow}"
+ Points="4,0 0,4 8,4" />
+ </Button>
+ <Button
+ Style="{StaticResource DownButton}"
+ Grid.Row="1"
+ FontSize="4"
+ PreviewMouseLeftButtonDown="DownButtonMouseLeftButtonDown"
+ PreviewMouseLeftButtonUp="DownButtonMouseLeftButtonUp">
+ <Polygon
+ Style="{StaticResource Arrow}"
+ Points="0,0 8,0 4,4" />
+ </Button>
+ </Grid>
+ </Grid>
+</UserControl>
diff --git a/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs new file mode 100644 index 000000000..5f983a699 --- /dev/null +++ b/win/CS/HandBrakeWPF/Controls/TimeSpanBox.xaml.cs @@ -0,0 +1,721 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="TimeSpanBox.xaml.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Interaction logic for TimeSpanBox.xaml
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Controls
+{
+ using System;
+ using System.Globalization;
+ using System.Linq;
+ using System.Windows;
+ using System.Windows.Controls;
+ using System.Windows.Input;
+ using System.Windows.Media;
+
+ /// <summary>
+ /// Interaction logic for TimeSpanBox.xaml
+ /// </summary>
+ public partial class TimeSpanBox
+ {
+ #region Constants and Fields
+
+ /// <summary>
+ /// The maximum property name.
+ /// </summary>
+ public const string MaximumPropertyName = "Maximum";
+
+ /// <summary>
+ /// The minimum property name.
+ /// </summary>
+ public const string MinimumPropertyName = "Minimum";
+
+ /// <summary>
+ /// The modulus property name.
+ /// </summary>
+ public const string ModulusPropertyName = "Modulus";
+
+ /// <summary>
+ /// The allow empty property.
+ /// </summary>
+ public static readonly DependencyProperty AllowEmptyProperty = DependencyProperty.Register(
+ "AllowEmpty", typeof(bool), typeof(TimeSpanBox), new PropertyMetadata(true, OnAllowEmptyChanged));
+
+ /// <summary>
+ /// The maximum property.
+ /// </summary>
+ public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register(
+ MaximumPropertyName, typeof(int), typeof(TimeSpanBox), new UIPropertyMetadata(int.MaxValue));
+
+ /// <summary>
+ /// The minimum property.
+ /// </summary>
+ public static readonly DependencyProperty MinimumProperty = DependencyProperty.Register(
+ MinimumPropertyName, typeof(int), typeof(TimeSpanBox), new UIPropertyMetadata(int.MinValue));
+
+ /// <summary>
+ /// The modulus property.
+ /// </summary>
+ public static readonly DependencyProperty ModulusProperty = DependencyProperty.Register(
+ ModulusPropertyName, typeof(int), typeof(TimeSpanBox), new UIPropertyMetadata(0));
+
+ /// <summary>
+ /// The number property.
+ /// </summary>
+ public static readonly DependencyProperty NumberProperty = DependencyProperty.Register(
+ "Number", typeof(int), typeof(TimeSpanBox), new PropertyMetadata(OnNumberChanged));
+
+ /// <summary>
+ /// The show time span property.
+ /// </summary>
+ public static readonly DependencyProperty ShowTimeSpanProperty = DependencyProperty.Register(
+ "ShowTimeSpan", typeof(bool), typeof(TimeSpanBox), new PropertyMetadata(OnShowTimeSpanChanged));
+
+ /// <summary>
+ /// The select all threshold.
+ /// </summary>
+ private static readonly TimeSpan SelectAllThreshold = TimeSpan.FromMilliseconds(500);
+
+ /// <summary>
+ /// The has focus.
+ /// </summary>
+ private bool hasFocus;
+
+ /// <summary>
+ /// The last focus mouse down.
+ /// </summary>
+ private DateTime lastFocusMouseDown;
+
+ /// <summary>
+ /// The none caption.
+ /// </summary>
+ private string noneCaption;
+
+ /// <summary>
+ /// The refire control.
+ /// </summary>
+ private RefireControl refireControl;
+
+ /// <summary>
+ /// The suppress refresh.
+ /// </summary>
+ private bool suppressRefresh;
+
+ #endregion
+
+ #region Constructors and Destructors
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="TimeSpanBox"/> class.
+ /// </summary>
+ public TimeSpanBox()
+ {
+ this.noneCaption = "(none)";
+ this.UpdateBindingOnTextChange = true;
+ this.ShowIncrementButtons = true;
+ this.SelectAllOnClick = true;
+
+ this.InitializeComponent();
+
+ this.RefreshNumberBox();
+ }
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets or sets a value indicating whether show time span.
+ /// </summary>
+ public bool ShowTimeSpan
+ {
+ get
+ {
+ return (bool)this.GetValue(ShowTimeSpanProperty);
+ }
+
+ set
+ {
+ this.SetValue(ShowTimeSpanProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether allow empty.
+ /// </summary>
+ public bool AllowEmpty
+ {
+ get
+ {
+ return (bool)this.GetValue(AllowEmptyProperty);
+ }
+
+ set
+ {
+ this.SetValue(AllowEmptyProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the maximum.
+ /// </summary>
+ public int Maximum
+ {
+ get
+ {
+ return (int)this.GetValue(MaximumProperty);
+ }
+ set
+ {
+ this.SetValue(MaximumProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the minimum.
+ /// </summary>
+ public int Minimum
+ {
+ get
+ {
+ return (int)this.GetValue(MinimumProperty);
+ }
+ set
+ {
+ this.SetValue(MinimumProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the modulus.
+ /// </summary>
+ public int Modulus
+ {
+ get
+ {
+ return (int)this.GetValue(ModulusProperty);
+ }
+ set
+ {
+ this.SetValue(ModulusProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the none caption.
+ /// </summary>
+ public string NoneCaption
+ {
+ get
+ {
+ return this.noneCaption;
+ }
+
+ set
+ {
+ this.noneCaption = value;
+ this.RefreshNumberBox();
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the number.
+ /// </summary>
+ public int Number
+ {
+ get
+ {
+ return (int)this.GetValue(NumberProperty);
+ }
+
+ set
+ {
+ this.SetValue(NumberProperty, value);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether select all on click.
+ /// </summary>
+ public bool SelectAllOnClick { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether show increment buttons.
+ /// </summary>
+ public bool ShowIncrementButtons { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether update binding on text change.
+ /// </summary>
+ public bool UpdateBindingOnTextChange { get; set; }
+
+ /// <summary>
+ /// Gets the increment.
+ /// </summary>
+ private int Increment
+ {
+ get
+ {
+ return this.Modulus > 0 ? this.Modulus : 1;
+ }
+ }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// The on allow empty changed.
+ /// </summary>
+ /// <param name="dependencyObject">
+ /// The dependency object.
+ /// </param>
+ /// <param name="eventArgs">
+ /// The event args.
+ /// </param>
+ private static void OnAllowEmptyChanged(
+ DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
+ {
+ var numBox = dependencyObject as TimeSpanBox;
+ if (numBox != null)
+ {
+ numBox.RefreshNumberBox();
+ }
+ }
+
+ /// <summary>
+ /// The on number changed.
+ /// </summary>
+ /// <param name="dependencyObject">
+ /// The dependency object.
+ /// </param>
+ /// <param name="eventArgs">
+ /// The event args.
+ /// </param>
+ private static void OnNumberChanged(
+ DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
+ {
+ if (eventArgs.NewValue != eventArgs.OldValue)
+ {
+ var numBox = dependencyObject as TimeSpanBox;
+
+ if (!numBox.suppressRefresh)
+ {
+ numBox.RefreshNumberBox();
+ }
+ }
+ }
+
+ /// <summary>
+ /// The on show timespan number changed.
+ /// </summary>
+ /// <param name="dependencyObject">
+ /// The dependency object.
+ /// </param>
+ /// <param name="eventArgs">
+ /// The event args.
+ /// </param>
+ private static void OnShowTimeSpanChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs)
+ {
+ if (eventArgs.NewValue != eventArgs.OldValue)
+ {
+ var numBox = dependencyObject as TimeSpanBox;
+
+ if (!numBox.suppressRefresh)
+ {
+ numBox.RefreshNumberBox();
+ }
+ }
+ }
+
+ /// <summary>
+ /// The decrement number.
+ /// </summary>
+ private void DecrementNumber()
+ {
+ int newNumber;
+ if (this.AllowEmpty && this.Number == 0)
+ {
+ newNumber = Math.Min(this.Maximum, -this.Increment);
+ }
+ else
+ {
+ newNumber = this.Number - this.Increment;
+ }
+
+ if (newNumber < this.Minimum)
+ {
+ newNumber = this.Minimum;
+ }
+
+ if (newNumber != this.Number)
+ {
+ this.Number = newNumber;
+ }
+ }
+
+ /// <summary>
+ /// The down button mouse left button down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void DownButtonMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl = new RefireControl(this.DecrementNumber);
+ this.refireControl.Begin();
+ }
+
+ /// <summary>
+ /// The down button mouse left button up.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void DownButtonMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl.Stop();
+ }
+
+ /// <summary>
+ /// The get nearest value.
+ /// </summary>
+ /// <param name="number">
+ /// The number.
+ /// </param>
+ /// <param name="modulus">
+ /// The modulus.
+ /// </param>
+ /// <returns>
+ /// The <see cref="double"/>.
+ /// </returns>
+ private int GetNearestValue(int number, int modulus)
+ {
+ int remainder = number % modulus;
+
+ if (remainder == 0)
+ {
+ return number;
+ }
+
+ return remainder >= (modulus / 2) ? number + (modulus - remainder) : number - remainder;
+ }
+
+ /// <summary>
+ /// The increment number.
+ /// </summary>
+ private void IncrementNumber()
+ {
+ int newNumber;
+ if (this.AllowEmpty && this.Number == 0)
+ {
+ newNumber = Math.Max(this.Minimum, this.Increment);
+ }
+ else
+ {
+ newNumber = this.Number + this.Increment;
+ }
+
+ if (newNumber > this.Maximum)
+ {
+ newNumber = this.Maximum;
+ }
+
+ if (newNumber != this.Number)
+ {
+ this.Number = newNumber;
+ }
+ }
+
+ /// <summary>
+ /// The number box got focus.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxGotFocus(object sender, RoutedEventArgs e)
+ {
+ this.hasFocus = true;
+
+ if (this.AllowEmpty)
+ {
+ if (this.Number == 0)
+ {
+ this.numberBox.Text = string.Empty;
+ }
+
+ this.numberBox.Foreground = new SolidColorBrush(Colors.Black);
+ }
+ }
+
+ /// <summary>
+ /// The number box lost focus.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxLostFocus(object sender, RoutedEventArgs e)
+ {
+ this.hasFocus = false;
+
+ if (this.AllowEmpty && this.numberBox.Text == string.Empty)
+ {
+ this.Number = 0;
+ this.RefreshNumberBox();
+ return;
+ }
+
+ this.UpdateNumberBindingFromBox();
+ this.RefreshNumberBox();
+ }
+
+ /// <summary>
+ /// The number box preview key down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewKeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Key == Key.Space)
+ {
+ e.Handled = true;
+ }
+ }
+
+ /// <summary>
+ /// The number box preview mouse down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewMouseDown(object sender, MouseButtonEventArgs e)
+ {
+ if (!this.hasFocus)
+ {
+ this.lastFocusMouseDown = DateTime.Now;
+ }
+ }
+
+ /// <summary>
+ /// The number box preview mouse up.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewMouseUp(object sender, MouseButtonEventArgs e)
+ {
+ // If this mouse up is soon enough after an initial click on the box, select all.
+ if (this.SelectAllOnClick && DateTime.Now - this.lastFocusMouseDown < SelectAllThreshold)
+ {
+ this.Dispatcher.BeginInvoke(new Action(() => this.numberBox.SelectAll()));
+ }
+ }
+
+ /// <summary>
+ /// The number box preview text input.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxPreviewTextInput(object sender, TextCompositionEventArgs e)
+ {
+ if (e.Text.Any(c => !char.IsNumber(c) && c != '.' && c != ':' && (this.Minimum >= 0 || c != '-')))
+ {
+ e.Handled = true;
+ }
+ }
+
+ /// <summary>
+ /// The number box text changed.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void NumberBoxTextChanged(object sender, TextChangedEventArgs e)
+ {
+ if (this.UpdateBindingOnTextChange)
+ {
+ if (this.AllowEmpty && this.numberBox.Text == string.Empty)
+ {
+ this.Number = 0;
+ return;
+ }
+
+ this.UpdateNumberBindingFromBox();
+ }
+
+ this.RefreshNumberBoxColor();
+ }
+
+ /// <summary>
+ /// The number is valid.
+ /// </summary>
+ /// <param name="number">
+ /// The number.
+ /// </param>
+ /// <returns>
+ /// The <see cref="bool"/>.
+ /// </returns>
+ private bool NumberIsValid(double number)
+ {
+ return number >= this.Minimum && number <= this.Maximum;
+ }
+
+ /// <summary>
+ /// The refresh number box.
+ /// </summary>
+ private void RefreshNumberBox()
+ {
+ if (this.AllowEmpty && this.Number == 0)
+ {
+ this.numberBox.Text = this.hasFocus ? string.Empty : this.NoneCaption;
+
+ // this.numberBox.Foreground = new SolidColorBrush(Colors.Gray);
+ }
+ else
+ {
+ if (this.ShowTimeSpan)
+ {
+ this.numberBox.Text = TimeSpan.FromSeconds(this.Number).ToString();
+ }
+ else
+ {
+ this.numberBox.Text = this.Number.ToString(CultureInfo.InvariantCulture);
+ }
+
+ // this.numberBox.Foreground = new SolidColorBrush(Colors.Black);
+ }
+
+ this.RefreshNumberBoxColor();
+ }
+
+ /// <summary>
+ /// The refresh number box color.
+ /// </summary>
+ private void RefreshNumberBoxColor()
+ {
+ this.numberBox.Foreground = this.numberBox.Text == this.NoneCaption ? new SolidColorBrush(Colors.Gray) : new SolidColorBrush(Colors.Black);
+ }
+
+ /// <summary>
+ /// The up button mouse left button down.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UpButtonMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl = new RefireControl(this.IncrementNumber);
+ this.refireControl.Begin();
+ }
+
+ /// <summary>
+ /// The up button mouse left button up.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UpButtonMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+ {
+ this.refireControl.Stop();
+ }
+
+ /// <summary>
+ /// The update number binding from box.
+ /// </summary>
+ private void UpdateNumberBindingFromBox()
+ {
+ int newNumber;
+ TimeSpan newTimespanNumber;
+ if (int.TryParse(this.numberBox.Text, out newNumber))
+ {
+ if (this.NumberIsValid(newNumber))
+ {
+ if (this.Modulus != 0)
+ {
+ newNumber = this.GetNearestValue(newNumber, this.Modulus);
+ }
+
+ if (newNumber != this.Number)
+ {
+ // While updating the binding we don't need to react to the change.
+ this.suppressRefresh = true;
+ this.Number = newNumber;
+ this.suppressRefresh = false;
+ }
+ }
+ }
+ else if (TimeSpan.TryParse(this.numberBox.Text, out newTimespanNumber))
+ {
+ if (newTimespanNumber != TimeSpan.Zero)
+ {
+ int seconds = (int)Math.Round(newTimespanNumber.TotalSeconds, 0);
+ if (seconds != this.Number)
+ {
+ // While updating the binding we don't need to react to the change.
+ this.suppressRefresh = true;
+ this.Number = seconds;
+ this.suppressRefresh = false;
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// The user control_ loaded.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UserControl_Loaded(object sender, RoutedEventArgs e)
+ {
+ if (!this.ShowIncrementButtons)
+ {
+ this.incrementButtonsGrid.Visibility = Visibility.Collapsed;
+ }
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs b/win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs new file mode 100644 index 000000000..f44e18a3e --- /dev/null +++ b/win/CS/HandBrakeWPF/Converters/InverseBooleanConverter.cs @@ -0,0 +1,81 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="InverseBooleanConverter.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The inverse boolean converter.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Converters
+{
+ using System;
+ using System.Globalization;
+ using System.Windows.Data;
+
+ /// <summary>
+ /// The inverse boolean converter.
+ /// </summary>
+ [ValueConversion(typeof(bool), typeof(bool))]
+ public class InverseBooleanConverter : IValueConverter
+ {
+ #region Implemented Interfaces
+
+ #region IValueConverter
+
+ /// <summary>
+ /// The convert.
+ /// </summary>
+ /// <param name="value">
+ /// The value.
+ /// </param>
+ /// <param name="targetType">
+ /// The target type.
+ /// </param>
+ /// <param name="parameter">
+ /// The parameter.
+ /// </param>
+ /// <param name="culture">
+ /// The culture.
+ /// </param>
+ /// <returns>
+ /// The <see cref="object"/>.
+ /// </returns>
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (targetType != typeof(bool))
+ {
+ throw new InvalidOperationException("The target must be a boolean");
+ }
+
+ return !(bool)value;
+ }
+
+ /// <summary>
+ /// The convert back.
+ /// </summary>
+ /// <param name="value">
+ /// The value.
+ /// </param>
+ /// <param name="targetType">
+ /// The target type.
+ /// </param>
+ /// <param name="parameter">
+ /// The parameter.
+ /// </param>
+ /// <param name="culture">
+ /// The culture.
+ /// </param>
+ /// <returns>
+ /// The <see cref="object"/>.
+ /// </returns>
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotSupportedException();
+ }
+
+ #endregion
+
+ #endregion
+ }
+}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj index e11f8e8f9..c2214eee4 100644 --- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj +++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj @@ -129,6 +129,9 @@ <Compile Include="Commands\ProcessShortcutCommand.cs" />
<Compile Include="Commands\SourceMenuCommand.cs" />
<Compile Include="Commands\AdvancedEncoderOptionsCommand.cs" />
+ <Compile Include="Controls\TimeSpanBox.xaml.cs">
+ <DependentUpon>TimeSpanBox.xaml</DependentUpon>
+ </Compile>
<Compile Include="Controls\Loading.xaml.cs">
<DependentUpon>Loading.xaml</DependentUpon>
</Compile>
@@ -143,6 +146,7 @@ <Compile Include="Converters\Audio\AudioEncoderConverter.cs" />
<Compile Include="Converters\Audio\AudioQueueDisplayConverter.cs" />
<Compile Include="Converters\BooleanToHiddenVisibilityConverter.cs" />
+ <Compile Include="Converters\InverseBooleanConverter.cs" />
<Compile Include="Converters\Options\OptionsTabConverter.cs" />
<Compile Include="Converters\Options\OptionsTabNameConverter.cs" />
<Compile Include="Converters\Subtitles\SubtitlesQueueDisplayConverter.cs" />
@@ -150,6 +154,7 @@ <Compile Include="Helpers\GrayscaleImage.cs" />
<Compile Include="Helpers\GrowlCommunicator.cs" />
<Compile Include="Model\OptionsTab.cs" />
+ <Compile Include="Model\SelectionTitle.cs" />
<Compile Include="Services\DriveDetectService.cs" />
<Compile Include="Services\EncodeServiceWrapper.cs" />
<Compile Include="Services\Interfaces\IDriveDetectService.cs" />
@@ -162,6 +167,11 @@ <Compile Include="Services\NotificationService.cs" />
<Compile Include="Services\ScanServiceWrapper.cs" />
<Compile Include="Services\UpdateService.cs" />
+ <Compile Include="ViewModels\Interfaces\IQueueSelectionViewModel.cs" />
+ <Compile Include="ViewModels\QueueSelectionViewModel.cs" />
+ <Compile Include="Views\QueueSelectionView.xaml.cs">
+ <DependentUpon>QueueSelectionView.xaml</DependentUpon>
+ </Compile>
<Compile Include="Views\ShellView.xaml.cs">
<DependentUpon>ShellView.xaml</DependentUpon>
</Compile>
@@ -304,6 +314,10 @@ <AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
+ <Page Include="Controls\TimeSpanBox.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Controls\Loading.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -316,6 +330,10 @@ <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Views\QueueSelectionView.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Views\ShellView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
diff --git a/win/CS/HandBrakeWPF/Model/SelectionTitle.cs b/win/CS/HandBrakeWPF/Model/SelectionTitle.cs new file mode 100644 index 000000000..63ad47793 --- /dev/null +++ b/win/CS/HandBrakeWPF/Model/SelectionTitle.cs @@ -0,0 +1,88 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="SelectionTitle.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// TODO: Update summary.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Model
+{
+ using Caliburn.Micro;
+
+ using HandBrake.ApplicationServices.Parsing;
+
+ /// <summary>
+ /// A model for the multiple selection window for adding to the queue.
+ /// </summary>
+ public class SelectionTitle : PropertyChangedBase
+ {
+ /// <summary>
+ /// The source name.
+ /// </summary>
+ private readonly string sourceName;
+
+ /// <summary>
+ /// The is selected.
+ /// </summary>
+ private bool isSelected;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SelectionTitle"/> class.
+ /// </summary>
+ /// <param name="title">
+ /// The title.
+ /// </param>
+ /// <param name="sourceName">
+ /// The source Name.
+ /// </param>
+ public SelectionTitle(Title title, string sourceName)
+ {
+ this.sourceName = sourceName;
+ this.Title = title;
+ }
+
+ /// <summary>
+ /// Gets the source name.
+ /// </summary>
+ public string SourceName
+ {
+ get
+ {
+ return !string.IsNullOrEmpty(Title.SourceName) ? Title.SourceName : sourceName;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the end point.
+ /// </summary>
+ public int EndPoint { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether is selected.
+ /// </summary>
+ public bool IsSelected
+ {
+ get
+ {
+ return this.isSelected;
+ }
+ set
+ {
+ this.isSelected = value;
+ this.NotifyOfPropertyChange(() => this.IsSelected);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the start point.
+ /// </summary>
+ public int StartPoint { get; set; }
+
+ /// <summary>
+ /// Gets or sets the title.
+ /// </summary>
+ public Title Title { get; set; }
+ }
+}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs index 5adc38011..e2ccbcbda 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs +++ b/win/CS/HandBrakeWPF/Properties/Resources.Designer.cs @@ -216,7 +216,7 @@ namespace HandBrakeWPF.Properties { /// <summary>
/// Looks up a localized string similar to This is the distance x264 searches from its best guess at the motion of a block in order to try to find its actual motion.
- ///Doesn't apply to Diamond or Hexagon search options.
+ ///
///The default is fine for most content, but extremely high motion video, especially at HD resolutions, may benefit from higher ranges, albeit at a high speed cost..
/// </summary>
public static string Advanced_MotionEstimationRangeToolTip {
@@ -237,6 +237,19 @@ namespace HandBrakeWPF.Properties { }
/// <summary>
+ /// Looks up a localized string similar to The x264 Preset / Tune / Profile and Level options are currently in use on the Video Tab.
+ ///
+ ///To enable this tab, check the "Use Advanced Tab instead" option on the Video Tab.
+ ///
+ ///If you do not use this tab, it can be hidden from: Tools Menu > Options > Advanced..
+ /// </summary>
+ public static string Advanced_NotInUse {
+ get {
+ return ResourceManager.GetString("Advanced_NotInUse", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Psychovisual Rate Distortion means x264 tries to retain detail, for better quality to the human eye,
///as opposed to trying to maximize quality the way a computer understands it, through signal-to-noise ratios that have trouble telling apart fine detail and noise..
/// </summary>
diff --git a/win/CS/HandBrakeWPF/Properties/Resources.resx b/win/CS/HandBrakeWPF/Properties/Resources.resx index 6148d29c6..b39ace5a5 100644 --- a/win/CS/HandBrakeWPF/Properties/Resources.resx +++ b/win/CS/HandBrakeWPF/Properties/Resources.resx @@ -178,7 +178,7 @@ Transformed Exhaustive: Like exhaustive, but makes even more accurate decisions. </data>
<data name="Advanced_MotionEstimationRangeToolTip" xml:space="preserve">
<value>This is the distance x264 searches from its best guess at the motion of a block in order to try to find its actual motion.
-Doesn't apply to Diamond or Hexagon search options.
+
The default is fine for most content, but extremely high motion video, especially at HD resolutions, may benefit from higher ranges, albeit at a high speed cost.</value>
</data>
<data name="Advanced_NoDctDecimateToolTip" xml:space="preserve">
@@ -321,4 +321,11 @@ 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</value>
</data>
+ <data name="Advanced_NotInUse" xml:space="preserve">
+ <value>The x264 Preset / Tune / Profile and Level options are currently in use on the Video Tab.
+
+To enable this tab, check the "Use Advanced Tab instead" option on the Video Tab.
+
+If you do not use this tab, it can be hidden from: Tools Menu > Options > Advanced.</value>
+ </data>
</root>
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs b/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs index 5b06c97ba..97930ba4d 100644 --- a/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs +++ b/win/CS/HandBrakeWPF/Startup/CastleBootstrapper.cs @@ -78,6 +78,8 @@ namespace HandBrakeWPF.Startup this.windsorContainer.Register(Component.For<IOptionsViewModel>().ImplementedBy<OptionsViewModel>().LifeStyle.Is(LifestyleType.Singleton));
this.windsorContainer.Register(Component.For<IUpdateVersionService>().ImplementedBy<UpdateVersionService>().LifeStyle.Is(LifestyleType.Singleton));
this.windsorContainer.Register(Component.For<ITitleSpecificViewModel>().ImplementedBy<TitleSpecificViewModel>().LifeStyle.Is(LifestyleType.Singleton));
+ this.windsorContainer.Register(Component.For<IQueueSelectionViewModel>().ImplementedBy<QueueSelectionViewModel>().LifeStyle.Is(LifestyleType.Singleton));
+
// Tab Components
this.windsorContainer.Register(Component.For<IAudioViewModel>().ImplementedBy<AudioViewModel>().LifeStyle.Is(LifestyleType.Singleton));
diff --git a/win/CS/HandBrakeWPF/UserSettingConstants.cs b/win/CS/HandBrakeWPF/UserSettingConstants.cs index 01fcea409..f0414ef6b 100644 --- a/win/CS/HandBrakeWPF/UserSettingConstants.cs +++ b/win/CS/HandBrakeWPF/UserSettingConstants.cs @@ -216,6 +216,11 @@ namespace HandBrakeWPF /// </summary>
public const string ShowAdvancedTab = "ShowAdvancedTab";
+ /// <summary>
+ /// The last preview duration
+ /// </summary>
+ public const string LastPreviewDuration = "LastPreviewDuration";
+
#endregion
}
}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs index 741f31876..1c0f9de67 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AdvancedViewModel.cs @@ -172,6 +172,9 @@ namespace HandBrakeWPF.ViewModels /// <summary>
/// Initializes a new instance of the <see cref="AdvancedViewModel"/> class.
/// </summary>
+ /// <param name="advancedEncoderOptionsCommand">
+ /// The advanced Encoder Options Command.
+ /// </param>
public AdvancedViewModel(IAdvancedEncoderOptionsCommand advancedEncoderOptionsCommand)
{
this.advancedEncoderOptionsCommand = advancedEncoderOptionsCommand;
@@ -179,11 +182,34 @@ namespace HandBrakeWPF.ViewModels this.UpdateUIFromAdvancedOptions();
}
+ /// <summary>
+ /// The task object property changed.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The PropertyChangedEventArgs.
+ /// </param>
+ private void Task_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == UserSettingConstants.ShowAdvancedTab)
+ {
+ ShowX264AdvancedOptions = this.Task.ShowAdvancedTab;
+ this.NotifyOfPropertyChange(() => ShowX264AdvancedOptions);
+ }
+ }
+
#endregion
#region Properties
/// <summary>
+ /// Gets or sets a value indicating whether show x 264 advanced options.
+ /// </summary>
+ public bool ShowX264AdvancedOptions { get; set; }
+
+ /// <summary>
/// Gets or sets a value indicating whether DisplayX264Options.
/// </summary>
public bool? DisplayX264Options
@@ -195,7 +221,19 @@ namespace HandBrakeWPF.ViewModels set
{
this.displayX264Options = value;
+
+ if (this.displayX264Options == false)
+ {
+ this.ShowX264AdvancedOptions = false;
+ }
+
+ if (this.displayX264Options == true && this.Task.ShowAdvancedTab)
+ {
+ this.ShowX264AdvancedOptions = true;
+ }
+
this.NotifyOfPropertyChange(() => this.DisplayX264Options);
+ this.NotifyOfPropertyChange(() => this.ShowX264AdvancedOptions);
}
}
@@ -959,7 +997,9 @@ namespace HandBrakeWPF.ViewModels /// </param>
public void SetPreset(Preset preset, EncodeTask task)
{
+ this.Task.PropertyChanged -= this.Task_PropertyChanged;
this.Task = task;
+ this.Task.PropertyChanged += this.Task_PropertyChanged;
this.AdvancedOptionsString = preset.Task.AdvancedEncoderOptions;
}
diff --git a/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs index 69a8a5d05..4276b97a4 100644 --- a/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/ChaptersViewModel.cs @@ -274,7 +274,7 @@ namespace HandBrakeWPF.ViewModels foreach (Chapter chapter in this.SourceChapterList)
{
string chapterName = string.IsNullOrEmpty(chapter.ChapterName) ? string.Format("Chapter {0}", counter) : chapter.ChapterName;
- var marker = new ChapterMarker(chapter.ChapterNumber, chapterName);
+ var marker = new ChapterMarker(chapter.ChapterNumber, chapterName, chapter.Duration);
this.Task.ChapterNames.Add(marker);
counter += 1;
diff --git a/win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueSelectionViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueSelectionViewModel.cs new file mode 100644 index 000000000..36a64846a --- /dev/null +++ b/win/CS/HandBrakeWPF/ViewModels/Interfaces/IQueueSelectionViewModel.cs @@ -0,0 +1,40 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="IQueueSelectionViewModel.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The Queue Selection View Model Interface
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.ViewModels.Interfaces
+{
+ using System.Collections.Generic;
+ using System.ComponentModel;
+
+ using HandBrake.ApplicationServices.Parsing;
+
+ using HandBrakeWPF.Model;
+
+ /// <summary>
+ /// The Add Preset View Model
+ /// </summary>
+ public interface IQueueSelectionViewModel
+ {
+ /// <summary>
+ /// Gets the selected titles.
+ /// </summary>
+ BindingList<SelectionTitle> TitleList { get; }
+
+ /// <summary>
+ /// The setup.
+ /// </summary>
+ /// <param name="scannedSource">
+ /// The scanned source.
+ /// </param>
+ /// <param name="sourceName">
+ /// The source Name.
+ /// </param>
+ void Setup(Source scannedSource, string sourceName);
+ }
+}
diff --git a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs index ad09f3043..fe52f88ce 100644 --- a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs @@ -221,6 +221,7 @@ namespace HandBrakeWPF.ViewModels // Setup Properties
this.WindowTitle = "HandBrake";
this.CurrentTask = new EncodeTask();
+ this.CurrentTask.PropertyChanged += this.CurrentTask_PropertyChanged;
this.ScannedSource = new Source();
// Setup Events
@@ -231,6 +232,7 @@ namespace HandBrakeWPF.ViewModels this.queueProcessor.QueueCompleted += this.QueueCompleted;
this.queueProcessor.QueueChanged += this.QueueChanged;
this.queueProcessor.EncodeService.EncodeStatusChanged += this.EncodeStatusChanged;
+ this.userSettingService.SettingChanged += this.UserSettingServiceSettingChanged;
this.Presets = this.presetService.Presets;
this.CancelScanCommand = new CancelScanCommand(this.scanService);
@@ -448,6 +450,12 @@ namespace HandBrakeWPF.ViewModels {
get
{
+ // Sanity Check
+ if (ScannedSource == null || ScannedSource.ScanPath == null)
+ {
+ return string.Empty;
+ }
+
// The title that is selected has a source name. This means it's part of a batch scan.
if (selectedTitle != null && !string.IsNullOrEmpty(selectedTitle.SourceName))
{
@@ -597,7 +605,7 @@ namespace HandBrakeWPF.ViewModels set
{
this.isMkv = value;
- this.NotifyOfPropertyChange("IsMkv");
+ this.NotifyOfPropertyChange(() => this.IsMkv);
}
}
@@ -737,6 +745,7 @@ namespace HandBrakeWPF.ViewModels {
return this.CurrentTask.StartPoint;
}
+
set
{
this.CurrentTask.Angle = value;
@@ -745,6 +754,11 @@ namespace HandBrakeWPF.ViewModels }
/// <summary>
+ /// Gets or sets a value indicating whether is timespan range.
+ /// </summary>
+ public bool IsTimespanRange { get; set; }
+
+ /// <summary>
/// Gets or sets SelectedStartPoint.
/// </summary>
public int SelectedStartPoint
@@ -759,7 +773,7 @@ namespace HandBrakeWPF.ViewModels this.NotifyOfPropertyChange(() => this.SelectedStartPoint);
this.Duration = this.DurationCalculation();
- if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming))
+ if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming) && this.ScannedSource.ScanPath != null)
{
this.Destination = AutoNameHelper.AutoName(this.CurrentTask, this.SourceName);
}
@@ -781,7 +795,7 @@ namespace HandBrakeWPF.ViewModels this.NotifyOfPropertyChange(() => this.SelectedEndPoint);
this.Duration = this.DurationCalculation();
- if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming))
+ if (this.UserSettingService.GetUserSetting<bool>(UserSettingConstants.AutoNaming) && this.ScannedSource.ScanPath != null)
{
this.Destination = AutoNameHelper.AutoName(this.CurrentTask, this.SourceName);
}
@@ -805,21 +819,41 @@ namespace HandBrakeWPF.ViewModels if (value == PointToPointMode.Chapters && this.SelectedTitle != null)
{
+ if (this.selectedTitle == null)
+ {
+ return;
+ }
+
+
this.SelectedStartPoint = 1;
this.SelectedEndPoint = selectedTitle.Chapters.Last().ChapterNumber;
}
else if (value == PointToPointMode.Seconds)
{
+ if (this.selectedTitle == null)
+ {
+ return;
+ }
+
+
this.SelectedStartPoint = 0;
int timeInSeconds;
if (int.TryParse(selectedTitle.Duration.TotalSeconds.ToString(CultureInfo.InvariantCulture), out timeInSeconds))
{
this.SelectedEndPoint = timeInSeconds;
- }
+ }
+
+ this.IsTimespanRange = true;
+ this.NotifyOfPropertyChange(() => this.IsTimespanRange);
}
else
{
+ if (this.selectedTitle == null)
+ {
+ return;
+ }
+
// Note this does not account for VFR. It's only a guesstimate.
double estimatedTotalFrames = selectedTitle.Fps * selectedTitle.Duration.TotalSeconds;
@@ -829,6 +863,9 @@ namespace HandBrakeWPF.ViewModels {
this.SelectedEndPoint = totalFrames;
}
+
+ this.IsTimespanRange = false;
+ this.NotifyOfPropertyChange(() => this.IsTimespanRange);
}
}
}
@@ -927,6 +964,7 @@ namespace HandBrakeWPF.ViewModels this.queueProcessor.QueueChanged -= this.QueueChanged;
this.queueProcessor.JobProcessingStarted -= this.QueueProcessorJobProcessingStarted;
this.queueProcessor.EncodeService.EncodeStatusChanged -= this.EncodeStatusChanged;
+ this.userSettingService.SettingChanged -= this.UserSettingServiceSettingChanged;
}
#endregion
@@ -1073,6 +1111,38 @@ namespace HandBrakeWPF.ViewModels }
/// <summary>
+ /// The add selection to queue.
+ /// </summary>
+ public void AddSelectionToQueue()
+ {
+ if (this.ScannedSource == null || this.ScannedSource.Titles == null || this.ScannedSource.Titles.Count == 0)
+ {
+ this.errorService.ShowMessageBox("You must first scan a source and setup your job before adding to the queue.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ if (!AutoNameHelper.IsAutonamingEnabled())
+ {
+ this.errorService.ShowMessageBox("You must turn on automatic file naming in preferences before you can add to the queue.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ Window window = Application.Current.Windows.Cast<Window>().FirstOrDefault(x => x.GetType() == typeof(QueueSelectionViewModel));
+ IQueueSelectionViewModel viewModel = IoC.Get<IQueueSelectionViewModel>();
+
+ viewModel.Setup(this.ScannedSource, this.SourceName);
+
+ if (window != null)
+ {
+ window.Activate();
+ }
+ else
+ {
+ this.WindowManager.ShowWindow(viewModel);
+ }
+ }
+
+ /// <summary>
/// Folder Scan
/// </summary>
public void FolderScan()
@@ -1521,15 +1591,20 @@ namespace HandBrakeWPF.ViewModels this.NotifyOfPropertyChange(() => this.ScannedSource.Titles);
// Select the Users Title
- this.CurrentTask = new EncodeTask(queueEditTask);
- this.NotifyOfPropertyChange(() => this.CurrentTask);
this.SelectedTitle = this.ScannedSource.Titles.FirstOrDefault(t => t.TitleNumber == this.CurrentTask.Title);
-
- // Update the Main UI control Area (TODO)
this.CurrentTask = new EncodeTask(queueEditTask);
this.NotifyOfPropertyChange(() => this.CurrentTask);
- // Update the Tab Controls (TODO)
+ // Update the Main Window
+ this.NotifyOfPropertyChange(() => this.Destination);
+ this.NotifyOfPropertyChange(() => this.SelectedStartPoint);
+ this.NotifyOfPropertyChange(() => this.SelectedEndPoint);
+ this.NotifyOfPropertyChange(() => this.SelectedAngle);
+ this.NotifyOfPropertyChange(() => this.SelectedPointToPoint);
+ this.NotifyOfPropertyChange(() => this.SelectedOutputFormat);
+ this.NotifyOfPropertyChange(() => IsMkv);
+
+ // Update the Tab Controls
this.PictureSettingsViewModel.UpdateTask(this.CurrentTask);
this.VideoViewModel.UpdateTask(this.CurrentTask);
this.FiltersViewModel.UpdateTask(this.CurrentTask);
@@ -1538,8 +1613,23 @@ namespace HandBrakeWPF.ViewModels this.ChaptersViewModel.UpdateTask(this.CurrentTask);
this.AdvancedViewModel.UpdateTask(this.CurrentTask);
+ // Tell the Preivew Window
+ IPreviewViewModel viewModel = IoC.Get<IPreviewViewModel>();
+ viewModel.Task = this.CurrentTask;
+
// Cleanup
this.ShowStatusWindow = false;
+
+ if (this.SelectedTitle != null && !string.IsNullOrEmpty(this.SelectedTitle.SourceName))
+ {
+ this.SourceLabel = this.SelectedTitle.SourceName;
+ }
+ else
+ {
+ this.SourceLabel = this.SourceName;
+ }
+
+ this.StatusLabel = "Scan Completed";
});
}
@@ -1648,6 +1738,7 @@ namespace HandBrakeWPF.ViewModels this.ProgramStatusLabel = "A New Update is Available. Goto Tools Menu > Options to Install";
}
}
+
#endregion
#region Event Handlers
@@ -1921,6 +2012,41 @@ namespace HandBrakeWPF.ViewModels Caliburn.Micro.Execute.OnUIThread(() => this.SourceMenu = this.GenerateSourceMenu());
}
+ /// <summary>
+ /// Allows the main window to respond to setting changes.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UserSettingServiceSettingChanged(object sender, HandBrake.ApplicationServices.EventArgs.SettingChangedEventArgs e)
+ {
+ if (e.Key == UserSettingConstants.ShowAdvancedTab)
+ {
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
+
+ /// <summary>
+ /// Handle the property changed event of the encode task.
+ /// Allows the main window to respond to changes.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void CurrentTask_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == UserSettingConstants.ShowAdvancedTab)
+ {
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
+
#endregion
}
}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs index d917c20c8..7ebb88619 100644 --- a/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/PreviewViewModel.cs @@ -95,6 +95,7 @@ namespace HandBrakeWPF.ViewModels this.Duration = 30;
UseSystemDefaultPlayer = userSettingService.GetUserSetting<bool>(UserSettingConstants.DefaultPlayer);
+ this.Duration = userSettingService.GetUserSetting<int>(UserSettingConstants.LastPreviewDuration);
}
#endregion
@@ -113,7 +114,7 @@ namespace HandBrakeWPF.ViewModels {
get
{
- return new List<int> { 10, 30, 45, 60, 75, 90, 105, 120 };
+ return new List<int> { 5, 10, 30, 45, 60, 75, 90, 105, 120 };
}
}
@@ -381,6 +382,7 @@ namespace HandBrakeWPF.ViewModels this.encodeService.EncodeStatusChanged += this.encodeService_EncodeStatusChanged;
this.encodeService.Start((QueueTask)state, false);
+ this.userSettingService.SetUserSetting(UserSettingConstants.LastPreviewDuration, this.Duration);
}
#endregion
diff --git a/win/CS/HandBrakeWPF/ViewModels/QueueSelectionViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/QueueSelectionViewModel.cs new file mode 100644 index 000000000..c5b6072cc --- /dev/null +++ b/win/CS/HandBrakeWPF/ViewModels/QueueSelectionViewModel.cs @@ -0,0 +1,198 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueSelectionViewModel.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// The Queue Selection View Model
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.ViewModels
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel;
+ using System.Linq;
+
+ using HandBrake.ApplicationServices.Parsing;
+
+ using HandBrakeWPF.Model;
+ using HandBrakeWPF.Services.Interfaces;
+ using HandBrakeWPF.ViewModels.Interfaces;
+
+ /// <summary>
+ /// The Queue Selection View Model
+ /// </summary>
+ public class QueueSelectionViewModel : ViewModelBase, IQueueSelectionViewModel
+ {
+ /// <summary>
+ /// The error service.
+ /// </summary>
+ private readonly IErrorService errorService;
+
+ /// <summary>
+ /// The ordered by duration.
+ /// </summary>
+ private bool orderedByDuration;
+
+ /// <summary>
+ /// The ordered by title.
+ /// </summary>
+ private bool orderedByTitle;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="QueueSelectionViewModel"/> class.
+ /// </summary>
+ /// <param name="errorService">
+ /// The Error Service
+ /// </param>
+ public QueueSelectionViewModel(IErrorService errorService)
+ {
+ this.errorService = errorService;
+ this.Title = "Add to Queue";
+ this.TitleList = new BindingList<SelectionTitle>();
+ this.OrderedByTitle = true;
+ }
+
+ /// <summary>
+ /// Gets or sets the source.
+ /// </summary>
+ public string Source { get; set; }
+
+ /// <summary>
+ /// Gets or sets the selected titles.
+ /// </summary>
+ public BindingList<SelectionTitle> TitleList { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether ordered by title.
+ /// </summary>
+ public bool OrderedByTitle
+ {
+ get
+ {
+ return this.orderedByTitle;
+ }
+
+ set
+ {
+ this.orderedByTitle = value;
+ this.NotifyOfPropertyChange(() => OrderedByTitle);
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether ordered by duration.
+ /// </summary>
+ public bool OrderedByDuration
+ {
+ get
+ {
+ return this.orderedByDuration;
+ }
+
+ set
+ {
+ this.orderedByDuration = value;
+ this.NotifyOfPropertyChange(() => OrderedByDuration);
+ }
+ }
+
+ /// <summary>
+ /// The order by title.
+ /// </summary>
+ public void OrderByTitle()
+ {
+ TitleList = new BindingList<SelectionTitle>(TitleList.OrderBy(o => o.Title.TitleNumber).ToList());
+ this.NotifyOfPropertyChange(() => TitleList);
+ this.OrderedByTitle = true;
+ this.OrderedByDuration = false;
+ }
+
+ /// <summary>
+ /// The order by duration.
+ /// </summary>
+ public void OrderByDuration()
+ {
+ TitleList = new BindingList<SelectionTitle>(TitleList.OrderByDescending(o => o.Title.Duration).ToList());
+ this.NotifyOfPropertyChange(() => TitleList);
+ this.OrderedByTitle = false;
+ this.OrderedByDuration = true;
+ }
+
+ /// <summary>
+ /// The select all.
+ /// </summary>
+ public void SelectAll()
+ {
+ foreach (var item in TitleList)
+ {
+ item.IsSelected = true;
+ }
+ }
+
+ /// <summary>
+ /// The select all.
+ /// </summary>
+ public void UnSelectAll()
+ {
+ foreach (var item in TitleList)
+ {
+ item.IsSelected = false;
+ }
+ }
+
+ /// <summary>
+ /// Add a Preset
+ /// </summary>
+ public void Add()
+ {
+ this.Close();
+ }
+
+ /// <summary>
+ /// Cancel adding a preset
+ /// </summary>
+ public void Cancel()
+ {
+ this.TitleList.Clear();
+ this.Close();
+ }
+
+ /// <summary>
+ /// Close this window.
+ /// </summary>
+ public void Close()
+ {
+ this.TryClose();
+ }
+
+ /// <summary>
+ /// The setup.
+ /// </summary>
+ /// <param name="scannedSource">
+ /// The scanned source.
+ /// </param>
+ /// <param name="srcName">
+ /// The src Name.
+ /// </param>
+ public void Setup(Source scannedSource, string srcName)
+ {
+ this.TitleList.Clear();
+
+ if (scannedSource != null)
+ {
+
+ IEnumerable<Title> titles = orderedByTitle
+ ? scannedSource.Titles
+ : scannedSource.Titles.OrderByDescending(o => o.Duration).ToList();
+
+ foreach (Title item in titles)
+ {
+ SelectionTitle title = new SelectionTitle(item, srcName);
+ TitleList.Add(title);
+ }
+ }
+ }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs index a3998be21..4f344db08 100644 --- a/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs @@ -11,6 +11,7 @@ namespace HandBrakeWPF.ViewModels {
using System;
using System.Collections.ObjectModel;
+ using System.ComponentModel;
using System.Windows;
using Caliburn.Micro;
@@ -30,6 +31,13 @@ namespace HandBrakeWPF.ViewModels /// </summary>
public class QueueViewModel : ViewModelBase, IQueueViewModel
{
+ /*
+
+ * TODO FIX THE DRAP/DROP ADORNER!
+ */
+
+
+
#region Constants and Fields
/// <summary>
@@ -152,17 +160,6 @@ namespace HandBrakeWPF.ViewModels }
/// <summary>
- /// Gets QueueJobs.
- /// </summary>
- public ObservableCollection<QueueTask> QueueJobs
- {
- get
- {
- return this.queueProcessor.Queue;
- }
- }
-
- /// <summary>
/// Gets or sets WhenDoneAction.
/// </summary>
public string WhenDoneAction
@@ -178,6 +175,17 @@ namespace HandBrakeWPF.ViewModels }
}
+ /// <summary>
+ /// Gets the queue tasks.
+ /// </summary>
+ public BindingList<QueueTask> QueueTasks
+ {
+ get
+ {
+ return this.queueProcessor.Queue;
+ }
+ }
+
#endregion
#region Public Methods
@@ -270,8 +278,6 @@ namespace HandBrakeWPF.ViewModels {
this.queueProcessor.Remove(task);
}
-
- this.JobsPending = string.Format("{0} jobs pending", this.queueProcessor.Count);
}
/// <summary>
@@ -408,16 +414,19 @@ namespace HandBrakeWPF.ViewModels private void EncodeService_EncodeStatusChanged(
object sender, EncodeProgressEventArgs e)
{
- this.JobStatus =
- string.Format(
- "Encoding: Pass {0} of {1}, {2:00.00}%, FPS: {3:000.0}, Avg FPS: {4:000.0}, Time Remaining: {5}, Elapsed: {6:hh\\:mm\\:ss}",
- e.Task,
- e.TaskCount,
- e.PercentComplete,
- e.CurrentFrameRate,
- e.AverageFrameRate,
- e.EstimatedTimeLeft,
- e.ElapsedTime);
+ if (this.IsEncoding)
+ {
+ this.JobStatus =
+ string.Format(
+ "Encoding: Pass {0} of {1}, {2:00.00}%, FPS: {3:000.0}, Avg FPS: {4:000.0}, Time Remaining: {5}, Elapsed: {6:hh\\:mm\\:ss}",
+ e.Task,
+ e.TaskCount,
+ e.PercentComplete,
+ e.CurrentFrameRate,
+ e.AverageFrameRate,
+ e.EstimatedTimeLeft,
+ e.ElapsedTime);
+ }
}
/// <summary>
diff --git a/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs index 6164e3603..a59105084 100644 --- a/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/VideoViewModel.cs @@ -27,6 +27,7 @@ namespace HandBrakeWPF.ViewModels using HandBrake.Interop.Model.Encoding.x264;
using HandBrakeWPF.Commands.Interfaces;
+ using HandBrakeWPF.Model;
using HandBrakeWPF.ViewModels.Interfaces;
/// <summary>
@@ -95,6 +96,11 @@ namespace HandBrakeWPF.ViewModels /// </summary>
private bool canClear;
+ /// <summary>
+ /// The use advanced tab.
+ /// </summary>
+ private bool useAdvancedTab;
+
#endregion
#region Constructors and Destructors
@@ -122,6 +128,8 @@ namespace HandBrakeWPF.ViewModels H264Profiles = EnumHelper<x264Profile>.GetEnumList();
X264Tunes = EnumHelper<x264Tune>.GetEnumList().Where(t => t != x264Tune.Fastdecode);
this.H264Levels = Levels;
+
+ this.userSettingService.SettingChanged += this.UserSettingServiceSettingChanged;
}
#endregion
@@ -134,6 +142,44 @@ namespace HandBrakeWPF.ViewModels public EncodeTask Task { get; set; }
/// <summary>
+ /// Gets a value indicating whether show advanced tab.
+ /// </summary>
+ public bool ShowAdvancedTab
+ {
+ get
+ {
+ bool showAdvTabSetting =
+ this.userSettingService.GetUserSetting<bool>(UserSettingConstants.ShowAdvancedTab);
+ if (!showAdvTabSetting)
+ {
+ this.UseAdvancedTab = false;
+ }
+
+ return showAdvTabSetting;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether use video tab.
+ /// </summary>
+ public bool UseAdvancedTab
+ {
+ get
+ {
+ return this.useAdvancedTab;
+ }
+ set
+ {
+ if (!object.Equals(value, this.useAdvancedTab))
+ {
+ this.useAdvancedTab = value;
+ this.Task.ShowAdvancedTab = value;
+ this.NotifyOfPropertyChange(() => this.UseAdvancedTab);
+ }
+ }
+ }
+
+ /// <summary>
/// Gets Framerates.
/// </summary>
public IEnumerable<string> Framerates
@@ -335,6 +381,9 @@ namespace HandBrakeWPF.ViewModels }
}
+ /// <summary>
+ /// Gets the rfqp.
+ /// </summary>
public string Rfqp
{
get
@@ -729,6 +778,8 @@ namespace HandBrakeWPF.ViewModels this.H264Level = preset.Task.VideoEncoder == VideoEncoder.X264 ? preset.Task.H264Level : "Auto";
this.FastDecode = preset.Task.VideoEncoder == VideoEncoder.X264 && preset.Task.FastDecode;
this.ExtraArguments = preset.Task.ExtraAdvancedArguments;
+
+ this.UseAdvancedTab = !string.IsNullOrEmpty(preset.Task.AdvancedEncoderOptions) && this.ShowAdvancedTab;
}
}
@@ -866,5 +917,22 @@ namespace HandBrakeWPF.ViewModels // TODO figure out what is wrong with this??
return HandBrakeUtils.CreateX264OptionsString(preset, tunes, this.ExtraArguments, profile, this.H264Level, width, height);
}
+
+ /// <summary>
+ /// The user setting service_ setting changed.
+ /// </summary>
+ /// <param name="sender">
+ /// The sender.
+ /// </param>
+ /// <param name="e">
+ /// The e.
+ /// </param>
+ private void UserSettingServiceSettingChanged(object sender, HandBrake.ApplicationServices.EventArgs.SettingChangedEventArgs e)
+ {
+ if (e.Key == UserSettingConstants.ShowAdvancedTab)
+ {
+ this.NotifyOfPropertyChange(() => this.ShowAdvancedTab);
+ }
+ }
}
}
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs b/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs index 91968fdc0..d3485d2c0 100644 --- a/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs +++ b/win/CS/HandBrakeWPF/Views/AddPresetView.xaml.cs @@ -3,7 +3,7 @@ // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
// </copyright>
// <summary>
-// Interaction logic for VideoView.xaml
+// Interaction logic for AddPresetView.xaml
// </summary>
// --------------------------------------------------------------------------------------------------------------------
@@ -12,7 +12,7 @@ namespace HandBrakeWPF.Views using System.Windows;
/// <summary>
- /// Interaction logic for VideoView.xaml
+ /// Interaction logic for AddPresetView.xaml
/// </summary>
public partial class AddPresetView : Window
{
diff --git a/win/CS/HandBrakeWPF/Views/AdvancedView.xaml b/win/CS/HandBrakeWPF/Views/AdvancedView.xaml index 785102cd2..b0b7698d2 100644 --- a/win/CS/HandBrakeWPF/Views/AdvancedView.xaml +++ b/win/CS/HandBrakeWPF/Views/AdvancedView.xaml @@ -42,7 +42,7 @@ VerticalAlignment="Center"
FontWeight="Bold"
Text="x264 Encoder Options:"
- Visibility="{Binding DisplayX264Options, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
+ Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
/>
<TextBox Grid.Row="3"
@@ -54,7 +54,7 @@ Text="{Binding AdvancedOptionsString,
UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap"
- Visibility="{Binding DisplayX264Options, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
+ Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}"
/>
<StackPanel Orientation="Vertical">
@@ -80,7 +80,11 @@ </Grid>
<!-- X264 -->
- <Grid Visibility="{Binding DisplayX264Options, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}">
+ <TextBlock Text="{x:Static Properties:Resources.Advanced_NotInUse}"
+ TextWrapping="Wrap" Width="480" Margin="0, 100, 0, 0" FontSize="12"
+ Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=true}" />
+
+ <Grid Visibility="{Binding ShowX264AdvancedOptions, Converter={StaticResource BooleanVisibilityConverter}, ConverterParameter=false}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
diff --git a/win/CS/HandBrakeWPF/Views/AudioView.xaml b/win/CS/HandBrakeWPF/Views/AudioView.xaml index af5b81514..c63346642 100644 --- a/win/CS/HandBrakeWPF/Views/AudioView.xaml +++ b/win/CS/HandBrakeWPF/Views/AudioView.xaml @@ -9,6 +9,7 @@ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:NumericUpDown="clr-namespace:EagleBoost.Wpf.Presentation.Controls.NumericUpDown;assembly=EagleBoost.Wpf.Presentation"
+ xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
d:DesignHeight="170"
d:DesignWidth="616"
mc:Ignorable="d">
@@ -265,6 +266,7 @@ Visibility="{Binding IsPassthru,
Converter={StaticResource boolToVisConverter},
ConverterParameter=true}" />
+
<NumericUpDown:NumericUpDown Name="drcNumericCtl"
Grid.Row="1"
Grid.Column="3"
diff --git a/win/CS/HandBrakeWPF/Views/ChaptersView.xaml b/win/CS/HandBrakeWPF/Views/ChaptersView.xaml index c6cefb35e..a5fa6a6da 100644 --- a/win/CS/HandBrakeWPF/Views/ChaptersView.xaml +++ b/win/CS/HandBrakeWPF/Views/ChaptersView.xaml @@ -38,7 +38,8 @@ </ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
- <DataGridTextColumn Header="Chapter Number" Width="150" Binding="{Binding ChapterNumber}" IsReadOnly="True" />
+ <DataGridTextColumn Header="Chapter Number" Width="120" Binding="{Binding ChapterNumber}" IsReadOnly="True" />
+ <DataGridTextColumn Header="Duration" Width="100" Binding="{Binding Duration}" IsReadOnly="True" />
<DataGridTextColumn Header="Chapter Name" Width="*" Binding="{Binding ChapterName}" IsReadOnly="False" />
</DataGrid.Columns>
</DataGrid>
diff --git a/win/CS/HandBrakeWPF/Views/MainView.xaml b/win/CS/HandBrakeWPF/Views/MainView.xaml index 0f85a2b73..1a020b603 100644 --- a/win/CS/HandBrakeWPF/Views/MainView.xaml +++ b/win/CS/HandBrakeWPF/Views/MainView.xaml @@ -269,6 +269,7 @@ </StackPanel>
</MenuItem.Header>
<MenuItem Header="Add All" Micro:Message.Attach="[Event Click] = [Action AddAllToQueue]" />
+ <!--<MenuItem Header="Add Selection" Micro:Message.Attach="[Event Click] = [Action AddSelectionToQueue]" />-->
</MenuItem>
</Menu>
@@ -370,14 +371,13 @@ Converter={StaticResource boolToVisConverter},
ConverterParameter=true}"
/>
- <TextBox Name="StartPointText"
- MinWidth="60"
- Margin="8,0,0,0"
- Text="{Binding SelectedStartPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
- Visibility="{Binding ShowTextEntryForPointToPointMode,
- Converter={StaticResource boolToVisConverter},
- ConverterParameter=false}"
- />
+ <Controls:TimeSpanBox Number="{Binding SelectedStartPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+ Minimum="0" AllowEmpty="False" ShowTimeSpan="{Binding IsTimespanRange}"
+ MinWidth="80" Margin="8,0,0,0" Visibility="{Binding ShowTextEntryForPointToPointMode,
+ Converter={StaticResource boolToVisConverter},
+ ConverterParameter=false}"
+ />
+
<Label Margin="8,0,0,0" Content="through" />
<ComboBox Name="EndPoint"
MinWidth="60"
@@ -388,14 +388,13 @@ Converter={StaticResource boolToVisConverter},
ConverterParameter=true}"
/>
- <TextBox Name="EndPointText"
- MinWidth="60"
- Margin="8,0,0,0"
- Text="{Binding SelectedEndPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
- Visibility="{Binding ShowTextEntryForPointToPointMode,
- Converter={StaticResource boolToVisConverter},
- ConverterParameter=false}"
- />
+ <Controls:TimeSpanBox Number="{Binding SelectedEndPoint, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+ Minimum="0" AllowEmpty="False" ShowTimeSpan="{Binding IsTimespanRange}"
+ MinWidth="80" Margin="8,0,0,0" Visibility="{Binding ShowTextEntryForPointToPointMode,
+ Converter={StaticResource boolToVisConverter},
+ ConverterParameter=false}"
+ />
+
<Label Margin="8,0,0,0" Content="Duration" />
<Label Margin="8,0,0,0" Content="{Binding Duration}" />
</StackPanel>
diff --git a/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml new file mode 100644 index 000000000..b46b07ff5 --- /dev/null +++ b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml @@ -0,0 +1,140 @@ +<Window x:Class="HandBrakeWPF.Views.QueueSelectionView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:cal="http://www.caliburnproject.org"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ Title="{Binding Title}"
+ Width="450"
+ MaxHeight="450"
+ SizeToContent="Height"
+ WindowStartupLocation="CenterScreen"
+ TextOptions.TextFormattingMode="Display"
+ mc:Ignorable="d">
+
+ <Window.Resources>
+
+ <Style x:Key="LongToolTipHolder" TargetType="FrameworkElement">
+ <Setter Property="ToolTipService.ShowDuration" Value="20000" />
+ <Setter Property="Margin" Value="0,2,0,2" />
+ </Style>
+ </Window.Resources>
+
+ <Grid HorizontalAlignment="Stretch"
+ VerticalAlignment="Stretch"
+ Background="#FFF1F0EF">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="*" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ </Grid.RowDefinitions>
+
+ <!-- Header -->
+ <StackPanel Grid.Row="0"
+ Height="30"
+ Margin="0,0,0,10"
+ Background="White"
+ Orientation="Horizontal">
+ <Image Width="24"
+ Height="24"
+ Margin="10,0,5,0"
+ VerticalAlignment="Center"
+ Source="Images/AddToQueue_small.png" />
+ <StackPanel VerticalAlignment="Center" Orientation="Vertical">
+ <TextBlock FontWeight="Bold" Text="Queue Multiple Items" />
+ </StackPanel>
+ </StackPanel>
+
+ <!-- Text -->
+ <StackPanel Orientation="Vertical" Grid.Row="1" Margin="10,10,10,0">
+ <TextBlock Text="Select multiple titles to add: " />
+ </StackPanel>
+
+ <!-- Selection -->
+ <ListBox Grid.Row="2"
+ Margin="10,10,10,10"
+ VerticalAlignment="Stretch"
+ Background="LightGray"
+ ItemsSource="{Binding TitleList}"
+ SelectionMode="Single">
+ <ListBox.ItemContainerStyle>
+ <Style TargetType="ListBoxItem">
+ <Setter Property="HorizontalContentAlignment" Value="Stretch" />
+ <Setter Property="Background" Value="WhiteSmoke" />
+ <Setter Property="Margin" Value="0,0,0,1" />
+ </Style>
+ </ListBox.ItemContainerStyle>
+
+ <ListBox.ContextMenu>
+ <ContextMenu>
+ <MenuItem Header="Select All" cal:Message.Attach="[Event Click] = [Action SelectAll]" />
+ <MenuItem Header="Select All" cal:Message.Attach="[Event Click] = [Action UnSelectAll]" />
+ <Separator />
+ <MenuItem Header="Order by Title" IsChecked="{Binding OrderedByTitle}" cal:Message.Attach="[Event Click] = [Action OrderByTitle]" />
+ <MenuItem Header="Order by Duration" IsChecked="{Binding OrderedByDuration}" cal:Message.Attach="[Event Click] = [Action OrderByDuration]" />
+ </ContextMenu>
+ </ListBox.ContextMenu>
+
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid HorizontalAlignment="Stretch" MinHeight="28">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="*" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+
+ <CheckBox IsChecked="{Binding IsSelected}" Grid.RowSpan="2" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
+
+ <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" Margin="10,0,0,0" >
+ <TextBlock Text="Title:" Margin="0,0,5,0" FontWeight="Bold" />
+ <TextBlock Text="{Binding Title}" Margin="5,0,5,0" />
+ </StackPanel>
+
+ <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" Margin="10,0,0,0" >
+ <TextBlock Text="Source:" Margin="0,0,5,0" FontWeight="Bold" />
+ <TextBlock Text="{Binding SourceName}" Margin="5,0,5,0" />
+ </StackPanel>
+ </Grid>
+
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+
+ <!-- Checlist -->
+ <StackPanel Orientation="Vertical" Grid.Row="3" Margin="10,10,10,0">
+ <TextBlock Text="Checklist " />
+ </StackPanel>
+
+ <!-- Controls -->
+ <Grid Grid.Row="4"
+ Margin="0,20,0,0"
+ Background="LightGray">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*" />
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+
+ <Button Grid.Column="1"
+ Margin="0,5,10,5"
+ cal:Message.Attach="[Event Click] = [Action Cancel]"
+ Content="Cancel"
+ IsCancel="True"
+ Padding="8,2" />
+ <Button Grid.Column="2"
+ Margin="0,5,10,5"
+ cal:Message.Attach="[Event Click] = [Action Add]"
+ Content="Add"
+ IsDefault="True"
+ Padding="8,2" />
+ </Grid>
+
+ </Grid>
+</Window>
diff --git a/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml.cs b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml.cs new file mode 100644 index 000000000..553c7201f --- /dev/null +++ b/win/CS/HandBrakeWPF/Views/QueueSelectionView.xaml.cs @@ -0,0 +1,27 @@ +// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="QueueSelectionView.xaml.cs" company="HandBrake Project (http://handbrake.fr)">
+// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
+// </copyright>
+// <summary>
+// Interaction logic for QueueSelectionView.xaml
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Views
+{
+ using System.Windows;
+
+ /// <summary>
+ /// Interaction logic for QueueSelectionView.xaml
+ /// </summary>
+ public partial class QueueSelectionView : Window
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="QueueSelectionView"/> class.
+ /// </summary>
+ public QueueSelectionView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/win/CS/HandBrakeWPF/Views/QueueView.xaml b/win/CS/HandBrakeWPF/Views/QueueView.xaml index 5384948b3..394eb35e4 100644 --- a/win/CS/HandBrakeWPF/Views/QueueView.xaml +++ b/win/CS/HandBrakeWPF/Views/QueueView.xaml @@ -137,15 +137,14 @@ <TextBlock Text="{Binding JobsPending}" />
<TextBlock Text="{Binding JobStatus}" />
</StackPanel>
-
+
<ListBox Grid.Row="2"
Margin="10,0,10,10"
Background="LightGray"
dd:DragDrop.DropHandler="{Binding}"
dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True"
- ItemsSource="{Binding QueueJobs}"
- SelectedItem="{Binding SelectedJob}"
+ ItemsSource="{Binding QueueTasks, Mode=OneWay}"
SelectionMode="Extended">
<ListBox.ContextMenu>
@@ -263,16 +262,16 @@ <Grid.RowDefinitions>
<RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
- <Image Width="20" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2"
- Height="20" VerticalAlignment="Center" Margin="0,0,5,0"
+ <Image Width="20" Grid.Row="0" Grid.Column="0"
+ Height="20" VerticalAlignment="Center" Margin="0,5,0,0"
Source="Images/Refresh.ico"
ToolTip="Reset job status to Waiting."
Visibility="{Binding Status,
@@ -288,7 +287,7 @@ <Image Width="20" Grid.Row="0" Grid.Column="1"
Height="20"
- Margin="0,5,0,0"
+ Margin="10,5,0,0"
Source="Images/Options24.png"
ToolTip="Edit this Job">
<i:Interaction.Triggers>
@@ -300,9 +299,9 @@ </i:Interaction.Triggers>
</Image>
- <Image Width="20" Grid.Row="1" Grid.Column="1"
+ <Image Width="20" Grid.Row="0" Grid.Column="2"
Height="20"
- Margin="0,5,0,0"
+ Margin="10,5,0,0"
Source="Images/delete.png"
ToolTip="Remove this Job">
<i:Interaction.Triggers>
@@ -317,11 +316,7 @@ </Grid>
-
-
</Grid>
-
-
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
diff --git a/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml b/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml index 362734851..a99989189 100644 --- a/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml +++ b/win/CS/HandBrakeWPF/Views/SubtitlesView.xaml @@ -8,6 +8,7 @@ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:NumericUpDown="clr-namespace:EagleBoost.Wpf.Presentation.Controls.NumericUpDown;assembly=EagleBoost.Wpf.Presentation"
+ xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
d:DesignHeight="153"
d:DesignWidth="319"
mc:Ignorable="d">
@@ -229,15 +230,11 @@ VerticalAlignment="Center"
FontWeight="Bold"
Text="Offset (ms)" />
- <NumericUpDown:NumericUpDown Grid.Row="1"
- Grid.Column="5"
- Width="65"
- Margin="5,0,5,0"
- HorizontalAlignment="Left"
- IsEnabled="{Binding IsSrtSubtitle}"
- Minimum="-10800"
- Value="{Binding SrtOffset, Mode=TwoWay}" />
+ <controls:NumberBox Grid.Row="1" Grid.Column="5" Width="65" Height="24" Margin="5,0,5,0"
+ Minimum="-900000" Maximum="900000" IsEnabled="{Binding IsSrtSubtitle}"
+ Number="{Binding SrtOffset, Mode=TwoWay}" />
+
</Grid>
<!-- Delete -->
diff --git a/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml b/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml index 573236170..00add413e 100644 --- a/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml +++ b/win/CS/HandBrakeWPF/Views/TitleSpecificView.xaml @@ -5,6 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:NumericUpDown="clr-namespace:EagleBoost.Wpf.Presentation.Controls.NumericUpDown;assembly=EagleBoost.Wpf.Presentation"
+ xmlns:controls="clr-namespace:HandBrakeWPF.Controls"
Title="Scan Title"
Width="250"
Background="#FFF1F0EF"
@@ -39,12 +40,9 @@ Margin="10,10,0,10"
Orientation="Horizontal">
<TextBlock Text="Choose a title to scan:" />
- <NumericUpDown:NumericUpDown Width="60"
- Margin="10,0,0,0"
- Maximum="1000"
- Minimum="0"
- Value="{Binding SelectedTitle,
- Mode=TwoWay}" />
+
+ <controls:NumberBox Width="60" Height="24" Margin="10,0,0,0"
+ Minimum="0" Maximum="1000" Number="{Binding SelectedTitle, Mode=TwoWay}" />
</StackPanel>
<StackPanel Grid.Row="2"
diff --git a/win/CS/HandBrakeWPF/Views/VideoView.xaml b/win/CS/HandBrakeWPF/Views/VideoView.xaml index c9b125abe..4cc1b6b9e 100644 --- a/win/CS/HandBrakeWPF/Views/VideoView.xaml +++ b/win/CS/HandBrakeWPF/Views/VideoView.xaml @@ -11,8 +11,9 @@ <Converters:BooleanConverter x:Key="boolConverter" />
<Converters:BooleanToVisibilityConverter x:Key="boolToVisConverter" />
<Converters:EnumComboConverter x:Key="enumComboConverter" />
+ <Converters:InverseBooleanConverter x:Key="inverseConverter" />
<Video:VideoEncoderConverter x:Key="videoEncoderConverter" />
-
+
<Style x:Key="LongToolTipHolder" TargetType="FrameworkElement">
<Setter Property="ToolTipService.ShowDuration" Value="20000" />
</Style>
@@ -109,63 +110,79 @@ <Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
-
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
-
- <TextBlock Text="Optimise Video:" Margin="0,0,0,8" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" FontWeight="Bold" VerticalAlignment="Center" />
-
- <!-- Row 1 -->
- <TextBlock Text="x264 Preset:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
- <StackPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal">
- <Slider Minimum="0" Maximum="9" Width="150" Value="{Binding X264PresetValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}"
+
+ <TextBlock Text="Optimise Video:" Margin="0,0,0,8" Grid.Row="0" Grid.ColumnSpan="2" FontWeight="Bold" VerticalAlignment="Center" />
+
+ <CheckBox Content="Use Advanced Tab instead" Grid.Row="1" IsChecked="{Binding UseAdvancedTab}"
+ Visibility="{Binding ShowAdvancedTab, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" />
+
+ <Grid Grid.Row="2" Margin="0,5,0,0" IsEnabled="{Binding UseAdvancedTab, Converter={StaticResource inverseConverter}}"
+ Visibility="{Binding DisplayX264Options, Converter={StaticResource boolToVisConverter}}">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+
+
+
+ <!-- Row 1 -->
+ <TextBlock Text="x264 Preset:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
+ <StackPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal">
+ <Slider Minimum="0" Maximum="9" Width="150" Value="{Binding X264PresetValue, Mode=Default, UpdateSourceTrigger=PropertyChanged}"
IsSnapToTickEnabled="True" TickFrequency="1" TickPlacement="BottomRight" ToolTip="{x:Static Properties:Resources.Video_x264Preset}"
Style="{StaticResource LongToolTipHolder}" />
- <TextBlock Text="{Binding X264Preset, Converter={StaticResource enumComboConverter}}" Margin="5,0,0,0" />
- </StackPanel>
+ <TextBlock Text="{Binding X264Preset, Converter={StaticResource enumComboConverter}}" Margin="5,0,0,0" />
+ </StackPanel>
- <TextBlock Text="x264 Tune:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" Margin="0,10,0,0" />
- <ComboBox Width="100" Grid.Row="2" Grid.Column="1" Margin="5,10,5,0" Height="22"
+ <TextBlock Text="x264 Tune:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" Margin="0,10,0,0" />
+ <ComboBox Width="100" Grid.Row="2" Grid.Column="1" Margin="5,10,5,0" Height="22"
ItemsSource="{Binding X264Tunes, Converter={StaticResource enumComboConverter}}"
SelectedItem="{Binding X264Tune, Converter={StaticResource enumComboConverter}}"
ToolTip="{x:Static Properties:Resources.Video_x264Tune}"
Style="{StaticResource LongToolTipHolder}" />
- <CheckBox IsChecked="{Binding FastDecode}" Content="Fast Decode" Grid.Row="2" Grid.Column="2" Margin="10,10,10,0" VerticalAlignment="Center"
+ <CheckBox IsChecked="{Binding FastDecode}" Content="Fast Decode" Grid.Row="2" Grid.Column="2" Margin="10,10,10,0" VerticalAlignment="Center"
ToolTip="{x:Static Properties:Resources.Video_x264FastDecode}"/>
-
- <!-- Row 2-->
- <TextBlock Text="H.264 Profile:" Grid.Row="3" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" />
- <ComboBox Width="100" Grid.Row="3" Grid.Column="1" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
+
+ <!-- Row 2-->
+ <TextBlock Text="H.264 Profile:" Grid.Row="3" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" />
+ <ComboBox Width="100" Grid.Row="3" Grid.Column="1" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
ItemsSource="{Binding H264Profiles, Converter={StaticResource enumComboConverter}}"
SelectedItem="{Binding H264Profile, Converter={StaticResource enumComboConverter}}"
Style="{StaticResource LongToolTipHolder}"
ToolTip="{x:Static Properties:Resources.Video_x264Profile}" />
- <TextBlock Text="H.264 Level:" Grid.Row="3" Grid.Column="2" Margin="10,10,0,0" VerticalAlignment="Center" />
- <ComboBox Width="100" Grid.Row="3" Grid.Column="3" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
+ <TextBlock Text="H.264 Level:" Grid.Row="3" Grid.Column="2" Margin="10,10,0,0" VerticalAlignment="Center" />
+ <ComboBox Width="100" Grid.Row="3" Grid.Column="3" Margin="5,10,5,0" Height="22" VerticalAlignment="Center"
ItemsSource="{Binding H264Levels}"
SelectedItem="{Binding H264Level}"
Style="{StaticResource LongToolTipHolder}"
ToolTip="{x:Static Properties:Resources.Video_x264Level}"/>
-
- <!-- Row 3 -->
- <TextBlock Text="Extra Options:" Grid.Row="4" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" />
- <TextBox Text="{Binding ExtraArguments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+
+ <!-- Row 3 -->
+ <TextBlock Text="Extra Options:" Grid.Row="4" Grid.Column="0" Margin="0,10,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" />
+ <TextBox Text="{Binding ExtraArguments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Height="30" MaxLines="2" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Margin="5,10,0,0" VerticalAlignment="Center"
ToolTip="{Binding FullOptionsTooltip}"/>
-
-
+
+
+ </Grid>
</Grid>
+
+
</Grid>
</Grid>
diff --git a/win/CS/HandBrakeWPF/defaultsettings.xml b/win/CS/HandBrakeWPF/defaultsettings.xml index 73d5742fc..c1a645647 100644 --- a/win/CS/HandBrakeWPF/defaultsettings.xml +++ b/win/CS/HandBrakeWPF/defaultsettings.xml @@ -481,4 +481,12 @@ <anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d4p1:type="q1:boolean" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">true</anyType>
</value>
</item>
+ <item>
+ <key>
+ <string>LastPreviewDuration</string>
+ </key>
+ <value>
+ <anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d4p1:type="q1:int" xmlns:d4p1="http://www.w3.org/2001/XMLSchema-instance">30</anyType>
+ </value>
+ </item>
</dictionary>
\ No newline at end of file diff --git a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML index 24df8ef25..37d4ff9b9 100644 --- a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML +++ b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.XML @@ -4,6 +4,35 @@ <name>GongSolutions.Wpf.DragDrop</name>
</assembly>
<members>
+ <member name="T:GongSolutions.Wpf.DragDrop.IDropTarget">
+ <summary>
+ Interface implemented by Drop Handlers.
+ </summary>
+ </member>
+ <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.DragOver(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <summary>
+ Updates the current drag state.
+ </summary>
+
+ <param name="dropInfo">
+ Information about the drag.
+ </param>
+
+ <remarks>
+ To allow a drop at the current drag position, the <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Effects"/> property on
+ <paramref name="dropInfo"/> should be set to a value other than <see cref="F:System.Windows.DragDropEffects.None"/>
+ and <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Data"/> should be set to a non-null value.
+ </remarks>
+ </member>
+ <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.Drop(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <summary>
+ Performs a drop.
+ </summary>
+
+ <param name="dropInfo">
+ Information about the drop.
+ </param>
+ </member>
<member name="P:GongSolutions.Wpf.DragDrop.IDropInfo.Data">
<summary>
Gets the drag data.
@@ -222,29 +251,28 @@ Gets th orientation of the current drop target.
</summary>
</member>
- <member name="T:GongSolutions.Wpf.DragDrop.IDropTarget">
+ <member name="T:GongSolutions.Wpf.DragDrop.IDragSource">
<summary>
- Interface implemented by Drop Handlers.
+ Interface implemented by Drag Handlers.
</summary>
</member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.DragOver(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.StartDrag(GongSolutions.Wpf.DragDrop.IDragInfo)">
<summary>
- Updates the current drag state.
+ Queries whether a drag can be started.
</summary>
- <param name="dropInfo">
- Information about the drag.
+ <param name="dragInfo">
+ Information about the drag.
</param>
<remarks>
- To allow a drop at the current drag position, the <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Effects"/> property on
- <paramref name="dropInfo"/> should be set to a value other than <see cref="F:System.Windows.DragDropEffects.None"/>
- and <see cref="P:GongSolutions.Wpf.DragDrop.DropInfo.Data"/> should be set to a non-null value.
+ To allow a drag to be started, the <see cref="P:GongSolutions.Wpf.DragDrop.DragInfo.Effects"/> property on <paramref name="dragInfo"/>
+ should be set to a value other than <see cref="!:DragDropEffects.None"/>.
</remarks>
</member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDropTarget.Drop(GongSolutions.Wpf.DragDrop.IDropInfo)">
+ <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.Dropped(GongSolutions.Wpf.DragDrop.IDropInfo)">
<summary>
- Performs a drop.
+ Notifies the drag handler that a drop has occurred.
</summary>
<param name="dropInfo">
@@ -419,33 +447,5 @@ will hold a ListBoxItem.
</remarks>
</member>
- <member name="T:GongSolutions.Wpf.DragDrop.IDragSource">
- <summary>
- Interface implemented by Drag Handlers.
- </summary>
- </member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.StartDrag(GongSolutions.Wpf.DragDrop.IDragInfo)">
- <summary>
- Queries whether a drag can be started.
- </summary>
-
- <param name="dragInfo">
- Information about the drag.
- </param>
-
- <remarks>
- To allow a drag to be started, the <see cref="P:GongSolutions.Wpf.DragDrop.DragInfo.Effects"/> property on <paramref name="dragInfo"/>
- should be set to a value other than <see cref="!:DragDropEffects.None"/>.
- </remarks>
- </member>
- <member name="M:GongSolutions.Wpf.DragDrop.IDragSource.Dropped(GongSolutions.Wpf.DragDrop.IDropInfo)">
- <summary>
- Notifies the drag handler that a drop has occurred.
- </summary>
-
- <param name="dropInfo">
- Information about the drop.
- </param>
- </member>
</members>
</doc>
diff --git a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll Binary files differindex 47a513ca6..5617d91b9 100644 --- a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll +++ b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.dll diff --git a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb Binary files differindex 90b441736..ce74a4036 100644 --- a/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb +++ b/win/CS/libraries/WPFDragDrop/GongSolutions.Wpf.DragDrop.pdb diff --git a/win/CS/libraries/WPFDragDrop/SourceModifications.zip b/win/CS/libraries/WPFDragDrop/SourceModifications.zip Binary files differindex a08196a6e..9d050d455 100644 --- a/win/CS/libraries/WPFDragDrop/SourceModifications.zip +++ b/win/CS/libraries/WPFDragDrop/SourceModifications.zip |