Added blank screen when project isn't loaded
This commit is contained in:
parent
0e618b9909
commit
37c676f734
|
@ -82,12 +82,12 @@ public class TimelapsePack
|
||||||
{
|
{
|
||||||
//build the library
|
//build the library
|
||||||
Process p = new Process();
|
Process p = new Process();
|
||||||
p.StartInfo = new ProcessStartInfo("dotnet","build --configuration Release");
|
p.StartInfo = new ProcessStartInfo("dotnet","publish --configuration Release");
|
||||||
p.StartInfo.UseShellExecute=false;
|
p.StartInfo.UseShellExecute=false;
|
||||||
if(p.Start())
|
if(p.Start())
|
||||||
{
|
{
|
||||||
p.WaitForExit();
|
p.WaitForExit();
|
||||||
return Path.Combine(Environment.CurrentDirectory,"bin","Release","net6.0",$"{curDirName}.dll");
|
return Path.Combine(Environment.CurrentDirectory,"bin","Release","net6.0","publish",$"{curDirName}.dll");
|
||||||
}else{
|
}else{
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
Console.WriteLine("ERROR: process not started");
|
Console.WriteLine("ERROR: process not started");
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
<PackageId>Tesses.TimelapsePack</PackageId>
|
<PackageId>Tesses.TimelapsePack</PackageId>
|
||||||
<Authors>Mike Nolan</Authors>
|
<Authors>Mike Nolan</Authors>
|
||||||
<Company>Tesses</Company>
|
<Company>Tesses</Company>
|
||||||
<Version>1.0.2</Version>
|
<Version>1.0.3</Version>
|
||||||
<AssemblyVersion>1.0.2</AssemblyVersion>
|
<AssemblyVersion>1.0.3</AssemblyVersion>
|
||||||
<FileVersion>1.0.2</FileVersion>
|
<FileVersion>1.0.3</FileVersion>
|
||||||
<Description>Extension Packaging tool for TimelapseNow</Description>
|
<Description>Extension Packaging tool for TimelapseNow</Description>
|
||||||
<PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression>
|
<PackageLicenseExpression>GPL-3.0-only</PackageLicenseExpression>
|
||||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||||
|
|
|
@ -324,10 +324,20 @@ public class MainForm : Form
|
||||||
svr.Listen();
|
svr.Listen();
|
||||||
});
|
});
|
||||||
t.Start();
|
t.Start();
|
||||||
|
Instance.HasCamera=c !=null;
|
||||||
if(c == null)
|
if(c == null)
|
||||||
{
|
{
|
||||||
MessageBox.Show("You will need to restart app to record");
|
|
||||||
|
Thread t2=new Thread(async()=>{
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
Image<Rgb24> rgb=new Image<Rgb24>(Instance.Model.blankCameraWidth,Instance.Model.blankCameraHeight,new Rgb24(0,0,0));
|
||||||
|
await FrameChanged(rgb);
|
||||||
|
|
||||||
|
Thread.Sleep(50);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
t2.Start();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,9 @@ public class GuiData
|
||||||
Instance.Extensions.Add(ext);
|
Instance.Extensions.Add(ext);
|
||||||
await ext._Create();
|
await ext._Create();
|
||||||
}
|
}
|
||||||
|
Instance.SetPriority();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FSChanged()
|
public void FSChanged()
|
||||||
{
|
{
|
||||||
if(Instance != null)
|
if(Instance != null)
|
||||||
|
@ -52,8 +54,22 @@ public class GuiData
|
||||||
public IEnumerable<(Func<Window,string,Task> ShareActionAsync,string Text,TimelapseExtension extension)>? Share {get {if(Instance==null) return null;return Instance._share;}}
|
public IEnumerable<(Func<Window,string,Task> ShareActionAsync,string Text,TimelapseExtension extension)>? Share {get {if(Instance==null) return null;return Instance._share;}}
|
||||||
public int CurrentFSIndex {get;set;}
|
public int CurrentFSIndex {get;set;}
|
||||||
}
|
}
|
||||||
|
internal class PriorityCompare : IComparer<(Func<Image<Rgb24>, Task<bool>> Handler, string HandlerName, TimelapseExtension Extension, int Priority)>
|
||||||
|
{
|
||||||
|
public int Compare((Func<Image<Rgb24>, Task<bool>> Handler, string HandlerName, TimelapseExtension Extension, int Priority) x, (Func<Image<Rgb24>, Task<bool>> Handler, string HandlerName, TimelapseExtension Extension, int Priority) y)
|
||||||
|
{
|
||||||
|
|
||||||
|
return y.Priority.CompareTo(x.Priority);
|
||||||
|
}
|
||||||
|
}
|
||||||
public class Api
|
public class Api
|
||||||
{
|
{
|
||||||
|
internal void SetPriority()
|
||||||
|
{
|
||||||
|
_frameHandlers.Sort(new PriorityCompare());
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HasCamera {get;set;}
|
||||||
public TimelapseSettingsModel Model = LoadModel();
|
public TimelapseSettingsModel Model = LoadModel();
|
||||||
internal static string ModelLocation = GetInternalFile("config.json");
|
internal static string ModelLocation = GetInternalFile("config.json");
|
||||||
private static TimelapseSettingsModel LoadModel()
|
private static TimelapseSettingsModel LoadModel()
|
||||||
|
@ -193,7 +209,7 @@ public class Api
|
||||||
return fs;
|
return fs;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal List<(Func<Image<Rgb24>,Task<bool>> Handler,string HandlerName, TimelapseExtension Extension)> _frameHandlers=new List<(Func<Image<Rgb24>, Task<bool>> Handler,string HandlerName, TimelapseExtension Extension)>();
|
internal List<(Func<Image<Rgb24>,Task<bool>> Handler,string HandlerName, TimelapseExtension Extension,int Priority)> _frameHandlers=new List<(Func<Image<Rgb24>, Task<bool>> Handler,string HandlerName, TimelapseExtension Extension,int Priority)>();
|
||||||
|
|
||||||
internal List<(Func<Dialog> Dialog,string Text,TimelapseExtension Extension)> _extSettings= new List<(Func<Dialog> Dialog,string Text,TimelapseExtension Extension)>();
|
internal List<(Func<Dialog> Dialog,string Text,TimelapseExtension Extension)> _extSettings= new List<(Func<Dialog> Dialog,string Text,TimelapseExtension Extension)>();
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,7 @@ public sealed class ExtensionFeatures
|
||||||
}
|
}
|
||||||
public ExtensionFeatures RegisterAsyncFrameHandler(Func<Image<Rgb24>,Task<bool>> handler,string handlerName)
|
public ExtensionFeatures RegisterAsyncFrameHandler(Func<Image<Rgb24>,Task<bool>> handler,string handlerName)
|
||||||
{
|
{
|
||||||
if(!Valid || Instance == null) return this;
|
return RegisterAsyncFrameHandler(handler,handlerName,10000);
|
||||||
Instance._frameHandlers.Add((handler,handlerName,Extension));
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
public ExtensionFeatures RegisterFileSystem(TimelapseFileSystem fs,string name)
|
public ExtensionFeatures RegisterFileSystem(TimelapseFileSystem fs,string name)
|
||||||
{
|
{
|
||||||
|
@ -32,6 +30,12 @@ public sealed class ExtensionFeatures
|
||||||
Instance._fs.Add((fs,name,Extension));
|
Instance._fs.Add((fs,name,Extension));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public ExtensionFeatures RegisterAsyncFrameHandler(Func<Image<Rgb24>,Task<bool>> handler,string handlerName,int priority)
|
||||||
|
{
|
||||||
|
if(!Valid || Instance == null) return this;
|
||||||
|
Instance._frameHandlers.Add((handler,handlerName,Extension,priority));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public ExtensionFeatures RegisterFrameHandler(Func<Image<Rgb24>,bool> handler,string handlerName)
|
public ExtensionFeatures RegisterFrameHandler(Func<Image<Rgb24>,bool> handler,string handlerName)
|
||||||
{
|
{
|
||||||
if(!Valid) return this;
|
if(!Valid) return this;
|
||||||
|
@ -46,6 +50,20 @@ public sealed class ExtensionFeatures
|
||||||
},handlerName);
|
},handlerName);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public ExtensionFeatures RegisterFrameHandler(Func<Image<Rgb24>,bool> handler,string handlerName,int priority)
|
||||||
|
{
|
||||||
|
if(!Valid) return this;
|
||||||
|
RegisterAsyncFrameHandler(async(e)=>{
|
||||||
|
if(handler !=null)
|
||||||
|
{
|
||||||
|
return await Task.Run<bool>(()=>{
|
||||||
|
return handler(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},handlerName,priority);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public ExtensionFeatures RegisterExport(Func<IEnumerable<Image<Rgb24>>,string,CancellationToken,Task> export,FileFilter[] filter,string text)
|
public ExtensionFeatures RegisterExport(Func<IEnumerable<Image<Rgb24>>,string,CancellationToken,Task> export,FileFilter[] filter,string text)
|
||||||
{
|
{
|
||||||
if(!Valid || Instance == null) return this;
|
if(!Valid || Instance == null) return this;
|
||||||
|
|
|
@ -56,6 +56,7 @@ public class ExtensionLoader
|
||||||
ext2.Instance=instance;
|
ext2.Instance=instance;
|
||||||
instance.Extensions.Add(ext2);
|
instance.Extensions.Add(ext2);
|
||||||
await ext2._Create();
|
await ext2._Create();
|
||||||
|
instance.SetPriority();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,7 +187,18 @@ internal class TimelapseSettings : Dialog
|
||||||
};
|
};
|
||||||
DynamicLayout lyt1=new DynamicLayout();
|
DynamicLayout lyt1=new DynamicLayout();
|
||||||
Scrollable scrollable=new Scrollable();
|
Scrollable scrollable=new Scrollable();
|
||||||
|
GroupBox szRow=new GroupBox {Text="Blank camera size"};
|
||||||
|
NumericStepper blankWidth=new NumericStepper{Value=api.Model.blankCameraWidth,MinValue=120,MaxValue=65535};
|
||||||
|
NumericStepper blankHeight =new NumericStepper{Value=api.Model.blankCameraHeight,MinValue=90,MaxValue=65535};
|
||||||
|
|
||||||
|
DynamicLayout lyt3=new DynamicLayout();
|
||||||
|
lyt3.BeginVertical();
|
||||||
|
lyt3.BeginHorizontal();
|
||||||
|
lyt3.Add(blankWidth,true);
|
||||||
|
lyt3.Add(blankHeight,true);
|
||||||
|
lyt3.EndHorizontal();
|
||||||
|
lyt3.EndVertical();
|
||||||
|
szRow.Content=lyt3;
|
||||||
DynamicLayout lyt2=new DynamicLayout();
|
DynamicLayout lyt2=new DynamicLayout();
|
||||||
scrollable.Content=lyt2;
|
scrollable.Content=lyt2;
|
||||||
lyt2.BeginVertical();
|
lyt2.BeginVertical();
|
||||||
|
@ -206,6 +217,7 @@ internal class TimelapseSettings : Dialog
|
||||||
lyt2.AddRow(installExtension);
|
lyt2.AddRow(installExtension);
|
||||||
lyt2.AddRow(enableExt);
|
lyt2.AddRow(enableExt);
|
||||||
lyt2.AddRow(useCustomFilePickerForNativeFS);
|
lyt2.AddRow(useCustomFilePickerForNativeFS);
|
||||||
|
lyt2.AddRow(szRow);
|
||||||
|
|
||||||
lyt2.AddRow(null);
|
lyt2.AddRow(null);
|
||||||
lyt2.EndVertical();
|
lyt2.EndVertical();
|
||||||
|
@ -218,7 +230,8 @@ internal class TimelapseSettings : Dialog
|
||||||
saveBtn.Click += (sender,e)=>{
|
saveBtn.Click += (sender,e)=>{
|
||||||
api.Model.canBlockFrames=blockBoxState;
|
api.Model.canBlockFrames=blockBoxState;
|
||||||
api.Model.canOverlayVideo=overLayBoxState;
|
api.Model.canOverlayVideo=overLayBoxState;
|
||||||
|
api.Model.blankCameraWidth=(int)blankWidth.Value;
|
||||||
|
api.Model.blankCameraHeight=(int)blankHeight.Value;
|
||||||
api.Model.deniedBlockExtensions.Clear();
|
api.Model.deniedBlockExtensions.Clear();
|
||||||
api.Model.deniedOverlayExtensions.Clear();
|
api.Model.deniedOverlayExtensions.Clear();
|
||||||
api.Model.enableWebServer=enableServer.Checked.GetValueOrDefault();
|
api.Model.enableWebServer=enableServer.Checked.GetValueOrDefault();
|
||||||
|
|
|
@ -11,8 +11,12 @@ public class TimelapseSettingsModel
|
||||||
timelapsePort=49290;
|
timelapsePort=49290;
|
||||||
canBlockFrames=true;
|
canBlockFrames=true;
|
||||||
addExtensionOnInstall=true;
|
addExtensionOnInstall=true;
|
||||||
|
blankCameraHeight=720;
|
||||||
|
blankCameraWidth=1280;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public int blankCameraWidth {get;set;}
|
||||||
|
public int blankCameraHeight {get;set;}
|
||||||
public bool useCustomFilePickerForNativeFS {get;set;}
|
public bool useCustomFilePickerForNativeFS {get;set;}
|
||||||
public bool addExtensionOnInstall {get;set;}
|
public bool addExtensionOnInstall {get;set;}
|
||||||
public bool canOverlayVideo {get;set;}
|
public bool canOverlayVideo {get;set;}
|
||||||
|
|
Loading…
Reference in New Issue