+6
Declined

Remember window size and position for each note separately

Thomas Lohrum 8 years ago updated by Christof Deininger 5 years ago 29
editing complexity:medium other-ui

Answer

Answer
Declined
Closed due to inability to collect 10 votes for more than 2 years.

(I also made this comment in my post that you link to)

Another (very different) option/possibility would be to simply have the note-windows open to a default size & location (as opposed to the same size-location of last saved note).


would be nice to have this little feature.
A simple solution is to store the IDs of the last opened notes along with the placement settings in the "Cintanotes.settings" file. In case a note gets opened, for which a last placement is not available i'd prefer a standard window position. This should be rather easy to implement since it extends existing functionality only. 
Do I understand correctly that if you open and close all notes one by one, then for each note UID an entry will be added to cintanotes.settings?
The settings file contains entries such as "app.mainframe.noteeditdialog.placement<i> = []" already. What i am suggesting is to add the UID to it. For example "app.mainframe.noteeditdialog.placement1.uid = <uid>". When a note gets opened search the list of placement and check if an entry with for the respective uid exists. If no entry is found use a default window position.
Sorry for being slow here, I can't quite follow you.. So you suggest to keep placement1, placement2, etc, but also add the uid to it, so that we have placement1.uid1, placement1.uid2, placement2.uid1 ? Please keep in mind that placement2 = "second editor window". So that the one and same note can be opened at different positions depending on if there's already another editor window open. I guess this is not what you want, or maybe I'm wrong?
>So you suggest to keep placement1, placement2, etc, but also add the uid to it, so that we have placement1.uid1, placement1.uid2, placement2.uid1 ?
No. One placement will hold one uid only at any time.

>Please keep in mind that placement2 = "second editor window". So that the one and same note can be opened at different positions depending on if there's already another editor window open. 
How is that? I've never been able to open the one and same note in more than one editor window.
Not at the same time, of course. Here's an example:
placement1.uid[1] = (0, 0, 100, 100)
placement2.uid[1] = (50, 50, 150, 150)

Now if you open the note with uid[1] as the first editor, it will be shown at (0, 0, 100, 100), but if another note is already open, it will be shown at (50, 50, 150, 150).
Thanks for the clarification. "Now if you open the note with uid[1] as the first editor, it will be shown at (0, 0, 100, 100), but if another note is already open, it will be shown at (50, 50, 150, 150).". That is exactly the reason why i came up with my request in first place. This is not what i want. It makes the note jump around on my screen, depending on the order i (re-)open them. What i am asking for is a predictable way of opening notes. Either it's in the placements list so it can be opened on its last unique position or it will be opened as a new editor window with a default position.
Now it is clear, thanks. So you basically request the following scheme:
placement1 = <default pos for editor#1>
placement2 = <default pos for editor#2>
...
placement.uid[someuid1] = <pos for note with uid 1, takes precedence over placementN>
placement.uid[someuid2] = <pos for note with uid 2, takes precedence over placementN>

Is that correct?

I mean something different. First as the default i consider a fixed position. For example top-left-corner (top: 100/, left: 100). If the position is already in use, increment. For example top: 120, left: 120. Second i was thinking of placement1.uid=someuid, placement2.uid=someotheruid. If the note's uid is not in the list of placement1.uid...placement20.uid use the default.
Probably you meant placement.<uid1> = <placement1>?  Because I don't see the placement itself in your scheme (if uid is the value - where are the coordinates?).
So basically you want CN to remember position of any note that has once been opened, and use the default positions for new/never opened notes. Is that correct?
> if uid is the value - where are the coordinates?
The coordinates are stored in placement1 = [], just as they have always been.
So basically you want CN to remember position of any note that has once been opened,
This makes sense only when the position would be stored along the note itself, which in turn violates read-only databases. Alex, i realize this is not really easy to answer. Basically i am asking the computer to understand my desires before i do ;) The current system is fine for simple workflows. For example when you open one or two editor windows only at the same time. Often i work on a group of notes though. In that case i want CN to remember the arrangement of the editors, that is position, size and correlating note (uid). Grouping notes is one aspect only. Duration is another. After a couple of hours/days (when the work on the group is completed) the arrangement information can be released to avoid massive data collection. 
Thanks for the clarifications, Thomas! Frankly, this seems a bit complicated scheme, and doesn't really correspond to the title of this ticket/idea. But let's wait till it gets at least 10 votes, after that we can get back to the discussion.
I can think of two ways this could be realized...

1) An option to specify "remember the position of the last open editor windows for X days"
2) A special 'pin option' (an icon on every window) so one can manually choose to remember this window position.

I would prefer option 1.
But CN already remembers "position of the last open editor windows". If you want to add note UIDs in the picture here, you need to be more specific ;)
CN remembers the positions of the last windows BUT NOT note specific (or am I wrong here?). So if I open Note1 and Note2 bring them into position - close them - and open Note2 first and then Note1 -> the postions are swapped.
You asked Thomas: "So basically you want CN to remember position of any note that has once been opened"
and I thought the concern would be the amount of (partly unnecessary) positions that have to be stored 'forever'.
So I suggested to give those information an expiration date (keep info for X days). The window positions stored could then be deleted after X days have passed.

Does this make sense?
But maybe I didn't get the real problem you where talking about ;-(
>CN remembers the positions of the last windows BUT NOT note specific (or am I wrong here?). So if I open Note1 and Note2 bring them into position - close them - and open Note2 first and then Note1 -> the postions are swapped.
That is exactly the problem i am talking about.
>CN remembers the positions of the last windows BUT NOT note specific (or am I wrong here?). So if I open Note1 and Note2 bring them into position - close them - and open Note2 first and then Note1 -> the postions are swapped.
Introducing pin-state will allow finer control of window positions, thus grouping of notes will be possible as an example. However, it does not solve the above problem, which is rather common. Of course, i could pin any window when opening it. But after all i'd like CN to be smart enough to aid in such a simple case. Maybe pinning as a default could solve the request (add an ini-setting)?
2) A special 'pin option' (an icon on every window) so one can manually choose to remember this window position
Chris, this is a very interesting suggestion, as it allows to control the behaviour. 

Alex, how about the following suggestion:
  • keep the existing feature of window handling untouched
  • introduce a second cache for pinned editors, which will hold up to 20 items
  • the second cache will hold window position+size of a pinned editor window and the note's uid
  • since the cache holds uids it is global in regards to different databases used
  • when the cache is full the oldest item will be reused (ring buffer)
  • add a pin icon to the editor to switch pin-state of the editor
  • when a note gets opened, check whether there is an entry in the pin-cache. If there is an entry use it. If there is no entry proceed with the classic behaviour. 
Thomas
Looks good to me, although any extra UI elements make it harder to implement. Can we get by with an entry in the editor window's system menu (which appears on Alt+Space, or right-click on the window icon)?
I would at least want:
1) a hotkey to trigger it
2) a visual clue (eg. a special addition to the window title or a special windows icon)
The system menu is no problem in general. However there should be a visible indicator to represent the pin-state. Also i suggest to include a shortcut.
Ok, agreed. Thanks guys
In case anybody is interested: I found a tool (not freeware but reasonable priced) that will remember all the window positions and sizes and can restore them automatically. >> Desksoft WindowManager
This tool can do more but - as I found out - this also works great with the editor windows of CN.
You could even add some clever rules to open e.g. 'Tasks' on a special position  (if you can identify a task from the text in the title bar).

Cool, thanks for the tip Chris!
Answer
Declined
Closed due to inability to collect 10 votes for more than 2 years.