FLOW
- 4 Devlogs
- 4 Total hours
A drag-and-drop productivity application that simplifies common file operations through a modular plugin system.
A drag-and-drop productivity application that simplifies common file operations through a modular plugin system.
In this update I added support for STL and 3MF files, making the app even more useful for 3D printing. The new plugin currently includes two actions. The first one shows the model dimensions and volume, while the second estimates the print’s weight and material cost based on the material density, filament price and infill percentage. The results are saved into a text file so they can be easily viewed later. To support this, I also extended the parameter system by adding a new float parameter type. This means plugins are no longer limited to integers or predefined choices and can now request decimal values whenever needed. Adding support for two completely new file formats only required creating a new plugin, without changing the plugin manager or the overall application structure. I also think these features will be genuinely useful for anyone who regularly works with 3D printing models.
This update was very simple and I was able to do it pretty fast(I has already started working on it but forgot to mension in the last devlog)
In this update I added 2 more plugins, .zip and .pdf, I also added support for dropping multiple files at the same time. This allowed me to implement the first action that actually requires more than one file (merge PDF). Now, when you drop a single PDF, the app shows the actions that make sense for one file, like rotate and extract text but if you drop multiple pdfs together, those actions are replaced by merge, which combines all the selected pdfs into a single document while keeping the original order. To make this work, I had to change the plugin architecture so that plugins now receive a list of files instead of just one. This means that every plugin can decide which actions should be available depending on the context, without requiring any changes to the UI. I really like this update because it makes the project much more scalable.
The .zip plugin is pretty simple, it lets you extract a .zip file or convert it into .7z
It’s been a little while since my last update(2 days) because I haven’t had much free time recently, so I’ve only been able to work on this project in short sessions, making small improvements whenever I had the chance.
For this update, I focused on connecting the UI with the plugin system. Now the app can detect the correct plugin for the dropped file, displays messages saying what was done and has options that were missing before, like image dimensions or output format.
Although these aren’t the most exciting features, they’re an important thing to be done, because the application is becoming truly modular, which means future plugins (PDFs, videos, archives, STL files) should integrate with very little additional work.
The idea behind Flow is simple: instead of opening multiple applications to perform common tasks like compressing an image, converting a file, or extracting text from a PDF, users can simply drag and drop a file into Flow and instantly access the actions available for that file type/extension. My goal is to reduce the number of steps required for common tasks.
So far I have designed the overall architecture of the application, created a plugin-based system to make the project easily extensible, implemented a plugin manager that automatically discovers and loads plugins, defined a base FlowPlugin class that all plugins will inherit from, built a simple test plugin to verify that the plugin system works correctly, started developing the graphical interface using CustomTkinter and tkinterdnd2(basically a window that only detects when something gets dropped in there).