dcdd144598 2011-02-23 kinaba: #ifndef AFX_ONFIGMANAGER_H__9243DE9D_0F70_40F8_8F90_55436B952B37__INCLUDED_ dcdd144598 2011-02-23 kinaba: #define AFX_ONFIGMANAGER_H__9243DE9D_0F70_40F8_8F90_55436B952B37__INCLUDED_ dcdd144598 2011-02-23 kinaba: #include "editwing/editwing.h" dcdd144598 2011-02-23 kinaba: #include "OpenSaveDlg.h" dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // アプリケーションメッセージ dcdd144598 2011-02-23 kinaba: #define GPM_MRUCHANGED WM_APP+0 dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //========================================================================= dcdd144598 2011-02-23 kinaba: //@{ @pkg Gp.Main //@} dcdd144598 2011-02-23 kinaba: //@{ dcdd144598 2011-02-23 kinaba: // 設定の一元管理 dcdd144598 2011-02-23 kinaba: // dcdd144598 2011-02-23 kinaba: // SetDocTypeで切り替えると、文書タイプ依存の項目を内部で dcdd144598 2011-02-23 kinaba: // 適切に切り替えたり色々します。 dcdd144598 2011-02-23 kinaba: //@} dcdd144598 2011-02-23 kinaba: //========================================================================= dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: class ConfigManager : public ki::Object dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: ConfigManager(); dcdd144598 2011-02-23 kinaba: ~ConfigManager(); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 指定した名前のファイル用の文書タイプをロード //@} dcdd144598 2011-02-23 kinaba: int SetDocType( const ki::Path& fname ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 指定した番号の文書タイプをロード //@} dcdd144598 2011-02-23 kinaba: void SetDocTypeByMenu( int pos, HMENU m ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 指定した名前の文書タイプをロード //@} dcdd144598 2011-02-23 kinaba: void SetDocTypeByName( const ki::String& nam ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ メニュー項目作成 //@} dcdd144598 2011-02-23 kinaba: void SetDocTypeMenu( HMENU m, UINT idstart ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ メニュー項目のチェック修正 //@} dcdd144598 2011-02-23 kinaba: void CheckMenu( HMENU m, int pos ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 設定ダイアログ表示 //@} dcdd144598 2011-02-23 kinaba: bool DoDialog( const ki::Window& parent ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 生のiniファイル操作オブジェクトを取得 //@} dcdd144598 2011-02-23 kinaba: ki::IniFile& getImpl(); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ Undo回数制限値 //@} dcdd144598 2011-02-23 kinaba: int undoLimit() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 文字数のカウント方法 //@} dcdd144598 2011-02-23 kinaba: bool countByUnicode() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 開く/保存ダイアログに出すフィルタの設定 //@} dcdd144598 2011-02-23 kinaba: const ki::String& txtFileFilter() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 文字数指定時の折り返し文字数 //@} dcdd144598 2011-02-23 kinaba: int wrapWidth() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 折り返し方法 //@} dcdd144598 2011-02-23 kinaba: int wrapType() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 行番号表示する? //@} dcdd144598 2011-02-23 kinaba: bool showLN() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 表示色・フォントなど //@} dcdd144598 2011-02-23 kinaba: const editwing::VConfig& vConfig() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ キーワードファイル名(フルパス) //@} dcdd144598 2011-02-23 kinaba: ki::Path kwdFile() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ Grep用外部実行ファイル名 //@} dcdd144598 2011-02-23 kinaba: const ki::Path& grepExe() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 同じウインドウで開くモード //@} dcdd144598 2011-02-23 kinaba: bool openSame() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ ステータスバー表示 //@} dcdd144598 2011-02-23 kinaba: bool showStatusBar() const; dcdd144598 2011-02-23 kinaba: void ShowStatusBarSwitch(); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: //@{ 新規ファイルの文字コードindex //@} dcdd144598 2011-02-23 kinaba: int GetNewfileCsi() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 新規ファイルの改行コード //@} dcdd144598 2011-02-23 kinaba: ki::lbcode GetNewfileLB() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: //@{ [最近使ったファイル]へ追加 //@} dcdd144598 2011-02-23 kinaba: void AddMRU( const ki::Path& fname ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ [最近使ったファイル]メニューの構築 //@} dcdd144598 2011-02-23 kinaba: void SetUpMRUMenu( HMENU m, UINT id ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ [最近使ったファイル]取得 //@} dcdd144598 2011-02-23 kinaba: ki::Path GetMRU( int no ) const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 対応文字セットリスト取得 //@} dcdd144598 2011-02-23 kinaba: CharSetList& GetCharSetList(); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: //@{ ウインドウ位置・サイズ復元処理 //@} dcdd144598 2011-02-23 kinaba: int GetWndX() const; dcdd144598 2011-02-23 kinaba: int GetWndY() const; dcdd144598 2011-02-23 kinaba: int GetWndW() const; dcdd144598 2011-02-23 kinaba: int GetWndH() const; dcdd144598 2011-02-23 kinaba: bool GetWndM() const; dcdd144598 2011-02-23 kinaba: void RememberWnd( ki::Window* wnd ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: private: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: ki::IniFile ini_; dcdd144598 2011-02-23 kinaba: bool sharedConfigMode_; dcdd144598 2011-02-23 kinaba: CharSetList charSets_; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 全体的な設定 dcdd144598 2011-02-23 kinaba: int undoLimit_; dcdd144598 2011-02-23 kinaba: ki::String txtFilter_; dcdd144598 2011-02-23 kinaba: ki::Path grepExe_; dcdd144598 2011-02-23 kinaba: bool openSame_; dcdd144598 2011-02-23 kinaba: bool countbyunicode_; dcdd144598 2011-02-23 kinaba: bool showStatusBar_; dcdd144598 2011-02-23 kinaba: bool rememberWindowSize_; dcdd144598 2011-02-23 kinaba: bool rememberWindowPlace_; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // ウインドウサイズ記憶 dcdd144598 2011-02-23 kinaba: bool wndM_; // maximized? dcdd144598 2011-02-23 kinaba: int wndX_, wndY_, wndW_, wndH_; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 文書タイプのリスト dcdd144598 2011-02-23 kinaba: struct DocType dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: // 定義ファイル名など dcdd144598 2011-02-23 kinaba: ki::String name; dcdd144598 2011-02-23 kinaba: ki::String pattern; dcdd144598 2011-02-23 kinaba: ki::String kwdfile; dcdd144598 2011-02-23 kinaba: ki::String layfile; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 設定項目 dcdd144598 2011-02-23 kinaba: editwing::VConfig vc; dcdd144598 2011-02-23 kinaba: int wrapType; dcdd144598 2011-02-23 kinaba: int wrapWidth; dcdd144598 2011-02-23 kinaba: bool showLN; dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: typedef ki::olist<DocType> DtList; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: DtList dtList_; dcdd144598 2011-02-23 kinaba: DtList::iterator curDt_; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 最近使ったファイルのリスト dcdd144598 2011-02-23 kinaba: int mrus_; dcdd144598 2011-02-23 kinaba: ki::Path mru_[20]; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: // 新規ファイル関係 dcdd144598 2011-02-23 kinaba: int newfileCharset_; dcdd144598 2011-02-23 kinaba: ki::String newfileDoctype_; dcdd144598 2011-02-23 kinaba: ki::lbcode newfileLB_; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: private: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: void LoadIni(); dcdd144598 2011-02-23 kinaba: void SaveIni(); dcdd144598 2011-02-23 kinaba: void LoadLayout( DocType* dt ); dcdd144598 2011-02-23 kinaba: bool MatchDocType( const unicode* fname, const unicode* pat ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: private: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: friend struct ConfigDlg; dcdd144598 2011-02-23 kinaba: NOCOPY(ConfigManager); dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------- dcdd144598 2011-02-23 kinaba: #ifndef __ccdoc__ dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::undoLimit() const dcdd144598 2011-02-23 kinaba: { return undoLimit_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline const ki::String& ConfigManager::txtFileFilter() const dcdd144598 2011-02-23 kinaba: { return txtFilter_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::wrapWidth() const dcdd144598 2011-02-23 kinaba: { return curDt_->wrapWidth; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::wrapType() const dcdd144598 2011-02-23 kinaba: { return curDt_->wrapType>0 ? wrapWidth() : curDt_->wrapType; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline bool ConfigManager::showLN() const dcdd144598 2011-02-23 kinaba: { return curDt_->showLN; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline const editwing::VConfig& ConfigManager::vConfig() const dcdd144598 2011-02-23 kinaba: { return curDt_->vc; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline ki::Path ConfigManager::kwdFile() const dcdd144598 2011-02-23 kinaba: { return ki::Path(ki::Path::Exe)+TEXT("type\\")+curDt_->kwdfile; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline const ki::Path& ConfigManager::grepExe() const dcdd144598 2011-02-23 kinaba: { return grepExe_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline bool ConfigManager::openSame() const dcdd144598 2011-02-23 kinaba: { return openSame_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline bool ConfigManager::showStatusBar() const dcdd144598 2011-02-23 kinaba: { return showStatusBar_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline void ConfigManager::ShowStatusBarSwitch() dcdd144598 2011-02-23 kinaba: { showStatusBar_ = !showStatusBar_; SaveIni(); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline bool ConfigManager::countByUnicode() const dcdd144598 2011-02-23 kinaba: { return countbyunicode_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline ki::IniFile& ConfigManager::getImpl() dcdd144598 2011-02-23 kinaba: { return ini_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline CharSetList& ConfigManager::GetCharSetList() dcdd144598 2011-02-23 kinaba: { return charSets_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::GetNewfileCsi() const dcdd144598 2011-02-23 kinaba: { return charSets_.findCsi( newfileCharset_ ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline ki::lbcode ConfigManager::GetNewfileLB() const dcdd144598 2011-02-23 kinaba: { return newfileLB_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::GetWndX() const dcdd144598 2011-02-23 kinaba: { return rememberWindowPlace_ ? wndX_ : CW_USEDEFAULT; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::GetWndY() const dcdd144598 2011-02-23 kinaba: { return rememberWindowPlace_ ? wndY_ : CW_USEDEFAULT; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::GetWndW() const dcdd144598 2011-02-23 kinaba: { return rememberWindowSize_ ? wndW_ : CW_USEDEFAULT; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int ConfigManager::GetWndH() const dcdd144598 2011-02-23 kinaba: { return rememberWindowSize_ ? wndH_ : CW_USEDEFAULT; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline bool ConfigManager::GetWndM() const dcdd144598 2011-02-23 kinaba: { return rememberWindowSize_ & wndM_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //========================================================================= dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: #endif // __ccdoc__ dcdd144598 2011-02-23 kinaba: #endif // AFX_ONFIGMANAGER_H__9243DE9D_0F70_40F8_8F90_55436B952B37__INCLUDED_