ImGuiColorTextEdit
dirent
Our great sponsors
ImGuiColorTextEdit | dirent | |
---|---|---|
6 | 4 | |
1,324 | 1,011 | |
- | - | |
0.0 | 5.8 | |
3 months ago | 2 months ago | |
C++ | C | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ImGuiColorTextEdit
-
ImGuiColorTextEdit VS imgui_md - a user suggested alternative
2 projects | 12 Jan 2023
-
[Discussion] What are some old C++ open source projects you wish were still active?
ImGuiColorTextEdit is a quite complete text editor for ImGui.
-
I have implemented shader hot-reloading as well as a GLSL text editor in my custom game engine using an OpenGL renderer. One more step closer to ShaderToy.
I am using Dear ImGui as the low-level GUI library, meanwhile for the text editor I am using ImGuiColorTextEdit widget.
-
OGL - A Great Cross Platform OpenGL Base Library With Almost Everything OpenGL You might Ever need
imguicolortextedit
- Is WinUI the most modern GUI library for C++ desktop applications on Windows?
-
Show HN: Virtual breadboard in your desktop browser, inspired by Ben Eater 6502
The text editor is this one https://github.com/BalazsJako/ImGuiColorTextEdit, it's listed on the third-party attributions page (https://www.tejotron.com/thirdparty.html)
dirent
-
Iterate filesystem and store information in a struct array
#include #include #include #include #include #include #include typedef struct file_info { char *path; // ToDo: more info in the future } file_info; // Function prototypes bool is_special_file(const char *file); file_info **find_all_files(const char *root_dir); int find_files(const char *dir_path, file_info ***files, int *cap, int *cnt); file_info *file_info_new(const char *path); int main(int argc, char **argv) { find_all_files("/tmp/test"); // ToDo: Free all the memory correctly return 0; } file_info *file_info_new(const char *path) { file_info *file = malloc(sizeof(file_info)); if (!file) return NULL; file->path = path; return file; } file_info **find_all_files(const char *root_dir) { file_info **files = malloc(sizeof(file_info *)); int capacity = 1; int count = 0; int result = find_files(root_dir, &files, &capacity, &count); printf("Array cap: %d\n", capacity); printf("Array count: %d\n", count); printf("-------------------\n"); for (int i = 0; i < count; i++) { printf("%s\n", files[i]->path); } return files; } // Based on the implementation from https://github.com/tronkko/dirent int find_files(const char *dir_path, file_info ***files, int *cap, int *cnt) { char buffer[PATH_MAX + 2]; char *p = buffer; char *end = &buffer[PATH_MAX]; // Copy directory name to buffer const char *src = dir_path; while (p < end && *src != '\0') { *p++ = *src++; } *p = '\0'; // Open directory stream DIR *dir_stream = opendir(dir_path); if (!dir_stream) { printf("Failed to open %s (%s)\n", dir_path, strerror(errno)); return -1; } // Iterate all files/directories within the directory struct dirent *ent; while ((ent = readdir(dir_stream)) != NULL) { char *q = p; char c; // Get final character of directory name if (buffer < q) c = q[-1]; else c = ':'; // Append directory separator if not already there if (c != ':' && c != '/' && c != '\\') *q++ = '/'; // Append file name to current directory path src = ent->d_name; while (q < end && *src != '\0') { *q++ = *src++; } *q = '\0'; // Resize array if needed if (*cnt == *cap) { int realloc_size = (*cap) * 2; file_info **tmp_files = realloc(*files, realloc_size * sizeof(file_info *)); if (!tmp_files) exit(1); *cap *= 2; *files = tmp_files; } // Process every dirent type switch (ent->d_type) { case DT_LNK: { printf("[LINK] %s\n", buffer); (*files)[*cnt] = file_info_new(buffer); (*cnt)++; break; } case DT_REG: { printf("[FILE] %s\n", buffer); (*files)[*cnt] = file_info_new(buffer); (*cnt)++; break; } case DT_DIR: { if (!is_special_file(ent->d_name)) { printf("[DIR] %s\n", buffer); (*files)[*cnt] = file_info_new(buffer); (*cnt)++; find_files(buffer, files, cap, cnt); } break; } default: break; } } return 0; } bool is_special_file(const char *file) { if (strcmp(file, ".") != 0 && strcmp(file, "..") != 0) return false; return true; }
-
Iterate files/directories/subdirectories in C ?
Thanks for the reply. Yea, I wonder how I would go about implementing an iterative approach tho. I am currently working with the following implementation: https://github.com/tronkko/dirent/blob/master/include/dirent.h
-
How can you iterate up the directory tree until the program gets to the first?
You can use dirent for both if you include a compatibility shim for windows.
-
OGL - A Great Cross Platform OpenGL Base Library With Almost Everything OpenGL You might Ever need
dirent
What are some alternatives?
imgui-app - Dear IMGUI + Render + Window handling, amalgamation in two files ready to use
imgui-node-editor - Node Editor built using Dear ImGui
psychec - A compiler frontend for the C programming language
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
Notepad3 - Notepad like text editor based on the Scintilla source code. Notepad3 based on code from Notepad2 and MiniPath on code from metapath. Download Notepad3:
TinyErode - A portable C++ library for simulating hydraulic erosion.
libcake - Librairie en C
imgui_markdown - Markdown for Dear ImGui
glm
TerraForge3D - Cross Platform Professional Procedural Terrain Generation & Texturing Tool
stb - stb single-file public domain libraries for C/C++