iniedit プログラム仕様
Inifile Editor
概要: 簡易的なINI/TOMLファイルエディタです。設定ファイルの編集に特化しており、構文ハイライト、検索・置換、セクションジャンプ、外部コマンド実行などの機能を提供します。
詳細説明: 本エディタは、主にWindows環境でのINIファイルやTOMLファイルの編集を想定しています。 エディタの設定は 'iniedit.ini' に保存され、挿入テキストは 'text.ini'、 構文ハイライトルールは 'color.ini' から読み込まれます。 ファイルのドラッグ&ドロップによるオープン、文字コードの自動判別と指定、 未保存の変更に対する警告、カスタム可能な外部コマンド実行機能などが実装されています。
関連リンク: Iniedit.py 技術ドキュメント
- class editor.iniedit.SimpleTomlParser[ソース]
ベースクラス:
object簡易的なTOML/INIパーサーです。
概要: セクション [section] と key=value のペアを処理するシンプルなパーサーを提供します。
詳細説明: このパーサーは、複雑なTOML仕様のすべてをサポートしているわけではありませんが、 基本的なセクション定義とキー=値の割り当てを識別し、データを構造化された辞書形式で抽出します。 コメント行 (# で始まる行) と空行はスキップされます。 セクション名は、セクションの定義行全体とともに、その開始行番号も保持されます。
- parse(content)[ソース]
与えられたテキストコンテンツを解析します。
概要: 入力されたINI/TOML形式の文字列を解析し、セクションごとのキーと値のペアを抽出します。
詳細説明: 解析前に self.data と self.sections をリセットします。 行ごとにコンテンツを走査し、正規表現を使用してセクション定義 ([section]) を識別します。 識別されたセクションは self.sections に元の行と行番号と共に保存されます。 キー=値のペアは現在のセクションの下に格納されます。セクションが定義されていない場合、 空文字列のキーを持つデフォルトセクションに格納されます。
- パラメータ:
content -- str: 解析する文字列コンテンツ。
- 戻り値:
tuple: - dict: 解析されたデータ。セクション名をキーとし、その中にキー=値のペアを持つ辞書。 - list: セクション情報のリスト。各要素は (元のセクション行文字列, 行番号, 元の行) のタプル。
- class editor.iniedit.TomlEditor(master, initial_file=None, initial_line=None, initial_col=None)[ソース]
ベースクラス:
objectINI/TOMLファイルのためのメインエディタアプリケーションです。
概要: Tkinterをベースにしたテキストエディタで、設定ファイルの編集に特化した機能を提供します。
詳細説明: ファイルの開閉、保存、検索・置換、構文ハイライト、ドラッグ&ドロップ、 設定の永続化、セクション一覧表示、外部コマンド実行などの機能を含みます。 iniedit.ini からウィンドウサイズや位置、フォント設定を読み込み、 text.ini からコンテキストメニューに挿入するテキストを、 color.ini から構文ハイライトルールを読み込みます。
以前の検索条件を使用して、次の検索結果にジャンプします。
概要: 最後に実行された検索の条件(検索語、正規表現、大文字小文字区別)を記憶しており、 それに基づいてテキストエリア内の次の出現箇所を検索します。
以前の検索条件を使用して、前の検索結果にジャンプします。
概要: 最後に実行された検索の条件(検索語、正規表現、大文字小文字区別)を記憶しており、 それに基づいてテキストエリア内の前の出現箇所を検索します。
- find_text()[ソース]
検索ダイアログを表示します。
概要: テキストを検索するための独立したダイアログウィンドウを作成し、表示します。
詳細説明: 既に検索ダイアログが開いている場合は、既存のダイアログを前面に表示します。 ダイアログには検索文字列の入力フィールド、正規表現オプション、大文字小文字区別オプション、 「前を検索」「次を検索」「閉じる」ボタンが含まれます。 ダイアログのサイズと位置は iniedit.ini から読み込まれ、終了時に保存されます。
- handle_drop(event)[ソース]
ファイルがエディタにドラッグ&ドロップされたときの処理を行います。
概要: ドラッグ&ドロップイベントからファイルパスを取得し、そのファイルをエディタに読み込みます。
詳細説明: ドロップされたファイルパスは event.data から取得され、余分な括弧やスペースが除去されます。 もし現在のファイルに未保存の変更がある場合、ユーザーに保存を促します。 ファイルが有効な場合は _load_initial_file を呼び出して開きます。 そうでない場合は警告メッセージが表示されます。
- パラメータ:
event -- TkinterDnD.Event: ドラッグ&ドロップイベントオブジェクト。
- 戻り値:
None
- manual_apply_highlighting()[ソース]
手動で構文ハイライトを適用します。
概要: color.ini からハイライトルールを再読み込みし、テキストエリアのコンテンツに適用します。
詳細説明: 主にデバッグや、color.ini を変更した後にエディタを再起動せずにハイライトを更新したい場合に呼び出されます。 ルールを読み込み、タグを設定し、テキストエリア全体にハイライトを適用する一連の処理を実行します。
- new_file()[ソース]
新しい空のファイルを作成します。
概要: 現在編集中のファイルに未保存の変更がある場合、保存を促した上で、 テキストエリアの内容をクリアし、新規ファイルとしてエディタをリセットします。
詳細説明: self.loading フラグを True に設定し、UIの更新を一時停止します。 current_file を None に設定し、タイトルバーを「無題」に戻します。 文字コードも「自動判別」にリセットされます。 リセット後、_finish_loading が呼び出されます。
- 戻り値:
None
- on_text_modified(event=None)[ソース]
テキストエリアの内容が変更されたときにウィンドウタイトルを更新します。
概要: テキストエリアに変更があった場合、ウィンドウタイトルにファイル名の後にアスタリスク * を追加します。
詳細説明: self.loading フラグが True の間は、この処理はスキップされます。 これにより、初期ファイル読み込み時の不要なタイトル更新が防がれます。 edit_modified() メソッドを使用して変更状態をチェックします。
- open_file()[ソース]
ファイルダイアログを開き、ファイルを選択してエディタに読み込みます。
概要: ユーザーにファイル選択ダイアログを表示し、選択されたファイルをエディタに開きます。
詳細説明: 現在編集中のファイルに未保存の変更がある場合、保存を促します。 .ini, .toml, .txt ファイル、およびすべてのファイルタイプをフィルタリングするダイアログが表示されます。 ファイルが選択された場合、_load_initial_file を呼び出してそのファイルを読み込みます。
- 戻り値:
None
- replace_text()[ソース]
置換ダイアログを表示します。
概要: テキストを検索し、置換するための独立したダイアログウィンドウを作成し、表示します。
詳細説明: 既に置換ダイアログが開いている場合は、既存のダイアログを前面に表示します。 ダイアログには検索文字列の入力フィールド、置換文字列の入力フィールド、 正規表現オプション、大文字小文字区別オプション、 「次を検索」「置換」「すべて置換」「閉じる」ボタンが含まれます。 ダイアログのサイズと位置は iniedit.ini から読み込まれ、終了時に保存されます。
- save_file()[ソース]
現在のファイルを保存します。
概要: 現在開いているファイルがある場合、そのファイルに内容を上書き保存します。 新規ファイルの場合(まだファイルパスがない場合)は、save_file_as を呼び出して ユーザーにファイルパスを尋ねます。
- 戻り値:
None
- save_file_as()[ソース]
ファイルダイアログを開き、指定された名前でファイルを保存します。
概要: 「名前を付けて保存」ダイアログをユーザーに表示し、新しいファイル名とパスを選択させ、 現在のエディタの内容をその場所に保存します。
詳細説明: .ini, .toml, .txt ファイル、およびすべてのファイルタイプをフィルタリングするダイアログが表示されます。 ファイルパスが選択された場合、_save_content を呼び出してファイルを保存します。
- 戻り値:
None
- show_section_dialog()[ソース]
セクション一覧表示ダイアログを開きます。
概要: ファイル内のセクション([section] 形式の行)を一覧表示し、 選択するとエディタ内の該当セクションにジャンプできる独立したダイアログウィンドウを作成し、表示します。
詳細説明: 既にセクションダイアログが開いている場合は、既存のダイアログを前面に表示します。 ダイアログには、セクションを検索するための正規表現入力フィールドと、大文字小文字区別のチェックボックスが含まれます。 検索結果はリストボックスに表示され、ユーザーが項目を選択するとエディタが該当行にスクロールし、その行をハイライトします。 ダイアログのサイズと位置は iniedit.ini から読み込まれ、終了時に保存されます。
- class editor.iniedit.ToolTip(widget, text)[ソース]
ベースクラス:
objectウィジェットにツールチップ機能を提供します。
概要: 指定されたTkinterウィジェットにマウスカーソルが乗った際に、短いテキスト(ツールチップ)を表示します。
詳細説明: tkinter.Toplevel ウィンドウを使用してツールチップを表示します。 マウスがウィジェットに入ると500ミリ秒後に表示がスケジュールされ、 マウスがウィジェットから離れるか、ボタンが押されると非表示になります。 これにより、ユーザーインターフェースに役立つコンテキスト情報を提供します。
- editor.iniedit.main()[ソース]
アプリケーションのエントリポイントです。
概要: コマンドライン引数を解析し、Tkinterルートウィンドウと TomlEditor インスタンスを作成し、メインループを開始します。
詳細説明: argparse を使用して、起動時に開くINI/TOMLファイル、開始行、開始桁をコマンドライン引数として受け取ります。 TkinterDnD.Tk() を使用して、ファイルドラッグ&ドロップ機能をサポートするルートウィンドウを作成します。 TomlEditor クラスのインスタンスを生成し、アプリケーションのGUIを構築・表示します。 その後、root.mainloop() を呼び出して、Tkinterアプリケーションイベントループを開始します。
- 戻り値:
None
- editor.iniedit.parse_multiline_ini(filepath)[ソース]
複数行の値を含むINIファイルを解析します。
概要: """ で囲まれた複数行の値をサポートするINIファイル(キー=値形式)を解析します。
詳細説明: ファイルのエンコーディングを自動判別し、信頼度が80%未満の場合はUTF-8をフォールバックとして使用します。 """ で開始し """ で終了する値は、内部の改行を含めて1つの値として処理されます。 ファイルが存在しない場合は空の辞書を返します。コメント行はスキップされます。
- パラメータ:
filepath -- str: 解析するINIファイルのパス。
- 戻り値:
dict: 解析したキーと値のペアを含む辞書。
- editor.iniedit.read_ini(filepath)[ソース]
INIファイルから設定を読み込みます。
概要: シンプルなINIファイル(キー=値形式、セクションは不要)から設定を読み込み、辞書として返します。
詳細説明: ファイルのエンコーディングを自動判別し、信頼度が80%未満の場合はUTF-8をフォールバックとして使用します。 ファイルが存在しない場合は空の辞書を返します。 行頭が'#'の行と空行はスキップされます。
- パラメータ:
filepath -- str: 読み込むINIファイルのパス。
- 戻り値:
dict: 読み込んだキーと値のペアを含む辞書。エラーが発生した場合は空の辞書。