//----------------------------------------------------------------------------
#ifndef TestH
#define TestH
//----------------------------------------------------------------------------
#include "ProjectPanel.h"
#include "WTabControl.h"
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <Messages.hpp>
#include <Buttons.hpp>
#include <Dialogs.hpp>
#include <StdCtrls.hpp>
#include <Menus.hpp>
#include <Controls.hpp>
#include <Forms.hpp>
#include <Graphics.hpp>
#include <Classes.hpp>
#include <SysUtils.hpp>
#include <Windows.hpp>
#include <System.hpp>
#include <ActnList.hpp>
#include <ImgList.hpp>
#include <StdActns.hpp>
#include <ToolWin.hpp>
#include <System.ImageList.hpp>
//----------------------------------------------------------------------------
class DELPHICLASS TProject;
class DELPHICLASS TTrack;
class DELPHICLASS TTimeLine;
class DELPHICLASS TSegment;

class TMainForm : public TForm
{ __published:
		TStatusBar 	*StatusBar;
		TControlBar *ControlBar1;
		TImageList 	*ImageList1;
		TToolBar 		*MenuBar;
		TToolButton *FileMenuButton;
		TToolButton *TrackMenuButton;
		TToolButton *TimelineMenuButton;
		TToolButton *ToolButton12;
		TSplitter 	*Splitter1;
		TOpenDialog *OpenDialog;

		TPopupMenu 	*FileMenu;
		TMenuItem 	*ProjectNew;
		TMenuItem 	*ProjectOpen;
		TMenuItem 	*Na1;
		TMenuItem 	*ProjectSave;
		TMenuItem 	*ProjectSaveAs;
		TMenuItem 	*ProjectSaveAll;
		TMenuItem 	*Na2;
		TMenuItem 	*ProjectClose;
		TMenuItem 	*Na3;
		TMenuItem 	*Exit;

		TPopupMenu 	*TrackMenu;
		TMenuItem 	*TrackNew;
		TMenuItem 	*TrackOpen;
		TMenuItem 	*TrackDelete;
		TMenuItem 	*TrackRename;
		TMenuItem 	*TrackType;
		TMenuItem 	*Na4;
		TMenuItem 	*TrackSelect;
		TMenuItem 	*Na5;
		TMenuItem 	*TrackCut;
		TMenuItem 	*TrackCopy;
		TMenuItem 	*TrackPaste;

		TPopupMenu 	*TimelineMenu;
		TMenuItem		*TimeLineNew;
		TMenuItem 	*TimeLineOpen;
		TMenuItem 	*TimeLineRename;
		TMenuItem 	*TimeLineDelete;
		TMenuItem 	*Na6;
		TMenuItem 	*TimeLineSelect;
		TMenuItem 	*Na7;
		TMenuItem 	*TimeLineCut;
		TMenuItem 	*TimeLineCopy;
		TMenuItem 	*TimeLinePaste;

		TPopupMenu 	*SegmentMenu;
		TMenuItem 	*SegmentNew;
		TMenuItem 	*SegmentOpen;
		TMenuItem 	*SegmentType;
		TMenuItem 	*SegmentRename;
		TMenuItem 	*SegmentDelete;
		TMenuItem 	*Na8;
		TMenuItem 	*SegmentSelect;
		TMenuItem 	*Na9;
		TMenuItem 	*SegmentCut;
		TMenuItem 	*SegmentCopy;
		TMenuItem 	*SegmentPaste;

