thumbnail-maker 0.1.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- thumbnail_maker/__init__.py +9 -0
- thumbnail_maker/__main__.py +112 -0
- thumbnail_maker/cli.py +140 -0
- thumbnail_maker/gui/__init__.py +10 -0
- thumbnail_maker/gui/dsl_manager.py +351 -0
- thumbnail_maker/gui/font_utils.py +39 -0
- thumbnail_maker/gui/handlers.py +299 -0
- thumbnail_maker/gui/main_window.py +177 -0
- thumbnail_maker/gui/preview_thread.py +28 -0
- thumbnail_maker/gui/widgets.py +386 -0
- thumbnail_maker/renderer.py +597 -0
- thumbnail_maker/upload.py +279 -0
- thumbnail_maker-0.1.6.dist-info/METADATA +159 -0
- thumbnail_maker-0.1.6.dist-info/RECORD +16 -0
- thumbnail_maker-0.1.6.dist-info/WHEEL +4 -0
- thumbnail_maker-0.1.6.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
GUI 위젯 생성 모듈
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from PySide6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QLabel,
|
|
8
|
+
QPushButton, QSpinBox, QTextEdit, QCheckBox,
|
|
9
|
+
QComboBox, QGroupBox, QLineEdit, QSlider, QFileDialog)
|
|
10
|
+
from PySide6.QtCore import Qt
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class WidgetFactory:
|
|
14
|
+
"""위젯 생성 팩토리 클래스"""
|
|
15
|
+
|
|
16
|
+
@staticmethod
|
|
17
|
+
def create_preview_widget(parent):
|
|
18
|
+
"""미리보기 위젯 생성"""
|
|
19
|
+
group = QGroupBox('미리보기')
|
|
20
|
+
layout = QVBoxLayout()
|
|
21
|
+
|
|
22
|
+
parent.preview_label = QLabel('미리보기가 여기에 표시됩니다')
|
|
23
|
+
parent.preview_label.setMinimumSize(480, 270)
|
|
24
|
+
parent.preview_label.setStyleSheet('border: 2px solid gray; background: white;')
|
|
25
|
+
parent.preview_label.setAlignment(Qt.AlignCenter)
|
|
26
|
+
|
|
27
|
+
btn_layout = QHBoxLayout()
|
|
28
|
+
|
|
29
|
+
parent.preview_btn = QPushButton('미리보기 생성')
|
|
30
|
+
parent.preview_btn.clicked.connect(parent.generate_preview)
|
|
31
|
+
|
|
32
|
+
parent.save_btn = QPushButton('저장')
|
|
33
|
+
parent.save_btn.clicked.connect(parent.save_thumbnail)
|
|
34
|
+
|
|
35
|
+
parent.show_dsl_btn = QPushButton('DSL 보기')
|
|
36
|
+
parent.show_dsl_btn.clicked.connect(parent.show_dsl_dialog)
|
|
37
|
+
|
|
38
|
+
parent.save_dsl_btn = QPushButton('DSL 저장')
|
|
39
|
+
parent.save_dsl_btn.clicked.connect(parent.save_dsl)
|
|
40
|
+
|
|
41
|
+
parent.save_thl_btn = QPushButton('패키지 저장(.thl)')
|
|
42
|
+
parent.save_thl_btn.clicked.connect(parent.save_thl_package)
|
|
43
|
+
|
|
44
|
+
parent.load_thl_btn = QPushButton('패키지 로드(.thl)')
|
|
45
|
+
parent.load_thl_btn.clicked.connect(parent.load_thl_package)
|
|
46
|
+
|
|
47
|
+
btn_layout.addWidget(parent.preview_btn)
|
|
48
|
+
btn_layout.addWidget(parent.save_btn)
|
|
49
|
+
btn_layout.addWidget(parent.show_dsl_btn)
|
|
50
|
+
btn_layout.addWidget(parent.save_dsl_btn)
|
|
51
|
+
btn_layout.addWidget(parent.load_thl_btn)
|
|
52
|
+
btn_layout.addWidget(parent.save_thl_btn)
|
|
53
|
+
|
|
54
|
+
layout.addWidget(parent.preview_label)
|
|
55
|
+
layout.addLayout(btn_layout)
|
|
56
|
+
group.setLayout(layout)
|
|
57
|
+
|
|
58
|
+
return group
|
|
59
|
+
|
|
60
|
+
@staticmethod
|
|
61
|
+
def create_resolution_tab(parent):
|
|
62
|
+
"""해상도 설정 탭"""
|
|
63
|
+
widget = QWidget()
|
|
64
|
+
layout = QVBoxLayout()
|
|
65
|
+
|
|
66
|
+
# 모드 선택
|
|
67
|
+
parent.res_mode = QComboBox()
|
|
68
|
+
parent.res_mode.addItems(['preset', 'fixedRatio', 'custom'])
|
|
69
|
+
parent.res_mode.currentTextChanged.connect(parent.on_resolution_mode_changed)
|
|
70
|
+
|
|
71
|
+
layout.addWidget(QLabel('크기 모드:'))
|
|
72
|
+
layout.addWidget(parent.res_mode)
|
|
73
|
+
|
|
74
|
+
# 비율 선택
|
|
75
|
+
parent.aspect_ratio = QComboBox()
|
|
76
|
+
parent.aspect_ratio.addItems(['16:9', '9:16', '4:3', '1:1'])
|
|
77
|
+
parent.aspect_ratio.currentTextChanged.connect(parent.on_aspect_ratio_changed)
|
|
78
|
+
|
|
79
|
+
layout.addWidget(QLabel('비율:'))
|
|
80
|
+
layout.addWidget(parent.aspect_ratio)
|
|
81
|
+
|
|
82
|
+
# 너비/높이
|
|
83
|
+
parent.width_spin = QSpinBox()
|
|
84
|
+
parent.width_spin.setRange(100, 2000)
|
|
85
|
+
parent.width_spin.setValue(480)
|
|
86
|
+
parent.width_spin.valueChanged.connect(parent.on_width_changed)
|
|
87
|
+
|
|
88
|
+
parent.height_spin = QSpinBox()
|
|
89
|
+
parent.height_spin.setRange(100, 2000)
|
|
90
|
+
parent.height_spin.setValue(270)
|
|
91
|
+
parent.height_spin.valueChanged.connect(parent.on_height_changed)
|
|
92
|
+
|
|
93
|
+
# fixedRatio 모드에서 무한 루프 방지를 위한 플래그
|
|
94
|
+
parent._updating_dimension = False
|
|
95
|
+
|
|
96
|
+
layout.addWidget(QLabel('너비:'))
|
|
97
|
+
layout.addWidget(parent.width_spin)
|
|
98
|
+
layout.addWidget(QLabel('높이:'))
|
|
99
|
+
layout.addWidget(parent.height_spin)
|
|
100
|
+
|
|
101
|
+
layout.addStretch()
|
|
102
|
+
widget.setLayout(layout)
|
|
103
|
+
return widget
|
|
104
|
+
|
|
105
|
+
@staticmethod
|
|
106
|
+
def create_background_tab(parent):
|
|
107
|
+
"""배경 설정 탭"""
|
|
108
|
+
widget = QWidget()
|
|
109
|
+
layout = QVBoxLayout()
|
|
110
|
+
|
|
111
|
+
# 배경 타입
|
|
112
|
+
bg_type = QComboBox()
|
|
113
|
+
bg_type.addItems(['solid', 'gradient', 'image'])
|
|
114
|
+
bg_type.currentTextChanged.connect(parent.update_preview)
|
|
115
|
+
parent.bg_type = bg_type
|
|
116
|
+
|
|
117
|
+
layout.addWidget(QLabel('배경 타입:'))
|
|
118
|
+
layout.addWidget(bg_type)
|
|
119
|
+
|
|
120
|
+
# 배경 색상
|
|
121
|
+
parent.bg_color_btn = QPushButton('색상 선택')
|
|
122
|
+
parent.bg_color_btn.clicked.connect(parent.select_bg_color)
|
|
123
|
+
parent.bg_color = '#a3e635'
|
|
124
|
+
|
|
125
|
+
layout.addWidget(QLabel('배경 색상:'))
|
|
126
|
+
layout.addWidget(parent.bg_color_btn)
|
|
127
|
+
|
|
128
|
+
# 배경 이미지 경로
|
|
129
|
+
parent.bg_image_path = QLineEdit()
|
|
130
|
+
parent.bg_image_path.setPlaceholderText('이미지 파일 경로')
|
|
131
|
+
|
|
132
|
+
bg_img_btn = QPushButton('이미지 선택')
|
|
133
|
+
bg_img_btn.clicked.connect(parent.select_background_image)
|
|
134
|
+
|
|
135
|
+
layout.addWidget(QLabel('배경 이미지:'))
|
|
136
|
+
layout.addWidget(parent.bg_image_path)
|
|
137
|
+
layout.addWidget(bg_img_btn)
|
|
138
|
+
|
|
139
|
+
# 이미지 투명도
|
|
140
|
+
parent.bg_opacity = QSlider(Qt.Horizontal)
|
|
141
|
+
parent.bg_opacity.setRange(0, 100)
|
|
142
|
+
parent.bg_opacity.setValue(100)
|
|
143
|
+
parent.bg_opacity.valueChanged.connect(parent.update_preview)
|
|
144
|
+
|
|
145
|
+
layout.addWidget(QLabel('이미지 투명도:'))
|
|
146
|
+
layout.addWidget(parent.bg_opacity)
|
|
147
|
+
|
|
148
|
+
# 이미지 블러
|
|
149
|
+
parent.bg_blur = QSlider(Qt.Horizontal)
|
|
150
|
+
parent.bg_blur.setRange(0, 20)
|
|
151
|
+
parent.bg_blur.setValue(0)
|
|
152
|
+
parent.bg_blur.valueChanged.connect(parent.update_preview)
|
|
153
|
+
|
|
154
|
+
layout.addWidget(QLabel('이미지 블러:'))
|
|
155
|
+
layout.addWidget(parent.bg_blur)
|
|
156
|
+
|
|
157
|
+
layout.addStretch()
|
|
158
|
+
widget.setLayout(layout)
|
|
159
|
+
return widget
|
|
160
|
+
|
|
161
|
+
@staticmethod
|
|
162
|
+
def create_title_tab(parent):
|
|
163
|
+
"""제목 설정 탭"""
|
|
164
|
+
widget = QWidget()
|
|
165
|
+
layout = QVBoxLayout()
|
|
166
|
+
|
|
167
|
+
# 제목 텍스트
|
|
168
|
+
parent.title_text = QTextEdit()
|
|
169
|
+
parent.title_text.setPlaceholderText('제목 텍스트 입력 (여러 줄 가능)')
|
|
170
|
+
parent.title_text.textChanged.connect(parent.update_preview)
|
|
171
|
+
|
|
172
|
+
layout.addWidget(QLabel('제목 텍스트:'))
|
|
173
|
+
layout.addWidget(parent.title_text)
|
|
174
|
+
|
|
175
|
+
# 폰트 설정 모드 (웹/로컬)
|
|
176
|
+
parent.title_font_source = QComboBox()
|
|
177
|
+
parent.title_font_source.addItems(['웹 폰트 URL', '로컬 폰트 파일'])
|
|
178
|
+
parent.title_font_source.currentTextChanged.connect(parent.update_preview)
|
|
179
|
+
|
|
180
|
+
layout.addWidget(QLabel('폰트 소스:'))
|
|
181
|
+
layout.addWidget(parent.title_font_source)
|
|
182
|
+
|
|
183
|
+
# 폰트 설정 (이름/URL/굵기/스타일)
|
|
184
|
+
parent.title_font_name = QLineEdit()
|
|
185
|
+
parent.title_font_name.setPlaceholderText('예: SBAggroB')
|
|
186
|
+
parent.title_font_name.textChanged.connect(parent.update_preview)
|
|
187
|
+
|
|
188
|
+
parent.title_font_url = QLineEdit()
|
|
189
|
+
parent.title_font_url.setPlaceholderText('예: https://.../SBAggroB.woff')
|
|
190
|
+
parent.title_font_url.textChanged.connect(parent.update_preview)
|
|
191
|
+
|
|
192
|
+
# 로컬 파일 경로 + 선택 버튼
|
|
193
|
+
row_title_local = QHBoxLayout()
|
|
194
|
+
parent.title_font_file = QLineEdit()
|
|
195
|
+
parent.title_font_file.setPlaceholderText('예: C:/Windows/Fonts/malgun.ttf')
|
|
196
|
+
parent.title_font_file.textChanged.connect(parent.on_title_font_file_changed)
|
|
197
|
+
btn_title_font_browse = QPushButton('찾기')
|
|
198
|
+
def _pick_title_font():
|
|
199
|
+
path, _ = QFileDialog.getOpenFileName(parent, '폰트 파일 선택', '', 'Fonts (*.ttf *.otf *.woff *.woff2)')
|
|
200
|
+
if path:
|
|
201
|
+
parent.title_font_file.setText(path)
|
|
202
|
+
parent.set_title_font_name_from_path(path)
|
|
203
|
+
btn_title_font_browse.clicked.connect(_pick_title_font)
|
|
204
|
+
row_title_local.addWidget(parent.title_font_file)
|
|
205
|
+
row_title_local.addWidget(btn_title_font_browse)
|
|
206
|
+
|
|
207
|
+
parent.title_font_weight = QComboBox()
|
|
208
|
+
parent.title_font_weight.addItems(['normal', 'bold'])
|
|
209
|
+
parent.title_font_weight.currentTextChanged.connect(parent.update_preview)
|
|
210
|
+
|
|
211
|
+
parent.title_font_style = QComboBox()
|
|
212
|
+
parent.title_font_style.addItems(['normal', 'italic'])
|
|
213
|
+
parent.title_font_style.currentTextChanged.connect(parent.update_preview)
|
|
214
|
+
|
|
215
|
+
layout.addWidget(QLabel('폰트 이름:'))
|
|
216
|
+
layout.addWidget(parent.title_font_name)
|
|
217
|
+
# URL/로컬 입력 영역
|
|
218
|
+
parent.label_title_font_url = QLabel('폰트 URL (WOFF/WOFF2/TTF):')
|
|
219
|
+
layout.addWidget(parent.label_title_font_url)
|
|
220
|
+
layout.addWidget(parent.title_font_url)
|
|
221
|
+
parent.label_title_font_file = QLabel('로컬 폰트 파일 경로:')
|
|
222
|
+
layout.addWidget(parent.label_title_font_file)
|
|
223
|
+
layout.addLayout(row_title_local)
|
|
224
|
+
layout.addWidget(QLabel('폰트 굵기/스타일:'))
|
|
225
|
+
row_font = QHBoxLayout()
|
|
226
|
+
row_font.addWidget(parent.title_font_weight)
|
|
227
|
+
row_font.addWidget(parent.title_font_style)
|
|
228
|
+
layout.addLayout(row_font)
|
|
229
|
+
|
|
230
|
+
# 제목 색상
|
|
231
|
+
parent.title_color_btn = QPushButton('색상 선택')
|
|
232
|
+
parent.title_color_btn.clicked.connect(parent.select_title_color)
|
|
233
|
+
parent.title_color = '#4ade80'
|
|
234
|
+
|
|
235
|
+
layout.addWidget(QLabel('제목 색상:'))
|
|
236
|
+
layout.addWidget(parent.title_color_btn)
|
|
237
|
+
|
|
238
|
+
# 폰트 크기
|
|
239
|
+
parent.title_font_size = QSpinBox()
|
|
240
|
+
parent.title_font_size.setRange(8, 200)
|
|
241
|
+
parent.title_font_size.setValue(48)
|
|
242
|
+
parent.title_font_size.valueChanged.connect(parent.update_preview)
|
|
243
|
+
|
|
244
|
+
layout.addWidget(QLabel('폰트 크기:'))
|
|
245
|
+
layout.addWidget(parent.title_font_size)
|
|
246
|
+
|
|
247
|
+
# 외곽선
|
|
248
|
+
parent.title_outline_check = QCheckBox('외곽선 사용')
|
|
249
|
+
parent.title_outline_check.stateChanged.connect(parent.update_preview)
|
|
250
|
+
|
|
251
|
+
parent.title_outline_thickness = QSpinBox()
|
|
252
|
+
parent.title_outline_thickness.setRange(1, 20)
|
|
253
|
+
parent.title_outline_thickness.setValue(7)
|
|
254
|
+
parent.title_outline_thickness.valueChanged.connect(parent.update_preview)
|
|
255
|
+
|
|
256
|
+
layout.addWidget(parent.title_outline_check)
|
|
257
|
+
layout.addWidget(QLabel('외곽선 두께:'))
|
|
258
|
+
layout.addWidget(parent.title_outline_thickness)
|
|
259
|
+
|
|
260
|
+
# 워드 랩
|
|
261
|
+
parent.title_word_wrap = QCheckBox('단어 단위 줄바꿈')
|
|
262
|
+
parent.title_word_wrap.stateChanged.connect(parent.update_preview)
|
|
263
|
+
layout.addWidget(parent.title_word_wrap)
|
|
264
|
+
|
|
265
|
+
# 위치 (9 그리드)
|
|
266
|
+
parent.title_position = QComboBox()
|
|
267
|
+
parent.title_position.addItems(['tl', 'tc', 'tr', 'ml', 'mc', 'mr', 'bl', 'bc', 'br'])
|
|
268
|
+
parent.title_position.currentTextChanged.connect(parent.update_preview)
|
|
269
|
+
|
|
270
|
+
layout.addWidget(QLabel('위치:'))
|
|
271
|
+
layout.addWidget(parent.title_position)
|
|
272
|
+
|
|
273
|
+
layout.addStretch()
|
|
274
|
+
widget.setLayout(layout)
|
|
275
|
+
return widget
|
|
276
|
+
|
|
277
|
+
@staticmethod
|
|
278
|
+
def create_subtitle_tab(parent):
|
|
279
|
+
"""부제목 설정 탭"""
|
|
280
|
+
widget = QWidget()
|
|
281
|
+
layout = QVBoxLayout()
|
|
282
|
+
|
|
283
|
+
# 부제목 표시 여부
|
|
284
|
+
parent.subtitle_visible = QCheckBox('부제목 표시')
|
|
285
|
+
parent.subtitle_visible.setChecked(True)
|
|
286
|
+
parent.subtitle_visible.stateChanged.connect(parent.update_preview)
|
|
287
|
+
|
|
288
|
+
layout.addWidget(parent.subtitle_visible)
|
|
289
|
+
|
|
290
|
+
# 부제목 텍스트
|
|
291
|
+
parent.subtitle_text = QTextEdit()
|
|
292
|
+
parent.subtitle_text.setPlaceholderText('부제목 텍스트 입력 (여러 줄 가능)')
|
|
293
|
+
parent.subtitle_text.textChanged.connect(parent.update_preview)
|
|
294
|
+
|
|
295
|
+
layout.addWidget(QLabel('부제목 텍스트:'))
|
|
296
|
+
layout.addWidget(parent.subtitle_text)
|
|
297
|
+
|
|
298
|
+
# 폰트 설정 모드 (웹/로컬)
|
|
299
|
+
parent.subtitle_font_source = QComboBox()
|
|
300
|
+
parent.subtitle_font_source.addItems(['웹 폰트 URL', '로컬 폰트 파일'])
|
|
301
|
+
parent.subtitle_font_source.currentTextChanged.connect(parent.update_preview)
|
|
302
|
+
|
|
303
|
+
layout.addWidget(QLabel('폰트 소스:'))
|
|
304
|
+
layout.addWidget(parent.subtitle_font_source)
|
|
305
|
+
|
|
306
|
+
# 폰트 설정 (이름/URL/굵기/스타일)
|
|
307
|
+
parent.subtitle_font_name = QLineEdit()
|
|
308
|
+
parent.subtitle_font_name.setPlaceholderText('예: SBAggroB')
|
|
309
|
+
parent.subtitle_font_name.textChanged.connect(parent.update_preview)
|
|
310
|
+
|
|
311
|
+
parent.subtitle_font_url = QLineEdit()
|
|
312
|
+
parent.subtitle_font_url.setPlaceholderText('예: https://.../SBAggroB.woff')
|
|
313
|
+
parent.subtitle_font_url.textChanged.connect(parent.update_preview)
|
|
314
|
+
|
|
315
|
+
# 로컬 파일 경로 + 선택 버튼
|
|
316
|
+
row_sub_local = QHBoxLayout()
|
|
317
|
+
parent.subtitle_font_file = QLineEdit()
|
|
318
|
+
parent.subtitle_font_file.setPlaceholderText('예: C:/Windows/Fonts/malgun.ttf')
|
|
319
|
+
parent.subtitle_font_file.textChanged.connect(parent.on_subtitle_font_file_changed)
|
|
320
|
+
btn_sub_font_browse = QPushButton('찾기')
|
|
321
|
+
def _pick_sub_font():
|
|
322
|
+
path, _ = QFileDialog.getOpenFileName(parent, '폰트 파일 선택', '', 'Fonts (*.ttf *.otf *.woff *.woff2)')
|
|
323
|
+
if path:
|
|
324
|
+
parent.subtitle_font_file.setText(path)
|
|
325
|
+
parent.set_subtitle_font_name_from_path(path)
|
|
326
|
+
btn_sub_font_browse.clicked.connect(_pick_sub_font)
|
|
327
|
+
row_sub_local.addWidget(parent.subtitle_font_file)
|
|
328
|
+
row_sub_local.addWidget(btn_sub_font_browse)
|
|
329
|
+
|
|
330
|
+
parent.subtitle_font_weight = QComboBox()
|
|
331
|
+
parent.subtitle_font_weight.addItems(['normal', 'bold'])
|
|
332
|
+
parent.subtitle_font_weight.currentTextChanged.connect(parent.update_preview)
|
|
333
|
+
|
|
334
|
+
parent.subtitle_font_style = QComboBox()
|
|
335
|
+
parent.subtitle_font_style.addItems(['normal', 'italic'])
|
|
336
|
+
parent.subtitle_font_style.currentTextChanged.connect(parent.update_preview)
|
|
337
|
+
|
|
338
|
+
layout.addWidget(QLabel('폰트 이름:'))
|
|
339
|
+
layout.addWidget(parent.subtitle_font_name)
|
|
340
|
+
parent.label_subtitle_font_url = QLabel('폰트 URL (WOFF/WOFF2/TTF):')
|
|
341
|
+
layout.addWidget(parent.label_subtitle_font_url)
|
|
342
|
+
layout.addWidget(parent.subtitle_font_url)
|
|
343
|
+
parent.label_subtitle_font_file = QLabel('로컬 폰트 파일 경로:')
|
|
344
|
+
layout.addWidget(parent.label_subtitle_font_file)
|
|
345
|
+
layout.addLayout(row_sub_local)
|
|
346
|
+
layout.addWidget(QLabel('폰트 굵기/스타일:'))
|
|
347
|
+
row_sub_font = QHBoxLayout()
|
|
348
|
+
row_sub_font.addWidget(parent.subtitle_font_weight)
|
|
349
|
+
row_sub_font.addWidget(parent.subtitle_font_style)
|
|
350
|
+
layout.addLayout(row_sub_font)
|
|
351
|
+
|
|
352
|
+
# 부제목 색상
|
|
353
|
+
parent.subtitle_color_btn = QPushButton('색상 선택')
|
|
354
|
+
parent.subtitle_color_btn.clicked.connect(parent.select_subtitle_color)
|
|
355
|
+
parent.subtitle_color = '#ffffff'
|
|
356
|
+
|
|
357
|
+
layout.addWidget(QLabel('부제목 색상:'))
|
|
358
|
+
layout.addWidget(parent.subtitle_color_btn)
|
|
359
|
+
|
|
360
|
+
# 폰트 크기
|
|
361
|
+
parent.subtitle_font_size = QSpinBox()
|
|
362
|
+
parent.subtitle_font_size.setRange(8, 200)
|
|
363
|
+
parent.subtitle_font_size.setValue(24)
|
|
364
|
+
parent.subtitle_font_size.valueChanged.connect(parent.update_preview)
|
|
365
|
+
|
|
366
|
+
layout.addWidget(QLabel('폰트 크기:'))
|
|
367
|
+
layout.addWidget(parent.subtitle_font_size)
|
|
368
|
+
|
|
369
|
+
# 위치 (9 그리드)
|
|
370
|
+
parent.subtitle_position = QComboBox()
|
|
371
|
+
parent.subtitle_position.addItems(['tl', 'tc', 'tr', 'ml', 'mc', 'mr', 'bl', 'bc', 'br'])
|
|
372
|
+
parent.subtitle_position.setCurrentText('bl')
|
|
373
|
+
parent.subtitle_position.currentTextChanged.connect(parent.update_preview)
|
|
374
|
+
|
|
375
|
+
# 워드 랩
|
|
376
|
+
parent.subtitle_word_wrap = QCheckBox('단어 단위 줄바꿈')
|
|
377
|
+
parent.subtitle_word_wrap.stateChanged.connect(parent.update_preview)
|
|
378
|
+
|
|
379
|
+
layout.addWidget(QLabel('위치:'))
|
|
380
|
+
layout.addWidget(parent.subtitle_position)
|
|
381
|
+
layout.addWidget(parent.subtitle_word_wrap)
|
|
382
|
+
|
|
383
|
+
layout.addStretch()
|
|
384
|
+
widget.setLayout(layout)
|
|
385
|
+
return widget
|
|
386
|
+
|