Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    GUI Progression Bar

    Scheduled Pinned Locked Moved PYTHON Development
    4 Posts 0 Posters 647 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      On 25/01/2018 at 03:12, xxxxxxxx wrote:

      Hi everyone,

      I'm trying to create a progression bar into my UI, but having difficulties in making it progress and stop when it finishes.

      Base on this great example, I manage to make it work, but there is a difference that want to happen.

      Instead of having a timer, would like the bar to progress when a function finishes.
      For example:

      |_______| 0%

      Def 1:
      Do Something
      progressbar += 1

      |==|____| 33%

      Def 2:
      Do Something
      progressbar += 1

      |====|__| 66%

      Def 3:
      Do Something
      progressbar += 1

      |======| 100%
      Done!

      If I create a function that adds the progress, unfortunately when it gets to end it does not display the message, has it seems is not running the Message Built-In Function.

      def Message(self, msg, result) :
              if msg.GetId() == c4d.BFM_TIMER_MESSAGE:
                  if self.progress==10:
                      self.StopProgress()
                      self.Close()
                      return True
              
              return gui.GeDialog.Message(self, msg, result)

      I'm trying to understand the logic for this and been struggling for a bit.
      Apologies if this sounds confusion and will try my best to add any information needed.

      Thank you in advance! 🙂

      Andre

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        On 26/01/2018 at 03:40, xxxxxxxx wrote:

        Hi,

        As I understand, you don't use a timer in your dialog so BFM_TIMER_MESSAGE is never send.
        For each of the 3 progress step send the update message to the progress bar with:

        self.progress += 1.0/3.0
        progressMsg[c4d.BFM_STATUSBAR_PROGRESS] = self.progress
        

        Then after the last step with a progress of 1.0 the progress dialog can be closed.

        Note there's an issue in the code I posted in the thread you linked. The dialog is closed after 11 timer calls while this should be done after 10.
        self.progress==10 is checked in BFM_TIMER_MESSAGE after the 11th timer call. To fix this the code in Message() for BFM_TIMER_MESSAGE should be moved at the end of Timer().
        In fact Timer() is called for each BFM_TIMER_MESSAGE so there's no reason to use both in a dialog. Moreover this has lead to the previous issue.

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          On 30/01/2018 at 01:23, xxxxxxxx wrote:

          Hi Yannick,

          Apologies for the slow reply! Just had a chance of seeing this today.

          Thank you very much for your time and help!
          Will have a look and come back to you. But it does make sense.

          Thank you again! 🙂

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            On 30/01/2018 at 03:25, xxxxxxxx wrote:

            Just to let everyone know that it works like a charm!

            You're a star Yannick! 🙂

            1 Reply Last reply Reply Quote 0
            • First post
              Last post