		TPopupMenu *MarkerPopupMenu;
		TMenuItem *Na11;
		TMenuItem *Na10;
		TMenuItem *ShowMarker1;
		TMenuItem *CurrentMarker1;
		TMenuItem *StartMarker1;
		TMenuItem *EndMarker1;
		TMenuItem *CenterMarker1;
		TMenuItem *CurrentMarker2;
		TMenuItem *StartMarker2;
	TMenuItem *EndMarker2;
	TMenuItem *CenterMarker2;
	TMenuItem *EndMarker3;
	TMenuItem *StartMarker3;
	TMenuItem *PositionMarker1;
	TMenuItem *MovePositionMarker3;
	TMenuItem *Segment4;
	TMenuItem *imeline4;
	TMenuItem *rack4;
	TMenuItem *Project4;
	TMenuItem *Center17;
	TMenuItem *Start16;
	TMenuItem *Selected1;
	TMenuItem *Position1;
	TMenuItem *Selected2;
	TMenuItem *Position2;
	TMenuItem *Selected3;
	TMenuItem *Position3;
	TMenuItem *CenterLastMarker1;
	TMenuItem *N16;
	TMenuItem *LastMarker1;
	TMenuItem *N17;
	TMenuItem *LastMarker2;
	TMenuItem *N18;
	TMenuItem *N24;
	TMenuItem *AllMarkers1;
	TMenuItem *N25;
	TMenuItem *AllMarkers2;
	TMenuItem *N26;
	TMenuItem *AllMarkers3;
	TMenuItem *MoveLastMarker1;
	TMenuItem *Segment3;
	TMenuItem *Position8;
	TMenuItem *End4;
	TMenuItem *Center1;
	TMenuItem *Start4;
	TMenuItem *Active12;
	TMenuItem *End18;
	TMenuItem *Center5;
	TMenuItem *Start19;
	TMenuItem *imeline3;
	TMenuItem *Position21;
	TMenuItem *End21;
	TMenuItem *Center22;
	TMenuItem *Start22;
	TMenuItem *Active13;
	TMenuItem *End22;
	TMenuItem *Center23;
	TMenuItem *Start23;
	TMenuItem *rack3;
	TMenuItem *Position22;
	TMenuItem *End37;
	TMenuItem *Center38;
	TMenuItem *Start38;
	TMenuItem *Active14;
	TMenuItem *End38;
	TMenuItem *Center39;
	TMenuItem *Start39;
	TMenuItem *Project3;
	TMenuItem *Position23;
	TMenuItem *End39;
	TMenuItem *Center40;
	TMenuItem *Start40;
	TMenuItem *Active15;
	TMenuItem *End40;
	TMenuItem *Center41;
	TMenuItem *Start41;
	TMenuItem *N19;
	TMenuItem *Endmarker5;
	TMenuItem *StartMarker5;
	TMenuItem *N20;
	TMenuItem *Set5;
	TMenuItem *Dec4;
	TMenuItem *Inc5;
	TMenuItem *MovePositionMarker5;
	TMenuItem *Segment1;
	TMenuItem *Position4;
	TMenuItem *End1;
	TMenuItem *Center2;
	TMenuItem *Start1;
	TMenuItem *Active16;
	TMenuItem *End2;
	TMenuItem *Center3;
	TMenuItem *Start2;
	TMenuItem *imeline1;
	TMenuItem *Position5;
	TMenuItem *End3;
	TMenuItem *Center4;
	TMenuItem *Start3;
	TMenuItem *Active17;
	TMenuItem *End13;
	TMenuItem *Center14;
	TMenuItem *Start13;
	TMenuItem *rack1;
	TMenuItem *Position6;
	TMenuItem *End14;
	TMenuItem *Center15;
	TMenuItem *Start14;
	TMenuItem *Active18;
	TMenuItem *End15;
	TMenuItem *Center16;
	TMenuItem *Start15;
	TMenuItem *Project1;
	TMenuItem *Position7;
	TMenuItem *End16;
	TMenuItem *Center18;
	TMenuItem *Start17;
	TMenuItem *Active19;
	TMenuItem *End17;
	TMenuItem *Center19;
	TMenuItem *Start18;
	TMenuItem *N6;
	TMenuItem *Endmarker6;
	TMenuItem *StartMarker6;
	TMenuItem *N10;
	TMenuItem *Set1;
	TMenuItem *Dec5;
	TMenuItem *Inc1;
	TMenuItem *MovePositionMarker4;
	TMenuItem *Segment5;
	TMenuItem *Position9;
	TMenuItem *End9;
	TMenuItem *Center10;
	TMenuItem *Start9;
	TMenuItem *Active9;
	TMenuItem *End10;
	TMenuItem *Center11;
	TMenuItem *Start10;
	TMenuItem *imeline5;
	TMenuItem *Position10;
	TMenuItem *End11;
	TMenuItem *Center12;
	TMenuItem *Start11;
	TMenuItem *Active10;
	TMenuItem *End12;
	TMenuItem *Center13;
	TMenuItem *Start12;
	TMenuItem *rack5;
	TMenuItem *Position11;
	TMenuItem *End19;
	TMenuItem *Center20;
	TMenuItem *Start20;
	TMenuItem *Active11;
	TMenuItem *End20;
	TMenuItem *Center21;
	TMenuItem *Start21;
	TMenuItem *Project5;
	TMenuItem *Position20;
	TMenuItem *End23;
	TMenuItem *Center24;
	TMenuItem *Start24;
	TMenuItem *Active20;
	TMenuItem *End24;
	TMenuItem *Center25;
	TMenuItem *Start25;
	TMenuItem *N11;
	TMenuItem *Endmarker4;
	TMenuItem *StartMarker4;
	TMenuItem *N12;
	TMenuItem *Set4;
	TMenuItem *Dec3;
	TMenuItem *Inc4;
	TMenuItem *MovePositionMarker1;
	TMenuItem *Segment6;
	TMenuItem *Position12;
	TMenuItem *End25;
	TMenuItem *Center26;
	TMenuItem *Start26;
	TMenuItem *Active1;
	TMenuItem *End26;
	TMenuItem *Center27;
	TMenuItem *Start27;
	TMenuItem *imeline6;
	TMenuItem *Position13;
	TMenuItem *End27;
	TMenuItem *Center28;
	TMenuItem *Start28;
	TMenuItem *Active2;
	TMenuItem *End28;
	TMenuItem *Center29;
	TMenuItem *Start29;
	TMenuItem *rack6;
	TMenuItem *Position14;
	TMenuItem *End29;
	TMenuItem *Center30;
	TMenuItem *Start30;
	TMenuItem *Active3;
	TMenuItem *End30;
	TMenuItem *Center31;
	TMenuItem *Start31;
	TMenuItem *Project6;
	TMenuItem *Position15;
	TMenuItem *End31;
	TMenuItem *Center32;
	TMenuItem *Start32;
	TMenuItem *Active4;
	TMenuItem *End32;
	TMenuItem *Center33;
	TMenuItem *Start33;
	TMenuItem *N5;
	TMenuItem *Endmarker7;
	TMenuItem *StartMarker7;
	TMenuItem *N9;
	TMenuItem *Set2;
	TMenuItem *Dec1;
	TMenuItem *Inc2;
	TMenuItem *ProjectPlay;
	TMenuItem *TrackPlay;
	TMenuItem *TimeLinePlay;
	TMenuItem *SegmentPlay;
	TMenuItem *Na12;
	TMenuItem *Position;
	TMenuItem *Range;
	TToolButton *ToolButton13;
	TPanel *ProjectPanel;
	TToolBar *ToolBar2;
	TToolButton *NewToolButton;
	TToolButton *OpenToolButton;
	TToolButton *SaveToolButton;
	TToolButton *ToolButton3;
	TToolButton *CutToolButton;
	TToolButton *CopyToolButton;
	TToolButton *PasteToolButton;
	TToolBar *ToolBar1;
	TToolButton *PrevToolButton;
	TToolButton *BackToolButton;
	TToolButton *StopToolButton;
	TToolButton *ForwardToolButton;
	TToolButton *NextToolButton;
	TToolButton *FullScreenToolButton;
	TToolButton *RecordToolButton;
	TPopupMenu *VCRPopupMenu;
	TToolButton *HelpToolButton;
	TMenuItem *TrackSelectAll;

