mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Internals: add AddSettingsHandler(), RemoveSettingsHandler().
This commit is contained in:
		
							
								
								
									
										18
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -4479,11 +4479,11 @@ void ImGui::Initialize(ImGuiContext* context)
 | 
				
			|||||||
        ini_handler.ReadLineFn = WindowSettingsHandler_ReadLine;
 | 
					        ini_handler.ReadLineFn = WindowSettingsHandler_ReadLine;
 | 
				
			||||||
        ini_handler.ApplyAllFn = WindowSettingsHandler_ApplyAll;
 | 
					        ini_handler.ApplyAllFn = WindowSettingsHandler_ApplyAll;
 | 
				
			||||||
        ini_handler.WriteAllFn = WindowSettingsHandler_WriteAll;
 | 
					        ini_handler.WriteAllFn = WindowSettingsHandler_WriteAll;
 | 
				
			||||||
        g.SettingsHandlers.push_back(ini_handler);
 | 
					        AddSettingsHandler(&ini_handler);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Add .ini handle for ImGuiTable type
 | 
					    // Add .ini handle for ImGuiTable type
 | 
				
			||||||
    TableSettingsInstallHandler(context);
 | 
					    TableSettingsAddSettingsHandler();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Create default viewport
 | 
					    // Create default viewport
 | 
				
			||||||
    ImGuiViewportP* viewport = IM_NEW(ImGuiViewportP)();
 | 
					    ImGuiViewportP* viewport = IM_NEW(ImGuiViewportP)();
 | 
				
			||||||
