ImpulseAdventure / GUIslice-Builder

Cross-platform drag & drop GUI builder for GUIslice
Other
163 stars 35 forks source link

Advanced snapping #258

Closed etet100 closed 1 month ago

etet100 commented 1 month ago

I would like to present a functionality (work in progress) called advanced snapping. It extends the simple Snap To Grid function. It will add the following capabilities:

The third point I would like to implement as “smart” as possible. That is, for example

A simple example of how it works I would like to demonstrate with a video.

https://youtu.be/GCrhbCFgQmY

This is a work in progress. There are quite a few elements missing to work in the most basic version.

image

Pconti31 commented 1 month ago

I like it. Kind of a simple manual layout manager.


From: etet100 @.> Sent: Sunday, May 12, 2024 3:02 PM To: ImpulseAdventure/GUIslice-Builder @.> Cc: Subscribed @.***> Subject: [ImpulseAdventure/GUIslice-Builder] Advanced snapping (PR #258)

I would like to present a functionality (work in progress) called advanced snapping. It extends the simple Snap To Grid function. It will add the following capabilities:

The third point I would like to implement as “smart” as possible. That is, for example

A simple example of how it works I would like to demonstrate with a video.

https://youtu.be/GCrhbCFgQmY

This is a work in progress. There are quite a few elements missing to work in the most basic version.

image.png (view on web)https://github.com/ImpulseAdventure/GUIslice-Builder/assets/22624537/b64d68f8-b2c4-4eb4-9b85-c6024d1fabd5


You can view, comment on, or merge this pull request online at:

https://github.com/ImpulseAdventure/GUIslice-Builder/pull/258

Commit Summary

File Changes

(6 fileshttps://github.com/ImpulseAdventure/GUIslice-Builder/pull/258/files)

Patch Links:

— Reply to this email directly, view it on GitHubhttps://github.com/ImpulseAdventure/GUIslice-Builder/pull/258, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AKQIQYUZ2S77WJYYXS6MESLZB64DNAVCNFSM6AAAAABHTA37XCVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI4TCNBVHA3DKOI. You are receiving this because you are subscribed to this thread.Message ID: @.***>

etet100 commented 1 month ago

A little teaser. Ribbon buttons.

image

etet100 commented 1 month ago

I've made a lot of progress recently but there are still a lot of, difficult problems to solve: E.g.: 1) Saving guidelines settings in the project file. I'm not even trying to integrate this into the current binary format. I did the initial serialization to json and this is the only sensible solution. 2) Change history (Undo/Redo). Some things work. But already options like CUT, COPY, PASTE require too many changes in the core of the program. I might just disable the ability to use these commands for guidelines. 3) Some of the settings (such as line colors) are not configurable. Margins are red, guidelines are white, and so on.

Pconti31 commented 1 month ago

@etet100 While I apprediate the amount of effort you have put into this and
while I liked some aspects of your original idea I'm concerned you have over-designed this feature.

I also don't think guidlines should be persistent. I much prefer the way the Eclipse WindowsBuilder Plug-in works with GroupLayout. With Guidelines appearing only when you select a UI element, Like a JButton. The guidelines are just that. No snap to and they disappear when no UI Elements are selected.

win_builder

A major concern is that I need to keep backward compatibilty. People need to load older projects. Which is why my json work is taking some time.

I really think you might want to take a pause and rethink this approach,

Paul--

etet100 commented 1 month ago

I have experience with many modern applications and I don't think my approach is incorrect. The current program interface is extremely outdated and gives a 90s feel. I also disagree that my solution is over designed. It is still only a small part of what should be in this application.

I will not insist that my changes be included in the main branch. However, I believe that my changes are going in the only right direction.

And sticking to backward compatibility is also a big mistake. Someday you have to get rid of the ballast and allow further development. You can always release a version that bridges the gap between the old and new versions of project files.

etet100 commented 1 month ago

I am closing because there is no way to merge these changes anyway.

I will work on my fork.