	void __fastcall ProjectNewClick(TObject *Sender);
	void __fastcall ProjectOpenClick(TObject *Sender);
	void __fastcall HelpAbout1Execute(TObject *Sender);
	void __fastcall ExitClick(TObject *Sender);
	void __fastcall TrackNewClick(TObject *Sender);
	void __fastcall ProjectSaveClick(TObject *Sender);
	void __fastcall ProjectSaveAsClick(TObject *Sender);
	void __fastcall ProjectSaveAllClick(TObject *Sender);
	void __fastcall ProjectCloseClick(TObject *Sender);
	void __fastcall FormMouseWheelUp(TObject *Sender, TShiftState Shift, TPoint &MousePos, bool &Handled);
	void __fastcall FormMouseWheelDown(TObject *Sender, TShiftState Shift, TPoint &MousePos, bool &Handled);
	void __fastcall TimelineNewClick(TObject *Sender);
	void __fastcall SegmentNewClick(TObject *Sender);
	void __fastcall MarkerClicked(TObject *Sender);
	void __fastcall HelpToolButtonClick(TObject *Sender);
	void __fastcall TrackOpenClick(TObject *Sender);
	void __fastcall TrackTypeClick(TObject *Sender);
	void __fastcall TrackRenameClick(TObject *Sender);
	void __fastcall TrackDeleteClick(TObject *Sender);
	void __fastcall TrackSelectClick(TObject *Sender);
	void __fastcall TrackCutClick(TObject *Sender);
	void __fastcall TrackCopyClick(TObject *Sender);
	void __fastcall TrackPasteClick(TObject *Sender);
	void __fastcall TimeLineOpenClick(TObject *Sender);
	void __fastcall TimeLineRenameClick(TObject *Sender);
	void __fastcall TimeLineDeleteClick(TObject *Sender);
	void __fastcall TimeLineSelectClick(TObject *Sender);
	void __fastcall TimeLineCutClick(TObject *Sender);
	void __fastcall TimeLineCopyClick(TObject *Sender);
	void __fastcall TimeLinePasteClick(TObject *Sender);
	void __fastcall SegmentOpenClick(TObject *Sender);
	void __fastcall SegmentTypeClick(TObject *Sender);
	void __fastcall SegmentRenameClick(TObject *Sender);
	void __fastcall SegmentDeleteClick(TObject *Sender);
	void __fastcall SegmentSelectClick(TObject *Sender);
	void __fastcall SegmentCutClick(TObject *Sender);
	void __fastcall SegmentCopyClick(TObject *Sender);
	void __fastcall SegmentPasteClick(TObject *Sender);
	void __fastcall TrackSelectAllClick(TObject *Sender);

