Skip to content

Commit dfb6c82

Browse files
committed
Blender: Add inter-frame progress display
1 parent b1207b1 commit dfb6c82

File tree

3 files changed

+223
-87
lines changed

3 files changed

+223
-87
lines changed

src/windows/animated_title.py

+11-22
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,26 @@ class AnimatedTitle(QDialog):
4444
ui_path = os.path.join(info.PATH, 'windows', 'ui', 'animated-title.ui')
4545

4646
def __init__(self):
47+
super().__init__()
4748

48-
# Create dialog class
49-
QDialog.__init__(self)
50-
51-
# Load UI from designer
49+
# Load UI from designer & init
5250
ui_util.load_ui(self, self.ui_path)
53-
54-
# Init UI
5551
ui_util.init_ui(self)
5652

57-
# Track metrics
5853
metrics.track_metric_screen("animated-title-screen")
5954

60-
# Add render button
6155
app = get_app()
6256
_ = app._tr
57+
58+
# Add render controls
6359
self.btnRender = QPushButton(_('Render'))
6460
self.btnCancel = QPushButton(_('Cancel'))
6561
self.buttonBox.addButton(self.btnRender, QDialogButtonBox.AcceptRole)
6662
self.buttonBox.addButton(self.btnCancel, QDialogButtonBox.RejectRole)
6763

64+
# Hide render progress until needed
65+
self.statusContainer.hide()
66+
6867
# Add blender treeview
6968
self.blenderView = BlenderListView(self)
7069
self.verticalLayout.addWidget(self.blenderView)
@@ -81,38 +80,28 @@ def __init__(self):
8180

8281
def accept(self):
8382
""" Start rendering animation, but don't close window """
84-
8583
# Render
8684
self.blenderView.Render()
8785

8886
def close(self):
8987
""" Actually close window and accept dialog """
90-
91-
# Re-enable interface
92-
self.blenderView.enable_interface()
93-
94-
# Accept dialog
88+
self.blenderView.end_processing()
9589
super().accept()
9690

9791
def closeEvent(self, event):
98-
92+
self.blenderView.end_processing()
9993
# Stop threads
10094
self.blenderView.background.quit()
10195

102-
# Re-enable interface
103-
self.blenderView.enable_interface()
104-
10596
def reject(self):
106-
10797
# Stop threads
108-
self.blenderView.Cancel()
10998
self.blenderView.background.quit()
110-
111-
# Cancel dialog
99+
self.blenderView.Cancel()
112100
super().reject()
113101

114102
def clear_effect_controls(self):
115103
""" Clear all child widgets used for settings """
104+
self.statusContainer.hide()
116105

117106
# Loop through child widgets
118107
for child in self.settingsContainer.children():

src/windows/ui/animated-title.ui

