예제 #1
0
        /// <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!");
            }
        }
예제 #2
0
파일: AddFileForm.cs 프로젝트: mryp/kkde
        /// <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);
        }
예제 #3
0
파일: AddFileForm.cs 프로젝트: mryp/kkde
        /// <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);
        }
예제 #4
0
        /// <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("カラー設定ファイルの保存に失敗しました");
            }
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <summary>
        /// 編集タイプを変更する
        /// </summary>
        private void typeComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selectText = (string)typeComboBox.SelectedItem;

            if (selectText == "")
            {
                //何も選択していないので何もしない
                return;
            }

            m_krkrType = FileType.StringToKrkrType(selectText);
            loadOption();
        }
예제 #7
0
파일: EditorManager.cs 프로젝트: mryp/kkde
        /// <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]);
        }
예제 #8
0
        /// <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    = "不明";
            }
        }
예제 #9
0
        /// <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);
        }
예제 #10
0
        /// <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);
        }
예제 #11
0
파일: AddFileForm.cs 프로젝트: mryp/kkde
        /// <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);
        }
예제 #12
0
파일: EditorManager.cs 프로젝트: mryp/kkde
        /// <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);
        }
예제 #13
0
        /// <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);
        }
예제 #14
0
        /// <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);
        }
예제 #15
0
        /// <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!");
            }
        }
예제 #16
0
        /// <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;
                }
            }
        }
예제 #17
0
        /// <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();                 //折りたたみを更新する
            }
        }
예제 #18
0
        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);
        }
예제 #19
0
파일: FileUtil.cs 프로젝트: mryp/kkde
        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);
        }
예제 #20
0
파일: FileUtil.cs 프로젝트: mryp/kkde
        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);
        }