31 import xml.dom.minidom
as xml
38 from classes
import info, ui_util, settings
39 from classes.app
import get_app
40 from classes.logger
import log
46 import simplejson
as json
54 ui_path = os.path.join(info.PATH,
'windows',
'ui',
'file-properties.ui')
60 QDialog.__init__(self)
80 self.buttonBox.addButton(self.
update_button, QDialogButtonBox.AcceptRole)
81 self.buttonBox.addButton(QPushButton(_(
'Cancel')), QDialogButtonBox.RejectRole)
87 path, filename = os.path.split(self.file.data[
"path"])
88 baseFilename, ext = os.path.splitext(filename)
89 fps_float = float(self.file.data[
"fps"][
"num"]) / float(self.file.data[
"fps"][
"den"])
92 if "tags" in self.file.data.keys():
93 tags = self.file.data[
"tags"]
95 if "name" in self.file.data.keys():
96 name = self.file.data[
"name"]
99 self.txtFileName.setText(name)
100 self.txtTags.setText(tags)
101 self.txtFilePath.setText(os.path.join(path, filename))
102 self.btnBrowse.clicked.connect(self.
browsePath)
105 self.txtWidth.setValue(self.file.data[
"width"])
106 self.txtHeight.setValue(self.file.data[
"height"])
107 self.txtFrameRateNum.setValue(self.file.data[
"fps"][
"num"])
108 self.txtFrameRateDen.setValue(self.file.data[
"fps"][
"den"])
109 self.txtAspectRatioNum.setValue(self.file.data[
"display_ratio"][
"num"])
110 self.txtAspectRatioDen.setValue(self.file.data[
"display_ratio"][
"den"])
111 self.txtPixelRatioNum.setValue(self.file.data[
"pixel_ratio"][
"num"])
112 self.txtPixelRatioDen.setValue(self.file.data[
"pixel_ratio"][
"den"])
115 if self.file.data[
"has_audio"]:
116 self.txtFrameRateNum.setEnabled(
False)
117 self.txtFrameRateDen.setEnabled(
False)
119 self.txtStartFrame.setMaximum(int(self.file.data[
"video_length"]))
120 if 'start' not in file.data.keys():
121 self.txtStartFrame.setValue(1)
123 self.txtStartFrame.setValue(round(float(file.data[
"start"]) * fps_float) + 1)
125 self.txtEndFrame.setMaximum(int(self.file.data[
"video_length"]))
126 if 'end' not in file.data.keys():
127 self.txtEndFrame.setValue(int(self.file.data[
"video_length"]))
129 self.txtEndFrame.setValue(round(float(file.data[
"end"]) * fps_float) + 1)
132 self.txtVideoFormat.setText(ext.replace(
".",
""))
133 self.txtVideoCodec.setText(self.file.data[
"vcodec"])
134 self.txtAudioCodec.setText(self.file.data[
"acodec"])
135 self.txtSampleRate.setValue(int(self.file.data[
"sample_rate"]))
136 self.txtChannels.setValue(int(self.file.data[
"channels"]))
137 self.txtVideoBitRate.setValue(int(self.file.data[
"video_bit_rate"]))
138 self.txtAudioBitRate.setValue(int(self.file.data[
"audio_bit_rate"]))
141 self.txtOutput.setText(json.dumps(file.data, sort_keys=
True, indent=4, separators=(
',',
': ')))
144 channel_layout_index = 0
145 selected_channel_layout_index = 0
146 current_channel_layout = 0
147 if self.file.data[
"has_audio"]:
148 current_channel_layout = int(self.file.data[
"channel_layout"])
150 for layout
in [(0, _(
"Unknown")),
151 (openshot.LAYOUT_MONO, _(
"Mono (1 Channel)")),
152 (openshot.LAYOUT_STEREO, _(
"Stereo (2 Channel)")),
153 (openshot.LAYOUT_SURROUND, _(
"Surround (3 Channel)")),
154 (openshot.LAYOUT_5POINT1, _(
"Surround (5.1 Channel)")),
155 (openshot.LAYOUT_7POINT1, _(
"Surround (7.1 Channel)"))]:
157 self.channel_layout_choices.append(layout[0])
158 self.cboChannelLayout.addItem(layout[1], layout[0])
159 if current_channel_layout == layout[0]:
160 selected_channel_layout_index = channel_layout_index
161 channel_layout_index += 1
164 self.cboChannelLayout.setCurrentIndex(selected_channel_layout_index)
167 self.cboInterlaced.clear()
168 self.cboInterlaced.addItem(_(
"Yes"),
"Yes")
169 self.cboInterlaced.addItem(_(
"No"),
"No")
170 if self.file.data[
"interlaced_frame"]:
171 self.cboInterlaced.setCurrentIndex(0)
173 self.cboInterlaced.setCurrentIndex(1)
176 self.toolBox.setCurrentIndex(0)
183 starting_folder, filename = os.path.split(self.file.data[
"path"])
184 newFilePath = QFileDialog.getOpenFileName(
None,(_(
"Locate media file: %s") % filename), starting_folder)
185 self.txtFilePath.setText(newFilePath[0])
189 self.file.data[
"name"] = self.txtFileName.text()
190 self.file.data[
"tags"] = self.txtTags.text()
193 self.file.data[
"path"] = self.txtFilePath.text()
196 self.file.data[
"fps"][
"num"] = self.txtFrameRateNum.value()
197 self.file.data[
"fps"][
"den"] = self.txtFrameRateDen.value()
200 fps_float = float(self.file.data[
"fps"][
"num"]) / float(self.file.data[
"fps"][
"den"])
201 if self.txtStartFrame.value() != 1
or self.txtEndFrame.value() != self.file.data[
"video_length"]:
202 self.file.data[
"start"] = (self.txtStartFrame.value() - 1) / fps_float
203 self.file.data[
"end"] = (self.txtEndFrame.value() - 1) / fps_float
209 super(FileProperties, self).
accept()
214 super(FileProperties, self).
reject()
def track_metric_screen
Track a GUI screen being shown.
def get_app
Returns the current QApplication instance of OpenShot.
def load_ui
Load a Qt *.ui file, and also load an XML parsed version.
def init_ui
Initialize all child widgets and action of a window or dialog.
def get_settings
Get the current QApplication's settings instance.