mfc_editor_scene_start.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "../mfc_editor_app_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexOpen,
  4. SubmenuIndexCreate,
  5. };
  6. void mfc_editor_scene_start_submenu_callback(void* context, uint32_t index) {
  7. MfcEditorApp* instance = context;
  8. view_dispatcher_send_custom_event(instance->view_dispatcher, index);
  9. }
  10. void mfc_editor_scene_start_on_enter(void* context) {
  11. MfcEditorApp* instance = context;
  12. Submenu* submenu = instance->submenu;
  13. submenu_add_item(
  14. submenu, "Open", SubmenuIndexOpen, mfc_editor_scene_start_submenu_callback, instance);
  15. submenu_add_item(
  16. submenu,
  17. "Create New",
  18. SubmenuIndexCreate,
  19. mfc_editor_scene_start_submenu_callback,
  20. instance);
  21. submenu_set_selected_item(
  22. submenu, scene_manager_get_scene_state(instance->scene_manager, MfcEditorSceneStart));
  23. view_dispatcher_switch_to_view(instance->view_dispatcher, MfcEditorAppViewSubmenu);
  24. }
  25. bool mfc_editor_scene_start_on_event(void* context, SceneManagerEvent event) {
  26. MfcEditorApp* instance = context;
  27. bool consumed = false;
  28. if(event.type == SceneManagerEventTypeCustom) {
  29. if(event.event == SubmenuIndexOpen) {
  30. scene_manager_next_scene(instance->scene_manager, MfcEditorSceneFileSelect);
  31. consumed = true;
  32. } else if(event.event == SubmenuIndexCreate) {
  33. DialogMessage* message = dialog_message_alloc();
  34. dialog_message_set_header(
  35. message, "Not implemented", 63, 30, AlignCenter, AlignCenter);
  36. dialog_message_show(instance->dialogs, message);
  37. dialog_message_free(message);
  38. consumed = true;
  39. }
  40. }
  41. if(consumed) {
  42. scene_manager_set_scene_state(instance->scene_manager, MfcEditorSceneStart, event.event);
  43. }
  44. return consumed;
  45. }
  46. void mfc_editor_scene_start_on_exit(void* context) {
  47. MfcEditorApp* instance = context;
  48. submenu_reset(instance->submenu);
  49. }