+115-23
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,16 @@
1414
<string>Animated Titles (Powered by Blender)</string>
1515
</property>
1616
<property name="windowIcon">
17-
<iconset resource="../../../images/openshot.qrc">
17+
<iconset>
1818
<normaloff>:/about/blender.svg</normaloff>:/about/blender.svg</iconset>
1919
</property>
2020
<property name="autoFillBackground">
2121
<bool>false</bool>
2222
</property>
23-
<layout class="QGridLayout" name="gridLayout">
24-
<item row="2" column="0">
25-
<widget class="QDialogButtonBox" name="buttonBox">
26-
<property name="orientation">
27-
<enum>Qt::Horizontal</enum>
28-
</property>
29-
<property name="standardButtons">
30-
<set>QDialogButtonBox::NoButton</set>
31-
</property>
32-
</widget>
33-
</item>
23+
<property name="sizeGripEnabled">
24+
<bool>true</bool>
25+
</property>
26+
<layout class="QGridLayout" name="gridLayout" columnstretch="0" columnminimumwidth="0">
3427
<item row="1" column="0">
3528
<widget class="QSplitter" name="splitter">
3629
<property name="lineWidth">
@@ -87,8 +80,8 @@
8780
<rect>
8881
<x>0</x>
8982
<y>0</y>
90-
<width>445</width>
91-
<height>219</height>
83+
<width>480</width>
84+
<height>210</height>
9285
</rect>
9386
</property>
9487
<layout class="QFormLayout" name="formLayout">
@@ -155,7 +148,7 @@
155148
<string/>
156149
</property>
157150
<property name="scaledContents">
158-
<bool>true</bool>
151+
<bool>false</bool>
159152
</property>
160153
<property name="alignment">
161154
<set>Qt::AlignCenter</set>
@@ -166,38 +159,137 @@
166159
</widget>
167160
</widget>
168161
</item>
162+
<item row="2" column="0">
163+
<widget class="QWidget" name="buttonsContainer" native="true">
164+
<property name="sizePolicy">
165+
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
166+
<horstretch>1</horstretch>
167+
<verstretch>0</verstretch>
168+
</sizepolicy>
169+
</property>
170+
<property name="minimumSize">
171+
<size>
172+
<width>200</width>
173+
<height>16</height>
174+
</size>
175+
</property>
176+
<layout class="QHBoxLayout" name="horizontalLayout_2">
177+
<property name="topMargin">
178+
<number>0</number>
179+
</property>
180+
<property name="bottomMargin">
181+
<number>0</number>
182+
</property>
183+
<item>
184+
<widget class="QWidget" name="statusContainer" native="true">
185+
<layout class="QHBoxLayout" name="statusLayout" stretch="0,1">
186+
<property name="topMargin">
187+
<number>0</number>
188+
</property>
189+
<property name="rightMargin">
190+
<number>9</number>
191+
</property>
192+
<property name="bottomMargin">
193+
<number>0</number>
194+
</property>
195+
<item>
196+
<widget class="QLabel" name="frameStatus">
197+
<property name="minimumSize">
198+
<size>
199+
<width>100</width>
200+
<height>16</height>
201+
</size>
202+
</property>
203+
<property name="text">
204+
<string>Idle</string>
205+
</property>
206+
<property name="textFormat">
207+
<enum>Qt::PlainText</enum>
208+
</property>
209+
</widget>
210+
</item>
211+
<item>
212+
<widget class="QProgressBar" name="frameProgress">
213+
<property name="minimumSize">
214+
<size>
215+
<width>200</width>
216+
<height>16</height>
217+
</size>
218+
</property>
219+
<property name="baseSize">
220+
<size>
221+
<width>200</width>
222+
<height>16</height>
223+
</size>
224+
</property>
225+
<property name="value">
226+
<number>0</number>
227+
</property>
228+
<property name="textVisible">
229+
<bool>true</bool>
230+
</property>
231+
</widget>
232+
</item>
233+
</layout>
234+
</widget>
235+
</item>
236+
<item>
237+
<widget class="QDialogButtonBox" name="buttonBox">
238+
<property name="minimumSize">
239+
<size>
240+
<width>200</width>
241+
<height>16</height>
242+
</size>
243+
</property>
244+
<property name="baseSize">
245+
<size>
246+
<width>200</width>
247+
<height>16</height>
248+
</size>
249+
</property>
250+
<property name="orientation">
251+
<enum>Qt::Horizontal</enum>
252+
</property>
253+
<property name="standardButtons">
254+
<set>QDialogButtonBox::NoButton</set>
255+
</property>
256+
</widget>
257+
</item>
258+
</layout>
259+
</widget>
260+
</item>
169261
</layout>
170262
</widget>
171263
<resources/>
172264
<connections>
173265
<connection>
174266
<sender>buttonBox</sender>
175-
<signal>rejected()</signal>
267+
<signal>accepted()</signal>
176268
<receiver>Dialog</receiver>
177-
<slot>reject()</slot>
269+
<slot>accept()</slot>
178270
<hints>
179271
<hint type="sourcelabel">
180272
<x>184</x>
181-
<y>234</y>
273+
<y>228</y>
182274
</hint>
183275
<hint type="destinationlabel">
184-
<x>286</x>
276+
<x>157</x>
185277
<y>274</y>
186278
</hint>
187279
</hints>
188280
</connection>
189281
<connection>
190282
<sender>buttonBox</sender>
191-
<signal>accepted()</signal>
283+
<signal>rejected()</signal>
192284
<receiver>Dialog</receiver>
193-
<slot>accept()</slot>
285+
<slot>reject()</slot>
194286
<hints>
195287
<hint type="sourcelabel">
196288
<x>184</x>
197-
<y>228</y>
289+
<y>234</y>
198290
</hint>
199291
<hint type="destinationlabel">
200-
<x>157</x>
292+
<x>286</x>
201293
<y>274</y>
202294
</hint>
203295
</hints>

0 commit comments

Comments
 (0)