Commit 94d20dd3 authored by Felix Paul Kühne's avatar Felix Paul Kühne

* ALL: basic skeleton for a streaming-wizard (refs #13)

    
    done:
    - all items are included with complete l10n support
    - checkboxes and select-file-buttons behave as they are supposed to
    
    todo:
    - implementation of the logic, i.e. handling of the collected values, respective manipulation of the GUI, start of the stream
    - move some arrays to an external header file
    - some GUI things (e.g. radio buttons on page 2, etc. - see FIXMEs)
    - implementation of some help-dialogues (it might be necessary to create a re-usable window in the nib for that, since NSAlert is Panther and Tiger only)
    - l10n string fixes (both in OSX and WX)
    => most of the work still needs to be done
parent 362e6fdf
......@@ -159,6 +159,9 @@ EXTRA_DIST += \
extras/MacOSX/Resources/English.lproj/Preferences.nib/classes.nib \
extras/MacOSX/Resources/English.lproj/Preferences.nib/info.nib \
extras/MacOSX/Resources/English.lproj/Preferences.nib/keyedobjects.nib \
extras/MacOSX/Resources/English.lproj/Wizard.nib/classes.nib \
extras/MacOSX/Resources/English.lproj/Wizard.nib/info.nib \
extras/MacOSX/Resources/English.lproj/Wizard.nib/keyedobjects.nib \
extras/MacOSX/Resources/English.lproj/InfoPlist.strings \
extras/MacOSX/Resources/a52.icns \
extras/MacOSX/Resources/aac.icns \
......@@ -532,6 +535,8 @@ VLC-release.app: vlc
vout.h \
voutqt.m \
voutgl.m \
wizard.h \
wizard.m \
vout.m; do \
cp "$(srcdir)/modules/gui/macosx/$$i" \
$(top_builddir)/tmp/modules/gui/macosx; \
......@@ -629,6 +634,8 @@ VLC.app: vlc
vout.h \
voutqt.m \
voutgl.m \
wizard.h \
wizard.m \
vout.m; do \
cp "$(srcdir)/modules/gui/macosx/$$i" \
$(top_builddir)/tmp/modules/gui/macosx; \
......
......@@ -113,6 +113,7 @@
openRecentItem = id;
openWebsite = id;
reportABug = id;
showWizard = id;
timesliderUpdate = id;
togglePlaylist = id;
viewAbout = id;
......
......@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>101 241 496 270 0 0 800 578 </string>
<string>91 42 496 270 0 0 800 578 </string>
<key>IBEditorPositions</key>
<dict>
<key>1617</key>
......@@ -11,7 +11,7 @@
<key>2197</key>
<string>214 442 596 144 0 0 1024 746 </string>
<key>29</key>
<string>72 702 419 44 0 0 1024 746 </string>
<string>205 505 419 44 0 0 800 578 </string>
<key>915</key>
<string>730 416 178 211 0 0 1024 746 </string>
</dict>
......@@ -21,6 +21,7 @@
<array/>
<key>IBOpenObjects</key>
<array>
<integer>29</integer>
<integer>2029</integer>
<integer>21</integer>
</array>
......
{
IBClasses = (
{CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
{
ACTIONS = {
cancelRun = id;
nextTab = id;
prevTab = id;
"t1_mrInfo_streaming" = id;
"t1_mrInfo_transcode" = id;
"t2_addNewStream" = id;
"t2_chooseStreamOrPlst" = id;
"t2_enableExtract" = id;
"t3_addressEntered" = id;
"t4_AudCdcChanged" = id;
"t4_VidCdcChanged" = id;
"t4_enblAudTrnscd" = id;
"t4_enblVidTrnscd" = id;
"t6_enblSapAnnce" = id;
"t6_mrInfo_sap" = id;
"t6_mrInfo_ttl" = id;
"t7_selectTrnscdDestFile" = id;
};
CLASS = VLCWizard;
LANGUAGE = ObjC;
OUTLETS = {
"o_btn_backward" = id;
"o_btn_cancel" = id;
"o_btn_forward" = id;
"o_t1_btn_mrInfo_strmg" = id;
"o_t1_btn_mrInfo_trnscd" = id;
"o_t1_rdo_streaming" = id;
"o_t1_rdo_transcode" = id;
"o_t1_txt_notice" = id;
"o_t1_txt_text" = id;
"o_t1_txt_title" = id;
"o_t2_box_prtExtrct" = id;
"o_t2_btn_chooseFile" = id;
"o_t2_ckb_enblPartExtrct" = id;
"o_t2_fld_pathToNewStrm" = id;
"o_t2_fld_prtExtrctFrom" = id;
"o_t2_fld_prtExtrctTo" = id;
"o_t2_rdo_exstPlstItm" = id;
"o_t2_rdo_newStrm" = id;
"o_t2_tbl_plst" = id;
"o_t2_text" = id;
"o_t2_title" = id;
"o_t2_txt_prtExtrctFrom" = id;
"o_t2_txt_prtExtrctTo" = id;
"o_t3_box_dest" = id;
"o_t3_box_strmgMthd" = id;
"o_t3_fld_address" = id;
"o_t3_matrix_stmgMhd" = id;
"o_t3_txt_destInfo" = id;
"o_t3_txt_text" = id;
"o_t3_txt_title" = id;
"o_t4_box_audio" = id;
"o_t4_box_video" = id;
"o_t4_ckb_audio" = id;
"o_t4_ckb_video" = id;
"o_t4_pop_audioBitrate" = id;
"o_t4_pop_audioCodec" = id;
"o_t4_pop_videoBitrate" = id;
"o_t4_pop_videoCodec" = id;
"o_t4_text" = id;
"o_t4_title" = id;
"o_t4_txt_bitrateAudio" = id;
"o_t4_txt_bitrateVideo" = id;
"o_t4_txt_codecAudio" = id;
"o_t4_txt_codecVideo" = id;
"o_t4_txt_hintAudio" = id;
"o_t4_txt_hintVideo" = id;
"o_t5_matrix_encap" = id;
"o_t5_text" = id;
"o_t5_title" = id;
"o_t6_btn_mrInfo_sap" = id;
"o_t6_btn_mrInfo_ttl" = id;
"o_t6_ckb_sap" = id;
"o_t6_fld_sap" = id;
"o_t6_fld_ttl" = id;
"o_t6_text" = id;
"o_t6_title" = id;
"o_t6_txt_ttl" = id;
"o_t7_btn_chooseFile" = id;
"o_t7_fld_filePath" = id;
"o_t7_text" = id;
"o_t7_title" = id;
"o_t7_txt_saveFileTo" = id;
"o_tab_pageHolder" = id;
"o_wizard_window" = id;
};
SUPERCLASS = NSObject;
}
);
IBVersion = 1;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>62 303 356 241 0 0 800 578 </string>
<key>IBFramework Version</key>
<string>364.0</string>
<key>IBLockedObjects</key>
<array>
<integer>6</integer>
<integer>14</integer>
<integer>10</integer>
</array>
<key>IBOpenObjects</key>
<array>
<integer>6</integer>
</array>
<key>IBSystem Version</key>
<string>7W98</string>
</dict>
</plist>
......@@ -812,6 +812,7 @@
DCA00AA9075F948800E6BF46,
DCF358BB077F10BA007DB450,
DCA693C30789DF8700139EC6,
DCFCCDB9085CE18F001E36AF,
);
isa = PBXResourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
......@@ -892,6 +893,8 @@
8ED6C28803E2EB1C0059A3A7,
8E9CA1A506D7DEE800B7186C,
8E9CA1A606D7DEE800B7186C,
DC769AB8085DF0DB001A838D,
DC769AB7085DF0DB001A838D,
);
isa = PBXGroup;
name = Classes;
......@@ -2154,6 +2157,24 @@
//DC2
//DC3
//DC4
DC769AB7085DF0DB001A838D = {
fileEncoding = 5;
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.objc;
name = wizard.m;
path = "/Users/felix/Desktop/Programming/VideoLAN/vlc-trunk/modules/gui/macosx/wizard.m";
refType = 0;
sourceTree = "<absolute>";
};
DC769AB8085DF0DB001A838D = {
fileEncoding = 5;
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = wizard.h;
path = "/Users/felix/Desktop/Programming/VideoLAN/vlc-trunk/modules/gui/macosx/wizard.h";
refType = 0;
sourceTree = "<absolute>";
};
DCA00AA7075F948800E6BF46 = {
children = (
DCA00AA8075F948800E6BF46,
......@@ -2238,12 +2259,37 @@
F74F13EA02C2A79C01EE194C,
DCF358B9077F10BA007DB450,
DCA693C10789DF8700139EC6,
DCFCCDB7085CE18F001E36AF,
);
isa = PBXGroup;
name = nibs;
refType = 4;
sourceTree = "<group>";
};
DCFCCDB7085CE18F001E36AF = {
children = (
DCFCCDB8085CE18F001E36AF,
);
isa = PBXVariantGroup;
name = Wizard.nib;
path = "";
refType = 4;
sourceTree = "<group>";
};
DCFCCDB8085CE18F001E36AF = {
isa = PBXFileReference;
lastKnownFileType = wrapper.nib;
name = English;
path = Resources/English.lproj/Wizard.nib;
refType = 4;
sourceTree = "<group>";
};
DCFCCDB9085CE18F001E36AF = {
fileRef = DCFCCDB7085CE18F001E36AF;
isa = PBXBuildFile;
settings = {
};
};
//DC0
//DC1
//DC2
......
......@@ -28,5 +28,7 @@ SOURCES_macosx = \
voutqt.m \
voutgl.m \
vout.h \
wizard.h \
wizard.m \
$(NULL)
......@@ -90,7 +90,9 @@ struct intf_sys_t
id o_prefs; /* VLCPrefs */
id o_about; /* VLAboutBox */
id o_open; /* VLCOpen */
id o_wizard; /* VLCWizard */
BOOL nib_open_loaded; /* reference to the open-nib */
BOOL nib_wizard_loaded; /* reference to the wizard-nib */
IBOutlet id o_window; /* main window */
IBOutlet id o_playlist_view;/* playlist view */
......@@ -154,6 +156,7 @@ struct intf_sys_t
IBOutlet id o_mi_open_net;
IBOutlet id o_mi_open_recent;
IBOutlet id o_mi_open_recent_cm;
IBOutlet id o_mi_open_wizard;
IBOutlet id o_mu_edit;
IBOutlet id o_mi_cut;
......@@ -286,6 +289,8 @@ struct intf_sys_t
- (IBAction)intfOpenDisc:(id)sender;
- (IBAction)intfOpenNet:(id)sender;
- (IBAction)showWizard:(id)sender;
- (IBAction)viewAbout:(id)sender;
- (IBAction)viewPreferences:(id)sender;
- (IBAction)closeError:(id)sender;
......
......@@ -38,6 +38,7 @@
#include "controls.h"
#include "about.h"
#include "open.h"
#include "wizard.h"
/*****************************************************************************
* Local prototypes.
......@@ -296,6 +297,7 @@ static VLCMain *_o_sharedMainInstance = nil;
o_about = [[VLAboutBox alloc] init];
o_prefs = nil;
o_open = [[VLCOpen alloc] init];
o_wizard = [[VLCWizard alloc] init];
i_lastShownVolume = -1;
return _o_sharedMainInstance;
......@@ -459,6 +461,7 @@ static VLCMain *_o_sharedMainInstance = nil;
[o_mi_open_net setTitle: _NS("Open Network...")];
[o_mi_open_recent setTitle: _NS("Open Recent")];
[o_mi_open_recent_cm setTitle: _NS("Clear Menu")];
[o_mi_open_wizard setTitle: _NS("Wizard...")];
[o_mu_edit setTitle: _NS("Edit")];
[o_mi_cut setTitle: _NS("Cut")];
......@@ -1421,6 +1424,18 @@ static VLCMain *_o_sharedMainInstance = nil;
}
}
- (IBAction)showWizard:(id)sender
{
if (!nib_wizard_loaded)
{
nib_wizard_loaded = [NSBundle loadNibNamed:@"Wizard" owner:self];
[o_wizard initStrings];
[o_wizard showWizard];
} else {
[o_wizard showWizard];
}
}
- (IBAction)viewAbout:(id)sender
{
[o_about showPanel];
......@@ -1557,12 +1572,13 @@ static VLCMain *_o_sharedMainInstance = nil;
else
{
o_rect.size.height = 500;
if ( o_rect.size.width == [o_window minSize].width )
{
o_rect.size.width = 500;
}
}
if ( o_rect.size.width == [o_window minSize].width )
{
o_rect.size.width = 500;
}
o_rect.size.height = (o_size_with_playlist.height > 200) ?
o_size_with_playlist.height : 500;
o_rect.origin.x = [o_window frame].origin.x;
......@@ -1574,6 +1590,7 @@ static VLCMain *_o_sharedMainInstance = nil;
{
/* make small */
o_rect.size.height = [o_window minSize].height;
o_rect.size.width = [o_window minSize].width;
o_rect.origin.x = [o_window frame].origin.x;
/* Calculate the position of the lower right corner after resize */
o_rect.origin.y = [o_window frame].origin.y +
......
/*****************************************************************************
* wizard.h: MacOS X Streaming Wizard
*****************************************************************************
* Copyright (C) 2005 VideoLAN
* $Id$
*
* Authors: Felix Khne <fkuehne@users.sf.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* VLCWizard
*****************************************************************************/
#import <Cocoa/Cocoa.h>
@interface VLCWizard : NSObject
{
IBOutlet id o_btn_backward;
IBOutlet id o_btn_cancel;
IBOutlet id o_btn_forward;
IBOutlet id o_t1_btn_mrInfo_strmg;
IBOutlet id o_t1_btn_mrInfo_trnscd;
IBOutlet id o_t1_rdo_streaming;
IBOutlet id o_t1_rdo_transcode;
IBOutlet id o_t1_txt_notice;
IBOutlet id o_t1_txt_text;
IBOutlet id o_t1_txt_title;
IBOutlet id o_t2_box_prtExtrct;
IBOutlet id o_t2_ckb_enblPartExtrct;
IBOutlet id o_t2_btn_chooseFile;
IBOutlet id o_t2_fld_pathToNewStrm;
IBOutlet id o_t2_fld_prtExtrctFrom;
IBOutlet id o_t2_fld_prtExtrctTo;
IBOutlet id o_t2_rdo_exstPlstItm;
IBOutlet id o_t2_rdo_newStrm;
IBOutlet id o_t2_tbl_plst;
IBOutlet id o_t2_text;
IBOutlet id o_t2_title;
IBOutlet id o_t2_txt_prtExtrctFrom;
IBOutlet id o_t2_txt_prtExtrctTo;
IBOutlet id o_t3_box_dest;
IBOutlet id o_t3_box_strmgMthd;
IBOutlet id o_t3_fld_address;
IBOutlet id o_t3_matrix_stmgMhd;
IBOutlet id o_t3_txt_destInfo;
IBOutlet id o_t3_txt_text;
IBOutlet id o_t3_txt_title;
IBOutlet id o_t4_box_audio;
IBOutlet id o_t4_box_video;
IBOutlet id o_t4_ckb_audio;
IBOutlet id o_t4_ckb_video;
IBOutlet id o_t4_pop_audioBitrate;
IBOutlet id o_t4_pop_audioCodec;
IBOutlet id o_t4_pop_videoBitrate;
IBOutlet id o_t4_pop_videoCodec;
IBOutlet id o_t4_text;
IBOutlet id o_t4_title;
IBOutlet id o_t4_txt_audioBitrate;
IBOutlet id o_t4_txt_videoBitrate;
IBOutlet id o_t4_txt_audioCodec;
IBOutlet id o_t4_txt_videoCodec;
IBOutlet id o_t4_txt_hintAudio;
IBOutlet id o_t4_txt_hintVideo;
IBOutlet id o_t5_matrix_encap;
IBOutlet id o_t5_text;
IBOutlet id o_t5_title;
IBOutlet id o_t6_ckb_sap;
IBOutlet id o_t6_fld_sap;
IBOutlet id o_t6_fld_ttl;
IBOutlet id o_t6_text;
IBOutlet id o_t6_title;
IBOutlet id o_t6_txt_ttl;
IBOutlet id o_t6_btn_mrInfo_ttl;
IBOutlet id o_t6_btn_mrInfo_sap;
IBOutlet id o_t7_btn_chooseFile;
IBOutlet id o_t7_fld_filePath;
IBOutlet id o_t7_text;
IBOutlet id o_t7_title;
IBOutlet id o_t7_txt_saveFileTo;
IBOutlet id o_tab_pageHolder;
IBOutlet id o_wizard_window;
}
- (IBAction)cancelRun:(id)sender;
- (IBAction)nextTab:(id)sender;
- (IBAction)prevTab:(id)sender;
- (IBAction)t1_mrInfo_streaming:(id)sender;
- (IBAction)t1_mrInfo_transcode:(id)sender;
- (IBAction)t2_addNewStream:(id)sender;
- (IBAction)t2_chooseStreamOrPlst:(id)sender;
- (IBAction)t2_enableExtract:(id)sender;
- (IBAction)t3_addressEntered:(id)sender;
- (IBAction)t4_AudCdcChanged:(id)sender;
- (IBAction)t4_enblAudTrnscd:(id)sender;
- (IBAction)t4_enblVidTrnscd:(id)sender;
- (IBAction)t4_VidCdcChanged:(id)sender;
- (IBAction)t6_enblSapAnnce:(id)sender;
- (IBAction)t6_mrInfo_ttl:(id)sender;
- (IBAction)t6_mrInfo_sap:(id)sender;
- (IBAction)t7_selectTrnscdDestFile:(id)sender;
+ (VLCWizard *)sharedInstance;
- (void)showWizard;
@end
/*****************************************************************************
* wizard.h: MacOS X Streaming Wizard
*****************************************************************************
* Copyright (C) 2005 VideoLAN
* $Id$
*
* Authors: Felix Khne <fkuehne@users.sf.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Note: this code is based upon ../wxwindows/wizard.cpp,
* written by Clment Stenac.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#import "wizard.h"
#import "intf.h"
/*****************************************************************************
* VLCWizard implementation
*****************************************************************************/
@implementation VLCWizard
static VLCWizard *_o_sharedInstance = nil;
+ (VLCWizard *)sharedInstance
{
return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
}
- (id)init
{
if (_o_sharedInstance) {
[self dealloc];
} else {
_o_sharedInstance = [super init];
}
return _o_sharedInstance;
}
- (void)awakeFromNib
{
/* some minor cleanup */
[o_t2_tbl_plst setEnabled:NO];
/* FIXME: make the both arrays global */
/* add audio-codecs for transcoding */
NSArray * audioBitratesArray;
audioBitratesArray = [NSArray arrayWithObjects: @"512", @"256", @"192", @"128", @"64", @"32", @"16", nil ];
[o_t4_pop_audioBitrate removeAllItems];
[o_t4_pop_audioBitrate addItemsWithTitles: audioBitratesArray];
[o_t4_pop_audioBitrate selectItemWithTitle: @"192"];
/* add video-codecs for transcoding */
NSArray * videoBitratesArray;
videoBitratesArray = [NSArray arrayWithObjects: @"3072", @"2048", @"1024", @"768", @"512", @"256", @"192", @"128", @"64", @"32", @"16", nil ];
[o_t4_pop_videoBitrate removeAllItems];
[o_t4_pop_videoBitrate addItemsWithTitles: videoBitratesArray];
[o_t4_pop_videoBitrate selectItemWithTitle: @"1024"];
/* FIXME: fill the codec-popups as well */
}
- (void)showWizard
{
/* just present the window to the user */
/* we might need a method to reset the window first */
[o_tab_pageHolder selectFirstTabViewItem:self];
[o_wizard_window center];
[o_wizard_window displayIfNeeded];
[o_wizard_window makeKeyAndOrderFront:nil];
}
- (void)initStrings
{
/* localise all strings to the users lang */
/* method is called from intf.m (in method openWizard) */
/* general items */
[o_btn_backward setTitle: _NS("< Back")];
[o_btn_cancel setTitle: _NS("Cancel")];
[o_btn_forward setTitle: _NS("Next >")];
[o_wizard_window setTitle: _NS("Streaming/Transcoding Wizard")];
/* page one ("Hello") */
[o_t1_txt_title setStringValue: _NS("Streaming/Transcoding Wizard")];
[o_t1_txt_text setStringValue: _NS("This wizard helps you to stream, transcode or save a stream")];
[o_t1_btn_mrInfo_strmg setTitle: _NS("More Info")];
[o_t1_btn_mrInfo_trnscd setTitle: _NS("More Info")];
[o_t1_txt_notice setStringValue: _NS("This wizard only gives access to a small subset of VLC's streaming and transcoding capabilities. Use the Open and Stream Output dialogs to get all of them")];
[o_t1_rdo_streaming setTitle: _NS("Stream to network")];
[o_t1_rdo_transcode setTitle: _NS("Transcode/Save to file")];
/* page two ("Input") */
[o_t2_title setStringValue: _NS("Choose input")];
[o_t2_text setStringValue: _NS("Choose here your input stream")];
[o_t2_rdo_newStrm setTitle: _NS("Select a stream")];
[o_t2_rdo_exstPlstItm setTitle: _NS("Existing playlist item")];
[o_t2_btn_chooseFile setTitle: _NS("Choose...")];
[[[o_t2_tbl_plst tableColumnWithIdentifier:@"name"] headerCell] setStringValue: _NS("Name")];
[o_t2_box_prtExtrct setTitle: _NS("Partial Extract")];
[o_t2_ckb_enblPartExtrct setTitle: _NS("Enable")];
[o_t2_txt_prtExtrctFrom setStringValue: _NS("From")];
[o_t2_txt_prtExtrctTo setStringValue: _NS("To")];
/* page three ("Streaming 1") */
[o_t3_txt_title setStringValue: _NS("Streaming")];
[o_t3_txt_text setStringValue: _NS("In this page, you will select how your input stream will be sent.")];
[o_t3_box_dest setTitle: _NS("Destination")];
[o_t3_box_strmgMthd setTitle: _NS("Streaming method")];
[o_t3_txt_destInfo setStringValue: _NS("Enter the address of the computer to stream to")];
[[o_t3_matrix_stmgMhd cellAtRow:1 column:0] setTitle: _NS("UDP Unicast")];
[[o_t3_matrix_stmgMhd cellAtRow:1 column:1] setTitle: _NS("UDP Multicast")];
/* page four ("Transcode 1") */
[o_t4_title setStringValue: _NS("Transcode")];
[o_t4_text setStringValue: _NS("If you want to change the compression format of the audio or video tracks, fill in this page. (If you only want to change the container format, proceed to next page).")];
[o_t4_box_audio setTitle: _NS("Audio")];
[o_t4_box_video setTitle: _NS("Video")];
[o_t4_ckb_audio setTitle: _NS("Transcode audio")];
[o_t4_ckb_video setTitle: _NS("Transcode video")];
[o_t4_txt_videoBitrate setStringValue: _NS("Bitrate (kb/s)")];
[o_t4_txt_videoCodec setStringValue: _NS("Codec")];
[o_t4_txt_hintAudio setStringValue: _NS("If your stream has audio and you want to " \
"transcode it, enable this")];
[o_t4_txt_hintVideo setStringValue: _NS("If your stream has video and you want to " \
"transcode it, enable this")];
/* page five ("Encap") */
[o_t5_title setStringValue: _NS("Encapsulation format")];
[o_t5_text setStringValue: _NS("In this page, you will select how the stream will be "\
"encapsulated. Depending on the choices you made, all "\
"formats won't be available.")];
/* page six ("Streaming 2") */