@@ -11618,6 +11618,20 @@ ImGuiWindowSettings* ImGui::FindOrCreateWindowSettings(const char* name)
 | 
				
			|||||||
    return CreateNewWindowSettings(name);
 | 
					    return CreateNewWindowSettings(name);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ImGui::AddSettingsHandler(const ImGuiSettingsHandler* handler)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    ImGuiContext& g = *GImGui;
 | 
				
			||||||
 | 
					    IM_ASSERT(FindSettingsHandler(handler->TypeName) == NULL);
 | 
				
			||||||
 | 
					    g.SettingsHandlers.push_back(*handler);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ImGui::RemoveSettingsHandler(const char* type_name)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    ImGuiContext& g = *GImGui;
 | 
				
			||||||
 | 
					    if (ImGuiSettingsHandler* handler = FindSettingsHandler(type_name))
 | 
				
			||||||
 | 
					        g.SettingsHandlers.erase(handler);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ImGuiSettingsHandler* ImGui::FindSettingsHandler(const char* type_name)
 | 
					ImGuiSettingsHandler* ImGui::FindSettingsHandler(const char* type_name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImGuiContext& g = *GImGui;
 | 
					    ImGuiContext& g = *GImGui;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								imgui.h
									
									
									
									
									
								
							@@ -65,7 +65,7 @@ Index of this file:
 | 
				
			|||||||
// Version
 | 
					// Version
 | 
				
			||||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
 | 
					// (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens)
 | 
				
			||||||
#define IMGUI_VERSION               "1.88 WIP"
 | 
					#define IMGUI_VERSION               "1.88 WIP"
 | 
				
			||||||
#define IMGUI_VERSION_NUM           18709
 | 
					#define IMGUI_VERSION_NUM           18710
 | 
				
			||||||
#define IMGUI_CHECKVERSION()        ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
 | 
					#define IMGUI_CHECKVERSION()        ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
 | 
				
			||||||
#define IMGUI_HAS_TABLE
 | 
					#define IMGUI_HAS_TABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2541,6 +2541,8 @@ namespace ImGui
 | 
				
			|||||||
    IMGUI_API ImGuiWindowSettings*  CreateNewWindowSettings(const char* name);
 | 
					    IMGUI_API ImGuiWindowSettings*  CreateNewWindowSettings(const char* name);
 | 
				
			||||||
    IMGUI_API ImGuiWindowSettings*  FindWindowSettings(ImGuiID id);
 | 
					    IMGUI_API ImGuiWindowSettings*  FindWindowSettings(ImGuiID id);
 | 
				
			||||||
    IMGUI_API ImGuiWindowSettings*  FindOrCreateWindowSettings(const char* name);
 | 
					    IMGUI_API ImGuiWindowSettings*  FindOrCreateWindowSettings(const char* name);
 | 
				
			||||||
 | 
					    IMGUI_API void                  AddSettingsHandler(const ImGuiSettingsHandler* handler);
 | 
				
			||||||
 | 
					    IMGUI_API void                  RemoveSettingsHandler(const char* type_name);
 | 
				
			||||||
    IMGUI_API ImGuiSettingsHandler* FindSettingsHandler(const char* type_name);
 | 
					    IMGUI_API ImGuiSettingsHandler* FindSettingsHandler(const char* type_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Scrolling
 | 
					    // Scrolling
 | 
				
			||||||
@@ -2744,7 +2746,7 @@ namespace ImGui
 | 
				
			|||||||
    IMGUI_API void                  TableSaveSettings(ImGuiTable* table);
 | 
					    IMGUI_API void                  TableSaveSettings(ImGuiTable* table);
 | 
				
			||||||
    IMGUI_API void                  TableResetSettings(ImGuiTable* table);
 | 
					    IMGUI_API void                  TableResetSettings(ImGuiTable* table);
 | 
				
			||||||
    IMGUI_API ImGuiTableSettings*   TableGetBoundSettings(ImGuiTable* table);
 | 
					    IMGUI_API ImGuiTableSettings*   TableGetBoundSettings(ImGuiTable* table);
 | 
				
			||||||
    IMGUI_API void                  TableSettingsInstallHandler(ImGuiContext* context);
 | 
					    IMGUI_API void                  TableSettingsAddSettingsHandler();
 | 
				
			||||||
    IMGUI_API ImGuiTableSettings*   TableSettingsCreate(ImGuiID id, int columns_count);
 | 
					    IMGUI_API ImGuiTableSettings*   TableSettingsCreate(ImGuiID id, int columns_count);
 | 
				
			||||||
    IMGUI_API ImGuiTableSettings*   TableSettingsFindByID(ImGuiID id);
 | 
					    IMGUI_API ImGuiTableSettings*   TableSettingsFindByID(ImGuiID id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3433,9 +3433,8 @@ static void TableSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandle
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ImGui::TableSettingsInstallHandler(ImGuiContext* context)
 | 
					void ImGui::TableSettingsAddSettingsHandler()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ImGuiContext& g = *context;
 | 
					 | 
				
			||||||
    ImGuiSettingsHandler ini_handler;
 | 
					    ImGuiSettingsHandler ini_handler;
 | 
				
			||||||
    ini_handler.TypeName = "Table";
 | 
					    ini_handler.TypeName = "Table";
 | 
				
			||||||
    ini_handler.TypeHash = ImHashStr("Table");
 | 
					    ini_handler.TypeHash = ImHashStr("Table");
 | 
				
			||||||
@@ -3444,7 +3443,7 @@ void ImGui::TableSettingsInstallHandler(ImGuiContext* context)
 | 
				
			|||||||
    ini_handler.ReadLineFn = TableSettingsHandler_ReadLine;
 | 
					    ini_handler.ReadLineFn = TableSettingsHandler_ReadLine;
 | 
				
			||||||
    ini_handler.ApplyAllFn = TableSettingsHandler_ApplyAll;
 | 
					    ini_handler.ApplyAllFn = TableSettingsHandler_ApplyAll;
 | 
				
			||||||
    ini_handler.WriteAllFn = TableSettingsHandler_WriteAll;
 | 
					    ini_handler.WriteAllFn = TableSettingsHandler_WriteAll;
 | 
				
			||||||
    g.SettingsHandlers.push_back(ini_handler);
 | 
					    AddSettingsHandler(&ini_handler);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-------------------------------------------------------------------------
 | 
					//-------------------------------------------------------------------------
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user