sirochild commited on
Commit
ae384c1
·
verified ·
1 Parent(s): 1b74d92

Upload main_app.py

Browse files
Files changed (1) hide show
  1. main_app.py +41 -12
main_app.py CHANGED
@@ -193,6 +193,11 @@ def initialize_cached_managers():
193
  """
194
  キャッシュ可能な管理クラスのみを初期化する
195
  Streamlitコンポーネントを使用しないクラスのみ
 
 
 
 
 
196
  """
197
  logger.info("Initializing cached managers...")
198
  # --- 手紙機能の依存モジュール ---
@@ -577,19 +582,33 @@ def save_game_data_to_file(managers):
577
 
578
  # --- ▼▼▼ 2. UIコンポーネントの関数化 ▼▼▼ ---
579
 
580
- def inject_custom_css(file_path="streamlit_styles.css"):
581
- # 常にCSSを読み込み(フラグチェックなし)
 
 
 
 
 
 
 
582
  try:
583
  with open(file_path, "r", encoding="utf-8") as f:
584
- css_content = f.read()
585
- st.markdown(f"<style>{css_content}</style>", unsafe_allow_html=True)
586
- logger.info(f"CSSファイルを読み込みました: {file_path}")
587
  except FileNotFoundError:
588
  logger.warning(f"CSSファイルが見つかりません: {file_path}")
589
- # フォールバック用の基本スタイルを適用
590
- apply_fallback_css()
591
  except Exception as e:
592
  logger.error(f"CSS読み込みエラー: {e}")
 
 
 
 
 
 
 
 
 
 
593
  apply_fallback_css()
594
 
595
 
@@ -2076,6 +2095,16 @@ Streamlit情報:
2076
  st.session_state._background_needs_update = True
2077
  logger.info("シーン変更により背景更新フラグを設定")
2078
 
 
 
 
 
 
 
 
 
 
 
2079
  # デバッグモード時にユーザーに通知
2080
  if st.session_state.get("debug_mode", False):
2081
  st.success(f"🎬 シーン変更: {current_theme} → {new_theme}")
@@ -2085,14 +2114,14 @@ Streamlit情報:
2085
  if st.session_state.get("debug_mode", False):
2086
  st.info(f"🎬 シーン変更なし: {current_theme} を維持")
2087
 
2088
- # シーン変更時に背景を更新
2089
  try:
2090
- logger.info(f"シーン変更時の背景更新: テーマ '{new_theme}' (重複更新許容)")
2091
- update_background(managers['scene_manager'], new_theme)
2092
  except Exception as e:
2093
- logger.error(f"シーン変更時の背景更新でエラーが発生: {e}")
2094
  import traceback
2095
- logger.error(f"シーン変更時の背景更新エラーの詳細: {traceback.format_exc()}")
2096
  # エラーが発生してもアプリケーションは継続
2097
 
2098
  # メモリ圧縮とサマリー取得(初期メッセージを除外)
 
193
  """
194
  キャッシュ可能な管理クラスのみを初期化する
195
  Streamlitコンポーネントを使用しないクラスのみ
196
+
197
+ Note: 新しいStreamlitキャッシュシステムを使用
198
+ - st.cache_resource: オブジェクト/リソース用(データベース接続、モデルなど)
199
+ - st.cache_data: データ用(DataFrame、辞書、リストなど)
200
+ - 旧st.cacheは非推奨
201
  """
202
  logger.info("Initializing cached managers...")
203
  # --- 手紙機能の依存モジュール ---
 
582
 
583
  # --- ▼▼▼ 2. UIコンポーネントの関数化 ▼▼▼ ---
584
 
585
+ @st.cache_data
586
+ def load_css_content(file_path: str) -> str:
587
+ """
588
+ CSSファイルの内容をキャッシュして読み込む
589
+
590
+ Note: Streamlit 4.44.1対応
591
+ - st.cache_data: データ(文字列、辞書など)のキャッシュに使用
592
+ - 旧st.cacheは非推奨のため新しいAPIを使用
593
+ """
594
  try:
595
  with open(file_path, "r", encoding="utf-8") as f:
596
+ return f.read()
 
 
597
  except FileNotFoundError:
598
  logger.warning(f"CSSファイルが見つかりません: {file_path}")
599
+ return ""
 
600
  except Exception as e:
601
  logger.error(f"CSS読み込みエラー: {e}")
602
+ return ""
603
+
604
+ def inject_custom_css(file_path="streamlit_styles.css"):
605
+ # キャッシュされたCSS読み込み
606
+ css_content = load_css_content(file_path)
607
+ if css_content:
608
+ st.markdown(f"<style>{css_content}</style>", unsafe_allow_html=True)
609
+ logger.info(f"CSSファイルを読み込みました: {file_path}")
610
+ else:
611
+ # フォールバック用の基本スタイルを適用
612
  apply_fallback_css()
613
 
614
 
 
2095
  st.session_state._background_needs_update = True
2096
  logger.info("シーン変更により背景更新フラグを設定")
2097
 
2098
+ # シーン変更時に即座に背景を更新
2099
+ try:
2100
+ logger.info(f"シーン変更時の背景更新: テーマ '{new_theme}' (即座に実行)")
2101
+ update_background(managers['scene_manager'], new_theme)
2102
+ except Exception as e:
2103
+ logger.error(f"シーン変更時の背景更新でエラーが発生: {e}")
2104
+ import traceback
2105
+ logger.error(f"シーン変更時の背景更新エラーの詳細: {traceback.format_exc()}")
2106
+ # エラーが発生してもアプリケーションは継続
2107
+
2108
  # デバッグモード時にユーザーに通知
2109
  if st.session_state.get("debug_mode", False):
2110
  st.success(f"🎬 シーン変更: {current_theme} → {new_theme}")
 
2114
  if st.session_state.get("debug_mode", False):
2115
  st.info(f"🎬 シーン変更なし: {current_theme} を維持")
2116
 
2117
+ # シーン変更なしの場合も現在のテーマで背景を更新(初回表示など)
2118
  try:
2119
+ logger.info(f"現在テーマでの背景更新: テーマ '{current_theme}' (維持)")
2120
+ update_background(managers['scene_manager'], current_theme)
2121
  except Exception as e:
2122
+ logger.error(f"現在テーマでの背景更新でエラーが発生: {e}")
2123
  import traceback
2124
+ logger.error(f"現在テーマでの背景更新エラーの詳細: {traceback.format_exc()}")
2125
  # エラーが発生してもアプリケーションは継続
2126
 
2127
  # メモリ圧縮とサマリー取得(初期メッセージを除外)