/// <summary> /// ファイルを構文解析する /// </summary> /// <param name="filePath">ファイルパス</param> public void ParseFile(string filePath) { //パラメーターチェック if (File.Exists(filePath) == false) { return; //ファイルが存在しないので何もしない } FileType.KrkrType type = FileType.GetKrkrType(filePath); if (isSupportedType(type) == false) { return; //非対応ファイル } if (m_bgworker.IsBusy == false) { //Debug.WriteLine("●ParseFile Start!"); util.DebugTimer.Start(); string text = kkde.global.GlobalStatus.EditorManager.GetTextFormEditor(filePath); m_bgworker.RunWorkerAsync(new FileParserArg(filePath, text, GlobalStatus.EnvOption.CodeComplateSeepTime)); } else { Debug.WriteLine("■ParseFile IS BUSY!"); } }
/// <summary> /// カスタムファイルをコピーする /// </summary> /// <param name="name">コピーを作成するファイル名</param> /// <param name="krkrType">コピーするカスタムファイルのファイルタイプ</param> /// <returns>作成したファイルのパス</returns> private string copyCustomFile(string name, FileType.KrkrType krkrType) { string path = getCreateFilePath(name, krkrType); string srcPath; switch (krkrType) { case FileType.KrkrType.Kag: srcPath = Path.Combine(option.ConstEnvOption.TemplateFilePath, CUSTOM_FILE_NAME_KAG); break; case FileType.KrkrType.Tjs: srcPath = Path.Combine(option.ConstEnvOption.TemplateFilePath, CUSTOM_FILE_NAME_TJS); break; default: //エラー throw new ApplicationException("カスタムファイルに対応したファイルタイプではありません"); } if (File.Exists(srcPath) == false) { throw new ApplicationException("カスタムファイルが見つかりません"); } File.Copy(srcPath, path); return(path); }
/// <summary> /// 空のファイルを作成する /// </summary> /// <param name="name">ファイル名</param> /// <param name="ext">拡張子(ドット付き)</param> private string createEmptyFile(string name, FileType.KrkrType krkrType) { string path = getCreateFilePath(name, krkrType); File.AppendAllText(path, ""); return(path); }
/// <summary> /// カラー設定ファイルを保存する /// </summary> /// <param name="type"></param> private void saveColorOptionFile(FileType.KrkrType type) { bool ret = TypeColorFile.SaveFile(type, (BaseColorType)colorPropertyGrid.SelectedObject); if (ret == false) { throw new ApplicationException("カラー設定ファイルの保存に失敗しました"); } }
/// <summary> /// パーサーを取得する /// </summary> /// <param name="filePath">ファイルパス</param> /// <param name="text">パースする文字列</param> /// <returns>パーサー</returns> CompletionUnit BackThreadParser_GetCompletionUnit(string filePath, string text) { IParser parser = null; TextReader reader = null; try { FileType.KrkrType type = FileType.GetKrkrType(filePath); if (type == FileType.KrkrType.Kag) { //KAG用パーサを取得 reader = new StringReader(text); KagLexer lexer = new KagLexer(reader); parser = new KagParser(filePath, lexer); parser.Parse(); } else if (type == FileType.KrkrType.Tjs) { /* * if (FileType.IsKagexEnvinitFileName(filePath)) * { * //KAGEX用 * kagex.KagexEnvinitLexer lexer = new kkde.parse.kagex.KagexEnvinitLexer(text); * parser = new kagex.KagexEnvinitParser(filePath, lexer); * parser.Parse(); * } * else * { * //TJS用パーサーを取得 * //未実装 * parser = null; * } */ } } catch (Exception err) { Debug.WriteLine("Parse ERROR: " + err.ToString()); parser = null; } finally { if (reader != null) { reader.Close(); reader.Dispose(); } } if (parser == null) { return(null); } return(parser.CompletionUnit); }
/// <summary> /// 編集タイプを変更する /// </summary> private void typeComboBox_SelectedIndexChanged(object sender, EventArgs e) { string selectText = (string)typeComboBox.SelectedItem; if (selectText == "") { //何も選択していないので何もしない return; } m_krkrType = FileType.StringToKrkrType(selectText); loadOption(); }
/// <summary> /// エディタオプションを取得する /// </summary> /// <param name="type">取得するファイルタイプ</param> /// <returns>エディタオプション</returns> public EditorOption GetEditorOption(FileType.KrkrType type) { if (type != FileType.KrkrType.Kag && type != FileType.KrkrType.Tjs) { //KAGとTJS以外はその他のファイルとして扱う type = FileType.KrkrType.Unknown; } if (GlobalStatus.EditorOption.ContainsKey(type) == false) { string filePath = GetEditorOptionFilePath(type); GlobalStatus.EditorOption.Add(type, EditorOption.LoadFile(filePath)); } return(GlobalStatus.EditorOption[type]); }
/// <summary> /// 変数初期化を行う /// </summary> /// <param name="filePath">ファイルパス</param> private void init(string filePath) { if (File.Exists(filePath)) { FileType.KrkrType krkrType = FileType.GetKrkrType(filePath); nameLabel.Text = Path.GetFileName(filePath); dirPathLabel.Text = Path.GetDirectoryName(filePath); switch (krkrType) { case FileType.KrkrType.Kag: kindLabel.Text = "KAGシナリオファイル"; break; case FileType.KrkrType.Tjs: kindLabel.Text = "TJSスクリプトファイル"; break; case FileType.KrkrType.Text: kindLabel.Text = "テキストファイル"; break; case FileType.KrkrType.Image: kindLabel.Text = "画像ファイル"; break; case FileType.KrkrType.Sound: kindLabel.Text = "サウンドファイル"; break; default: kindLabel.Text = "その他のファイル(KKDEで扱えないファイル)"; break; } } else if (Directory.Exists(filePath)) { nameLabel.Text = Path.GetFileName(filePath); dirPathLabel.Text = Path.GetDirectoryName(filePath); kindLabel.Text = "フォルダ"; } else { nameLabel.Text = "不明"; dirPathLabel.Text = "不明"; kindLabel.Text = "不明"; } }
/// <summary> /// カラー設定をファイルに保存する /// </summary> /// <param name="type"></param> /// <param name="colorType"></param> public static bool SaveFile(FileType.KrkrType type, BaseColorType colorType) { string fileName = ""; string text = ""; switch (type) { case FileType.KrkrType.Kag: fileName = ConstEnvOption.KagModeFilePath; text = createKagXshd((KagColorType)colorType); break; case FileType.KrkrType.Tjs: fileName = ConstEnvOption.TjsModeFilePath; text = createTjsXshd((TjsColorType)colorType); break; default: fileName = ConstEnvOption.DefModeFilePath; text = createDefXshd(colorType); break; } if (text == "") { return(false); } //ファイルに保存する bool ret = true; StreamWriter sw; using (sw = new StreamWriter(fileName, false)) { try { sw.Write(text); } catch (Exception err) { System.Diagnostics.Debug.WriteLine("カラー設定ファイルの保存に失敗しました: " + err.ToString()); ret = false; } } return(ret); }
/// <summary> /// 指定したファイルタイプがパース対応のタイプかどうか /// </summary> /// <param name="type">チェックするファイルタイプ</param> /// <returns>対応ファイルタイプの時はtrue</returns> private bool isSupportedType(FileType.KrkrType type) { bool ret = false; switch (type) { case FileType.KrkrType.Kag: case FileType.KrkrType.Tjs: ret = true; break; default: ret = false; break; } return(ret); }
/// <summary> /// 作成するためのフルパスを生成する /// </summary> /// <param name="name">作成するファイル名</param> /// <param name="krkrType">ファイルタイプ</param> /// <returns>作成したフルパス</returns> private string getCreateFilePath(string name, FileType.KrkrType krkrType) { string ext = FileType.GetKrkrTextFileExt(krkrType); if (name.EndsWith(ext) != true) { //名前に拡張子が無いときはつける name += ext; } string path = Path.Combine(m_parentPath, name); if (File.Exists(path)) { throw new ApplicationException(name + " ファイルはすでに存在しています。"); } return(path); }
/// <summary> /// エディタ設定のファイルパスを取得する /// </summary> /// <param name="type">ファイルタイプ</param> /// <returns>ファイルパス</returns> public string GetEditorOptionFilePath(FileType.KrkrType type) { string ret = ""; switch (type) { case FileType.KrkrType.Kag: ret = ConstEnvOption.KagOptionFilePath; break; case FileType.KrkrType.Tjs: ret = ConstEnvOption.TjsOptionFilePath; break; default: ret = ConstEnvOption.DefOptionFilePath; break; } return(ret); }
/// <summary> /// デフォルトのカラーオブジェクトを取得する /// </summary> /// <param name="type">取得したいファイルのタイプ</param> /// <param name="deftype">デフォルトカラータイプ</param> /// <returns>カラーオブジェクト</returns> public static BaseColorType GetDefault(FileType.KrkrType type, DefaultColorType deftype) { BaseColorType colorType = null; switch (type) { case FileType.KrkrType.Kag: colorType = getDefaultKagColor(deftype); break; case FileType.KrkrType.Tjs: colorType = getDefaultTjsColor(deftype); break; default: colorType = getDefaultColor(deftype); break; } return(colorType); }
/// <summary> /// キー入力があったとき /// </summary> /// <param name="ch">入力された文字</param> /// <returns>入力をキャンセルするときはtrue</returns> bool ActiveTextArea_KeyEventHandler(char ch) { if (m_useCodeComp) //入力補完を行うとき { FileType.KrkrType type = FileType.GetKrkrType(this.FileName); if (m_codeCompletionWindow != null && !m_codeCompletionWindow.IsDisposed) { if (type == FileType.KrkrType.Kag && (ch == ' ' || ch == '=')) { //次の入力補完へ移行させるためここでは何もしない } else if (type == FileType.KrkrType.Kag && ch == ']') { //タグ入力が終了したので入力補完を終了させる m_codeCompletionWindow.Close(); return(false); } else { //入力補完リストにイベントを投げる return(m_codeCompletionWindow.ProcessKeyEvent(ch)); } } switch (type) { case FileType.KrkrType.Kag: kagKeyEventHandler(ch); break; case FileType.KrkrType.Tjs: tjsKeyEventHandler(ch); break; } } return(false); }
/// <summary> /// ファイルを構文解析する /// </summary> /// <param name="filePath">ファイルパス</param> public void ParseFile(string filePath, string text) { //パラメーターチェック if (File.Exists(filePath) == false) { return; //ファイルが存在しないので何もしない } FileType.KrkrType type = FileType.GetKrkrType(filePath); if (isSupportedType(type) == false) { return; //非対応ファイル } if (m_bgworker.IsBusy == false) { //Debug.WriteLine("●ParseFile Start!"); DebugTimer.Start(); m_bgworker.RunWorkerAsync(new FileParserArg(filePath, text, m_codeComplateSeepTime)); } else { Debug.WriteLine("■ParseFile IS BUSY!"); } }
/// <summary> /// コンストラクタ /// </summary> /// <param name="krkrType">設定を行うタイプ</param> public TypeOptionForm(FileType.KrkrType krkrType) { InitializeComponent(); m_isOptionChanged = false; //画面初期化 initEditorOptionItem(); //タイプ画面の初期化 typeComboBox.Items.Add(FileType.KrkrTypeToString(FileType.KrkrType.Kag)); typeComboBox.Items.Add(FileType.KrkrTypeToString(FileType.KrkrType.Tjs)); typeComboBox.Items.Add(FileType.KrkrTypeToString(FileType.KrkrType.Unknown)); //現在選択するファイルタイプの設定 m_krkrType = krkrType; foreach (string item in typeComboBox.Items) { if (item == FileType.KrkrTypeToString(m_krkrType)) { typeComboBox.SelectedItem = FileType.KrkrTypeToString(m_krkrType); break; } } }
/// <summary> /// 解析結果を反映する /// </summary> /// <param name="filePath"></param> private void reflectParseResult(string filePath) { //ファイルタイプ別更新 FileType.KrkrType type = FileType.GetKrkrType(filePath); switch (type) { case FileType.KrkrType.Kag: if (GlobalStatus.FormManager.IsHiddenKagLabelForm == false) //表示しているときだけ { GlobalStatus.FormManager.KagLabelForm.InitTreeFileItem(filePath); } break; case FileType.KrkrType.Tjs: if (FileType.IsKagexEnvinitFileName(filePath)) { if (GlobalStatus.FormManager.IsHiddenWorldExViewForm == false) //表示しているとき { GlobalStatus.FormManager.WorldExViewForm.InitView(); } } else { //TJSはまだ未実装 } break; } //エディタ関連更新 TextEditorEx editor = GlobalStatus.EditorManager.GetTextEdtorFromFileName(filePath); if (editor != null) { editor.UpdateFolding(); //折りたたみを更新する } }
private void saveEditorOptionFile(FileType.KrkrType m_krkrType) { EditorOption option = GlobalStatus.EditorManager.GetEditorOption(m_krkrType); if (option == null) { throw new ApplicationException("設定情報の取得に失敗しました"); } //フォント option.FontName = m_editorOptionFont.Name; option.FontSize = (int)Math.Round(m_editorOptionFont.Size); option.UseAntiAliasedFont = useAntiAliasedFontCheckBox.Checked; option.EncodingName = (string)encodingNameComboBox.SelectedItem; option.LineTerminatorName = (string)lineTerminatorNameComboBox.SelectedItem; //表示 option.ShowSpaces = showSpaceCheckBox.Checked; option.ShowWideSpaces = showWideSpaceCheckBox.Checked; option.ShowTabs = showTabsCheckBox.Checked; option.ShowEOLMarker = showEOLMarkerCheckBox.Checked; option.ShowInvalidLines = showInvalidLinesCheckBox.Checked; option.ShowMatchingBracket = showMatchingBracketCheckBox.Checked; option.ShowLineNumbers = showLineNumbersCheckBox.Checked; option.IsIconBarVisible = isIconBarVisibleCheckBox.Checked; option.EnableFolding = enableFoldingCheckBox.Checked; option.ShowHorizontalRuler = showHorizontalRulerCheckBox.Checked; option.ShowVerticalRuler = showVerticalRulerCheckBox.Checked; option.VerticalRulerRow = (int)verticalRulerRowUpDown.Value; option.LineViewerStyle = (LineViewerStyle)lineViewerStyleComboBox.SelectedItem; //動作 option.TabIndent = (int)tabIndentUpDown.Value; option.ConvertTabsToSpaces = convertTabsToSpacesCheckBox.Checked; option.IndentationSize = (int)indentationSizeUpDown.Value; option.IndentStyle = (IndentStyle)indentStyleComboBox.SelectedItem; option.AllowCaretBeyondEOL = allowCaretBeyondEOLCheckBox.Checked; option.CreateBackupCopy = createBackupCopyCheckBox.Checked; option.MouseWheelScrollDown = mouseWheelScrollDownCheckBox.Checked; option.MouseWheelTextZoom = mouseWheeltextZoomCheckBox.Checked; option.HideMouseCursor = hideMouseCursorCheckBox.Checked; option.CutCopyWholeLine = cutCopyWholeLineCheckBox.Checked; option.AutoInsertCurlyBracket = autoInsertCurlyBracketCheckBox.Checked; option.UseCustomLine = useCustomLineCheckBox.Checked; option.BracketMatchingStyle = (BracketMatchingStyle)bracketMatchingStyleComboBox.SelectedItem; //入力補完 option.UseCodeCompletion = useCodeCompletionCheckbox.Checked; option.ParseActionFileSave = parseActionFileSaveCheckBox.Checked; //KAG1 option.KagCompOption.UseAttrValueDqRegion = useAttrValueDqRegionCheckBox.Checked; option.KagCompOption.ZeroOverNumberList = zeroOverNumberListBox.Text; option.KagCompOption.OneOverNumberList = oneOverNumberListBox.Text; option.KagCompOption.PercentNumberList = percentNumberListBox.Text; option.KagCompOption.ByteNumberList = byteNumberListBox.Text; option.KagCompOption.MsTimeNumberList = msTimeNumberListBox.Text; option.KagCompOption.RealNumberList = realNumberListBox.Text; option.KagCompOption.PmHundredNumberList = pmHundredNumberListBox.Text; option.KagCompOption.RgbNumberList = rgbNumberListBox.Text; option.KagCompOption.OtherStringList = otherStringListBox.Text; option.KagCompOption.TjsStringList = tjsStringListBox.Text; option.KagCompOption.FontStringList = fontStringListBox.Text; //KAG2 option.KagCompOption.ScenarioFileExt = scenarioFileExtBox.Text; option.KagCompOption.ImageFileExt = imageFileExtBox.Text; option.KagCompOption.SeFileExt = seFileExtBox.Text; option.KagCompOption.CursorFileExt = cursorFileExtBox.Text; option.KagCompOption.BgmFileExt = bgmFileExtBox.Text; option.KagCompOption.ActionFileExt = actionFileExtBox.Text; option.KagCompOption.PluginFileExt = pluginFileExtBox.Text; option.KagCompOption.FontFileExt = fontFileExtBox.Text; option.KagCompOption.VideoFileExt = videoFileExtBox.Text; option.KagCompOption.LayerMaxNumber = (int)layerMaxNumberBox.Value; option.KagCompOption.MessageLayerMaxNumber = (int)messageLayerMaxNumberBox.Value; option.KagCompOption.SeBufferMaxNumber = (int)seBufferMaxNumberBox.Value; option.KagCompOption.VideoBufferMaxNumber = (int)videoBufferMaxNumberBox.Value; //KAGEX option.KagCompOption.IsInsertedTagCopyExWorldEx = isInsertedTagCopyExWorldExCheckBox.Checked; option.KagCompOption.IsAddedTagSignWorldEx = isAddedTagSignWorldExCheckBox.Checked; option.KagCompOption.IsAddedMsgTagWorldEx = isAddedMsgTagWorldExCheckBox.Checked; option.KagCompOption.WorldExSearchPathChar = worldExSearchPathCharTextBox.Text; option.KagCompOption.WorldExSearchPathEvent = worldExSearchPathEventTextBox.Text; option.KagCompOption.WorldExSearchPathSe = worldExSearchPathStageTextBox.Text; option.KagCompOption.WorldExSearchPathBgm = worldExSearchPathBgmTextBox.Text; option.KagCompOption.WorldExSearchPathSe = worldExSearchPathSeTextBox.Text; option.KagCompOption.WorldExCopyTagType = (KagCompletionOption.TagType)worldExCopyTagTypeComboBox.SelectedItem; if (worldExDCActionPreviewRadioButton.Checked) { option.KagCompOption.WorldExDoubleDef = KagCompletionOption.WorldExViewDCOption.Preview; } else if (worldExDCActionPreviewExRadioButton.Checked) { option.KagCompOption.WorldExDoubleDef = KagCompletionOption.WorldExViewDCOption.PreviewEx; } //ファイルに保存する string fileName = GlobalStatus.EditorManager.GetEditorOptionFilePath(m_krkrType); EditorOption.SaveFile(fileName, option); }
public static string GetNextFilePath(string[] searchFileList, string nowFilePath, FileType.KrkrType type) { if (File.Exists(nowFilePath) == false) { return(""); //ファイルが存在しない } if (searchFileList == null) { return(""); //ファイルリストがない } //ファイルリストから次を検索する bool hit = false; string nextFilePath = ""; string[] fileList = searchFileList; foreach (string filePath in fileList) { if (filePath == nowFilePath) { hit = true; } else if (FileType.GetKrkrType(filePath) == type) { if (hit) { nextFilePath = filePath; break; } } } //見つからなかったときは一番先頭をチェックする if (nextFilePath == "") { if (fileList.Length > 1) { nextFilePath = fileList[0]; //一番前をセットする } else { return(""); //表示する物がない } } return(nextFilePath); }
public static string GetPrevFilePath(string[] searchFileList, string nowFilePath, FileType.KrkrType type) { if (File.Exists(nowFilePath) == false) { return(""); //ファイルが存在しない } if (searchFileList == null) { return(""); //ファイルリストがない } //ファイルリストから前を検索する string prevFilePath = ""; string[] fileList = searchFileList; foreach (string filePath in fileList) { if (filePath == nowFilePath) { break; //見つかったので何もしない } else if (FileType.GetKrkrType(filePath) == type) { prevFilePath = filePath; } } //ファイル名がセットされていないときは一番後ろをチェックする if (prevFilePath == "") { if (fileList.Length > 1) { prevFilePath = fileList[fileList.Length - 1]; //一番後ろをセットする } else { return(""); //自分しかないときは何もしない } } return(prevFilePath); }