mfc_editor_scene_start.c 2.1 KB

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