nlve/src/uMainForm.lfm
4aiman 96672341d2 Уголки участка, курсор посередине и журнал сборки рядом с роликом
Отметки участка стали видимыми уголками на линейке — жёлтые треугольники
по краям, за них можно тянуть. Клавишами это выходило долго: поставил,
посмотрел, промахнулся, ставь заново. Край прилипает к границам клипов,
как и курсор, и края не пропускаются друг за друга.

Клавиша \ и кнопка с целью переключают, держать ли курсор посередине
монтажа при воспроизведении. Раньше монтаж ехал под курсором всегда, а
это мешает, когда разглядываешь конкретное место.

В окне сборки вместо надписи про участок появилась галка «только
отмеченный участок». Надпись легко проглядеть, а вопрос из тех, где
ошибка стоит часа работы: соберёшь кусок вместо ролика или наоборот.
Снятая галка собирает весь монтаж, отметки при этом остаются.

Журнал сборки пишется рядом с готовым файлом и под тем же именем. Общий
журнал программы перезаписывается следующим запуском, а разбираться,
почему в ролике не то, приходится потом. В журнале: время, проект,
участок, кадр и битрейт, что с текстом, и полный список кусков — с
пометками, где слои, где текст и что пересобирается. Строка пишется
сразу, чтобы после падения осталась последняя.
2026-08-31 11:00:30 +03:00

213 lines
4.7 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

object MainForm: TMainForm
Left = 160
Height = 900
Top = 80
Width = 1600
Caption = 'nlve'
ClientHeight = 900
ClientWidth = 1600
KeyPreview = True
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnDestroy = FormDestroy
OnKeyDown = FormKeyDown
OnShow = FormShow
LCLVersion = '4.6'
object memoLog: TLogView
Left = 0
Height = 130
Top = 730
Width = 1600
Align = alBottom
Font.Height = -11
Font.Name = 'Monospace'
ParentFont = False
TabOrder = 0
end
object pnlBottom: TPanel
Left = 0
Height = 40
Top = 860
Width = 1600
Align = alBottom
BevelOuter = bvNone
ClientHeight = 40
ClientWidth = 1600
TabOrder = 1
object lblTime: TLabel
Left = 12
Height = 20
Top = 10
Width = 260
Caption = '00:00:00.000 / 00:00:00.000'
Font.Height = -14
Font.Name = 'Monospace'
ParentColor = False
ParentFont = False
end
object btnSnap: TThemedButton
Left = 290
Height = 28
Top = 6
Width = 28
Down = True
Icon = tiSnap
OnClick = btnSnapClick
ShowHint = True
TabStop = False
end
object btnGlue: TThemedButton
Left = 320
Height = 28
Top = 6
Width = 28
Down = True
Icon = tiGlue
OnClick = btnGlueClick
ShowHint = True
TabStop = False
end
object btnCenter: TThemedButton
Left = 350
Height = 28
Top = 6
Width = 28
Down = True
Icon = tiTarget
OnClick = btnCenterClick
ShowHint = True
TabStop = False
end
object btnRipple: TThemedButton
Left = 386
Height = 28
Top = 6
Width = 28
Icon = tiRipple
OnClick = btnRippleClick
ShowHint = True
TabStop = False
end
object btnRippleMenu: TThemedButton
Left = 416
Height = 28
Top = 6
Width = 22
Arrow = True
OnClick = btnRippleMenuClick
TabStop = False
end
object lblStatus: TLabel
Left = 488
Height = 20
Top = 10
Width = 780
Anchors = [akTop, akLeft, akRight]
AutoSize = False
Caption = 'Готов.'
ParentColor = False
end
end
object pnlLeft: TPanel
Left = 0
Height = 730
Top = 0
Width = 420
Align = alLeft
BevelOuter = bvNone
ClientHeight = 730
ClientWidth = 420
TabOrder = 2
object lstPool: TListBox
Left = 0
Height = 710
Top = 0
Width = 420
Align = alClient
ItemHeight = 100
OnClick = lstPoolClick
OnMouseDown = lstPoolMouseDown
OnDrawItem = lstPoolDrawItem
Style = lbOwnerDrawFixed
TabOrder = 0
end
object lblPoolInfo: TLabel
Left = 0
Height = 20
Top = 710
Width = 420
Align = alBottom
Caption = 'Файлов в проекте: 0'
ParentColor = False
end
end
object pnlMain: TPanel
Left = 420
Height = 730
Top = 0
Width = 1180
Align = alClient
BevelOuter = bvNone
ClientHeight = 730
ClientWidth = 1180
TabOrder = 3
object pnlVideo: TPanel
Left = 0
Height = 400
Top = 0
Width = 1180
Align = alTop
BevelOuter = bvNone
Caption = ''
Color = clBlack
ParentColor = False
TabOrder = 0
end
object splitVideo: TSplitter
Cursor = crVSplit
Left = 0
Height = 6
Top = 400
Width = 1180
Align = alTop
ResizeAnchor = akTop
end
object pnlTimelineHost: TPanel
Left = 0
Height = 324
Top = 406
Width = 1180
Align = alClient
BevelOuter = bvNone
Caption = ''
TabOrder = 1
end
end
object OpenMediaDialog: TOpenDialog
Filter = 'Видео и картинки|*.mp4;*.MP4;*.mkv;*.MKV;*.mov;*.MOV;*.avi;*.AVI;*.png;*.PNG;*.jpg;*.JPG;*.jpeg;*.JPEG|Все файлы|*'
Options = [ofAllowMultiSelect, ofFileMustExist, ofEnableSizing, ofViewDetail]
Left = 1500
Top = 16
end
object OpenProjectDialog: TOpenDialog
DefaultExt = '.nlve'
Filter = 'Проект nlve|*.nlve|Все файлы|*'
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
Left = 1500
Top = 64
end
object SaveProjectDialog: TSaveDialog
DefaultExt = '.nlve'
Filter = 'Проект nlve|*.nlve|Все файлы|*'
Options = [ofOverwritePrompt, ofPathMustExist, ofEnableSizing, ofViewDetail]
Left = 1500
Top = 112
end
object SaveExportDialog: TSaveDialog
DefaultExt = '.mkv'
Filter = 'Matroska|*.mkv|MP4|*.mp4|Все файлы|*'
Options = [ofOverwritePrompt, ofPathMustExist, ofEnableSizing, ofViewDetail]
Left = 1500
Top = 160
end
end