Add drag and drop for Player module and enable Author module
Player Module Drag and Drop: - Add handleDrop case for player module - Drag video files onto player to load them - Works the same way as convert module - Auto-probe and load first video file from drop Author Module: - Enable Author module button in main menu - Add "author" to enabled modules list (line 1525) - Module is now clickable and functional 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
a7901c8f66
commit
acdb523fb1
43
main.go
43
main.go
|
|
@ -1522,7 +1522,7 @@ func (s *appState) showMainMenu() {
|
||||||
Label: m.Label,
|
Label: m.Label,
|
||||||
Color: m.Color,
|
Color: m.Color,
|
||||||
Category: m.Category,
|
Category: m.Category,
|
||||||
Enabled: m.ID == "convert" || m.ID == "compare" || m.ID == "inspect" || m.ID == "merge" || m.ID == "thumb" || m.ID == "player" || m.ID == "filters" || m.ID == "upscale", // Enabled modules (authoring/subtitles placeholders stay disabled)
|
Enabled: m.ID == "convert" || m.ID == "compare" || m.ID == "inspect" || m.ID == "merge" || m.ID == "thumb" || m.ID == "player" || m.ID == "filters" || m.ID == "upscale" || m.ID == "author", // Enabled modules
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -9763,6 +9763,47 @@ func (s *appState) handleDrop(pos fyne.Position, items []fyne.URI) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If in player module, handle single video file
|
||||||
|
if s.active == "player" {
|
||||||
|
// Collect video files from dropped items
|
||||||
|
var videoPaths []string
|
||||||
|
for _, uri := range items {
|
||||||
|
if uri.Scheme() != "file" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
path := uri.Path()
|
||||||
|
if s.isVideoFile(path) {
|
||||||
|
videoPaths = append(videoPaths, path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(videoPaths) == 0 {
|
||||||
|
logging.Debug(logging.CatUI, "no valid video files in dropped items")
|
||||||
|
dialog.ShowInformation("VT_Player", "No video files found in dropped items.", s.window)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load first video
|
||||||
|
go func() {
|
||||||
|
src, err := probeVideo(videoPaths[0])
|
||||||
|
if err != nil {
|
||||||
|
logging.Debug(logging.CatModule, "failed to load video for player: %v", err)
|
||||||
|
fyne.CurrentApp().Driver().DoFromGoroutine(func() {
|
||||||
|
dialog.ShowError(fmt.Errorf("failed to load video: %w", err), s.window)
|
||||||
|
}, false)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fyne.CurrentApp().Driver().DoFromGoroutine(func() {
|
||||||
|
s.playerFile = src
|
||||||
|
s.showPlayerView()
|
||||||
|
logging.Debug(logging.CatModule, "loaded video into player module")
|
||||||
|
}, false)
|
||||||
|
}()
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Other modules don't handle file drops yet
|
// Other modules don't handle file drops yet
|
||||||
logging.Debug(logging.CatUI, "drop ignored; module %s cannot handle files", s.active)
|
logging.Debug(logging.CatUI, "drop ignored; module %s cannot handle files", s.active)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user