	private:
		TWTabControl*				FTabs;
		TProject*						FCurrentProject;
		int									FWheelClicks;

	protected:
		TProject*					__fastcall GetProject  						(int index);
		TProject*					__fastcall GetCurrentProject  		();
		TTrack*           __fastcall GetCurrentTrack    		();
		TTimeLine*        __fastcall GetCurrentTimeLine			();
		TSegment*         __fastcall GetCurrentSegment			();

		void 							__fastcall CreateProject					(const AnsiString Name,const AnsiString FileName=AnsiString()	);
		void 							__fastcall CreateTrack						(const AnsiString FileName=AnsiString()	);
		void 							__fastcall CreateTimeline					(const AnsiString FileName=AnsiString()	);
		void 							__fastcall CreateSegment					(int															 			type									);

		void 							__fastcall DeleteProject					(	TProject* project	=	0	);

		void 							__fastcall SetCurrentProject			(TProject*	value	);
		void 							__fastcall TabChanged							(TObject *	Sender);


	public:
		TStringList*	Projects;
		TList*				ProjectClipBoard;
		TList*				TrackClipBoard;
		TList*				TimeLineClipBoard;
		TList*				SegmentClipBoard;

		virtual __fastcall 	TMainForm(TComponent *Owner);
		virtual __fastcall 	~TMainForm();

		void 	__fastcall		LoadFromStream	(TStream*				stream);
		void 	__fastcall		SaveToStream		(TStream*				stream);

		void 	__fastcall		UpdateMenus			();

		__property	TProject*					CurrentProject			=	{	read=FCurrentProject,		write=SetCurrentProject	 			};
		__property	TProject*					Project[int]				=	{	read=GetProject																				};
		__property	TTrack*           CurrentTrack				=	{	read=GetCurrentTrack																	};
		__property	TTimeLine*        CurrentTimeLine			=	{	read=GetCurrentTimeLine																};
		__property	TSegment*         CurrentSegment			=	{	read=GetCurrentSegment																};
};
//----------------------------------------------------------------------------
extern TMainForm *MainForm;
//extern TMDIChild *__fastcall MDIChildCreate(void);
//----------------------------------------------------------------------------
#endif
