Files
hakorune/examples/debug_notepad.rs

86 lines
2.7 KiB
Rust
Raw Normal View History

🎨 feat: EguiBox GUI開発基盤完成 + パーサー無限ループバグ修正 ## 🚀 主要機能追加 ### EguiBox - GUI開発基盤 - Windows版GUIメモ帳アプリ (simple_notepad.rs, nyash_notepad_jp.rs) - 日本語フォント対応 (NotoSansJP-VariableFont_wght.ttf) - BMPアイコン表示システム (c_drive_icon.bmp) - Windowsエクスプローラー風アプリ (nyash_explorer.rs) - アイコン抽出システム (test_icon_extraction.rs) ### ビジュアルプログラミング準備 - NyashFlow プロジェクト設計完成 (NYASHFLOW_PROJECT_HANDOVER.md) - ビジュアルノードプロトタイプ基盤 - WebAssembly対応準備 ## 🔧 重大バグ修正 ### パーサー無限ループ問題 (3引数メソッド呼び出し) - 原因: メソッドパラメータ解析ループの予約語処理不備 - 修正: src/parser/mod.rs - 非IDENTIFIERトークンのエラーハンドリング追加 - 効果: "from"等の予約語で適切なエラー報告、ハング→瞬時エラー ### MapBoxハング問題調査 - MapBox+3引数メソッド呼び出し組み合わせ問題特定 - バグレポート作成 (MAPBOX_HANG_BUG_REPORT.md) - 事前評価vs必要時評価の設計問題明確化 ## 🧹 コード品質向上 - box_methods.rs を8モジュールに機能分離 - 一時デバッグコード全削除 (eprintln\!, unsafe等) - 構文チェック通過確認済み ## 📝 ドキュメント整備 - CLAUDE.md にGUI開発セクション追加 - Gemini/ChatGPT先生相談ログ保存 (sessions/) - 段階的デバッグ手法確立 ## 🎯 次の目標 - must_advance\!マクロ実装 (無限ループ早期検出) - コマンド引数でデバッグ制御 (--debug-fuel) - MapBox問題の根本修正 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-10 07:54:03 +09:00
// Debug version to check input issues
use eframe::egui;
fn main() -> eframe::Result {
env_logger::init(); // Enable logging
let options = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default()
.with_inner_size([640.0, 480.0])
.with_title("Debug Notepad"),
..Default::default()
};
eframe::run_native(
"Debug Notepad",
options,
Box::new(|_cc| Ok(Box::new(DebugApp::default()))),
)
}
#[derive(Default)]
struct DebugApp {
text: String,
single_line: String,
event_log: Vec<String>,
}
impl eframe::App for DebugApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
egui::CentralPanel::default().show(ctx, |ui| {
ui.heading("Debug Text Input Test");
// Single line input
ui.horizontal(|ui| {
ui.label("Single Line:");
let response = ui.text_edit_singleline(&mut self.single_line);
if response.changed() {
self.event_log.push(format!("Single line changed: '{}'", self.single_line));
}
});
ui.separator();
// Multi line input
ui.label("Multi Line:");
let response = ui.add(
egui::TextEdit::multiline(&mut self.text)
.desired_width(f32::INFINITY)
.desired_rows(10)
);
if response.changed() {
self.event_log.push(format!("Multi line changed: {} chars", self.text.len()));
}
ui.separator();
// Show input events
ui.label("Event Log:");
egui::ScrollArea::vertical()
.max_height(100.0)
.show(ui, |ui| {
for event in &self.event_log {
ui.label(event);
}
});
// Debug info
ui.separator();
ui.label(format!("Text length: {}", self.text.len()));
ui.label(format!("Single line length: {}", self.single_line.len()));
// Test buttons
if ui.button("Add Test Text").clicked() {
self.text.push_str("Test ");
self.event_log.push("Button: Added test text".to_string());
}
if ui.button("Clear All").clicked() {
self.text.clear();
self.single_line.clear();
self.event_log.push("Button: Cleared all".to_string());
}
});
}
}