summaryrefslogtreecommitdiffstats
path: root/beos
diff options
context:
space:
mode:
Diffstat (limited to 'beos')
-rw-r--r--beos/HBApp.cpp62
-rw-r--r--beos/HBApp.h26
-rw-r--r--beos/HBWindow.cpp283
-rw-r--r--beos/HBWindow.h41
-rw-r--r--beos/MainWindow.cpp986
-rw-r--r--beos/MainWindow.h121
-rw-r--r--beos/PicWindow.cpp369
-rw-r--r--beos/PicWindow.h54
-rw-r--r--beos/QueueWindow.cpp132
-rw-r--r--beos/QueueWindow.h38
-rw-r--r--beos/ScanWindow.cpp320
-rw-r--r--beos/ScanWindow.h56
-rw-r--r--beos/Stepper.cpp130
-rw-r--r--beos/Stepper.h31
-rw-r--r--beos/liblayout/HGroup.h40
-rw-r--r--beos/liblayout/LayeredGroup.h37
-rw-r--r--beos/liblayout/MApplication.h29
-rw-r--r--beos/liblayout/MBViewWrapper.h30
-rw-r--r--beos/liblayout/MBorder.h68
-rw-r--r--beos/liblayout/MButton.h53
-rw-r--r--beos/liblayout/MCheckBox.h33
-rw-r--r--beos/liblayout/MDividable.h35
-rw-r--r--beos/liblayout/MDragBar.h38
-rw-r--r--beos/liblayout/MEject.h23
-rw-r--r--beos/liblayout/MFFWD.h24
-rw-r--r--beos/liblayout/MGroup.h31
-rw-r--r--beos/liblayout/MListView.h30
-rw-r--r--beos/liblayout/MMenuBar.h33
-rw-r--r--beos/liblayout/MOutlineListView.h32
-rw-r--r--beos/liblayout/MPictureButton.h55
-rw-r--r--beos/liblayout/MPlayBW.h23
-rw-r--r--beos/liblayout/MPlayFW.h22
-rw-r--r--beos/liblayout/MPopup.h45
-rw-r--r--beos/liblayout/MProgressBar.h58
-rw-r--r--beos/liblayout/MRadioGroup.h46
-rw-r--r--beos/liblayout/MRew.h22
-rw-r--r--beos/liblayout/MScrollView.h39
-rw-r--r--beos/liblayout/MSlider.h30
-rw-r--r--beos/liblayout/MSplitter.h38
-rw-r--r--beos/liblayout/MStop.h22
-rw-r--r--beos/liblayout/MStringView.h25
-rw-r--r--beos/liblayout/MTabView.h33
-rw-r--r--beos/liblayout/MTextControl.h36
-rw-r--r--beos/liblayout/MTextView.h31
-rw-r--r--beos/liblayout/MVolume.h48
-rw-r--r--beos/liblayout/MWindow.h62
-rw-r--r--beos/liblayout/PropGadget.h75
-rw-r--r--beos/liblayout/Space.h22
-rw-r--r--beos/liblayout/SpinButton.h78
-rw-r--r--beos/liblayout/TabGroup.h46
-rw-r--r--beos/liblayout/VGroup.h41
-rw-r--r--beos/liblayout/layout-all.h35
-rw-r--r--beos/liblayout/layout.h168
53 files changed, 2312 insertions, 1973 deletions
diff --git a/beos/HBApp.cpp b/beos/HBApp.cpp
index add6259f2..702c74d94 100644
--- a/beos/HBApp.cpp
+++ b/beos/HBApp.cpp
@@ -1,5 +1,8 @@
#include "HBApp.h"
-#include "HBWindow.h"
+#include "MainWindow.h"
+#include "ScanWindow.h"
+
+#include "hb.h"
int main()
{
@@ -10,9 +13,18 @@ int main()
}
HBApp::HBApp()
- : MApplication( "application/x-vnd.titer-handbrake" )
+ : BApplication( "application/x-vnd.titer-handbrake" )
{
- fWindow = new HBWindow();
+ fHandle = hb_init( HB_DEBUG_ALL, 0 );
+
+ fMainWin = new MainWindow( fHandle );
+ fScanWin = new ScanWindow( fHandle );
+ fScanWin->AddToSubset( fMainWin );
+
+ fMainWin->Show();
+ fScanWin->Show();
+
+ SetPulseRate( 200000 ); /* 0.2 second */
}
void HBApp::MessageReceived( BMessage * message )
@@ -20,7 +32,7 @@ void HBApp::MessageReceived( BMessage * message )
switch( message->what )
{
default:
- MApplication::MessageReceived( message );
+ BApplication::MessageReceived( message );
break;
}
}
@@ -29,3 +41,45 @@ void HBApp::RefsReceived( BMessage * message )
{
}
+void HBApp::Pulse()
+{
+ hb_state_t s;
+ hb_get_state( fHandle, &s );
+
+ switch( s.state )
+ {
+ case HB_STATE_IDLE:
+ break;
+
+ case HB_STATE_SCANNING:
+ fScanWin->Update( &s );
+ break;
+
+ case HB_STATE_SCANDONE:
+ if( hb_list_count( hb_get_titles( fHandle ) ) )
+ {
+ /* Success */
+ fScanWin->Hide();
+ fMainWin->Update( &s );
+ }
+ else
+ {
+ /* Invalid volume */
+ fScanWin->Update( &s );
+ }
+ break;
+
+ case HB_STATE_WORKING:
+ case HB_STATE_PAUSED:
+ case HB_STATE_WORKDONE:
+ fMainWin->Update( &s );
+ break;
+ }
+}
+
+bool HBApp::QuitRequested()
+{
+ hb_close( &fHandle );
+ return BApplication::QuitRequested();
+}
+
diff --git a/beos/HBApp.h b/beos/HBApp.h
index 75f3fc173..042a791b9 100644
--- a/beos/HBApp.h
+++ b/beos/HBApp.h
@@ -1,19 +1,27 @@
-#ifndef HB_HB_APP_H
-#define HB_HB_APP_H
+#ifndef HB_APP_H
+#define HB_APP_H
-#include "layout-all.h"
+#include <Application.h>
-class HBWindow;
+#include "hb.h"
-class HBApp : public MApplication
+class MainWindow;
+class ScanWindow;
+
+class HBApp : public BApplication
{
public:
- HBApp();
- void MessageReceived( BMessage * message );
- void RefsReceived( BMessage * message );
+ HBApp();
+ void MessageReceived( BMessage * message );
+ void RefsReceived( BMessage * message );
+ void Pulse();
+ bool QuitRequested();
private:
- HBWindow * fWindow;
+ MainWindow * fMainWin;
+ ScanWindow * fScanWin;
+
+ hb_handle_t * fHandle;
};
#endif
diff --git a/beos/HBWindow.cpp b/beos/HBWindow.cpp
deleted file mode 100644
index 4bb51d61f..000000000
--- a/beos/HBWindow.cpp
+++ /dev/null
@@ -1,283 +0,0 @@
-#include "HBWindow.h"
-
-#include <MenuItem.h>
-#include <Screen.h>
-
-#define SCAN_OPEN 'scop'
-#define RIP_RIP 'riri'
-
-static void _Scanning( void * data, int title, int titleCount )
-{
- ((HBWindow*)data)->Scanning( title, titleCount );
-}
-static void _ScanDone( void * data, HBList * titleList )
-{
- ((HBWindow*)data)->ScanDone( titleList );
-}
-static void _Encoding( void * data, float position, int pass,
- int passCount, float frameRate,
- float avgFrameRate, int remainingTime )
-{
- ((HBWindow*)data)->Encoding( position, pass, passCount, frameRate,
- avgFrameRate, remainingTime );
-}
-static void _RipDone( void * data, int result )
-{
- ((HBWindow*)data)->RipDone( result );
-}
-
-HBWindow::HBWindow()
- : MWindow( BRect( 0,0,10,10 ), "HandBrake " HB_VERSION,
- B_TITLED_WINDOW, 0 )
-{
- /* Init libhb */
- HBCallbacks callbacks;
- callbacks.data = this;
- callbacks.scanning = _Scanning;
- callbacks.scanDone = _ScanDone;
- callbacks.encoding = _Encoding;
- callbacks.ripDone = _RipDone;
-
- fHandle = HBInit( 1, 0 );
- HBSetCallbacks( fHandle, callbacks );
-
- fScanView = new HGroup(
- new Space( minimax( 10,-1,10,-1 ) ),
- new VGroup(
- new Space( minimax( -1,10,-1,10 ) ),
- new MStringView( "Welcome to HandBrake. Select a DVD to open:" ),
- new Space( minimax( -1,5,-1,5 ) ),
- new HGroup(
- fScanRadio = new MRadioGroup( "Detected volume:",
- "DVD Folder:", 0 ),
- new VGroup(
- fScanDetectedPopup = new MPopup( NULL,
- "/Bulk/ANGEL_SEASON2_DISC6", 0 ),
- fScanFolderControl = new MTextControl( NULL, NULL ),
- 0 ),
- 0 ),
- fScanBrowseButton = new MButton( "Browse", 12 ),
- fScanStatusString = new MStringView( "" ),
- fScanProgress = new MProgressBar( this ),
- fScanOpenButton = new MButton( "Open",
- new BMessage( SCAN_OPEN ) ),
- new Space( minimax( -1,10,-1,10000 ) ),
- 0 ),
- new Space( minimax( 10,-1,10,-1 ) ),
- 0 );
-
- fScanDetectedPopup->Menu()->ItemAt(0)->SetMarked(true);
- fScanProgress->ct_mpm = minimax( 0,12,10000,12 );
-
- fRipView = new HGroup(
- new Space( minimax( 10,-1,10,-1 ) ),
- new VGroup(
- new Space( minimax( -1,10,-1,10 ) ),
- new MBorder(
- M_LABELED_BORDER, 15, "General",
- new VGroup(
- fRipTitlePopup = new MPopup( "DVD title:", "dummy", 0 ),
- new MPopup( "Output format:",
- "MP4 file / MPEG-4 video / AAC audio",
- "OGM file / MPEG-4 video / Vorbis audio",
- "AVI file / MPEG-4 video / MP3 audio",
- "AVI file / H264 video / MP3 audio", 0 ),
- new MTextControl( "File:", "/boot/home/Desktop/Movie.mp4" ),
- new MButton( "Browse" ),
- 0 )
- ),
- new MBorder(
- M_LABELED_BORDER, 15, "Video",
- new VGroup(
- new MPopup( "MPEG-4 encoder:", "FFmpeg", "XviD", 0 ),
- new HGroup(
- new MStringView( "Bitrate:" ),
- new MRadioGroup( "Custom (kbps)", "Target size (MB)", 0 ),
- new VGroup(
- new MTextControl( NULL, NULL ),
- new MTextControl( NULL, NULL ),
- 0 ),
- 0 ),
- new MSplitter(),
- new HGroup(
- new MCheckBox( "2-pass encoding" ),
- new MButton( "Crop & Scale..." ),
- 0 ),
- 0 )
- ),
- new MBorder(
- M_LABELED_BORDER, 15, "Audio",
- new VGroup(
- fRipLanguage1Popup = new MPopup( "Language 1:",
- "dummy", 0 ),
- fRipLanguage2Popup = new MPopup( "Language 2 (optional):",
- "dummy", 0 ),
- fRipBitratePopup = new MPopup( "Bitrate (kbps):", "32",
- "64", "96", "128", "160", "192", "224", "256", "288",
- "320", 0 ),
- 0 )
- ),
- new MProgressBar( this ),
- new HGroup(
- new MButton( "Pause" ),
- new MButton( "Rip!", new BMessage( RIP_RIP ) ),
- 0 ),
- new Space( minimax( -1,10,-1,10 ) ),
- 0 ),
- new Space( minimax( 10,-1,10,-1 ) ),
- 0 );
-
- fRipBitratePopup->Menu()->ItemAt(3)->SetMarked( true );
-
- fLayers = new LayeredGroup( fScanView, fRipView, 0 );
- AddChild( dynamic_cast<BView*>(fLayers) );
-
- /* Center the window */
- BScreen screen;
- MoveTo( ( screen.Frame().Width() ) / 2,
- ( screen.Frame().Height() ) / 2 );
-
- Show();
-}
-
-bool HBWindow::QuitRequested()
-{
- HBClose( &fHandle );
- be_app->PostMessage( B_QUIT_REQUESTED );
- return true;
-}
-
-void HBWindow::MessageReceived( BMessage * message )
-{
- switch( message->what )
- {
- case SCAN_OPEN:
- Lock();
- /* That's ugly, but there doesn't seem to be another way */
- ((BRadioButton*)fScanRadio->ChildAt(0))->SetEnabled( false );
- ((BRadioButton*)fScanRadio->ChildAt(1))->SetEnabled( false );
- fScanDetectedPopup->SetEnabled( false );
- fScanFolderControl->SetEnabled( false );
- fScanBrowseButton->SetEnabled( false );
- fScanOpenButton->SetEnabled( false );
- fScanStatusString->SetText( "Opening device..." );
- Unlock();
- HBScanDVD( fHandle,
- fScanDetectedPopup->Menu()->FindMarked()->Label(), 0 );
- break;
-
- case RIP_RIP:
- {
- HBTitle * title = (HBTitle*) HBListItemAt( fTitleList,
- fRipTitlePopup->Menu()->IndexOf(
- fRipTitlePopup->Menu()->FindMarked() ) );
- title->file = strdup( "/boot/home/Desktop/Movie.mp4" );
- title->twoPass = 0;
- title->deinterlace = 0;
- title->topCrop = title->autoTopCrop;
- title->bottomCrop = title->autoBottomCrop;
- title->leftCrop = title->autoLeftCrop;
- title->rightCrop = title->autoRightCrop;
- title->bitrate = 1024;
- title->codec = HB_CODEC_FFMPEG;
- title->mux = HB_MUX_MP4;
- HBAudio * audio = (HBAudio*) HBListItemAt(
- title->audioList, 0 );
- audio->codec = HB_CODEC_AAC;
- audio->outBitrate = 128;
- HBListAdd( title->ripAudioList, audio );
- HBStartRip( fHandle, title );
- break;
- }
-
- default:
- MWindow::MessageReceived( message );
- break;
- }
-}
-
-void HBWindow::Scanning( int title, int titleCount )
-{
- Lock();
- char string[1024]; memset( string, 0, 1024 );
- snprintf( string, 1023, "Scanning title %d of %d...",
- title, titleCount );
- fScanStatusString->SetText( string );
- fScanProgress->SetValue( (float) title / titleCount );
- Unlock();
-}
-
-void HBWindow::ScanDone( HBList * titleList )
-{
-#define menu fRipTitlePopup->Menu()
- Lock();
- BMenuItem * item;
- while( ( item = menu->ItemAt(0) ) )
- {
- menu->RemoveItem( item );
- delete item;
- }
- HBTitle * title;
- char label[1024];
- for( int i = 0; i < HBListCount( titleList ); i++ )
- {
- memset( label, 0, 1024 );
- title = (HBTitle*) HBListItemAt( titleList, i );
- snprintf( label, 1023, "%d - %02dh%02dm%02ds", title->index,
- title->length / 3600, ( title->length % 3600 ) / 60,
- title->length % 60 );
- menu->AddItem( new BMenuItem( label, NULL ) );
- }
- menu->ItemAt(0)->SetMarked( true );
- fTitleList = titleList;
- UpdateLanguages();
- fLayers->ActivateLayer( 1 );
- Unlock();
-#undef menu
-}
-
-void HBWindow::Encoding( float position, int pass, int passCount,
- float frameRate, float avgFrameRate,
- int remainingTime )
-{
-}
-
-void HBWindow::RipDone( int result )
-{
-}
-
-void HBWindow::UpdateLanguages()
-{
-#define menu fRipTitlePopup->Menu()
- HBTitle * title = (HBTitle*) HBListItemAt( fTitleList,
- menu->IndexOf( menu->FindMarked() ) );
-#undef menu
-
-#define menu1 fRipLanguage1Popup->Menu()
-#define menu2 fRipLanguage2Popup->Menu()
- BMenuItem * item;
- while( ( item = menu1->ItemAt(0) ) )
- {
- menu1->RemoveItem( item );
- delete item;
- }
- while( ( item = menu2->ItemAt(0) ) )
- {
- menu2->RemoveItem( item );
- delete item;
- }
-
- HBAudio * audio;
- for( int i = 0; i < HBListCount( title->audioList ); i++ )
- {
- audio = (HBAudio*) HBListItemAt( title->audioList, i );
- menu1->AddItem( new BMenuItem( audio->language, NULL ) );
- menu2->AddItem( new BMenuItem( audio->language, NULL ) );
- }
- menu1->ItemAt(0)->SetMarked( true );
- menu2->AddItem( new BMenuItem( "None", NULL ) );
- menu2->ItemAt( menu2->CountItems() - 1 )->SetMarked( true );
-#undef menu1
-#undef menu2
-}
-
diff --git a/beos/HBWindow.h b/beos/HBWindow.h
deleted file mode 100644
index 52ddfbf1b..000000000
--- a/beos/HBWindow.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "layout-all.h"
-#include "HandBrake.h"
-
-class HBWindow : public MWindow
-{
- public:
- HBWindow();
- bool QuitRequested();
- void MessageReceived( BMessage * message );
-
- void Scanning( int title, int titleCount );
- void ScanDone( HBList * titleList );
- void Encoding( float position, int pass, int passCount,
- float frameRate, float avgFrameRate,
- int remainingTime );
- void RipDone( int result );
-
- private:
- void UpdateLanguages();
-
- HBHandle * fHandle;
- HBList * fTitleList;
-
- LayeredGroup * fLayers;
-
- MView * fScanView;
- MRadioGroup * fScanRadio;
- MPopup * fScanDetectedPopup;
- MTextControl * fScanFolderControl;
- MButton * fScanBrowseButton;
- MStringView * fScanStatusString;
- MProgressBar * fScanProgress;
- MButton * fScanOpenButton;
-
- MView * fRipView;
- MPopup * fRipTitlePopup;
- MPopup * fRipLanguage1Popup;
- MPopup * fRipLanguage2Popup;
- MPopup * fRipBitratePopup;
-};
-
diff --git a/beos/MainWindow.cpp b/beos/MainWindow.cpp
new file mode 100644
index 000000000..5b2741bb9
--- /dev/null
+++ b/beos/MainWindow.cpp
@@ -0,0 +1,986 @@
+#include <app/Application.h>
+#include <interface/Box.h>
+#include <interface/Button.h>
+#include <interface/CheckBox.h>
+#include <interface/MenuField.h>
+#include <interface/MenuItem.h>
+#include <interface/PopUpMenu.h>
+#include <interface/RadioButton.h>
+#include <interface/Screen.h>
+#include <interface/Slider.h>
+#include <interface/StatusBar.h>
+#include <interface/StringView.h>
+#include <interface/TextControl.h>
+#include <storage/FilePanel.h>
+#include <storage/Path.h>
+#include <support/String.h>
+
+#include "MainWindow.h"
+#include "PicWindow.h"
+#include "QueueWindow.h"
+
+#define MSG_TITLEPOPUP 'titl'
+#define MSG_CHAPTERPOPUP 'chap'
+#define MSG_FORMATPOPUP 'form'
+#define MSG_CODECSPOPUP 'code'
+#define MSG_BROWSE 'brow'
+#define MSG_QUALITYRADIO 'radi'
+#define MSG_SLIDER 'slid'
+#define MSG_PICSETTINGS 'pise'
+#define MSG_QUEUE_ENABLE 'quen'
+#define MSG_QUEUE_ADD 'quad'
+#define MSG_QUEUE_SHOW 'qush'
+#define MSG_PAUSE 'paus'
+#define MSG_START 'star'
+
+static int FormatSettings[3][4] =
+ { { HB_MUX_MP4 | HB_VCODEC_FFMPEG | HB_ACODEC_FAAC,
+ HB_MUX_MP4 | HB_VCODEC_X264 | HB_ACODEC_FAAC,
+ 0,
+ 0 },
+ { HB_MUX_AVI | HB_VCODEC_FFMPEG | HB_ACODEC_LAME,
+ HB_MUX_AVI | HB_VCODEC_FFMPEG | HB_ACODEC_AC3,
+ HB_MUX_AVI | HB_VCODEC_X264 | HB_ACODEC_LAME,
+ HB_MUX_AVI | HB_VCODEC_X264 | HB_ACODEC_AC3 },
+ { HB_MUX_OGM | HB_VCODEC_FFMPEG | HB_ACODEC_VORBIS,
+ HB_MUX_OGM | HB_VCODEC_FFMPEG | HB_ACODEC_LAME,
+ 0,
+ 0 } };
+
+MainView::MainView( hb_handle_t * handle )
+ : BView( BRect( 0,0,700,475 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW )
+{
+ fHandle = handle;
+
+ BRect r, b;
+ BBox * box;
+
+ SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
+
+ /* Source box */
+ b = Bounds();
+ r = BRect( 10,10,b.right/2-5,135 );
+ box = new BBox( r );
+ box->SetLabel( "Source" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ r = BRect( 10,15,b.right/4,35 );
+ fSrcDVD1String = new BStringView( r, NULL, "DVD:" );
+ box->AddChild( fSrcDVD1String );
+
+ r = BRect( b.right/4+1,15,b.right-10,35 );
+ fSrcDVD2String = new BStringView( r, NULL, "" );
+ fSrcDVD2String->SetAlignment( B_ALIGN_RIGHT );
+ box->AddChild( fSrcDVD2String );
+
+ r = BRect( 10,40,b.right-10,60 );
+ fSrcTitlePopUp = new BPopUpMenu( "" );
+ fSrcTitleMenu = new BMenuField( r, NULL, "Title:", fSrcTitlePopUp,
+ true );
+ fSrcTitleMenu->SetDivider( b.right-130 );
+ box->AddChild( fSrcTitleMenu );
+
+ r = BRect( 10,65,b.right-120,85 );
+ fSrcChapString = new BStringView( r, NULL, "Chapters:" );
+ box->AddChild( fSrcChapString );
+
+ r = BRect( b.right-119,65,b.right-80,85 );
+ fSrcChapStartPopUp = new BPopUpMenu( "" );
+ fSrcChapStartMenu = new BMenuField( r, NULL, "",
+ fSrcChapStartPopUp, true );
+ fSrcChapStartMenu->SetDivider( 0.0 );
+ box->AddChild( fSrcChapStartMenu );
+
+ r = BRect( b.right-79,65,b.right-50,85 );
+ fSrcChapToString = new BStringView( r, NULL, "to" );
+ fSrcChapToString->SetAlignment( B_ALIGN_CENTER );
+ box->AddChild( fSrcChapToString );
+
+ r = BRect( b.right-49,65,b.right-10,85 );
+ fSrcChapEndPopUp = new BPopUpMenu( "" );
+ fSrcChapEndMenu = new BMenuField( r, NULL, "", fSrcChapEndPopUp,
+ true );
+ fSrcChapEndMenu->SetDivider( 0.0 );
+ box->AddChild( fSrcChapEndMenu );
+
+ r = BRect( 10,90,b.right/2,110 );
+ fSrcDur1String = new BStringView( r, NULL, "Duration:" );
+ box->AddChild( fSrcDur1String );
+
+ r = BRect( b.right/2+1,90,b.right-10,110 );
+ fSrcDur2String = new BStringView( r, NULL, "00:00:00" );
+ fSrcDur2String->SetAlignment( B_ALIGN_RIGHT );
+ box->AddChild( fSrcDur2String );
+
+ /* Destination box */
+ b = Bounds();
+ r = BRect( b.right/2+5,10,b.right-10,135 );
+ box = new BBox( r );
+ box->SetLabel( "Destination" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ r = BRect( 10,15,b.right-10,35 );
+ fDstFormatPopUp = new BPopUpMenu( "" );
+#define ADDITEM(a) fDstFormatPopUp->AddItem( new BMenuItem( a, \
+ new BMessage( MSG_FORMATPOPUP ) ) )
+ ADDITEM( "MP4 file" );
+ ADDITEM( "AVI file" );
+ ADDITEM( "OGM file" );
+#undef ADDITEM
+ fDstFormatPopUp->ItemAt( 0 )->SetMarked( true );
+ fDstFormat = -1;
+ fDstFormatMenu = new BMenuField( r, NULL, "File format:",
+ fDstFormatPopUp, true );
+ fDstFormatMenu->SetDivider( b.right/3 );
+ box->AddChild( fDstFormatMenu );
+
+ r = BRect( 10,40,b.right-10,60 );
+ fDstCodecsPopUp = new BPopUpMenu( "" );
+ fDstCodecsMenu = new BMenuField( r, NULL, "Codecs:",
+ fDstCodecsPopUp, true );
+ fDstCodecsMenu->SetDivider( b.right/3 );
+ box->AddChild( fDstCodecsMenu );
+
+ r = BRect( 10,65,b.right-10,85 );
+ fDstFileControl = new BTextControl( r, NULL, "File:",
+ "/boot/home/Desktop/Movie", new BMessage() );
+ fDstFileControl->SetDivider( b.right/3 );
+ box->AddChild( fDstFileControl );
+
+ r = BRect( b.right-90,90,b.right-10,115 );
+ fBrowseButton = new BButton( r, NULL, "Browse",
+ new BMessage( MSG_BROWSE ) );
+ box->AddChild( fBrowseButton );
+
+ /* Video box */
+ b = Bounds();
+ r = BRect( 10,145,b.right/2-5,395 );
+ box = new BBox( r );
+ box->SetLabel( "Video" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ r = BRect( 10,15,b.right-10,35 );
+ fVidRatePopUp = new BPopUpMenu( "" );
+ fVidRatePopUp->AddItem( new BMenuItem( "Same as source",
+ new BMessage() ) );
+ for( int i = 0; i < hb_video_rates_count; i++ )
+ {
+ fVidRatePopUp->AddItem( new BMenuItem( hb_video_rates[i].string,
+ new BMessage() ) );
+ }
+ fVidRatePopUp->ItemAt( 0 )->SetMarked( true );
+ fVidRateMenu = new BMenuField( r, NULL, "Framerate (fps):",
+ fVidRatePopUp, true );
+ box->AddChild( fVidRateMenu );
+
+ r = BRect( 10,40,b.right-10,60 );
+ fVidEncoderPopUp = new BPopUpMenu( "" );
+ fVidEncoderMenu = new BMenuField( r, NULL, "Encoder:",
+ fVidEncoderPopUp, true );
+ box->AddChild( fVidEncoderMenu );
+
+ r = BRect( 10,65,b.right-10,85 );
+ fVidQualityString = new BStringView( r, NULL, "Quality:" );
+ box->AddChild( fVidQualityString );
+
+ r = BRect( 10,90,b.right*2/3,110);
+ fVidTargetRadio = new BRadioButton( r, NULL, "Target size (MB):",
+ new BMessage( MSG_QUALITYRADIO ) );
+ box->AddChild( fVidTargetRadio );
+
+ r = BRect( b.right*2/3+1,90,b.right-10,110);
+ fVidTargetControl = new BTextControl( r, NULL, "", "700",
+ new BMessage() );
+ fVidTargetControl->SetDivider( 0 );
+ box->AddChild( fVidTargetControl );
+
+ r = BRect( 10,115,b.right/2,135);
+ fVidAverageRadio = new BRadioButton( r, NULL, "Average bitrate (kbps):",
+ new BMessage( MSG_QUALITYRADIO ) );
+ fVidAverageRadio->SetValue( 1 );
+ box->AddChild( fVidAverageRadio );
+
+ r = BRect( b.right*2/3+1,115,b.right-10,135);
+ fVidAverageControl = new BTextControl( r, NULL, "", "1000",
+ new BMessage() );
+ fVidAverageControl->SetDivider( 0 );
+ box->AddChild( fVidAverageControl );
+
+ r = BRect( 10,140,b.right/2,160);
+ fVidConstantRadio = new BRadioButton( r, NULL, "Constant quality:",
+ new BMessage( MSG_QUALITYRADIO ) );
+ box->AddChild( fVidConstantRadio );
+
+ r = BRect( 20,165,b.right-10,195);
+ fVidConstantSlider = new BSlider( r, NULL, NULL,
+ new BMessage( MSG_SLIDER ), 0, 100 );
+ fVidConstantSlider->SetValue( 50 );
+ SliderChanged();
+ box->AddChild( fVidConstantSlider );
+
+ r = BRect( 10,200,b.right-10,220);
+ fVidGrayCheck = new BCheckBox( r, NULL, "Grayscale encoding", new BMessage() );
+ box->AddChild( fVidGrayCheck );
+ r = BRect( 10,220,b.right-10,240);
+ fVidTwoPassCheck = new BCheckBox( r, NULL, "2-pass encoding", new BMessage() );
+ box->AddChild( fVidTwoPassCheck );
+
+ /* Subtitles box */
+ b = Bounds();
+ r = BRect( b.right/2+5,145,b.right-10,190 );
+ box = new BBox( r );
+ box->SetLabel( "Subtitles" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ r = BRect( 10,15,b.right-10,35 );
+ fSubPopUp = new BPopUpMenu( "" );
+ fSubMenu = new BMenuField( r, NULL, "Language:",
+ fSubPopUp, true );
+ box->AddChild( fSubMenu );
+
+ /* Audio box */
+ b = Bounds();
+ r = BRect( b.right/2+5,200,b.right-10,320 );
+ box = new BBox( r );
+ box->SetLabel( "Audio" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ r = BRect( 10,15,b.right-10,35 );
+ fAudLang1PopUp = new BPopUpMenu( "" );
+ fAudLang1Menu = new BMenuField( r, NULL, "Language 1:",
+ fAudLang1PopUp, true );
+ box->AddChild( fAudLang1Menu );
+ r = BRect( 10,40,b.right-10,60 );
+ fAudLang2PopUp = new BPopUpMenu( "" );
+ fAudLang2Menu = new BMenuField( r, NULL, "Language 2:",
+ fAudLang2PopUp, true );
+ box->AddChild( fAudLang2Menu );
+ r = BRect( 10,65,b.right-10,85 );
+ fAudRatePopUp = new BPopUpMenu( "" );
+ for( int i = 0; i < hb_audio_rates_count; i++ )
+ {
+ fAudRatePopUp->AddItem( new BMenuItem( hb_audio_rates[i].string,
+ new BMessage ) );
+ }
+ fAudRatePopUp->ItemAt( hb_audio_rates_default )->SetMarked( true );
+ fAudRateMenu = new BMenuField( r, NULL, "Sample rate (Hz):",
+ fAudRatePopUp, true );
+ box->AddChild( fAudRateMenu );
+ r = BRect( 10,90,b.right-10,110 );
+ fAudBitratePopUp = new BPopUpMenu( "" );
+ for( int i = 0; i < hb_audio_bitrates_count; i++ )
+ {
+ fAudBitratePopUp->AddItem( new BMenuItem(
+ hb_audio_bitrates[i].string, new BMessage ) );
+ }
+ fAudBitratePopUp->ItemAt(
+ hb_audio_bitrates_default )->SetMarked( true );
+ fAudBitrateMenu = new BMenuField( r, NULL, "Bitrate (kbps):",
+ fAudBitratePopUp, true );
+ box->AddChild( fAudBitrateMenu );
+
+ /* Picture settings */
+ b = Bounds();
+ r = BRect( b.right-110,370,b.right-10,395 );
+ fPictureButton = new BButton( r, NULL, "Picture settings...",
+ new BMessage( MSG_PICSETTINGS ) );
+ AddChild( fPictureButton );
+
+ /* Bottom */
+ r = BRect( 10,405,b.right-10,435 );
+ fProgressBar = new BStatusBar( r, NULL );
+ AddChild( fProgressBar );
+
+ r = BRect( 10,450,b.right-370,470);
+ fQueueCheck = new BCheckBox( r, NULL, "Enable Queue",
+ new BMessage( MSG_QUEUE_ENABLE ) );
+ AddChild( fQueueCheck );
+
+ r = BRect( b.right-360,445,b.right-280,470 );
+ fAddButton = new BButton( r, NULL, "Add to Queue",
+ new BMessage( MSG_QUEUE_ADD ) );
+
+ r = BRect( b.right-270,445,b.right-190,470 );
+ fShowButton = new BButton( r, NULL, "Show queue",
+ new BMessage( MSG_QUEUE_SHOW ) );
+
+ r = BRect( b.right-180,445,b.right-100,470 );
+ fPauseButton = new BButton( r, NULL, "Pause",
+ new BMessage( MSG_PAUSE ) );
+ AddChild( fPauseButton );
+
+ r = BRect( b.right-90,445,b.right-10,470 );
+ fRipButton = new BButton( r, NULL, "Rip",
+ new BMessage( MSG_START ) );
+ AddChild( fRipButton );
+
+ EnableUI( false );
+ fPauseButton->SetEnabled( false );
+ fRipButton->SetEnabled( false );
+
+ FormatPopUpChanged();
+
+ fFilePanel = NULL;
+}
+
+void MainView::HandleMessage( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_TITLEPOPUP:
+ TitlePopUpChanged();
+ break;
+
+ case MSG_CHAPTERPOPUP:
+ ChapterPopUpChanged();
+ break;
+
+ case MSG_FORMATPOPUP:
+ FormatPopUpChanged();
+ break;
+
+ case MSG_CODECSPOPUP:
+ CodecsPopUpChanged();
+ break;
+
+ case MSG_BROWSE:
+ if( !fFilePanel )
+ {
+ fFilePanel = new BFilePanel( B_SAVE_PANEL,
+ new BMessenger( Window() ), NULL, 0, false );
+ }
+ fFilePanel->Show();
+ break;
+
+ case B_SAVE_REQUESTED:
+ {
+ entry_ref ref;
+ BString string;
+ if( msg->FindRef( "directory", 0, &ref ) == B_OK &&
+ msg->FindString( "name", &string ) == B_OK )
+ {
+ BPath * path = new BPath( &ref );
+ string.Prepend( "/" );
+ string.Prepend( path->Path() );
+ fDstFileControl->SetText( string.String() );
+ CheckExtension();
+ }
+ break;
+ }
+
+ case MSG_QUALITYRADIO:
+ QualityRadioChanged();
+ break;
+
+ case MSG_SLIDER:
+ SliderChanged();
+ break;
+
+ case MSG_PICSETTINGS:
+ fPicWin = new PicWindow( fHandle, fSrcTitlePopUp->IndexOf(
+ fSrcTitlePopUp->FindMarked() ) );
+ fPicWin->Show();
+ break;
+
+ case MSG_QUEUE_ENABLE:
+ if( fQueueCheck->Value() )
+ {
+ AddChild( fAddButton );
+ AddChild( fShowButton );
+ }
+ else
+ {
+ RemoveChild( fAddButton );
+ RemoveChild( fShowButton );
+ }
+ break;
+
+ case MSG_QUEUE_ADD:
+ AddJob();
+ break;
+
+ case MSG_QUEUE_SHOW:
+ fQueueWin = new QueueWindow( fHandle );
+ fQueueWin->Show();
+ break;
+
+ case MSG_PAUSE:
+ fPauseButton->SetEnabled( false );
+ fRipButton->SetEnabled( false );
+ if( !strcmp( fPauseButton->Label(), "Resume" ) )
+ {
+ hb_resume( fHandle );
+ }
+ else
+ {
+ hb_pause( fHandle );
+ }
+ break;
+
+ case MSG_START:
+ {
+ if( !strcmp( fRipButton->Label(), "Cancel" ) )
+ {
+ fPauseButton->SetEnabled( false );
+ fRipButton->SetEnabled( false );
+ hb_stop( fHandle );
+ break;
+ }
+
+ EnableUI( false );
+ fPauseButton->SetEnabled( false );
+ fRipButton->SetEnabled( false );
+
+ if( !fQueueCheck->Value() )
+ {
+ AddJob();
+ }
+
+ hb_start( fHandle );
+ break;
+ }
+ }
+}
+
+void MainView::Update( hb_state_t * s )
+{
+ if( !LockLooper() )
+ {
+ fprintf( stderr, "LockLooper failed\n" );
+ return;
+ }
+
+ switch( s->state )
+ {
+#define p s->param.scandone
+ case HB_STATE_SCANDONE:
+ {
+ hb_list_t * list;
+ hb_title_t * title;
+ char string[1024];
+
+ list = hb_get_titles( fHandle );
+ for( int i = 0; i < hb_list_count( list ); i++ )
+ {
+ title = (hb_title_t *) hb_list_item( list, i );
+ fSrcDVD2String->SetText( title->dvd );
+ snprintf( string, 1024, "%d - %02dh%02dm%02ds",
+ title->index, title->hours, title->minutes,
+ title->seconds );
+ fSrcTitlePopUp->AddItem( new BMenuItem( string,
+ new BMessage( MSG_TITLEPOPUP ) ) );
+ }
+ fSrcTitlePopUp->ItemAt( 0 )->SetMarked( true );
+ fSrcTitle = -1;
+ TitlePopUpChanged();
+
+ EnableUI( true );
+ fRipButton->SetEnabled( true );
+ fPauseButton->SetEnabled( false );
+ break;
+ }
+#undef p
+
+#define p s->param.working
+ case HB_STATE_WORKING:
+ {
+ float progress_total;
+ char text[1024];
+ progress_total = ( p.progress + p.job_cur - 1 ) / p.job_count;
+ snprintf( text, 1024, "Encoding: task %d of %d, %.2f %%",
+ p.job_cur, p.job_count, 100.0 * p.progress );
+ if( p.seconds > -1 )
+ {
+ snprintf( text + strlen( text ), 1024 - strlen( text ),
+ " (%.2f fps, avg %.2f fps, ETA %02dh%02dm%02ds)",
+ p.rate_cur, p.rate_avg, p.hours, p.minutes,
+ p.seconds );
+ }
+ fProgressBar->Update( fProgressBar->MaxValue() *
+ progress_total - fProgressBar->CurrentValue(), text );
+
+ fPauseButton->SetLabel( "Pause" );
+ fPauseButton->SetEnabled( true );
+ fRipButton->SetLabel( "Cancel" );
+ fRipButton->SetEnabled( true );
+ break;
+ }
+#undef p
+
+ case HB_STATE_PAUSED:
+ fProgressBar->Update( 0, "Paused" );
+ fPauseButton->SetLabel( "Resume" );
+ fPauseButton->SetEnabled( true );
+ fRipButton->SetLabel( "Cancel" );
+ fRipButton->SetEnabled( true );
+ break;
+
+#define p s->param.workdone
+ case HB_STATE_WORKDONE:
+ fProgressBar->Update( - fProgressBar->CurrentValue(),
+ "Done." );
+ EnableUI( true );
+ fPauseButton->SetLabel( "Pause" );
+ fPauseButton->SetEnabled( false );
+ fRipButton->SetLabel( "Rip" );
+ fRipButton->SetEnabled( true );
+
+ /* FIXME */
+ hb_job_t * job;
+ while( ( job = hb_job( fHandle, 0 ) ) )
+ {
+ hb_rem( fHandle, job );
+ }
+ break;
+#undef p
+ }
+
+ UnlockLooper();
+}
+
+void MainView::EnableUI( bool b )
+{
+
+ rgb_color mycolor;
+ mycolor.red = mycolor.green = mycolor.blue = b ? 0 : 128;
+ mycolor.alpha = 255;
+
+ BStringView * strings[] =
+ { fSrcDVD1String, fSrcDVD2String, fSrcChapString,
+ fSrcChapToString, fSrcDur1String, fSrcDur2String,
+ fVidQualityString };
+ for( unsigned i = 0; i < sizeof( strings ) / sizeof( void * ); i++ )
+ {
+ strings[i]->SetHighColor( mycolor );
+ strings[i]->Invalidate(); /* Force redraw */
+ }
+
+ BMenuField * fields[] =
+ { fSrcTitleMenu, fSrcChapStartMenu, fSrcChapEndMenu,
+ fDstFormatMenu, fDstCodecsMenu, fVidRateMenu, fVidEncoderMenu,
+ fSubMenu, fAudLang1Menu, fAudLang2Menu, fAudRateMenu,
+ fAudBitrateMenu };
+ for( unsigned i = 0; i < sizeof( fields ) / sizeof( void * ); i++ )
+ {
+ fields[i]->SetEnabled( b );
+ }
+
+ BControl * controls[] =
+ { fDstFileControl, fBrowseButton, fVidTargetRadio,
+ fVidTargetControl, fVidAverageRadio, fVidAverageControl,
+ fVidConstantRadio, fVidConstantSlider, fVidGrayCheck,
+ fVidTwoPassCheck, fPictureButton };
+ for( unsigned i = 0; i < sizeof( controls ) / sizeof( void * ); i++ )
+ {
+ controls[i]->SetEnabled( b );
+ }
+
+ if( b )
+ {
+ QualityRadioChanged();
+ }
+}
+
+void MainView::TitlePopUpChanged()
+{
+ int index = fSrcTitlePopUp->IndexOf( fSrcTitlePopUp->FindMarked() );
+ if( index == fSrcTitle )
+ {
+ /* No change actually */
+ return;
+ }
+ fSrcTitle = index;
+
+ /* Get a pointer to the title */
+ hb_list_t * list;
+ hb_title_t * title;
+ list = hb_get_titles( fHandle );
+ title = (hb_title_t *) hb_list_item( list, index );
+
+ char text[1024];
+ BMenuItem * item;
+
+ /* Update chapters popups */
+ while( ( item = fSrcChapStartPopUp->RemoveItem( 0L ) ) )
+ {
+ delete item;
+ }
+ while( ( item = fSrcChapEndPopUp->RemoveItem( 0L ) ) )
+ {
+ delete item;
+ }
+ for( int i = 0; i < hb_list_count( title->list_chapter ); i++ )
+ {
+ snprintf( text, 1024, "%d", i + 1 );
+ fSrcChapStartPopUp->AddItem( new BMenuItem( text,
+ new BMessage( MSG_CHAPTERPOPUP ) ) );
+ fSrcChapEndPopUp->AddItem( new BMenuItem( text,
+ new BMessage( MSG_CHAPTERPOPUP ) ) );
+ }
+ fSrcChapStartPopUp->ItemAt( 0 )->SetMarked( true );
+ fSrcChapEndPopUp->ItemAt( hb_list_count( title->list_chapter )
+ - 1 )->SetMarked( true );
+ ChapterPopUpChanged();
+
+ /* Update subtitles popup */
+ hb_subtitle_t * sub;
+ while( ( item = fSubPopUp->RemoveItem( 0L ) ) )
+ {
+ delete item;
+ }
+ fSubPopUp->AddItem( new BMenuItem( "None", new BMessage() ) );
+ for( int i = 0; i < hb_list_count( title->list_subtitle ); i++ )
+ {
+ sub = (hb_subtitle_t *) hb_list_item( title->list_subtitle, i );
+ fSubPopUp->AddItem( new BMenuItem( sub->lang, new BMessage() ) );
+ }
+ fSubPopUp->ItemAt( 0 )->SetMarked( true );
+
+ /* Update audio popups */
+ hb_audio_t * audio;
+ while( ( item = fAudLang1PopUp->RemoveItem( 0L ) ) )
+ {
+ delete item;
+ }
+ while( ( item = fAudLang2PopUp->RemoveItem( 0L ) ) )
+ {
+ delete item;
+ }
+ fAudLang1PopUp->AddItem( new BMenuItem( "None", new BMessage() ) );
+ fAudLang2PopUp->AddItem( new BMenuItem( "None", new BMessage() ) );
+ for( int i = 0; i < hb_list_count( title->list_audio ); i++ )
+ {
+ audio = (hb_audio_t *) hb_list_item( title->list_audio, i );
+ fAudLang1PopUp->AddItem( new BMenuItem( audio->lang, new BMessage() ) );
+ fAudLang2PopUp->AddItem( new BMenuItem( audio->lang, new BMessage() ) );
+ }
+ fAudLang1PopUp->ItemAt( 1 )->SetMarked( true );
+ fAudLang2PopUp->ItemAt( 0 )->SetMarked( true );
+}
+
+void MainView::ChapterPopUpChanged()
+{
+ /* Get a pointer to the title */
+ hb_list_t * list;
+ hb_title_t * title;
+ list = hb_get_titles( fHandle );
+ title = (hb_title_t *) hb_list_item( list,
+ fSrcTitlePopUp->IndexOf( fSrcTitlePopUp->FindMarked() ) );
+
+ hb_chapter_t * chapter;
+ int64_t duration = 0;
+ for( int i = fSrcChapStartPopUp->IndexOf(
+ fSrcChapStartPopUp->FindMarked() );
+ i <= fSrcChapEndPopUp->IndexOf(
+ fSrcChapEndPopUp->FindMarked() );
+ i++ )
+ {
+ chapter = (hb_chapter_t *) hb_list_item( title->list_chapter, i );
+ duration += chapter->duration;
+ }
+ duration /= 90000; /* pts -> seconds */
+
+ char text[1024];
+ snprintf( text, sizeof(text), "%02lld:%02lld:%02lld",
+ duration / 3600, ( duration / 60 ) % 60, duration % 60 );
+ fSrcDur2String->SetText( text );
+}
+
+void MainView::FormatPopUpChanged()
+{
+ int format;
+ BMenuItem * item;
+
+ format = fDstFormatPopUp->IndexOf( fDstFormatPopUp->FindMarked() );
+ if( format == fDstFormat )
+ {
+ /* No change actually */
+ CheckExtension();
+ return;
+ }
+ fDstFormat = format;
+
+ /* Empty codecs popup */
+ while( ( item = fDstCodecsPopUp->RemoveItem( 0L ) ) )
+ {
+ delete item;
+ }
+
+ /* Add acceptable video codec / audio codec combinations */
+#define ADDITEM(a) \
+ fDstCodecsPopUp->AddItem( new BMenuItem( a, new BMessage( MSG_CODECSPOPUP ) ) )
+ switch( format )
+ {
+ case 0:
+ ADDITEM( "MPEG-4 Video / AAC Audio" );
+ ADDITEM( "AVC/H.264 Video / AAC Audio" );
+ break;
+ case 1:
+ ADDITEM( "MPEG-4 Video / MP3 Audio" );
+ ADDITEM( "MPEG-4 Video / AC-3 Audio" );
+ ADDITEM( "AVC/H.264 Video / MP3 Audio" );
+ ADDITEM( "AVC/H.264 Video / AC-3 Audio" );
+ break;
+ case 2:
+ ADDITEM( "MPEG-4 Video / Vorbis Audio" );
+ ADDITEM( "MPEG-4 Video / MP3 Audio" );
+ break;
+ }
+#undef ADDITEM
+
+ fDstCodecsPopUp->ItemAt( 0 )->SetMarked( true );
+
+ CheckExtension();
+ CodecsPopUpChanged();
+}
+
+void MainView::CodecsPopUpChanged()
+{
+ int format = fDstFormatPopUp->IndexOf( fDstFormatPopUp->FindMarked() );
+ int codecs = fDstCodecsPopUp->IndexOf( fDstCodecsPopUp->FindMarked() );
+
+ BMenuItem * item;
+
+ /* Update the encoder popup if necessary */
+ if( ( FormatSettings[format][codecs] & HB_VCODEC_X264 ) &&
+ fVidEncoderPopUp->CountItems() > 1 )
+ {
+ /* MPEG-4 -> H.264 */
+ while( ( item = fVidEncoderPopUp->RemoveItem( 0L ) ) )
+ delete item;
+ fVidEncoderPopUp->AddItem( new BMenuItem( "x264", new BMessage() ) );
+ fVidEncoderPopUp->ItemAt( 0 )->SetMarked( true );
+ }
+ else if( ( FormatSettings[format][codecs] & HB_VCODEC_FFMPEG ) &&
+ fVidEncoderPopUp->CountItems() < 2 )
+ {
+ /* H.264 -> MPEG-4 */
+ while( ( item = fVidEncoderPopUp->RemoveItem( 0L ) ) )
+ delete item;
+ fVidEncoderPopUp->AddItem( new BMenuItem( "FFmpeg", new BMessage() ) );
+ fVidEncoderPopUp->AddItem( new BMenuItem( "XviD", new BMessage() ) );
+ fVidEncoderPopUp->ItemAt( 0 )->SetMarked( true );
+ }
+
+ if( FormatSettings[format][codecs] & HB_ACODEC_AC3 )
+ {
+ /* AC-3 pass-through: disable samplerate and bitrate */
+ fAudRatePopUp->SetEnabled( false );
+ fAudBitratePopUp->SetEnabled( false );
+ }
+ else if( fVidEncoderPopUp->IsEnabled() )
+ {
+ fAudRatePopUp->SetEnabled( true );
+ fAudBitratePopUp->SetEnabled( true );
+ }
+}
+
+void MainView::CheckExtension()
+{
+ char * ext = NULL;
+ switch( fDstFormat )
+ {
+ case 0:
+ ext = ".mp4";
+ break;
+ case 1:
+ ext = ".avi";
+ break;
+ case 2:
+ ext = ".ogm";
+ break;
+ }
+
+ char newname[1024];
+ const char * oldname = fDstFileControl->Text();
+ memcpy( newname, oldname, strlen( oldname ) );
+ if( strlen( oldname ) > 4 &&
+ oldname[strlen( oldname ) - 4] == '.' )
+ {
+ /* Replace extension */
+ memcpy( &newname[strlen( oldname ) - 4], ext, 5 );
+ }
+ else
+ {
+ /* Add extension */
+ memcpy( &newname[strlen( oldname )], ext, 5 );
+ }
+ fDstFileControl->SetText( newname );
+}
+
+void MainView::QualityRadioChanged()
+{
+ fVidTargetControl->SetEnabled( fVidTargetRadio->Value() );
+ fVidAverageControl->SetEnabled( fVidAverageRadio->Value() );
+ fVidConstantSlider->SetEnabled( fVidConstantRadio->Value() );
+ fVidTwoPassCheck->SetEnabled( !fVidConstantRadio->Value() );
+ if( fVidConstantRadio->Value() )
+ fVidTwoPassCheck->SetValue( 0 );
+}
+
+void MainView::SliderChanged()
+{
+ char text[1024];
+ snprintf( text, 1024, "Constant quality: %ld %%",
+ fVidConstantSlider->Value() );
+ fVidConstantRadio->SetLabel( text );
+}
+
+void MainView::AddJob()
+{
+ hb_list_t * list;
+ hb_title_t * title;
+ hb_job_t * job;
+ list = hb_get_titles( fHandle );
+ title = (hb_title_t *) hb_list_item( list,
+ fSrcTitlePopUp->IndexOf( fSrcTitlePopUp->FindMarked() ) );
+ job = title->job;
+
+ job->chapter_start = fSrcChapStartPopUp->IndexOf(
+ fSrcChapStartPopUp->FindMarked() ) + 1;
+ job->chapter_end = fSrcChapEndPopUp->IndexOf(
+ fSrcChapEndPopUp->FindMarked() ) + 1;
+
+ int format = fDstFormatPopUp->IndexOf(
+ fDstFormatPopUp->FindMarked() );
+ int codecs = fDstCodecsPopUp->IndexOf(
+ fDstCodecsPopUp->FindMarked() );
+
+ job->mux = FormatSettings[format][codecs] & HB_MUX_MASK;
+ job->vcodec = FormatSettings[format][codecs] & HB_VCODEC_MASK;
+ job->acodec = FormatSettings[format][codecs] & HB_ACODEC_MASK;
+
+ if( ( job->vcodec & HB_VCODEC_FFMPEG ) &&
+ fVidEncoderPopUp->IndexOf(
+ fVidEncoderPopUp->FindMarked() ) > 0 )
+ {
+ job->vcodec = HB_VCODEC_XVID;
+ }
+
+ int index;
+ index = fVidRatePopUp->IndexOf(
+ fVidRatePopUp->FindMarked() );
+ if( index > 0 )
+ {
+ job->vrate_base = hb_video_rates[index-1].rate;
+ }
+ else
+ {
+ job->vrate_base = title->rate_base;
+ }
+
+ job->grayscale = fVidGrayCheck->Value();
+
+ job->subtitle = fSubPopUp->IndexOf(
+ fSubPopUp->FindMarked() ) - 1;
+
+ job->audios[0] = fAudLang1PopUp->IndexOf(
+ fAudLang1PopUp->FindMarked() ) - 1;
+ job->audios[1] = fAudLang2PopUp->IndexOf(
+ fAudLang2PopUp->FindMarked() ) - 1;
+ job->audios[2] = -1;
+
+ job->arate = hb_audio_rates[fAudRatePopUp->IndexOf(
+ fAudRatePopUp->FindMarked() )].rate;
+ job->abitrate = hb_audio_bitrates[fAudBitratePopUp->IndexOf(
+ fAudBitratePopUp->FindMarked() )].rate;
+
+ if( fVidConstantRadio->Value() )
+ {
+ job->vquality = 0.01 * fVidConstantSlider->Value();
+ job->vbitrate = 0;
+ }
+ else if( fVidTargetRadio->Value() )
+ {
+ job->vquality = -1.0;
+ job->vbitrate = hb_calc_bitrate( job,
+ atoi( fVidTargetControl->Text() ) );
+ }
+ else
+ {
+ job->vquality = -1.0;
+ job->vbitrate = atoi( fVidAverageControl->Text() );
+ }
+
+ job->file = strdup( fDstFileControl->Text() );
+
+ if( fVidTwoPassCheck->Value() )
+ {
+ job->pass = 1;
+ hb_add( fHandle, job );
+ job->pass = 2;
+ hb_add( fHandle, job );
+ }
+ else
+ {
+ job->pass = 0;
+ hb_add( fHandle, job );
+ }
+}
+
+MainWindow::MainWindow( hb_handle_t * handle )
+ : BWindow( BRect( 0,0,10,10 ), "HandBrake " HB_VERSION,
+ B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE )
+{
+ fHandle = handle;
+
+ /* Add the main view */
+ fView = new MainView( fHandle );
+ AddChild( fView );
+
+ /* Resize to fit */
+ ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() );
+
+ /* Center */
+ BScreen screen;
+ MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2,
+ ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 );
+}
+
+void MainWindow::MessageReceived( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_TITLEPOPUP:
+ case MSG_CHAPTERPOPUP:
+ case MSG_FORMATPOPUP:
+ case MSG_CODECSPOPUP:
+ case MSG_BROWSE:
+ case MSG_QUALITYRADIO:
+ case MSG_SLIDER:
+ case MSG_PICSETTINGS:
+ case MSG_QUEUE_ENABLE:
+ case MSG_QUEUE_ADD:
+ case MSG_QUEUE_SHOW:
+ case MSG_PAUSE:
+ case MSG_START:
+ case B_SAVE_REQUESTED:
+ fView->HandleMessage( msg );
+ break;
+
+ default:
+ BWindow::MessageReceived( msg );
+ break;
+ }
+}
+
+bool MainWindow::QuitRequested()
+{
+ be_app_messenger.SendMessage( B_QUIT_REQUESTED );
+ return true;
+}
+
+void MainWindow::Update( hb_state_t * s )
+{
+ fView->Update( s );
+}
diff --git a/beos/MainWindow.h b/beos/MainWindow.h
new file mode 100644
index 000000000..1558556f0
--- /dev/null
+++ b/beos/MainWindow.h
@@ -0,0 +1,121 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <interface/Window.h>
+#include <interface/View.h>
+
+#include "hb.h"
+
+class BButton;
+class BCheckBox;
+class BMenuField;
+class BPopUpMenu;
+class BRadioButton;
+class BSlider;
+class BStatusBar;
+class BStringView;
+class BTextControl;
+class BFilePanel;
+
+class PicWindow;
+class QueueWindow;
+
+class MainView : public BView
+{
+ public:
+ MainView( hb_handle_t * handle );
+
+ void HandleMessage( BMessage * msg );
+ void Update( hb_state_t * s );
+
+ private:
+ void EnableUI( bool );
+ void TitlePopUpChanged();
+ void ChapterPopUpChanged();
+ void FormatPopUpChanged();
+ void CodecsPopUpChanged();
+ void CheckExtension();
+ void QualityRadioChanged();
+ void SliderChanged();
+ void AddJob();
+
+ hb_handle_t * fHandle;
+
+ BStringView * fSrcDVD1String;
+ BStringView * fSrcDVD2String;
+ BPopUpMenu * fSrcTitlePopUp;
+ BMenuField * fSrcTitleMenu;
+ int fSrcTitle;
+ BStringView * fSrcChapString;
+ BPopUpMenu * fSrcChapStartPopUp;
+ BMenuField * fSrcChapStartMenu;
+ BStringView * fSrcChapToString;
+ BPopUpMenu * fSrcChapEndPopUp;
+ BMenuField * fSrcChapEndMenu;
+ BStringView * fSrcDur1String;
+ BStringView * fSrcDur2String;
+
+ BPopUpMenu * fDstFormatPopUp;
+ BMenuField * fDstFormatMenu;
+ int fDstFormat;
+ BPopUpMenu * fDstCodecsPopUp;
+ BMenuField * fDstCodecsMenu;
+ BTextControl * fDstFileControl;
+ BButton * fBrowseButton;
+
+ BPopUpMenu * fVidRatePopUp;
+ BMenuField * fVidRateMenu;
+ BPopUpMenu * fVidEncoderPopUp;
+ BMenuField * fVidEncoderMenu;
+ BStringView * fVidQualityString;
+ BRadioButton * fVidTargetRadio;
+ BTextControl * fVidTargetControl;
+ BRadioButton * fVidAverageRadio;
+ BTextControl * fVidAverageControl;
+ BRadioButton * fVidConstantRadio;
+ BSlider * fVidConstantSlider;
+ BCheckBox * fVidGrayCheck;
+ BCheckBox * fVidTwoPassCheck;
+
+ BPopUpMenu * fSubPopUp;
+ BMenuField * fSubMenu;
+
+ BPopUpMenu * fAudLang1PopUp;
+ BMenuField * fAudLang1Menu;
+ BPopUpMenu * fAudLang2PopUp;
+ BMenuField * fAudLang2Menu;
+ BPopUpMenu * fAudRatePopUp;
+ BMenuField * fAudRateMenu;
+ BPopUpMenu * fAudBitratePopUp;
+ BMenuField * fAudBitrateMenu;
+
+ BButton * fPictureButton;
+
+ BStatusBar * fProgressBar;
+ BCheckBox * fQueueCheck;
+ BButton * fAddButton;
+ BButton * fShowButton;
+ BButton * fPauseButton;
+ BButton * fRipButton;
+
+ BFilePanel * fFilePanel;
+ PicWindow * fPicWin;
+ QueueWindow * fQueueWin;
+};
+
+class MainWindow : public BWindow
+{
+ public:
+ MainWindow( hb_handle_t * handle );
+ void MessageReceived( BMessage * msg );
+ bool QuitRequested();
+
+ void Update( hb_state_t * s );
+
+ private:
+ MainView * fView;
+
+ hb_handle_t * fHandle;
+};
+
+#endif
diff --git a/beos/PicWindow.cpp b/beos/PicWindow.cpp
new file mode 100644
index 000000000..6b30f27c2
--- /dev/null
+++ b/beos/PicWindow.cpp
@@ -0,0 +1,369 @@
+#include <app/Application.h>
+#include <interface/Bitmap.h>
+#include <interface/Box.h>
+#include <interface/Button.h>
+#include <interface/CheckBox.h>
+#include <interface/RadioButton.h>
+#include <interface/Screen.h>
+#include <interface/StringView.h>
+
+#include "PicWindow.h"
+#include "Stepper.h"
+
+#define MSG_PREV 'prev'
+#define MSG_NEXT 'next'
+#define MSG_CLOSE 'clos'
+#define MSG_WIDTH 'widt'
+#define MSG_HEIGHT 'heig'
+#define MSG_RADIO 'radi'
+
+PicView::PicView( hb_handle_t * handle, int index )
+ : BView( BRect( 0,0,10,10 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW )
+{
+ fHandle = handle;
+
+ /* Get the title and the job */
+ hb_list_t * list;
+ list = hb_get_titles( fHandle );
+ fTitle = (hb_title_t *) hb_list_item( list, index );
+ fJob = fTitle->job;
+
+ /* We'll start with the first picture */
+ fIndex = 0;
+
+ /* Allocate a buffer large enough to call hb_get_preview() later */
+ fRawPic = (uint8_t *) malloc( ( fTitle->width + 2 ) *
+ ( fTitle->height + 2 ) * 4 );
+
+ /* Create the RGB BBitmap we'll use to display */
+ fBitmap = new BBitmap( BRect( 0, 0, fTitle->width + 1,
+ fTitle->height + 1 ), 0, B_RGB32 );
+
+ /* Now build the interface */
+ BRect r, b;
+ BBox * box;
+ BButton * button;
+ BStringView * stringView;
+
+ /* Resize ourselves so the picture fits just fine */
+ b = fBitmap->Bounds();
+ ResizeTo( b.Width()+170, b.Height()+65 );
+
+ /* Now build the UI around the BBitmap */
+ SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
+
+ /* "Size" box */
+ b = Bounds();
+ r = BRect( b.right-150,10,b.right-10,105 );
+ box = new BBox( r );
+ box->SetLabel( "Size" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ /* Width */
+ r = BRect( 10,15,b.right/2,35 );
+ stringView = new BStringView( r, NULL, "Width:" );
+ box->AddChild( stringView );
+ r = BRect( b.right/2+1,15,b.right-10,35 );
+ fWidthStepper = new HBStepper( r, 16, 16, fTitle->width,
+ fJob->width, new BMessage( MSG_WIDTH ) );
+ box->AddChild( fWidthStepper );
+
+ /* Height */
+ r = BRect( 10,40,b.right/2,60 );
+ stringView = new BStringView( r, NULL, "Height:" );
+ box->AddChild( stringView );
+ r = BRect( b.right/2+1,40,b.right-10,60 );
+ fHeightStepper = new HBStepper( r, 16, 16, fTitle->height,
+ fJob->height, new BMessage( MSG_HEIGHT ) );
+ box->AddChild( fHeightStepper );
+
+ /* Aspect ratio */
+ r = BRect( 10,65,b.right-10,85 );
+ fRatioCheck = new BCheckBox( r, NULL, "Keep aspect ratio",
+ new BMessage( MSG_WIDTH ) );
+ fRatioCheck->SetValue( fJob->keep_ratio );
+ box->AddChild( fRatioCheck );
+
+ /* "Crop" box */
+ b = Bounds();
+ r = BRect( b.right-150,115,b.right-10,260 );
+ box = new BBox( r );
+ box->SetLabel( "Crop" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ /* Automatic */
+ r = BRect( 10,15,b.right-10,35 );
+ fAutoRadio = new BRadioButton( r, NULL, "Automatic",
+ new BMessage( MSG_RADIO ) );
+ box->AddChild( fAutoRadio );
+
+ /* Custom */
+ r = BRect( 10,40,b.right-10,60 );
+ fCustomRadio = new BRadioButton( r, NULL, "Custom:",
+ new BMessage( MSG_RADIO ) );
+ box->AddChild( fCustomRadio );
+ float width = ( b.Width() - 30 ) / 2;
+ r = BRect( (b.right-width)/2,65,(b.right+width)/2,85 );
+ fCropSteppers[0] = new HBStepper( r, 2, 0, fTitle->height/2-2,
+ fJob->crop[0], new BMessage( MSG_WIDTH ) );
+ box->AddChild( fCropSteppers[0] );
+ r = BRect( (b.right-width)/2,115,(b.right+width)/2,135 );
+ fCropSteppers[1] = new HBStepper( r, 2, 0, fTitle->height/2-2,
+ fJob->crop[1], new BMessage( MSG_WIDTH ) );
+ box->AddChild( fCropSteppers[1] );
+ r = BRect( 10,90,10+width,110 );
+ fCropSteppers[2] = new HBStepper( r, 2, 0, fTitle->width/2-2,
+ fJob->crop[2], new BMessage( MSG_HEIGHT ) );
+ box->AddChild( fCropSteppers[2] );
+ r = BRect( width+20,90,b.right-10,110 );
+ fCropSteppers[3] = new HBStepper( r, 2, 0, fTitle->width/2-2,
+ fJob->crop[3], new BMessage( MSG_HEIGHT ) );
+ box->AddChild( fCropSteppers[3] );
+
+ if( memcmp( fTitle->crop, fJob->crop, 4 * sizeof( int ) ) )
+ {
+ fCustomRadio->SetValue( 1 );
+ }
+ else
+ {
+ fAutoRadio->SetValue( 1 );
+ }
+
+ /* "Misc" box */
+ b = Bounds();
+ r = BRect( b.right-150,270,b.right-10,315 );
+ box = new BBox( r );
+ box->SetLabel( "Misc" );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ /* Deinterlace */
+ r = BRect( 10,15,b.right-10,35 );
+ fDeintCheck = new BCheckBox( r, NULL, "Deinterlace picture",
+ new BMessage( MSG_WIDTH ) );
+ fDeintCheck->SetValue( fJob->deinterlace );
+ box->AddChild( fDeintCheck );
+
+ b = Bounds();
+
+ /* Next/Prev buttons */
+ r = BRect( b.right-90,325,b.right-10,350 );
+ fPrevButton = new BButton( r, NULL, "Previous",
+ new BMessage( MSG_PREV ) );
+ AddChild( fPrevButton );
+ r = BRect( b.right-90,355,b.right-10,380 );
+ fNextButton = new BButton( r, NULL, "Next",
+ new BMessage( MSG_NEXT ) );
+ AddChild( fNextButton );
+
+ /* Info string and OK button */
+ r = BRect( 10,b.bottom-30,b.right-100,b.bottom-10 );
+ fInfoString = new BStringView( r, NULL, "" );
+ AddChild( fInfoString );
+ r = BRect( b.right-90,b.bottom-35,b.right-10,b.bottom-10 );
+ button = new BButton( r, NULL, "OK", new BMessage( MSG_CLOSE ) );
+ AddChild( button );
+
+ /* Process and draw a first picture */
+ RadioChanged();
+ UpdateBitmap();
+}
+
+PicView::~PicView()
+{
+ free( fRawPic );
+ delete fBitmap;
+}
+
+/************************************************************************
+ * PicView::Draw
+ ************************************************************************
+ * Calls the inherited BView::Draw, plus draws the BBitmap preview
+ * and the horizontal line above the info string and OK button
+ ***********************************************************************/
+void PicView::Draw( BRect rect )
+{
+ BRect b;
+
+ BView::Draw( rect );
+
+ if( LockLooper() )
+ {
+ b = fBitmap->Bounds();
+ DrawBitmap( fBitmap, BRect( 10,10,b.Width()+10,b.Height()+10 ) );
+ UnlockLooper();
+ }
+
+ b = Bounds();
+ SetHighColor( 128,128,128 );
+ StrokeLine( BPoint( 10,b.bottom-45 ), BPoint( b.right-10,b.bottom-45 ) );
+ SetHighColor( 255,255,255 );
+ StrokeLine( BPoint( 10,b.bottom-44 ), BPoint( b.right-10,b.bottom-44 ) );
+}
+
+void PicView::HandleMessage( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_PREV:
+ fIndex--;
+ UpdateBitmap();
+ break;
+
+ case MSG_NEXT:
+ fIndex++;
+ UpdateBitmap();
+ break;
+
+ case MSG_WIDTH:
+ case MSG_HEIGHT:
+ UpdateSettings( msg->what );
+ UpdateBitmap();
+ break;
+
+ case MSG_RADIO:
+ RadioChanged();
+ break;
+
+ }
+}
+
+void PicView::RadioChanged()
+{
+ int cus = fCustomRadio->Value();
+ for( int i = 0; i < 4; i++ )
+ {
+ fCropSteppers[i]->SetEnabled( cus );
+ }
+ if( !cus )
+ {
+ memcpy( fJob->crop, fTitle->crop, 4 * sizeof( int ) );
+ for( int i = 0; i < 4; i++ )
+ {
+ fCropSteppers[i]->SetValue( fJob->crop[i] );
+ }
+ UpdateSettings( MSG_WIDTH );
+ UpdateBitmap();
+ }
+}
+
+void PicView::UpdateSettings( uint32 what )
+{
+ fJob->width = fWidthStepper->Value();
+ fJob->height = fHeightStepper->Value();
+ fJob->keep_ratio = fRatioCheck->Value();
+ fJob->deinterlace = fDeintCheck->Value();
+ for( int i = 0; i < 4; i++ )
+ {
+ fJob->crop[i] = fCropSteppers[i]->Value();
+ }
+
+ if( fJob->keep_ratio )
+ {
+ if( what == MSG_WIDTH )
+ {
+ hb_fix_aspect( fJob, HB_KEEP_WIDTH );
+ if( fJob->height > fTitle->height )
+ {
+ fJob->height = fTitle->height;
+ hb_fix_aspect( fJob, HB_KEEP_HEIGHT );
+ }
+ }
+ else
+ {
+ hb_fix_aspect( fJob, HB_KEEP_HEIGHT );
+ if( fJob->width > fTitle->width )
+ {
+ fJob->width = fTitle->width;
+ hb_fix_aspect( fJob, HB_KEEP_WIDTH );
+ }
+ }
+ }
+
+ fWidthStepper->SetValue( fJob->width );
+ fHeightStepper->SetValue( fJob->height );
+}
+
+void PicView::UpdateBitmap()
+{
+ /* Sanity checks */
+ if( fIndex < 0 )
+ {
+ fIndex = 0;
+ return;
+ }
+ if( fIndex > 9 )
+ {
+ fIndex = 9;
+ return;
+ }
+
+ /* Enable/disable buttons */
+ fPrevButton->SetEnabled( fIndex > 0 );
+ fNextButton->SetEnabled( fIndex < 9 );
+
+ /* Get new preview and copy it in our BBitmap */
+ hb_get_preview( fHandle, fTitle, fIndex, fRawPic );
+ for( int i = 0; i < fTitle->height + 2; i++ )
+ {
+ memcpy( ( (uint8_t *) fBitmap->Bits() ) +
+ i * fBitmap->BytesPerRow(),
+ fRawPic + 4 * ( fTitle->width + 2 ) * i,
+ 4 * ( fTitle->width + 2 ) );
+ }
+
+ /* Update size info */
+ char text[1024];
+ snprintf( text, 1024, "Source: %dx%d, output: %dx%d",
+ fTitle->width, fTitle->height,
+ fJob->width, fJob->height );
+ fInfoString->SetText( text );
+
+ /* Force redraw */
+ Draw( Bounds() );
+}
+
+PicWindow::PicWindow( hb_handle_t * handle, int index )
+ : BWindow( BRect( 0,0,10,10 ), "Picture settings",
+ B_FLOATING_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
+ B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_NOT_ZOOMABLE )
+{
+ /* Add the PicView */
+ fView = new PicView( handle, index );
+ AddChild( fView );
+
+ /* Resize to fit */
+ ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() );
+
+ /* Center */
+ BScreen screen;
+ MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2,
+ ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 );
+}
+
+void PicWindow::MessageReceived( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_PREV:
+ case MSG_NEXT:
+ case MSG_WIDTH:
+ case MSG_HEIGHT:
+ case MSG_RADIO:
+ fView->HandleMessage( msg );
+ break;
+
+ case MSG_CLOSE:
+ Lock();
+ Quit();
+ break;
+
+ default:
+ BWindow::MessageReceived( msg );
+ }
+}
diff --git a/beos/PicWindow.h b/beos/PicWindow.h
new file mode 100644
index 000000000..9fe5d3131
--- /dev/null
+++ b/beos/PicWindow.h
@@ -0,0 +1,54 @@
+#ifndef PICWINDOW_H
+#define PICWINDOW_H
+
+#include <interface/Window.h>
+#include <interface/View.h>
+
+#include "hb.h"
+
+class HBStepper;
+
+class PicView : public BView
+{
+ public:
+ PicView( hb_handle_t * handle, int index );
+ ~PicView();
+ void Draw( BRect rect );
+
+ void HandleMessage( BMessage * msg );
+
+ private:
+ void UpdateBitmap();
+ void RadioChanged();
+ void UpdateSettings( uint32 what );
+
+ hb_handle_t * fHandle;
+ hb_title_t * fTitle;
+ hb_job_t * fJob;
+ int fIndex;
+ uint8_t * fRawPic;
+ BBitmap * fBitmap;
+
+ HBStepper * fWidthStepper;
+ HBStepper * fHeightStepper;
+ BCheckBox * fRatioCheck;
+ BRadioButton * fAutoRadio;
+ BRadioButton * fCustomRadio;
+ HBStepper * fCropSteppers[4];
+ BCheckBox * fDeintCheck;
+ BButton * fPrevButton;
+ BButton * fNextButton;
+ BStringView * fInfoString;
+};
+
+class PicWindow : public BWindow
+{
+ public:
+ PicWindow( hb_handle_t * handle, int index );
+ void MessageReceived( BMessage * msg );
+
+ private:
+ PicView * fView;
+};
+
+#endif
diff --git a/beos/QueueWindow.cpp b/beos/QueueWindow.cpp
new file mode 100644
index 000000000..2b0319e32
--- /dev/null
+++ b/beos/QueueWindow.cpp
@@ -0,0 +1,132 @@
+#include <app/Message.h>
+#include <interface/Button.h>
+#include <interface/Screen.h>
+#include <interface/ScrollView.h>
+#include <interface/StringView.h>
+
+#include "QueueWindow.h"
+
+#define MSG_REMOVE 'remo'
+#define MSG_CLOSE 'clos'
+
+QueueView::QueueView( hb_handle_t * handle )
+ : BView( BRect( 0,0,500,300 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW )
+{
+ fHandle = handle;
+
+ BRect b = Bounds(), r;
+
+ r = BRect( b.right-90,b.bottom-35,b.right-10,b.bottom-10 );
+ BButton * button = new BButton( r, NULL, "Close", new BMessage( MSG_CLOSE ) );
+ AddChild( button );
+
+ fScrollView = NULL;
+ UpdateQueue();
+}
+
+QueueView::~QueueView()
+{
+}
+
+void QueueView::HandleMessage( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_REMOVE:
+ break;
+ }
+}
+
+void QueueView::AddStringView( char * string, BRect * r )
+{
+ BStringView * stringView;
+
+ stringView = new BStringView( *r, NULL, string );
+ fQueueView->AddChild( stringView );
+ free( string );
+
+ r->top += 20;
+ r->bottom += 20;
+}
+
+void QueueView::UpdateQueue()
+{
+ BRect b = Bounds(), r;
+
+ if( fScrollView )
+ {
+ RemoveChild( fScrollView );
+ delete fScrollView;
+ }
+
+ r = BRect( b.left+10,b.top+10,b.right-B_V_SCROLL_BAR_WIDTH-10,b.bottom-45 );
+ fQueueView = new BView( r, NULL, B_FOLLOW_NONE, B_WILL_DRAW );
+ fScrollView = new BScrollView( NULL, fQueueView, B_FOLLOW_NONE, 0,
+ false, true, B_FANCY_BORDER );
+ AddChild( fScrollView );
+
+ hb_job_t * j;
+ hb_title_t * t;
+ int i;
+ char * s;
+
+ b = fQueueView->Bounds();
+ r = BRect( b.left+10,b.top+10,b.right-10,b.top+25 );
+
+ for( i = 0; i < hb_count( fHandle ); i++ )
+ {
+ j = hb_job( fHandle, i );
+ t = j->title;
+
+ asprintf( &s, "DVD: %s", t->dvd );
+ AddStringView( s, &r );
+
+ asprintf( &s, "Title: %d", t->index );
+ AddStringView( s, &r );
+
+ asprintf( &s, "Chapters: %d to %d", j->chapter_start, j->chapter_end );
+ AddStringView( s, &r );
+
+ asprintf( &s, "Pass: %d of %d", MAX( 1, j->pass ), MIN( 2, j->pass + 1 ) );
+ AddStringView( s, &r );
+
+ asprintf( &s, "Destination: %s", j->file );
+ AddStringView( s, &r );
+ }
+}
+
+QueueWindow::QueueWindow( hb_handle_t * handle )
+ : BWindow( BRect( 0,0,10,10 ), "Queue",
+ B_FLOATING_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
+ B_NOT_CLOSABLE | B_NOT_RESIZABLE | B_NOT_ZOOMABLE )
+{
+ /* Add the QueueView */
+ fView = new QueueView( handle );
+ AddChild( fView );
+
+ /* Resize to fit */
+ ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() );
+
+ /* Center */
+ BScreen screen;
+ MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2,
+ ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 );
+}
+
+void QueueWindow::MessageReceived( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_REMOVE:
+ fView->HandleMessage( msg );
+ break;
+
+ case MSG_CLOSE:
+ Lock();
+ Quit();
+ break;
+
+ default:
+ BWindow::MessageReceived( msg );
+ }
+}
diff --git a/beos/QueueWindow.h b/beos/QueueWindow.h
new file mode 100644
index 000000000..e9b86e3a7
--- /dev/null
+++ b/beos/QueueWindow.h
@@ -0,0 +1,38 @@
+#ifndef QUEUE_WINDOW_H
+#define QUEUE_WINDOW_H
+
+#include <interface/Window.h>
+#include <interface/View.h>
+
+#include "hb.h"
+
+class QueueView : public BView
+{
+ public:
+ QueueView( hb_handle_t * handle );
+ ~QueueView();
+
+ void HandleMessage( BMessage * msg );
+
+ private:
+ void AddStringView( char * string, BRect * r );
+ void UpdateQueue();
+
+ hb_handle_t * fHandle;
+
+ BScrollView * fScrollView;
+ BView * fQueueView;
+ BButton * fCloseButton;
+};
+
+class QueueWindow : public BWindow
+{
+ public:
+ QueueWindow( hb_handle_t * handle );
+ void MessageReceived( BMessage * msg );
+
+ private:
+ QueueView * fView;
+};
+
+#endif
diff --git a/beos/ScanWindow.cpp b/beos/ScanWindow.cpp
new file mode 100644
index 000000000..615731f11
--- /dev/null
+++ b/beos/ScanWindow.cpp
@@ -0,0 +1,320 @@
+#include <drivers/Drivers.h>
+#include <interface/Box.h>
+#include <interface/Button.h>
+#include <interface/MenuField.h>
+#include <interface/MenuItem.h>
+#include <interface/PopUpMenu.h>
+#include <interface/RadioButton.h>
+#include <interface/Screen.h>
+#include <interface/StatusBar.h>
+#include <interface/StringView.h>
+#include <interface/TextControl.h>
+#include <kernel/fs_info.h>
+#include <storage/FilePanel.h>
+#include <storage/Path.h>
+#include <storage/Query.h>
+#include <storage/VolumeRoster.h>
+#include <sys/ioctl.h>
+
+#include "ScanWindow.h"
+
+#define MSG_RADIO 'radi'
+#define MSG_BROWSE 'brow'
+#define MSG_CANCEL 'canc'
+#define MSG_OPEN 'open'
+
+ScanView::ScanView( hb_handle_t * handle )
+ : BView( BRect( 0,0,400,215 ), NULL, B_FOLLOW_NONE, B_WILL_DRAW )
+{
+ fHandle = handle;
+
+ BRect r, b;
+ BBox * box;
+ BStringView * stringView;
+
+ SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
+
+ b = Bounds();
+
+ r = BRect( 10,10,b.right-10,130 );
+ box = new BBox( r );
+ AddChild( box );
+
+ b = box->Bounds();
+
+ r = BRect( 10,10,b.right-10,30 );
+ stringView = new BStringView( r, NULL, "Select a DVD:" );
+ box->AddChild( stringView );
+
+ r = BRect( 10,35,b.right/2,55 );
+ fDetectedRadio = new BRadioButton( r, NULL, "Detected volume",
+ new BMessage( MSG_RADIO ) );
+ box->AddChild( fDetectedRadio );
+
+ r = BRect( b.right/2+1,35,b.right-10,55 );
+ fPopUp = new BPopUpMenu( "No volume detected" );
+ fMenu = new BMenuField( r, NULL, "", fPopUp, true );
+ fMenu->SetDivider( 0 );
+ box->AddChild( fMenu );
+
+ r = BRect( 10,60,b.right/2,80 );
+ fFolderRadio = new BRadioButton( r, NULL, "DVD Folder / Image",
+ new BMessage( MSG_RADIO ) );
+ box->AddChild( fFolderRadio );
+
+ r = BRect( b.right/2+1,60,b.right-10,80 );
+ fControl = new BTextControl( r, NULL, "", "", new BMessage() );
+ fControl->SetDivider( 0 );
+ box->AddChild( fControl );
+
+ r = BRect( b.right-90,85,b.right-10,110 );
+ fBrowseButton = new BButton( r, NULL, "Browse",
+ new BMessage( MSG_BROWSE ) );
+ box->AddChild( fBrowseButton );
+
+ b = Bounds();
+
+ r = BRect( 10,b.bottom-75,b.right-10,b.bottom-45 );
+ fBar = new BStatusBar( r, NULL, NULL, NULL );
+ AddChild( fBar );
+
+ r = BRect( b.right-180,b.bottom-35,b.right-100,b.bottom-10 );
+ fCancelButton = new BButton( r, NULL, "Cancel",
+ new BMessage( MSG_CANCEL ) );
+ AddChild( fCancelButton );
+
+ r = BRect( b.right-90,b.bottom-35,b.right-10,b.bottom-10 );
+ fOpenButton = new BButton( r, NULL, "Open", new BMessage( MSG_OPEN ) );
+ AddChild( fOpenButton );
+
+ DetectVolumes();
+
+ if( fPopUp->CountItems() > 0 )
+ {
+ fDetectedRadio->SetValue( true );
+ }
+ else
+ {
+ fFolderRadio->SetValue( true );
+ }
+ RadioChanged();
+
+ fFilePanel = NULL;
+}
+
+void ScanView::HandleMessage( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_RADIO:
+ RadioChanged();
+ break;
+
+ case MSG_BROWSE:
+ if( !fFilePanel )
+ {
+ fFilePanel = new BFilePanel( B_OPEN_PANEL,
+ new BMessenger( Window() ), NULL,
+ B_FILE_NODE | B_DIRECTORY_NODE, false, NULL, NULL,
+ true );
+ }
+ fFilePanel->Show();
+ break;
+
+ case B_REFS_RECEIVED:
+ {
+ entry_ref ref;
+ if( msg->FindRef( "refs", 0, &ref ) == B_OK )
+ {
+ BPath * path = new BPath( &ref );
+ fControl->SetText( path->Path());
+ }
+ break;
+ }
+
+ case MSG_CANCEL:
+ Window()->Hide();
+ break;
+
+ case MSG_OPEN:
+ SetEnabled( false );
+ fBar->Update( - fBar->CurrentValue(), "Opening..." );
+ if( fDetectedRadio->Value() && fPopUp->CountItems() > 0 )
+ {
+ hb_scan( fHandle, fPopUp->FindMarked()->Label(), 0 );
+ }
+ else if( fFolderRadio->Value() )
+ {
+ hb_scan( fHandle, fControl->Text(), 0 );
+ }
+ break;
+ }
+}
+
+void ScanView::Update( hb_state_t * s )
+{
+ if( !LockLooper() )
+ {
+ return;
+ }
+
+ switch( s->state )
+ {
+#define p s->param.scanning
+ case HB_STATE_SCANNING:
+ {
+ char text[1024];
+ snprintf( text, 1024, "Scanning title %d of %d...", p.title_cur,
+ p.title_count );
+ fBar->Update( fBar->MaxValue() * ( - 0.5 + p.title_cur ) /
+ p.title_count - fBar->CurrentValue(), text );
+ break;
+ }
+#undef p
+
+ case HB_STATE_SCANDONE:
+ /* If we are still here, then no title was found */
+ fBar->Update( - fBar->CurrentValue(),
+ "No valid title found." );
+ SetEnabled( true );
+ break;
+ }
+
+ UnlockLooper();
+}
+
+void ScanView::RadioChanged()
+{
+ bool b = fDetectedRadio->Value();
+ fMenu->SetEnabled( b );
+ fControl->SetEnabled( !b );
+ fBrowseButton->SetEnabled( !b );
+ fOpenButton->SetEnabled( !b || ( fPopUp->CountItems() > 0 ) );
+}
+
+void ScanView::SetEnabled( bool b )
+{
+ fDetectedRadio->SetEnabled( b );
+ fMenu->SetEnabled( b );
+ fFolderRadio->SetEnabled( b );
+ fControl->SetEnabled( b );
+ fBrowseButton->SetEnabled( b );
+ fOpenButton->SetEnabled( b );
+
+ if( b )
+ {
+ RadioChanged();
+ }
+}
+
+void ScanView::DetectVolumes()
+{
+ BVolumeRoster * roster = new BVolumeRoster();
+ BVolume * volume = new BVolume();
+ fs_info info;
+ int device;
+ device_geometry geometry;
+
+ while( roster->GetNextVolume( volume ) == B_NO_ERROR )
+ {
+ /* open() and ioctl() for more informations */
+ fs_stat_dev( volume->Device(), &info );
+ if( ( device = open( info.device_name, O_RDONLY ) ) < 0 )
+ {
+ continue;
+ }
+
+ if( ioctl( device, B_GET_GEOMETRY, &geometry,
+ sizeof( geometry ) ) < 0 )
+ {
+ continue;
+ }
+
+ /* Get the volume name */
+ char volumeName[B_FILE_NAME_LENGTH];
+ volume->GetName( volumeName );
+
+ if( volume->IsReadOnly() && geometry.device_type == B_CD )
+ {
+ /* May be a DVD */
+ fPopUp->AddItem( new BMenuItem( info.device_name, NULL ) );
+ }
+ else if( geometry.device_type == B_DISK )
+ {
+ /* May be a hard drive. Look for VIDEO_TS folders on it */
+ BQuery * query = new BQuery();
+
+ if( query->SetVolume( volume ) != B_OK )
+ {
+ delete query;
+ continue;
+ }
+
+ if( query->SetPredicate( "name = VIDEO_TS.IFO" ) != B_OK )
+ {
+ delete query;
+ continue;
+ }
+
+ query->Fetch();
+
+ BEntry entry, parentEntry;
+ BPath path;
+ while( query->GetNextEntry( &entry ) == B_OK )
+ {
+ entry.GetParent( &parentEntry );
+ parentEntry.GetPath( &path );
+
+ fPopUp->AddItem( new BMenuItem( path.Path(), NULL ) );
+ }
+
+ delete query;
+ }
+ }
+
+ if( fPopUp->CountItems() > 0 )
+ {
+ fPopUp->ItemAt( 0 )->SetMarked( true );
+ }
+}
+
+ScanWindow::ScanWindow( hb_handle_t * handle )
+ : BWindow( BRect( 0,0,10,10 ), "Scan", B_FLOATING_WINDOW_LOOK,
+ B_MODAL_SUBSET_WINDOW_FEEL, B_NOT_CLOSABLE |
+ B_NOT_RESIZABLE | B_NOT_ZOOMABLE )
+{
+ /* Add the scan view */
+ fView = new ScanView( handle );
+ AddChild( fView );
+
+ /* Resize to fit */
+ ResizeTo( fView->Bounds().Width(), fView->Bounds().Height() );
+
+ /* Center */
+ BScreen screen;
+ MoveTo( ( screen.Frame().Width() - fView->Bounds().Width() ) / 2,
+ ( screen.Frame().Height() - fView->Bounds().Height() ) / 2 );
+}
+
+void ScanWindow::MessageReceived( BMessage * msg )
+{
+ switch( msg->what )
+ {
+ case MSG_RADIO:
+ case MSG_BROWSE:
+ case MSG_CANCEL:
+ case MSG_OPEN:
+ case B_REFS_RECEIVED:
+ fView->HandleMessage( msg );
+ break;
+
+ default:
+ BWindow::MessageReceived( msg );
+ }
+}
+
+void ScanWindow::Update( hb_state_t * s )
+{
+ fView->Update( s );
+}
+
diff --git a/beos/ScanWindow.h b/beos/ScanWindow.h
new file mode 100644
index 000000000..f46c1c14f
--- /dev/null
+++ b/beos/ScanWindow.h
@@ -0,0 +1,56 @@
+#ifndef SCANWINDOW_H
+#define SCANWINDOW_H
+
+#include <interface/Window.h>
+#include <interface/View.h>
+
+#include "hb.h"
+
+class BButton;
+class BMenuField;
+class BPopUpMenu;
+class BRadioButton;
+class BStatusBar;
+class BTextControl;
+
+class ScanView : public BView
+{
+ public:
+ ScanView( hb_handle_t * handle );
+
+ void HandleMessage( BMessage * msg );
+ void Update( hb_state_t * s );
+ void RadioChanged();
+ void SetEnabled( bool );
+
+ private:
+ void DetectVolumes();
+
+ hb_handle_t * fHandle;
+
+ BRadioButton * fDetectedRadio;
+ BPopUpMenu * fPopUp;
+ BMenuField * fMenu;
+ BRadioButton * fFolderRadio;
+ BTextControl * fControl;
+ BButton * fBrowseButton;
+ BStatusBar * fBar;
+ BButton * fCancelButton;
+ BButton * fOpenButton;
+
+ BFilePanel * fFilePanel;
+};
+
+class ScanWindow : public BWindow
+{
+ public:
+ ScanWindow( hb_handle_t * handle );
+ void MessageReceived( BMessage * msg );
+
+ void Update( hb_state_t * s );
+
+ private:
+ ScanView * fView;
+};
+
+#endif
diff --git a/beos/Stepper.cpp b/beos/Stepper.cpp
new file mode 100644
index 000000000..8f2733ac5
--- /dev/null
+++ b/beos/Stepper.cpp
@@ -0,0 +1,130 @@
+#include <interface/Region.h>
+#include <interface/TextControl.h>
+#include <interface/Window.h>
+
+#include "Stepper.h"
+
+#include <stdio.h>
+
+HBStepper::HBStepper( BRect rect, int step, int min, int max, int val,
+ BMessage * message )
+ : BView( rect, NULL, B_FOLLOW_NONE, B_WILL_DRAW )
+{
+ fStep = step;
+ fMin = min;
+ fMax = max;
+ fMessage = message;
+
+ BRect b = Bounds();
+
+ fEnabled = true;
+
+ fControl = new BTextControl( BRect( 0,1,b.Width()-14,b.Height()-1 ),
+ NULL, NULL, "", new BMessage() );
+ fControl->SetDivider( 0.0 );
+ fControl->TextView()->MakeEditable( false );
+ AddChild( fControl );
+
+ SetValue( val );
+}
+
+void HBStepper::Draw( BRect rect )
+{
+ /* Why do we have to do this here!? */
+ fControl->TextView()->MakeEditable( false );
+ fControl->TextView()->MakeSelectable( false );
+
+ BRect b = Bounds();
+ BRegion region;
+
+ SetHighColor( 128,128,128 ); /* Dark gray */
+ region.MakeEmpty();
+ region.Include( BRect( 3, 0,10, 0 ) );
+ region.Include( BRect( 2, 1, 3, 1 ) );
+ region.Include( BRect( 10, 1,11, 1 ) );
+ region.Include( BRect( 1, 2, 2, 2 ) );
+ region.Include( BRect( 11, 2,12, 2 ) );
+ region.Include( BRect( 1, 2, 1,18 ) );
+ region.Include( BRect( 1,10,12,10 ) );
+ region.Include( BRect( 12, 2,12,18 ) );
+ region.Include( BRect( 1,18, 2,18 ) );
+ region.Include( BRect( 11,18,12,18 ) );
+ region.Include( BRect( 2,19, 3,19 ) );
+ region.Include( BRect( 10,19,11,19 ) );
+ region.Include( BRect( 3,20,10,20 ) );
+ region.OffsetBy( b.Width()-12,0 );
+ FillRegion( &region );
+
+ SetHighColor( 0,0,0 ); /* Black */
+ region.MakeEmpty();
+ region.Include( BRect( 6, 4, 7, 4 ) );
+ region.Include( BRect( 5, 5, 8, 6 ) );
+ region.Include( BRect( 5,14, 8,15 ) );
+ region.Include( BRect( 6,16, 7,16 ) );
+ region.OffsetBy( b.Width()-12,0 );
+ FillRegion( &region );
+
+ BView::Draw( rect );
+}
+
+void HBStepper::AttachedToWindow()
+{
+ if( Parent() )
+ {
+ SetViewColor( Parent()->ViewColor() );
+ }
+}
+
+void HBStepper::MouseDown( BPoint point )
+{
+ BRect r, b = Bounds();
+
+ if( !fEnabled )
+ {
+ return;
+ }
+
+ BMessenger messenger( Window() );
+
+ r = BRect( 2,1,11,9 );
+ r.OffsetBy( b.Width()-12,0 );
+ if( r.Contains( point ) )
+ {
+ SetValue( fValue + fStep );
+ messenger.SendMessage( fMessage );
+ }
+ r.OffsetBy( 0,10 );
+ if( r.Contains( point ) )
+ {
+ SetValue( fValue - fStep );
+ messenger.SendMessage( fMessage );
+ }
+}
+
+void HBStepper::SetValue( int val )
+{
+ fValue = val;
+ if( fValue < fMin )
+ {
+ fValue = fMin;
+ }
+ if( fValue > fMax )
+ {
+ fValue = fMax;
+ }
+
+ char text[16];
+ snprintf( text, 16, "%d", fValue );
+ fControl->SetText( text );
+}
+
+int HBStepper::Value()
+{
+ return fValue;
+}
+
+void HBStepper::SetEnabled( bool e )
+{
+ fEnabled = e;
+ fControl->SetEnabled( fEnabled );
+}
diff --git a/beos/Stepper.h b/beos/Stepper.h
new file mode 100644
index 000000000..2b0493f6e
--- /dev/null
+++ b/beos/Stepper.h
@@ -0,0 +1,31 @@
+#ifndef STEPPER_H
+#define STEPPER_H
+
+#include <interface/View.h>
+
+class BTextControl;
+
+class HBStepper : public BView
+{
+ public:
+ HBStepper( BRect rect, int step, int min, int max, int val,
+ BMessage * message );
+ void Draw( BRect rect );
+ void AttachedToWindow();
+ void MouseDown( BPoint point );
+ void SetValue( int val );
+ int Value();
+ void SetEnabled( bool e );
+
+ private:
+ int fStep;
+ int fMin;
+ int fMax;
+ int fValue;
+ BMessage * fMessage;
+
+ bool fEnabled;
+ BTextControl * fControl;
+};
+
+#endif
diff --git a/beos/liblayout/HGroup.h b/beos/liblayout/HGroup.h
deleted file mode 100644
index 9eee83fea..000000000
--- a/beos/liblayout/HGroup.h
+++ /dev/null
@@ -1,40 +0,0 @@
-
-#ifndef _HGROUP_H
-#define _HGROUP_H
-#include "MGroup.h"
-#include <View.h>
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT HGroup : public MGroup, public BView
-{
- public: HGroup(minimax mpm,MView *kid=0, ...);
- HGroup(MView *kid=0, ...);
- HGroup(BMessage*);
- virtual ~HGroup();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void MouseDown(BPoint);
-
- private: virtual void _expansionhgroup1();
- virtual void _expansionhgroup2();
- virtual void _expansionhgroup3();
-
- static int cmpkids(const void* v1,const void *v2);
- int *size;
- float totalweight;
- int numkids;
- sortstruct *childorder;
- MView **mkid;
- float totalminx,totalmaxx;
- BRect *lastrect;
-
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/LayeredGroup.h b/beos/liblayout/LayeredGroup.h
deleted file mode 100644
index 61264ca36..000000000
--- a/beos/liblayout/LayeredGroup.h
+++ /dev/null
@@ -1,37 +0,0 @@
-
-#ifndef _LAYEREDGROUP_H
-#define _LAYEREDGROUP_H
-
-#include "MGroup.h"
-#include <Control.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT LayeredGroup : public MGroup, public BControl
-{
- public: LayeredGroup(minimax mpm,MView *arg=0, ...);
- LayeredGroup(MView *arg=0, ...);
- LayeredGroup(BMessage*);
- virtual ~LayeredGroup();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- void ActivateLayer(int);
- virtual void MessageReceived(BMessage *mes);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: virtual void _expansionlayeredgroup1();
- virtual void _expansionlayeredgroup2();
-
- int numkids;
- int activekid;
-
- uint32 _expansiondata[3];
-};
-
-
-#endif
diff --git a/beos/liblayout/MApplication.h b/beos/liblayout/MApplication.h
deleted file mode 100644
index acdd13214..000000000
--- a/beos/liblayout/MApplication.h
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#ifndef _MAPPLICATION_H
-#define _MAPPLICATION_H
-
-#include "layout.h"
-#include <Application.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MApplication : public BApplication
-{
- public: MApplication(char *);
- MApplication(BMessage*);
- virtual ~MApplication();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual void MessageReceived(BMessage*);
-
- virtual status_t GetSupportedSuites(BMessage *message);
- virtual BHandler *ResolveSpecifier(BMessage *message, int32 index, BMessage *specifier, int32 command, const char *property);
-
- private:
- virtual void _expansionmapplication1();
- virtual void _expansionmapplication2();
- uint32 _expansiondata[4];
-};
-#endif
diff --git a/beos/liblayout/MBViewWrapper.h b/beos/liblayout/MBViewWrapper.h
deleted file mode 100644
index 351dfb800..000000000
--- a/beos/liblayout/MBViewWrapper.h
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef _MBVIEWWRAPPER_H
-#define _MBVIEWWRAPPER_H
-#include "layout.h"
-#include <View.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MBViewWrapper : public MView, public BView
-{
- public: MBViewWrapper(BView *view, bool usepreferred=true, bool x_fixed=true, bool y_fixed=true);
- MBViewWrapper(BMessage*);
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual ~MBViewWrapper();
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: virtual void _expansionmbviewwrapper1();
-
- BView *childview;
-
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/MBorder.h b/beos/liblayout/MBorder.h
deleted file mode 100644
index 4e925ec2d..000000000
--- a/beos/liblayout/MBorder.h
+++ /dev/null
@@ -1,68 +0,0 @@
-
-#ifndef _MBORDER_H
-#define _MBORDER_H
-#include "MGroup.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MBorder : public MGroup, public BView
-{
- public:
- enum {
- ROTATE_REVERSE=(int)0x80000000
- };
-
- MBorder(ulong border_type,ulong spacing,char *name=NULL,MView *kid=NULL);
- MBorder(BMessage*);
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- ~MBorder();
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void Draw(BRect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void FrameResized(float width, float height);
- void DrawBorder();
- void SetLabel(char *);
- char *Label();
- void SetHighlight(int);
- void SetHighlightColors(rgb_color color1, rgb_color color2, rgb_color color3);
-
- private:
- virtual void _expansionmborder1();
- virtual void _expansionmborder2();
-
- static long _cycler(void *arg);
- void Cycler();
- int highlightmode;
- thread_id cycler;
-
- ulong bordertype;
- ulong extraspacing;
- ulong extralabelspacing;
- char *label;
- char *truncatedlabel;
-
- rgb_color *highlightcolors;
-
- uint32 _expansiondata[1];
-};
-
-
-enum
-{
- M_NO_BORDER,
- M_RAISED_BORDER,
- M_DEPRESSED_BORDER,
- M_LABELED_BORDER,
- M_ETCHED_BORDER
-};
-
-enum
-{
- M_SHOW_FULL_LABEL= 0x00000100
-};
-#endif
diff --git a/beos/liblayout/MButton.h b/beos/liblayout/MButton.h
deleted file mode 100644
index 64cd3e32b..000000000
--- a/beos/liblayout/MButton.h
+++ /dev/null
@@ -1,53 +0,0 @@
-
-#ifndef _MBUTTON
-#define _MBUTTON
-#include "layout.h"
-#include <Button.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MButton : public MView, public BButton
-{
- public: ulong ID;
-
- MButton(const char *label, ulong id=0,minimax size=minimax(-1,-1,1E6,1E6,1));
- MButton(const char *label, BMessage *message, BHandler *handler=NULL, minimax size=minimax(-1,-1,1E6,1E6,1));
- MButton(BMessage*);
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual ~MButton();
- void SetRepeat(ulong initial_delay, ulong repeat_delay);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void setcolor(rgb_color, bool);
-
- virtual void Draw(BRect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- virtual void MouseDown(BPoint);
-
- private: static long _mousetracker(void *arg);
- void _MouseTracker();
- thread_id mousethread;
- BHandler *target;
- int64 lastwhen;
- ulong initialdelay;
- ulong repeatdelay;
- void initobject();
- ulong buttonmask;
-
- uint32 _expansiondata[2];
-};
-
-extern const IMPEXPLIBLAYOUT char M_BUTTON_POINTER[];
-extern const IMPEXPLIBLAYOUT char M_BUTTON_ID[];
-extern const IMPEXPLIBLAYOUT char M_BUTTON_MASK[];
-extern const IMPEXPLIBLAYOUT char M_DOUBLECLICK[];
-extern const IMPEXPLIBLAYOUT char M_REPEAT[];
-extern const IMPEXPLIBLAYOUT char M_RELEASE[];
-
-#endif
diff --git a/beos/liblayout/MCheckBox.h b/beos/liblayout/MCheckBox.h
deleted file mode 100644
index 7b39abda2..000000000
--- a/beos/liblayout/MCheckBox.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef _MCHECKBOX
-#define _MCHECKBOX
-#include "layout.h"
-#include <CheckBox.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MCheckBox : public MView, public BCheckBox
-{
- public: MCheckBox(const char *label,ulong id=0, bool state=false);
- MCheckBox(const char *label, BMessage *message, BHandler *handler=NULL, bool state=false);
- MCheckBox(BMessage*);
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual ~MCheckBox();
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
-
- private: BHandler *target;
- uint32 _expansiondata[2];
-};
-
-extern const IMPEXPLIBLAYOUT char M_CHECKBOX_POINTER[];
-extern const IMPEXPLIBLAYOUT char M_CHECKBOX_ID[];
-
-#endif
diff --git a/beos/liblayout/MDividable.h b/beos/liblayout/MDividable.h
deleted file mode 100644
index 800772b88..000000000
--- a/beos/liblayout/MDividable.h
+++ /dev/null
@@ -1,35 +0,0 @@
-
-// Abstract base class for an object that can be 'divided'.
-// Currently this includes MTextControl and MPopup.
-// The dividable class, and the global function below, is
-// used to align the left half (the label) and the right
-// half (data-entry/selection) of a group of MDividable's
-
-#ifndef _MDIVIDABLE_H
-#define _MDIVIDABLE_H
-
-#include "layout.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MDividable
-{
- public:
- float labelwidth;
- MDividable *rolemodel;
-
- public:
- MDividable();
-// work around my own bug...
-#ifdef BUILDING_LIBLAYOUT
- ~MDividable();
-#endif
- void DivideSameAs(MDividable *);
- virtual float LabelWidth();
-};
-
-extern void IMPEXPLIBLAYOUT DivideSame(MView *, MView *, ...);
-
-#endif
diff --git a/beos/liblayout/MDragBar.h b/beos/liblayout/MDragBar.h
deleted file mode 100644
index e345668c4..000000000
--- a/beos/liblayout/MDragBar.h
+++ /dev/null
@@ -1,38 +0,0 @@
-
-#ifndef _MDRAGBAR_H
-#define _MDRAGBAR_H
-#include "layout.h"
-#include <Control.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MDragBar : public MView, public BControl
-{
- public: MDragBar(minimax size=minimax(1,1,1E6,1E6));
- MDragBar(BMessage*);
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual ~MDragBar();
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void AttachedToWindow();
- virtual void Draw(BRect rect);
- virtual void KeyDown(const char *bytes, int32 numbytes);
- virtual void DetachedFromWindow();
- virtual void MouseDown(BPoint);
-
- private: virtual void _expansionmdragbar1();
-
- thread_id mousethread;
- BPoint dragpoint;
-
- static long _mousetracker(void *arg);
- void _MouseTracker();
-
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/MEject.h b/beos/liblayout/MEject.h
deleted file mode 100644
index a9c017346..000000000
--- a/beos/liblayout/MEject.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _MEJECT_H
-#define _MEJECT_H
-
-#include "MPictureButton.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MEject : public MPictureButton
-{
- public: MEject(BHandler *id);
- MEject(BHandler *id, BMessage*);
- MEject(BMessage*);
- virtual ~MEject();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual void MakePictures();
-};
-extern const IMPEXPLIBLAYOUT char M_BUTTON_POINTER[];
-
-#endif
diff --git a/beos/liblayout/MFFWD.h b/beos/liblayout/MFFWD.h
deleted file mode 100644
index 97c0d53e1..000000000
--- a/beos/liblayout/MFFWD.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef _MFFWD_H
-#define _MFFWD_H
-
-#include "MPictureButton.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MFFWD : public MPictureButton
-{
- public: MFFWD(BHandler *id=NULL);
- MFFWD(BHandler *id, BMessage*);
- MFFWD(BMessage*);
- virtual ~MFFWD();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual void MakePictures();
-};
-
-extern const IMPEXPLIBLAYOUT char M_BUTTON_POINTER[];
-
-#endif
diff --git a/beos/liblayout/MGroup.h b/beos/liblayout/MGroup.h
deleted file mode 100644
index 73dcbfb9c..000000000
--- a/beos/liblayout/MGroup.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
- MGroup is an abstract class from which all groups should derive.
-
-*/
-
-#ifndef _MGROUP_H
-#define _MGROUP_H
-
-#include "layout.h"
-#include <View.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MGroup : public MView
-{
- public: MGroup();
- virtual ~MGroup();
-
- virtual void reloadfont(BFont *font[]);
-};
-
-typedef struct
-{
- MView *kid;
- int kidnum;
-} sortstruct;
-
-#endif
diff --git a/beos/liblayout/MListView.h b/beos/liblayout/MListView.h
deleted file mode 100644
index 95c4d42ca..000000000
--- a/beos/liblayout/MListView.h
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#ifndef _MLISTVIEW_H
-#define _MLISTVIEW_H
-#include "layout.h"
-#include <ListView.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MListView : public MView, public BListView
-{
- public: MListView(list_view_type type=B_SINGLE_SELECTION_LIST,
- minimax size=minimax(50,50));
- MListView(BMessage*);
- virtual ~MListView();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual void reloadfont(BFont *font[]);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void MessageReceived(BMessage*);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: virtual void _expansionmlistview1();
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/MMenuBar.h b/beos/liblayout/MMenuBar.h
deleted file mode 100644
index a5b061a19..000000000
--- a/beos/liblayout/MMenuBar.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef _MMENUBAR_H
-#define _MMENUBAR_H
-
-#include "layout.h"
-#include <MenuBar.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MMenuBar: public MView, public BMenuBar
-{
- public:
- MMenuBar(menu_layout layout=B_ITEMS_IN_ROW);
- MMenuBar(menu_layout layout, bool resizetofit);
- MMenuBar(BMessage*);
- virtual ~MMenuBar();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect);
- virtual void reloadfont(BFont *font[]);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- private:
- virtual void _expansionmmenubar1();
- virtual void _expansionmmenubar2();
-
- uint32 _expansiondata[2];
-};
-#endif
diff --git a/beos/liblayout/MOutlineListView.h b/beos/liblayout/MOutlineListView.h
deleted file mode 100644
index acb00e19b..000000000
--- a/beos/liblayout/MOutlineListView.h
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef _MOUTLINELISTVIEW_H
-#define _MOUTLINELISTVIEW_H
-#include "layout.h"
-#include <OutlineListView.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MOutlineListView : public MView, public BOutlineListView
-{
- public: MOutlineListView(list_view_type type=B_SINGLE_SELECTION_LIST,
- minimax size=minimax(50,50));
- MOutlineListView(BMessage*);
- virtual ~MOutlineListView();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual void reloadfont(BFont *font[]);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void MessageReceived(BMessage*);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: virtual void _expansionmoutlinelistview1();
- virtual void _expansionmoutlinelistview2();
-
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/MPictureButton.h b/beos/liblayout/MPictureButton.h
deleted file mode 100644
index 687b5c28a..000000000
--- a/beos/liblayout/MPictureButton.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef _MPICTUREBUTTON_H
-#define _MPICTUREBUTTON_H
-
-#include "layout.h"
-#include <PictureButton.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MPictureButton : public MView, public BPictureButton
-{
- public:
- MPictureButton(minimax size, BPicture *off, BPicture *on,
- BMessage *message=NULL, BHandler *target=NULL,
- uint32 behavior=B_ONE_STATE_BUTTON);
- MPictureButton(BMessage *archive);
- virtual ~MPictureButton();
- void SetRepeat(ulong initial_delay, ulong repeat_delay);
-
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect);
- virtual void setcolor(rgb_color col, bool deep=false);
- virtual void MakePictures();
-
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void MouseDown(BPoint);
-
- private:
- virtual void _expansionmpicturebutton1();
- virtual void _expansionmpicturebutton2();
-
- thread_id mousethread;
- int64 lastwhen;
- ulong initialdelay;
- ulong repeatdelay;
- ulong buttonmask;
- BHandler *target;
-
- static long _mousetracker(void *arg);
- void _MouseTracker();
-
- uint32 _expansiondata[2];
-};
-
-extern const IMPEXPLIBLAYOUT char M_DOUBLECLICK[];
-extern const IMPEXPLIBLAYOUT char M_BUTTON_MASK[];
-extern const IMPEXPLIBLAYOUT char M_REPEAT[];
-extern const IMPEXPLIBLAYOUT char M_RELEASE[];
-
-#endif
diff --git a/beos/liblayout/MPlayBW.h b/beos/liblayout/MPlayBW.h
deleted file mode 100644
index 043aa46d3..000000000
--- a/beos/liblayout/MPlayBW.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _MPLAYBW_H
-#define _MPLAYBW_H
-
-#include "MPictureButton.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MPlayBW : public MPictureButton
-{
- public: MPlayBW(BHandler*);
- MPlayBW(BHandler *id, BMessage*);
- MPlayBW(BMessage*);
- virtual ~MPlayBW();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual void MakePictures();
-};
-extern const IMPEXPLIBLAYOUT char M_BUTTON_POINTER[];
-
-#endif
diff --git a/beos/liblayout/MPlayFW.h b/beos/liblayout/MPlayFW.h
deleted file mode 100644
index 7f847df7b..000000000
--- a/beos/liblayout/MPlayFW.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _MPLAYFW_H
-#define _MPLAYFW_H
-
-#include "MPictureButton.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MPlayFW : public MPictureButton
-{
- public: MPlayFW(BHandler*);
- MPlayFW(BHandler *id, BMessage*);
- MPlayFW(BMessage*);
- virtual ~MPlayFW();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual void MakePictures();
-};
-extern const IMPEXPLIBLAYOUT char M_BUTTON_POINTER[];
-
-#endif
diff --git a/beos/liblayout/MPopup.h b/beos/liblayout/MPopup.h
deleted file mode 100644
index 2223664ec..000000000
--- a/beos/liblayout/MPopup.h
+++ /dev/null
@@ -1,45 +0,0 @@
-
-#ifndef _MPOPUP_H
-#define _MPOPUP_H
-#include "layout.h"
-#include "MDividable.h"
-#include <MenuField.h>
-
-class BPopUpMenu;
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MPopup:
- public MView, public MDividable, public BMenuField
-{
- public: MPopup(char *label, char *item ...);
- MPopup(char *label, BMessage*, BHandler *, char *item ...);
- MPopup(BMessage*);
- virtual ~MPopup();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual float LabelWidth();
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void reloadfont(BFont *font[]);
- void SetActive(ulong, bool send=true);
- void EnableItem(ulong index, bool enabled);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: virtual void _expansionmpopup1();
-
- char *poplabel;
- BHandler *target;
- BPopUpMenu *popup;
-
- uint32 _expansiondata[2];
-};
-
-extern const IMPEXPLIBLAYOUT char M_POPUP_POINTER_NAME[];
-
-#endif
diff --git a/beos/liblayout/MProgressBar.h b/beos/liblayout/MProgressBar.h
deleted file mode 100644
index 3938c2583..000000000
--- a/beos/liblayout/MProgressBar.h
+++ /dev/null
@@ -1,58 +0,0 @@
-
-#ifndef _MSTATUSBAR_H
-#define _MSTATUSBAR_H
-#include "layout.h"
-#include <View.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MProgressBar : public MView, public BView
-{
- public: float value;
- float currentwidth;
-
- public: MProgressBar(BHandler *, bool pulsed_updates=false);
- MProgressBar(BMessage*);
- virtual ~MProgressBar();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void setcolor(rgb_color,bool);
- void setbarcolor(rgb_color);
- rgb_color getbarcolor() {return bar_fill;};
- virtual void Draw(BRect);
- virtual void Pulse();
- void Refresh();
- void SetValue(float value);
- virtual void MouseDown(BPoint);
- virtual void WindowActivated(bool);
- virtual void FrameResized(float,float);
- virtual void MessageReceived(BMessage *mes);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: virtual void _expansionmprogressbar1();
- virtual void _expansionmprogressbar2();
-
- thread_id mousethread;
- static long _mousetracker(void *arg);
- long mousetracker();
-
- BRect lastbounds;
- BHandler *target;
- rgb_color bar_hi;
- rgb_color bar_fill;
- rgb_color bar_low;
- float barwidth;
-
- uint32 _expansiondata[2];
-};
-
-extern const IMPEXPLIBLAYOUT char M_PROGRESSBAR_FRACTION[];
-
-#endif
-
diff --git a/beos/liblayout/MRadioGroup.h b/beos/liblayout/MRadioGroup.h
deleted file mode 100644
index bb430f2da..000000000
--- a/beos/liblayout/MRadioGroup.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef _MRADIOGROUP_H
-#define _MRADIOGROUP_H
-#include "MGroup.h"
-#include <RadioButton.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MRadioGroup : public MGroup, public BView
-{
- public: MRadioGroup(char *item ...);
- MRadioGroup(BMessage *model, char *item ...);
- MRadioGroup(BMessage *model, BHandler *target, char *item ...);
- MRadioGroup(BMessage*);
- virtual ~MRadioGroup();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void SetActive(ulong);
- virtual long ActiveButton();
- virtual void reloadfont(BFont *font[]);
- virtual void setcolor(rgb_color col,bool deep);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: virtual void _expansionmradiogroup1();
- virtual void _expansionmradiogroup2();
-
- ulong numradios;
- BHandler *handler;
-
- uint32 _expansiondata[3];
-};
-
-extern const IMPEXPLIBLAYOUT char M_RADIO_POINTER_NAME[];
-extern const IMPEXPLIBLAYOUT char M_RADIO_INDEX_NAME[];
-
-
-#endif
-
-
-
diff --git a/beos/liblayout/MRew.h b/beos/liblayout/MRew.h
deleted file mode 100644
index f21683b5d..000000000
--- a/beos/liblayout/MRew.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _MREW_H
-#define _MREW_H
-
-#include "MPictureButton.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MRew : public MPictureButton
-{
- public: MRew(BHandler*);
- MRew(BHandler *id, BMessage*);
- MRew(BMessage*);
- virtual ~MRew();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual void MakePictures();
-};
-extern const IMPEXPLIBLAYOUT char M_BUTTON_POINTER[];
-
-#endif
diff --git a/beos/liblayout/MScrollView.h b/beos/liblayout/MScrollView.h
deleted file mode 100644
index 8ba21ce0e..000000000
--- a/beos/liblayout/MScrollView.h
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#ifndef _MSCROLLVIEW_H
-#define _MSCROLLVIEW_H
-
-#include "layout.h"
-#include <ScrollView.h>
-
-// An MScrollView accepts another MView as its target.
-// The MScrollView will display scrollbars as requested
-// so that the target MView may be scrolled left/right or
-// up/down.
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MScrollView: public MView, public BScrollView
-{
- public:
- MScrollView(MView *target, bool horizontal=false, bool vertical=false,
- border_style border=B_FANCY_BORDER, minimax size=0);
- MScrollView(BMessage*);
- virtual ~MScrollView();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private:
- MView *kid;
- float leftinset;
- float rightinset;
- float topinset;
- float bottominset;
-};
-
-#endif
diff --git a/beos/liblayout/MSlider.h b/beos/liblayout/MSlider.h
deleted file mode 100644
index 6e7077d3d..000000000
--- a/beos/liblayout/MSlider.h
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-#ifndef _MSLIDER_H
-#define _MSLIDER_H
-
-#include "layout.h"
-#include "Slider.h"
-
-class IMPEXPLIBLAYOUT MSlider: public MView, public BSlider
-{
- public:
- MSlider(const char *label, int32 minval, int32 maxval,int32 granularity=1, BMessage *message=NULL, BHandler *target=NULL, thumb_style ts=B_BLOCK_THUMB);
- virtual ~MSlider();
- virtual void AllAttached();
- virtual void DetachedFromWindow();
- virtual void SetValue(int32 value);
- void SetGranularity(int32 granul);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect);
-
- private:
- virtual void _expansionmslider1();
- virtual void _expansionmslider2();
- BHandler *target;
- int32 granularity;
- uint32 _expansiondata[4];
-};
-
-#endif
diff --git a/beos/liblayout/MSplitter.h b/beos/liblayout/MSplitter.h
deleted file mode 100644
index 411c5d14f..000000000
--- a/beos/liblayout/MSplitter.h
+++ /dev/null
@@ -1,38 +0,0 @@
-
-#ifndef _MSPLITTER_H
-#define _MSPLITTER_H
-
-#include "layout.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MSplitter : public MView, public BView
-{
- public: MSplitter();
- MSplitter(bool cosmetic);
- MSplitter(BMessage*);
- virtual ~MSplitter();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void MouseDown(BPoint);
- virtual void Draw(BRect);
- virtual void MouseMoved(BPoint, ulong, const BMessage*);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private:
- float siblingweight;
- MView *previoussibling;
- MView *nextsibling;
- thread_id mousethread;
- static long _mousetracker(void *);
- void _MouseTracker(void);
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/MStop.h b/beos/liblayout/MStop.h
deleted file mode 100644
index b99fc2fe4..000000000
--- a/beos/liblayout/MStop.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _MSTOP_H
-#define _MSTOP_H
-
-#include "MPictureButton.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MStop : public MPictureButton
-{
- public: MStop(BHandler*);
- MStop(BHandler *id, BMessage*);
- MStop(BMessage*);
- virtual ~MStop();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual void MakePictures();
-};
-extern const IMPEXPLIBLAYOUT char M_BUTTON_POINTER[];
-
-#endif
diff --git a/beos/liblayout/MStringView.h b/beos/liblayout/MStringView.h
deleted file mode 100644
index 4db74452e..000000000
--- a/beos/liblayout/MStringView.h
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef _MSTRINGVIEW_H
-#define _MSTRINGVIEW_H
-#include "layout.h"
-#include <StringView.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MStringView : public MView, public BStringView
-{
- public: MStringView(const char *label,alignment a=B_ALIGN_LEFT,minimax size=minimax(10,10,65536,65536,1));
- MStringView(BMessage*);
- virtual ~MStringView();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-};
-
-#endif
diff --git a/beos/liblayout/MTabView.h b/beos/liblayout/MTabView.h
deleted file mode 100644
index 04c69ec59..000000000
--- a/beos/liblayout/MTabView.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef _MTABVIEW_H
-#define _MTABVIEW_H
-
-#include <TabView.h>
-#include "MGroup.h"
-
-class IMPEXPLIBLAYOUT MTab: public BTab
-{
- public:
- MTab(MView *view, const char *name=NULL);
- MTab(BMessage *archive);
- virtual ~MTab();
-};
-
-
-class IMPEXPLIBLAYOUT MTabView: public MGroup, public BTabView
-{
- public:
- MTabView();
- MTabView(BMessage *archive);
- virtual void Add(MTab *tab);
- virtual void Select(int32 tab);
-
- virtual void reloadfont(BFont *font[]);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect);
-
- private:
- void LayoutCurrentTab();
-};
-
-#endif
diff --git a/beos/liblayout/MTextControl.h b/beos/liblayout/MTextControl.h
deleted file mode 100644
index 46f1a746f..000000000
--- a/beos/liblayout/MTextControl.h
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#ifndef _MTEXTCONTROL_H
-#define _MTEXTCONTROL_H
-#include "layout.h"
-#include "MDividable.h"
-#include <TextControl.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MTextControl:
- public MView, public MDividable, public BTextControl
-{
- public: MTextControl(char *label, char *text);
- MTextControl(char *label, char *text, BMessage *mes);
- MTextControl(BMessage*);
- virtual ~MTextControl();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual void SetLabel(const char *);
- virtual float LabelWidth();
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void reloadfont(BFont *font[]);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
-
- private: float lastheight;
-
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/MTextView.h b/beos/liblayout/MTextView.h
deleted file mode 100644
index 512a85cd1..000000000
--- a/beos/liblayout/MTextView.h
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef _MTEXTVIEW_H
-#define _MTEXTVIEW_H
-#include "layout.h"
-#include <TextView.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MTextView : public MView, public BTextView
-{
- public: MTextView(minimax size=0);
- MTextView(BMessage*);
- virtual ~MTextView();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void MessageReceived(BMessage *mes);
-
- private: void initobject();
- static long AsyncSetTextRect(void *arg);
- thread_id resizer;
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/MVolume.h b/beos/liblayout/MVolume.h
deleted file mode 100644
index 9d70b7955..000000000
--- a/beos/liblayout/MVolume.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef _MVOLUME_H
-#define _MVOLUME_H
-
-#include "layout.h"
-#include <Control.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MVolume : public MView, public BControl
-{
- public: MVolume(BHandler*);
- MVolume(BMessage*);
- virtual ~MVolume();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual minimax layoutprefs();
- BRect layout(BRect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void Draw(BRect);
- virtual void DrawVolume(void);
- float Volume();
- void SetVolume(float vol);
- virtual void MouseDown(BPoint);
- virtual void KeyDown(const char *bytes, int32 numbytes);
-
- private: float volume;
- BHandler *target;
- BPoint lastvoldot;
- BPoint clickpoint;
- thread_id mousethread;
- bool ispressed;
- // moved into private area 21-6-98
- static long _mousetracker(void *arg);
- void _MouseTracker();
- // added 21-6-98
- void _PUMouseTracker();
-};
-
-inline float MVolume::Volume()
-{
- return volume;
-}
-
-#endif
diff --git a/beos/liblayout/MWindow.h b/beos/liblayout/MWindow.h
deleted file mode 100644
index 6118f87bc..000000000
--- a/beos/liblayout/MWindow.h
+++ /dev/null
@@ -1,62 +0,0 @@
-
-#ifndef _MWINDOW_H
-#define _MWINDOW_H
-
-#include "layout.h"
-#include <Window.h>
-
-class BPopUpMenu;
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT MWindow : public BWindow
-{
- public:
- ulong flags;
-
- MWindow(BRect r,const char *name,window_type type,uint32 flags, uint32 workspaces=B_CURRENT_WORKSPACE);
- MWindow(BRect r,const char *name,window_look look, window_feel feel,uint32 flags, uint32 workspaces=B_CURRENT_WORKSPACE);
- MWindow(BMessage*);
- virtual ~MWindow();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- virtual const BFont *getfont(fontspec font);
-
- virtual void MessageReceived(BMessage *message);
- virtual void Show();
- virtual void RecalcSize();
- virtual void FrameResized(float width, float height);
-
- virtual status_t GetSupportedSuites(BMessage *message);
- virtual BHandler *ResolveSpecifier(BMessage *message, int32 index, BMessage *specifier, int32 command, const char *property);
- virtual void ScreenChanged(BRect frame, color_space mode);
- virtual void WorkspaceActivated(int32 workspace, bool active);
-
- void StartDragging();
- static long _mousetracker(void *arg);
- void _MouseTracker();
-
- private:
- virtual void _expansionmwindow1();
- virtual void _expansionmwindow2();
- virtual void _expansionmwindow3();
-
- void initobject();
- BFont **fontlist;
- BRect lastrect;
- BPopUpMenu *pop;
- thread_id mousethread;
- BPoint dragpoint;
-
- uint32 _expansiondata[1];
-};
-
-enum {
- M_WIN_AUTORESIZE =0x00000100,
- M_WIN_ESCAPETOCLOSE=0x00000200
-};
-
-#endif // MWINDOW_H
diff --git a/beos/liblayout/PropGadget.h b/beos/liblayout/PropGadget.h
deleted file mode 100644
index 81a3f1f9b..000000000
--- a/beos/liblayout/PropGadget.h
+++ /dev/null
@@ -1,75 +0,0 @@
-
-#ifndef _PROPGADGET
-#define _PROPGADGET
-#include "layout.h"
-#include <Control.h>
-#include <Bitmap.h>
-
-class IMPEXPLIBLAYOUT PropGadget;
-
-typedef void (*propgadget_hook)(PropGadget*, void*, double, double);
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class PropGadget : public MView, public BControl
-{
- public: PropGadget(double xprop, double xval, double yprop, double yval,
- BBitmap *knobimage=NULL,
- propgadget_hook=NULL,
- void *callbackarg=NULL,
- long extraspacing=0);
- PropGadget(BMessage*);
- virtual ~PropGadget();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
-
- BBitmap* Pknob;
-
- virtual void Draw(BRect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void MouseDown(BPoint);
-
- void SetProportion(double, double);
- void SetProportionNoDraw(double,double);
- virtual void SetValues(double,double);
- void SetValuesNoDraw(double,double);
- virtual void FrameResized(float,float);
- void ReDraw();
- inline double Hval() {return hval;}
- inline double Vval() {return 1.0-vval;}
-
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void setcolor(rgb_color col, bool deep=false);
- virtual void DrawContainer(BRect);
- virtual void DrawKnob(BRect);
- virtual void KeyDown(const char *bytes, int32 numbytes);
- bool IsBusy();
-
- private: virtual void _expansionpropgadget1();
- virtual void _expansionpropgadget2();
-
- thread_id mousethread;
- BPoint clickpoint;
- BRect lastknobrect;
- bool _isbusy;
- bool vertical;
- bool horizontal;
-
- double hprop;
- double hval;
- double vprop;
- double vval;
- void (*callback)(PropGadget*,void*,double,double);
- void *callbackarg;
- long borderspacing;
-
- static long _mousetracker(void *arg);
- void _MouseTracker();
-
- uint32 _expansiondata[2];
-};
-#endif
diff --git a/beos/liblayout/Space.h b/beos/liblayout/Space.h
deleted file mode 100644
index c49f6fbd2..000000000
--- a/beos/liblayout/Space.h
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#ifndef _SPACE_H
-#define _SPACE_H
-#include "layout.h"
-#include "View.h"
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-class IMPEXPLIBLAYOUT Space : public MView, public BView
-{
- public: Space();
- Space(minimax);
- Space(BMessage*);
- virtual ~Space();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
-};
-
-#endif
diff --git a/beos/liblayout/SpinButton.h b/beos/liblayout/SpinButton.h
deleted file mode 100644
index 3bb00db69..000000000
--- a/beos/liblayout/SpinButton.h
+++ /dev/null
@@ -1,78 +0,0 @@
-
-#ifndef _SPINBUTTON_H
-#define _SPINBUTTON_H
-
-#include <View.h>
-#include "layout.h"
-#include "HGroup.h"
-#include "MTextControl.h"
-
-enum spinmode
-{
- SPIN_FLOAT,
- SPIN_INTEGER
-};
-
-class NumberTextView;
-class TinyButton;
-#if __POWERPC__
-#pragma warn_hidevirtual off
-#endif
-class IMPEXPLIBLAYOUT SpinButton: public MView, public MDividable, public BControl
-{
- public:
- SpinButton(const char *label,spinmode mode, BHandler *target=NULL);
- virtual ~SpinButton();
-
- virtual void reloadfont(BFont *font[]);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect);
-
- virtual float LabelWidth();
-
- virtual void AllAttached();
- virtual void DetachedFromWindow();
- virtual void Draw(BRect);
- virtual void MessageReceived(BMessage *mes);
- virtual void SetEnabled(bool);
-
- double Increment();
- double Decrement();
- double StepSize();
- void SetStepSize(double step);
-
- virtual void SetValue(int32 v);
- virtual void SetValue(double v);
- double Value();
- double Maximum();
- void SetMaximum(double max);
- double Minimum();
- void SetMinimum(double min);
- const char * Format() const;
- void SetFormat(const char *f);
-
- private:
- spinmode mode;
- ulong height;
- TinyButton *tb1,*tb2;
- NumberTextView *tv;
- long lx,ly;
- void NotifyWorld(BMessage *mes);
- BHandler *target;
- uint32 _expansiondata[4];
-};
-
-enum
-{
- M_SPIN_UP='!!up',
- M_SPIN_DOWN='!!dn',
- M_SPIN_TICK='!spn'
-};
-
-extern const IMPEXPLIBLAYOUT char M_RELEASE[];
-
-#if __POWERPC__
-#pragma warn_hidevirtual on
-#endif
-
-#endif
diff --git a/beos/liblayout/TabGroup.h b/beos/liblayout/TabGroup.h
deleted file mode 100644
index 64a2cf9cc..000000000
--- a/beos/liblayout/TabGroup.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef _TABGROUP_H
-#define _TABGROUP_H
-
-#include "MGroup.h"
-#include <Control.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT TabGroup : public MGroup, public BControl
-{
- public: TabGroup(minimax mpm,char *arg=0, ...);
- TabGroup(char *arg=0, ...);
- TabGroup(BMessage*);
- virtual ~TabGroup();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void AttachedToWindow();
- virtual void MouseDown(BPoint point);
- virtual void Draw(BRect clip);
- virtual void KeyDown(const char *bytes, int32 numbytes);
- virtual void ActivateTab(int);
- int32 ActiveTab();
- virtual void DetachedFromWindow();
- virtual void SetEnabled(bool enabled);
- void SetExtraSpacing(float spacing);
- float ExtraSpacing();
-
- private: virtual void _expansiontabgroup1();
- virtual void _expansiontabgroup2();
-
- int numkids;
- int activekid;
- float tabheight;
- float biggesttabmin;
- float fontdescent;
- float extraspacing;
-
- uint32 _expansiondata[1];
-};
-
-#endif
diff --git a/beos/liblayout/VGroup.h b/beos/liblayout/VGroup.h
deleted file mode 100644
index 56be070df..000000000
--- a/beos/liblayout/VGroup.h
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef _VGROUP_H
-#define _VGROUP_H
-#include "MGroup.h"
-#include <View.h>
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-class IMPEXPLIBLAYOUT VGroup : public MGroup, public BView
-{
- public: VGroup(minimax mpm,MView *kid=0, ...);
- VGroup(MView *kid=0, ...);
- VGroup(BMessage*);
- virtual ~VGroup();
- virtual long Archive(BMessage *archive, bool deep=true) const;
- static BArchivable *Instantiate(BMessage *archive);
- virtual minimax layoutprefs();
- virtual BRect layout(BRect rect);
- virtual void AttachedToWindow();
- virtual void DetachedFromWindow();
- virtual void MouseDown(BPoint);
-
- private: virtual void _expansionvgroup1();
- virtual void _expansionvgroup2();
- virtual void _expansionvgroup3();
-
- static int cmpkids(const void* v1,const void *v2);
- int *size;
- float totalweight;
- int numkids;
- sortstruct *childorder;
- MView **mkid;
- float totalminy,totalmaxy;
- BRect *lastrect;
-
- uint32 _expansiondata[2];
-};
-
-#endif
diff --git a/beos/liblayout/layout-all.h b/beos/liblayout/layout-all.h
deleted file mode 100644
index b2e78df10..000000000
--- a/beos/liblayout/layout-all.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "MApplication.h"
-#include "MWindow.h"
-#include "HGroup.h"
-#include "VGroup.h"
-#include "LayeredGroup.h"
-#include "TabGroup.h"
-#include "MBViewWrapper.h"
-#include "MBorder.h"
-#include "MButton.h"
-#include "MCheckBox.h"
-#include "MDividable.h"
-#include "MDragBar.h"
-#include "MEject.h"
-#include "MFFWD.h"
-#include "MListView.h"
-#include "MMenuBar.h"
-#include "MOutlineListView.h"
-#include "MPictureButton.h"
-#include "MPlayBW.h"
-#include "MPlayFW.h"
-#include "MPopup.h"
-#include "MProgressBar.h"
-#include "MRadioGroup.h"
-#include "MRew.h"
-#include "MScrollView.h"
-#include "MSlider.h"
-#include "MSplitter.h"
-#include "MStop.h"
-#include "MStringView.h"
-#include "MTextControl.h"
-#include "MTextView.h"
-#include "MVolume.h"
-#include "PropGadget.h"
-#include "Space.h"
-#include "SpinButton.h"
diff --git a/beos/liblayout/layout.h b/beos/liblayout/layout.h
deleted file mode 100644
index 772b251db..000000000
--- a/beos/liblayout/layout.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
-
- Lowest-level classes in liblayout
- - minimax, used to store information about minimum size, maximum size, and weigth of objects
- - MView, a class that knows how to layout itself
-
-*/
-
-#ifndef _LAYOUT_H
-#define _LAYOUT_H
-
-#if __POWERPC__
-#pragma simple_class_byval off
-#endif
-
-#include <BeBuild.h>
-
-#if !defined(IMPEXPLIBLAYOUT) && defined(BUILDING_LIBLAYOUT)
-#define IMPEXPLIBLAYOUT _EXPORT
-#else
-#define IMPEXPLIBLAYOUT _IMPORT
-#endif
-
-#include <Rect.h>
-#include <GraphicsDefs.h>
-#include <stdlib.h>
-
-class BMessage;
-class BFont;
-
-// use macro to make code slightly more readable
-#define MVPTR(x) dynamic_cast<MView*>(x)
-
-enum fontspec
-{
- M_PLAIN_FONT=0,
- M_BOLD_FONT,
- M_FIXED_FONT
-};
-
-
-// this structure is exported from liblayout, and contains the version number
-struct LAYOUT_VERSION_INFO
-{
- uchar major;
- uchar minor;
- ushort patchlevel;
-};
-
-extern "C" LAYOUT_VERSION_INFO IMPEXPLIBLAYOUT LIBLAYOUT_VERSION;
-
-
-class IMPEXPLIBLAYOUT minimax // Order now, by dialing the number on your screen!
-{
-struct xypair { float x,y;};
-
- public: xypair mini;
- xypair maxi;
- float weight;
-
- minimax(int minx=0,int miny=0,
- int maxx=10000,int maxy=10000,
- float wght=1.0);
-};
-
-class IMPEXPLIBLAYOUT MView
-{
- protected: rgb_color FILL_COLOR;
- rgb_color LOW_COLOR;
- rgb_color HI_COLOR;
-
- // helper functions for archiving/unarchiving the MView
- // part of MView hybrids
- status_t archive(BMessage *);
- status_t unarchive(BMessage *);
-
- public: minimax mpm; // currently active minimax (calculated from ct_mpm and environmental constraints)
- minimax ct_mpm; // size specified at construction-time
- ulong flags; // various flags
- // upper 16 bits are reserve for liblayout-use
- // bits 8-15 are reserved for per-class liblayout-use
- // bits 0-7 are available
-
- MView();
- virtual ~MView();
- virtual minimax layoutprefs()=0;
- virtual BRect layout(BRect rect)=0;
-
- // reload the font from one of the fonts in the font-array
- virtual void reloadfont(BFont *font[]);
- // get a BFont with the required fontspec
- const BFont *getfont(fontspec font);
-
- // set the color of the MView
- virtual void setcolor(rgb_color col, bool deep=true);
- // this one calls the above function
- void setcolor(uchar red, uchar green, uchar blue, bool deep=true);
- rgb_color getcolor(); // get the base color (what is set through setcolor() )
-
- private:
- virtual void _expansionmview1();
- virtual void _expansionmview2();
- virtual void _expansionmview3();
- virtual void _expansionmview4();
-
- uint32 _expansiondata[4];
-};
-
-
-// constants used in messaging all start with a '!'
-#define M_POPUP_SELECTED '!pop'
-#define M_CHECKBOX_SELECTED '!chk'
-#define M_BUTTON_SELECTED '!but'
-#define M_RADIO_SELECTED '!rad'
-#define M_PLAYBW_SELECTED '!ylp'
-#define M_PLAYFW_SELECTED '!ply'
-#define M_FFWD_SELECTED '!fwd'
-#define M_REW_SELECTED '!rwd'
-#define M_STOP_SELECTED '!stp'
-#define M_VOLUME_CHANGED '!vol'
-#define M_EJECT_SELECTED '!ejt'
-#define M_PREV_SELECTED '!prv'
-#define M_NEXT_SELECTED '!nxt'
-#define M_PROGRESSBAR_CLICKED '!pbc'
-#define M_PROGRESSBAR_DRAGGED '!pbd'
-#define M_PROGRESSBAR_RELEASED '!pbr'
-#define M_ACTIVATE_LAYER '!lyr'
-
-// when sent to a window, it recalculates the entire window
-#define M_RECALCULATE_SIZE '!rsz'
-
-// font-change message is understood by MWindow and MApplication,
-// but is not generated by liblayout.
-#define M_FONT_CHANGED '!FNT'
-
-extern IMPEXPLIBLAYOUT rgb_color M_FILL_COLOR;
-extern IMPEXPLIBLAYOUT rgb_color M_LOW_COLOR;
-extern IMPEXPLIBLAYOUT rgb_color M_HI_COLOR;
-extern IMPEXPLIBLAYOUT rgb_color BLACK_COLOR;
-extern IMPEXPLIBLAYOUT rgb_color WHITE_COLOR;
-
-void IMPEXPLIBLAYOUT SetDefaultColors(uchar red, uchar green, uchar blue);
-void IMPEXPLIBLAYOUT SetDefaultColors(rgb_color cs);
-
-// misc flags
-// note that not all controls responds to all flags
-
-enum{
- M_REPORT_IMMEDIATE= 0x00010000, // report first click on control
- M_REPORT_REPEAT = 0x00020000, // report if control is clicked and held
- M_REPORT_RELEASE= 0x00040000, // report release of button over control
- M_REPORT_RELEASE_ALWAYS= 0x00080000, // always report release of button
- M_REPORT_MASK= 0x000f0000, // all of the above
-
- // mostly for internal use, therefore not documented (yet)
- M_USE_CALCULATED_MINX= 0x00100000,
- M_USE_CALCULATED_MINY= 0x00200000,
- M_USE_CALCULATED_MAXX= 0x00400000,
- M_USE_CALCULATED_MAXY= 0x00800000,
- M_NO_X_LEFTOVERS= 0x01000000, // don't add "leftover" space to this object
- M_NO_Y_LEFTOVERS= 0x02000000, // don't add "leftover" space to this object
- M_NO_COLOR_CHANGES= 0x20000000, // don't listen to color-drop messages
- M_NO_FONT_CHANGES= 0x40000000, // don't listen to font-change messages
- M_USE_FULL_SIZE = (int) 0x80000000 // don't respect max-size (set for grouping classes)
-};
-
-
-#endif