Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow set End Time for canvas directly from workarea #684

Closed
morevnaproject opened this issue Nov 30, 2018 · 19 comments
Closed

Allow set End Time for canvas directly from workarea #684

morevnaproject opened this issue Nov 30, 2018 · 19 comments

Comments

@morevnaproject
Copy link
Member

@morevnaproject morevnaproject commented Nov 30, 2018

Problem:

  • People often ask how to set animation length.
  • The End Time parameter is hidden deep in "Canvas" -> "Properties" dialog ( "Canvas" -> "Properties" -> "Time" tab -> "End Time").

screenshot_003

Solution:
Add "End Time" text field to workarea -

screenshot_005

@BobSynfig

This comment has been minimized.

Copy link
Collaborator

@BobSynfig BobSynfig commented Jan 4, 2019

Don't forget to add a check and a warning in case of shrink of duration.
If keyframes/waypoints exist beyond the new limit, they are lost ;)
Not sure a text field would be the best here, I think a button with a direct acces to the settings would be less dangerous and would permit to view the other available options for Canvas ^^

@unternehmen

This comment has been minimized.

Copy link

@unternehmen unternehmen commented Jan 8, 2019

Yes, the program should protect waypoints/keyframes from being deleted like @BobSynfig says.

But I do like the idea of a text box there rather than a button. The text box would eliminate having to go to a new window in order to change the length of the animation. One way to protect keyframes would be to allow keyframes or waypoints to exist independently of the canvas duration, which is the way LMMS does song lengths:

screenshot from 2019-01-07 19-50-18

In the song above, those green arrows that I circled in red show where the song begins and ends. Users can put music notes after the end of the song; they just don't show up in rendered copies.

If Synfig supported placing waypoints past the endtime of the canvas like LMMS does, it would make it less dangerous to change the duration.

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Jan 8, 2019

If keyframes/waypoints exist beyond the new limit, they are lost ;)

The behavior is different. If you change the duration, then waypoints beyound the new limit will continue to exist. Just try to change duration via "Canvas" -> "Properties" dialog and then revert it back. ^__^

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Jan 8, 2019

If Synfig supported placing waypoints past the endtime of the canvas like LMMS does, it would make it less dangerous to change the duration.

This is exactly how Synfig works currently. ^__^

I also prefer input text box instead of button. Something similar to Blender:

screenshot_003

@unternehmen

This comment has been minimized.

Copy link

@unternehmen unternehmen commented Jan 11, 2019

Oh, I did not check! It's good to know it does not delete waypoints when the canvas duration changes. ':-D

I agree, Blender's way of doing it is nice and helps discoverability. It would be a great benefit to Synfig learners. 👍

@rockyhandsome1

This comment has been minimized.

Copy link
Contributor

@rockyhandsome1 rockyhandsome1 commented Mar 3, 2019

@morevnaproject I would like to work on this issue.
If I get stuck anyware then will be informing the same.

@rockyhandsome1

This comment has been minimized.

Copy link
Contributor

@rockyhandsome1 rockyhandsome1 commented Mar 4, 2019

Hi @morevnaproject I have added the Set end time entry to the end. According to you this should be placed before repeat icon but all these icons fall under single group i.e.,framelist and are referenced with single pointer framelist.
screenshot from 2019-03-04 19-15-15
and now I am going through its core implementation (rendesc).
( "Canvas" -> "Properties" -> "Time" tab -> "End Time").
:)

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Mar 4, 2019

Hi @rockyhandsome1! Glad to see you started to work on this issue!
Can you please places the Set End Time entry before the "Loop" button? ^__^

screenshot_003

@rockyhandsome1

This comment has been minimized.

Copy link
Contributor

@rockyhandsome1 rockyhandsome1 commented Mar 5, 2019

Hi @morevnaproject is there any way to call each framedial button seperately for there position adjustment in canvasview.cpp. If not then modifyng the framedial library is the way?

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Mar 5, 2019

@rockyhandsome1

This comment has been minimized.

Copy link
Contributor

@rockyhandsome1 rockyhandsome1 commented Mar 6, 2019

Hi @morevnaproject I placed it in the desired location and now I will work on its implementation.
I have to manage my college too so, will be bringing this feature in to effect soon.
screenshot from 2019-03-06 19-45-44

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Mar 6, 2019

@rockyhandsome1 Looks good! Thanks for keeping me updated! ^__^

@rockyhandsome1

This comment has been minimized.

Copy link
Contributor

@rockyhandsome1 rockyhandsome1 commented Mar 8, 2019

Hi @morevnaproject I am stuck need your help.
I have submitted a message at: https://www.synfig.org/contact/
waiting for your reply.

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Mar 8, 2019

@rockyhandsome1 Yes, sorry for some delay. Duplicating answer here just in case ^__^ -

I think you need to create a signal in framedial.h, which is responsive for changing value of TextEntry.
Here you can see similar signals created for buttons in framedial.h - https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/dials/framedial.h#L76

Then, in canvasview.cpp you connect signal to an actual function, which is called when signal is emitted - https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/canvasview.cpp#L947

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Mar 13, 2019

Hi @rockyhandsome1! I have examined your code at https://github.com/rockyhandsome1/synfig/commits/endtimefeature and here are my recommendations:

It is not possible to access RendDesc from framedial.cpp. So, I recommend to set fps and initial values for end time widget from canvasview.cpp.

Please check the code for CurrentTimeWidget as an example:

//Setup the current time widget
current_time_widget=manage(new Widget_Time);
current_time_widget->set_value(get_time());
current_time_widget->set_fps(get_canvas()->rend_desc().get_frame_rate());
current_time_widget->signal_value_changed().connect(
sigc::mem_fun(*this,&CanvasView::on_current_time_widget_changed)
);
current_time_widget->set_size_request(0,-1); // request horizontal shrink
current_time_widget->set_width_chars(5);
current_time_widget->set_tooltip_text(_("Current time"));
current_time_widget->show();

Obviously, you cannot set value and fps for EndTimeWIdget directly from CanvasView, because EndTimeWIdget belongs to FrameDial.

But you can create a public function in framedial.cpp, which sets values for EndTimeWidget. And then you can call this function from canvasview.cpp.

@rockyhandsome1

This comment has been minimized.

Copy link
Contributor

@rockyhandsome1 rockyhandsome1 commented Mar 23, 2019

Hi @morevnaproject sorry for the delay.
Feature is implemented.
will be generating the PR soon..
I have mailed you, regarding the same :)

@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Mar 23, 2019

Hi @rockyhandsome1!
Great, please make sure to rebase your commits on the latest status of our master branch. Otherwise it is hard to see changes in your code. Thank you! ^__^

@rockyhandsome1

This comment has been minimized.

Copy link
Contributor

@rockyhandsome1 rockyhandsome1 commented Apr 1, 2019

Hi @morevnaproject I have rebased my commits:)

@morevnaproject morevnaproject removed the Assigned label Apr 2, 2019
@morevnaproject

This comment has been minimized.

Copy link
Member Author

@morevnaproject morevnaproject commented Apr 2, 2019

Implemented by @rockyhandsome1 via #792

@morevnaproject morevnaproject added this to Done in Releases Apr 3, 2019
@morevnaproject morevnaproject moved this from Done to Released in Releases Feb 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Releases
Released
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants
You can’t perform that action at this time.