implement open file dialog for linux
This commit is contained in:
@@ -27,6 +27,7 @@ add_executable(panopainter
|
||||
../libs/poly2tri/poly2tri/sweep/sweep_context.cc
|
||||
../libs/poly2tri/poly2tri/sweep/sweep.cc
|
||||
../libs/fmt/src/format.cc
|
||||
../libs/tinyfiledialogs/tinyfiledialogs.c
|
||||
../src/pch.cpp
|
||||
../src/util.cpp
|
||||
../src/rtt.cpp
|
||||
@@ -115,6 +116,7 @@ target_include_directories(panopainter PRIVATE
|
||||
../libs/hash-library
|
||||
../libs/fmt/include
|
||||
../libs/glad/include
|
||||
../libs/tinyfiledialogs
|
||||
)
|
||||
|
||||
target_link_libraries(panopainter glfw curl GL dl X11 pthread)
|
||||
|
||||
@@ -70,13 +70,13 @@ int main(int argc, char** args)
|
||||
return 1;
|
||||
}
|
||||
|
||||
glfwSetCursorPosCallback(wnd, [](GLFWwindow* w, double x, double y){
|
||||
glfwSetCursorPosCallback(wnd, [](GLFWwindow* wnd, double x, double y){
|
||||
g_cursor_pos = glm::vec2(x, y);
|
||||
app.ui_task_async([=]{
|
||||
app.mouse_move(x, y, 1.f, kEventSource::Mouse, false);
|
||||
});
|
||||
});
|
||||
glfwSetMouseButtonCallback(wnd, [](GLFWwindow* w, int button, int action, int mods){
|
||||
glfwSetMouseButtonCallback(wnd, [](GLFWwindow* wnd, int button, int action, int mods){
|
||||
app.ui_task_async([=]{
|
||||
if (action == GLFW_PRESS)
|
||||
app.mouse_down(button, g_cursor_pos.x, g_cursor_pos.y, 1.f, kEventSource::Mouse, false);
|
||||
@@ -95,6 +95,11 @@ int main(int argc, char** args)
|
||||
glfwSetWindowShouldClose(app.glfw_window, GLFW_FALSE);
|
||||
});
|
||||
});
|
||||
glfwSetWindowRefreshCallback(wnd, [](GLFWwindow* wnd){
|
||||
app.ui_task_async([=]{
|
||||
app.redraw = true;
|
||||
}, true);
|
||||
});
|
||||
|
||||
glfwMakeContextCurrent(wnd);
|
||||
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
|
||||
|
||||
@@ -14,6 +14,9 @@ std::string win32_open_dir();
|
||||
void win32_show_cursor(bool visible);
|
||||
bool win32_clipboard_set_text(const std::string & s);
|
||||
std::string win32_clipboard_get_text();
|
||||
#elif __APPLE__
|
||||
#else
|
||||
#include <tinyfiledialogs.h>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -190,6 +193,9 @@ void App::pick_file(std::vector<std::string> types, std::function<void (std::str
|
||||
std::string path = win32_open_file(filter.c_str());
|
||||
if (!path.empty())
|
||||
callback(path);
|
||||
#else
|
||||
if (auto p = tinyfd_openFileDialog("Open File", "", 0, nullptr, nullptr, false))
|
||||
callback(p);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user