//
//  RootViewController.h
//  X-BASIC'
//
//  Created by AIG-Soft on 2012/8/13
//  Copyright 2012-2015 AIG-Soft. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "RunViewController.h"
#import "WebHelp.h"
#import "AirPrint.h"
#import "EditorView.h"

@class Help;
@class SetupViewController;
@class BasicSelectWithTable2;
@class RunViewController; // ヘッダーをimportしているのに、何故か必要(循環importしているからかもしれない)

@interface RootViewController : UIViewController
<
UINavigationControllerDelegate,
UIPopoverControllerDelegate,
UIActionSheetDelegate,
UIAlertViewDelegate,
UIPrintInteractionControllerDelegate
>
{
	// コンソール
	IBOutlet	__weak WebHelp	*webHelp;
	//
	UIColor			*winColor;			// windowの背景色
	NSUInteger		noSAVEAS;			// SaveAsのボタン番号
	//
	// iPad表示制御用
	NSUInteger		fpopover;			// 開いているpopoverの種類;POPOVER_*
	// 各ボタン
	IBOutlet	__weak UIBarButtonItem *btnHelp;
	IBOutlet	__weak UIBarButtonItem *btnSetup;
				UIBarButtonItem *btnEdit;	// edit/list
	IBOutlet	__weak UIBarButtonItem *btnRun;
				UIBarButtonItem *btnBasic;
	IBOutlet	__weak UIBarButtonItem *btnActionSheet;
	IBOutlet	__weak UIBarButtonItem *btnSearch;
	//
	UIAlertController	*alertController;	// iOS8
	UIActionSheet		*actionSheet;
	UIAlertView			*alertView;
	UIAlertView			*alertViewField;
	NSUInteger			fAlert;				// 開いているalertViewの種類;ALERT_*
	// 印刷制御
	AirPrint		*airPrint;
	// 表示制御
	int			cntActivityIndicator;	// 多重処理対応のため
	//
	BOOL		fviewDidLoad;			// viewDidLoadを通った直後かどうか

	// startup関連
	ULong	startupSize;
	uwLineNO	startupLines;

	// 動作モード
	NSUInteger	opeMode;
}
@property (nonatomic,strong) RunViewController			*runView;
@property (nonatomic,strong) Help						*help;
@property (nonatomic,strong) SetupViewController		*setupViewController;
@property (nonatomic,strong) BasicSelectWithTable2		*basicSelect;
@property (nonatomic,strong) UIPopoverController		*popover; // popoverはルートの管理下に置く
@property (nonatomic,strong) EditorView					*editorView;

// IBActionのものは、ヘッダーにも定義しておかないとIBが警告を出す
-(IBAction)naviButtonAction:(id)sender;
-(IBAction)toolButtonAction:(id)sender;
-(IBAction)actionButton:(id)sender;

-(void)loadBasic:(NSString *)basicFile;
-(BOOL)importFromUTI:(NSURL *)url;
-(void)displayError;

enum { // toolButtonActionのTAG番号
	BUTTON_HELP=0,
	BUTTON_SETTING,
	BUTTON_RUN,
	BUTTON_EDIT,
	BUTTON_BASIC,
	BUTTON_SEARCH,	// 5
	BUTTON_ACTION,
	// アクション分は直接処理へ接続しているのでここは不要
};

enum { // fAlert
	ALERT_NONE=0,		// 開いてない
	ALERT_SAVE,			// 保存／名前を付けて保存
	ALERT_SAVEAS,		// 名前を付けて保存
	ALERT_CANTEDIT,		// 編集できない
	ALERT_NOMEMORY,		// メモリ不足
};

enum { // fpopoverの値(iPad用)
	POPOVER_NONE=0,	// iPod touch/iPhone時もここ
	POPOVER_HELP,
	POPOVER_SETUP,
	POPOVER_BASIC,
	POPOVER_PRINTER,
	POPOVER_ACTION,	// iOS8ではアクションもUIAlertControllerでPopoverになるため
};

#ifdef DEBUG
#define TEMP_BASIC	@"temp.bas"		// デバッグ中はファイルが見えるようにしておく
#define	TEMP_PDF	@"temp.pdf"
#else
#define TEMP_BASIC	@".temp.bas"	// 新規作成または編集したソースを一時的に保存するファイル名(隠しファイル)
#define	TEMP_PDF	@".temp.pdf"
#endif

@end
