improvements to UI
This commit is contained in:
parent
d9f9756dcb
commit
4356367712
|
@ -337,4 +337,7 @@ ASALocalRun/
|
||||||
.localhistory/
|
.localhistory/
|
||||||
|
|
||||||
# BeatPulse healthcheck temp database
|
# BeatPulse healthcheck temp database
|
||||||
healthchecksdb
|
healthchecksdb
|
||||||
|
|
||||||
|
# Dither-tool
|
||||||
|
dither-tool/
|
|
@ -29,7 +29,7 @@
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
<GroupBox x:Name="gbOtherFunc" Header="Other Functions" Margin="2,2,2,2" Grid.Column="1" IsEnabled="False">
|
<GroupBox x:Name="gbOtherFunc" Header="Other Functions" Margin="2,2,2,2" Grid.Column="1" IsEnabled="False">
|
||||||
<Grid Margin="0,0,0,0">
|
<Grid Margin="0,0,0,0">
|
||||||
<Slider x:Name="slFeedTime" Margin="10,44,10,0" Maximum="500" Value="80" TickPlacement="Both" SmallChange="5" TickFrequency="5" LargeChange="25" ToolTip="Choose how long, in milliseconds, the printer should feed paper for" IsMoveToPointEnabled="True" IsSnapToTickEnabled="True" Height="33" VerticalAlignment="Top"/>
|
<Slider x:Name="slFeedTime" Margin="10,44,10,0" Maximum="500" Value="175" TickPlacement="Both" SmallChange="5" TickFrequency="5" LargeChange="25" ToolTip="Choose how long, in milliseconds, the printer should feed paper for" IsMoveToPointEnabled="True" IsSnapToTickEnabled="True" Height="33" VerticalAlignment="Top"/>
|
||||||
<Button x:Name="btFeed" Content="Feed" VerticalAlignment="Top" MinWidth="75" Margin="0,13,12,0" Height="21" Click="BtFeed_Click" Width="73" HorizontalAlignment="Right"/>
|
<Button x:Name="btFeed" Content="Feed" VerticalAlignment="Top" MinWidth="75" Margin="0,13,12,0" Height="21" Click="BtFeed_Click" Width="73" HorizontalAlignment="Right"/>
|
||||||
<Label x:Name="label" Content="Feed (ms)" Margin="10,10,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="79"/>
|
<Label x:Name="label" Content="Feed (ms)" Margin="10,10,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="79"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -38,9 +38,9 @@
|
||||||
<Grid Margin="0,0,0,0">
|
<Grid Margin="0,0,0,0">
|
||||||
<Button x:Name="btPrintImage" Content="Print Image" HorizontalAlignment="Left" MinWidth="75" Margin="10,0,0,10" Click="BtPrintImage_Click" Height="21" VerticalAlignment="Bottom"/>
|
<Button x:Name="btPrintImage" Content="Print Image" HorizontalAlignment="Left" MinWidth="75" Margin="10,0,0,10" Click="BtPrintImage_Click" Height="21" VerticalAlignment="Bottom"/>
|
||||||
<Button x:Name="btPrintText" Content="Print Text" HorizontalAlignment="Left" MinWidth="75" Margin="90,0,0,10" Click="BtPrintText_Click" Height="21" VerticalAlignment="Bottom"/>
|
<Button x:Name="btPrintText" Content="Print Text" HorizontalAlignment="Left" MinWidth="75" Margin="90,0,0,10" Click="BtPrintText_Click" Height="21" VerticalAlignment="Bottom"/>
|
||||||
<TextBox x:Name="txInput" Margin="180,2,2,2" TextWrapping="Wrap" Text="" AcceptsReturn="True" SpellCheck.IsEnabled="True"/>
|
|
||||||
<TextBox x:Name="txFont" HorizontalAlignment="Left" Height="23" Margin="10,2,0,0" TextWrapping="Wrap" Text="Consolas" VerticalAlignment="Top" Width="165"/>
|
<TextBox x:Name="txFont" HorizontalAlignment="Left" Height="23" Margin="10,2,0,0" TextWrapping="Wrap" Text="Consolas" VerticalAlignment="Top" Width="165"/>
|
||||||
<TextBox x:Name="txSzF" HorizontalAlignment="Left" Height="23" Margin="10,30,0,0" Text="12" VerticalAlignment="Top" Width="54" UndoLimit="1" MaxLines="1" IsUndoEnabled="False" MaxLength="3" AllowDrop="False" ToolTip="Please choose a font size"/>
|
<TextBox x:Name="txSzF" HorizontalAlignment="Left" Height="23" Margin="10,30,0,0" Text="12" VerticalAlignment="Top" Width="54" UndoLimit="1" MaxLines="1" IsUndoEnabled="False" MaxLength="3" AllowDrop="False" ToolTip="Please choose a font size"/>
|
||||||
|
<TextBox x:Name="txInput" Margin="180,2,2,2" TextWrapping="Wrap" Text="" AcceptsReturn="True" SpellCheck.IsEnabled="True"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
using liblogtiny;
|
using liblogtiny;
|
||||||
using libpaperang;
|
using libpaperang;
|
||||||
|
using libpaperang.Interfaces;
|
||||||
using libpaperang.Main;
|
using libpaperang.Main;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Timers;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
//testing
|
//testing
|
||||||
|
@ -14,14 +16,53 @@ namespace paperangapp {
|
||||||
private ILogTiny logger;
|
private ILogTiny logger;
|
||||||
private BaseTypes.Connection mmjcx=BaseTypes.Connection.USB;
|
private BaseTypes.Connection mmjcx=BaseTypes.Connection.USB;
|
||||||
private BaseTypes.Model mmjmd=BaseTypes.Model.T1;
|
private BaseTypes.Model mmjmd=BaseTypes.Model.T1;
|
||||||
private Paperang mmj;
|
private IPrinter prtr=new USB(BaseTypes.Model.T1); // T1 used as a generic, prtr used soley for the PrinterAvailable attr. all paperang devices tested report the exact same USB identifiers.
|
||||||
|
private Paperang mmj=null;
|
||||||
|
private System.Timers.Timer usbpoll;
|
||||||
|
private enum AppState {
|
||||||
|
UnInitNoDev,
|
||||||
|
UnInitDev,
|
||||||
|
InitDev
|
||||||
|
};
|
||||||
|
private AppState state=AppState.UnInitNoDev;
|
||||||
// TODO: is it out of scope for this library to provide functionality for printing bitmap data?
|
// TODO: is it out of scope for this library to provide functionality for printing bitmap data?
|
||||||
public MainWindow() {
|
public MainWindow() {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
logger = new LUITextbox();
|
logger = new LUITextbox();
|
||||||
gMain.DataContext = (LUITextbox)logger;
|
gMain.DataContext = (LUITextbox)logger;
|
||||||
logger.Info("Application started");
|
logger.Info("Application started");
|
||||||
|
usbpoll = new System.Timers.Timer(200) {
|
||||||
|
AutoReset = true
|
||||||
|
};
|
||||||
|
usbpoll.Elapsed += evtUsbPoll;
|
||||||
|
usbpoll.Start();
|
||||||
|
logger.Verbose("USB presence interval event started");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void evtUsbPoll(object sender, ElapsedEventArgs e) =>_ = Dispatcher.BeginInvoke(new invDgtUsbPoll(dgtUsbPoll));
|
||||||
|
private delegate void invDgtUsbPoll();
|
||||||
|
private void dgtUsbPoll() {
|
||||||
|
try {
|
||||||
|
if(state == AppState.UnInitNoDev && prtr.PrinterAvailable) {
|
||||||
|
btInitUSB.IsEnabled = true;
|
||||||
|
state = AppState.UnInitDev;
|
||||||
|
logger.Info("Printer plugged in");
|
||||||
|
} else if(state == AppState.UnInitDev && !prtr.PrinterAvailable) {
|
||||||
|
btInitUSB.IsEnabled = false;
|
||||||
|
state = AppState.UnInitNoDev;
|
||||||
|
logger.Info("Printer unplugged");
|
||||||
|
} else if(state == AppState.InitDev && !prtr.PrinterAvailable) {
|
||||||
|
logger.Info("Printer unplugged while initialised");
|
||||||
|
USBDeInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(Exception) {
|
||||||
|
} finally { }
|
||||||
|
}
|
||||||
|
|
||||||
|
~MainWindow() {
|
||||||
|
logger.Warn("Application closing");
|
||||||
|
if(mmj!=null) USBDeInit();
|
||||||
}
|
}
|
||||||
private void BtClearLog_Click(object sender, RoutedEventArgs e) =>
|
private void BtClearLog_Click(object sender, RoutedEventArgs e) =>
|
||||||
logger.Raw("!clearlog");
|
logger.Raw("!clearlog");
|
||||||
|
@ -37,7 +78,8 @@ namespace paperangapp {
|
||||||
mmjmd = BaseTypes.Model.T1;
|
mmjmd = BaseTypes.Model.T1;
|
||||||
logger.Info("Model type set to T1");
|
logger.Info("Model type set to T1");
|
||||||
}
|
}
|
||||||
private void BtInitUSB_Click(object sender, RoutedEventArgs e) {
|
private void BtInitUSB_Click(object sender, RoutedEventArgs e) => USBInit();
|
||||||
|
private void USBInit() {
|
||||||
mmj = new Paperang(mmjcx, mmjmd);
|
mmj = new Paperang(mmjcx, mmjmd);
|
||||||
mmj.SetLogContext(logger);
|
mmj.SetLogContext(logger);
|
||||||
logger.Verbose("# printers found: " + mmj.Printer.AvailablePrinters.Count);
|
logger.Verbose("# printers found: " + mmj.Printer.AvailablePrinters.Count);
|
||||||
|
@ -49,20 +91,26 @@ namespace paperangapp {
|
||||||
mmj.Initialise();
|
mmj.Initialise();
|
||||||
logger.Debug("PrinterInitialised? " + mmj.Printer.PrinterInitialised);
|
logger.Debug("PrinterInitialised? " + mmj.Printer.PrinterInitialised);
|
||||||
logger.Debug("Printer initialised and ready");
|
logger.Debug("Printer initialised and ready");
|
||||||
|
state = AppState.InitDev;
|
||||||
btInitUSB.IsEnabled = false;
|
btInitUSB.IsEnabled = false;
|
||||||
btDeInitUSB.IsEnabled = true;
|
btDeInitUSB.IsEnabled = true;
|
||||||
gbOtherFunc.IsEnabled = true;
|
gbOtherFunc.IsEnabled = true;
|
||||||
gbPrinting.IsEnabled = true;
|
gbPrinting.IsEnabled = true;
|
||||||
}
|
}
|
||||||
private void BtDeInitUSB_Click(object sender, RoutedEventArgs e) {
|
private void BtDeInitUSB_Click(object sender, RoutedEventArgs e) => USBDeInit();
|
||||||
|
private void USBDeInit() {
|
||||||
|
logger.Info("De-initialising printer");
|
||||||
mmj.Printer.ClosePrinter();
|
mmj.Printer.ClosePrinter();
|
||||||
mmj.Printer.Deinitialise();
|
mmj.Printer.Deinitialise();
|
||||||
mmj = null;
|
mmj = null;
|
||||||
gbPrinting.IsEnabled = false;
|
state = AppState.UnInitDev;
|
||||||
gbOtherFunc.IsEnabled = false;
|
try {
|
||||||
btInitUSB.IsEnabled = true;
|
gbPrinting.IsEnabled = false;
|
||||||
btDeInitUSB.IsEnabled = false;
|
gbOtherFunc.IsEnabled = false;
|
||||||
|
btInitUSB.IsEnabled = true;
|
||||||
|
btDeInitUSB.IsEnabled = false;
|
||||||
|
} catch(Exception) {
|
||||||
|
} finally { }
|
||||||
}
|
}
|
||||||
private void BtFeed_Click(object sender, RoutedEventArgs e) => mmj.Feed((uint)slFeedTime.Value);
|
private void BtFeed_Click(object sender, RoutedEventArgs e) => mmj.Feed((uint)slFeedTime.Value);
|
||||||
private void BtPrintText_Click(object sender, RoutedEventArgs e) {
|
private void BtPrintText_Click(object sender, RoutedEventArgs e) {
|
||||||
|
@ -128,12 +176,13 @@ namespace paperangapp {
|
||||||
}
|
}
|
||||||
logger.Debug($"Have {img.Length} bytes of print data ({mmj.Printer.LineWidth*8}x{hSzImg}@1bpp)");
|
logger.Debug($"Have {img.Length} bytes of print data ({mmj.Printer.LineWidth*8}x{hSzImg}@1bpp)");
|
||||||
mmj.PrintBytes(iimg, false);
|
mmj.PrintBytes(iimg, false);
|
||||||
mmj.Feed(175);
|
//mmj.Feed(175);
|
||||||
}
|
}
|
||||||
static uint BitSwap1(uint x) => ((x & 0x55555555u) << 1) | ((x & (~0x55555555u)) >> 1);
|
static uint BitSwap1(uint x) => ((x & 0x55555555u) << 1) | ((x & (~0x55555555u)) >> 1);
|
||||||
static uint BitSwap2(uint x) => ((x & 0x33333333u) << 2) | ((x & (~0x33333333u)) >> 2);
|
static uint BitSwap2(uint x) => ((x & 0x33333333u) << 2) | ((x & (~0x33333333u)) >> 2);
|
||||||
static uint BitSwap4(uint x) => ((x & 0x0f0f0f0fu) << 4) | ((x & (~0x0f0f0f0fu)) >> 4);
|
static uint BitSwap4(uint x) => ((x & 0x0f0f0f0fu) << 4) | ((x & (~0x0f0f0f0fu)) >> 4);
|
||||||
static uint BitSwap(uint x) => BitSwap4(BitSwap2(BitSwap1(x)));
|
static uint BitSwap(uint x) => BitSwap4(BitSwap2(BitSwap1(x)));
|
||||||
|
#region GDIBitmap1bpp
|
||||||
static Bitmap CopyToBpp(Bitmap b) {
|
static Bitmap CopyToBpp(Bitmap b) {
|
||||||
int w=b.Width, h=b.Height;
|
int w=b.Width, h=b.Height;
|
||||||
IntPtr hbm = b.GetHbitmap();
|
IntPtr hbm = b.GetHbitmap();
|
||||||
|
@ -199,5 +248,6 @@ namespace paperangapp {
|
||||||
public uint[] cols;
|
public uint[] cols;
|
||||||
}
|
}
|
||||||
static uint MAKERGB(int r, int g, int b) => ((uint)(b&255)) | ((uint)((r&255)<<8)) | ((uint)((g&255)<<16));
|
static uint MAKERGB(int r, int g, int b) => ((uint)(b&255)) | ((uint)((r&255)<<8)) | ((uint)((g&255)<<16));
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<ProjectGuid>{677A8867-809E-4476-A9AE-7BEB5CE02F96}</ProjectGuid>
|
<ProjectGuid>{677A8867-809E-4476-A9AE-7BEB5CE02F96}</ProjectGuid>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<RootNamespace>paperangapp</RootNamespace>
|
<RootNamespace>paperangapp</RootNamespace>
|
||||||
<AssemblyName>paperangapp</AssemblyName>
|
<AssemblyName>libpaperang-test-ui</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
|
@ -64,7 +64,7 @@
|
||||||
<GenerateManifests>true</GenerateManifests>
|
<GenerateManifests>true</GenerateManifests>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<SignManifests>true</SignManifests>
|
<SignManifests>false</SignManifests>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL">
|
<Reference Include="LibUsbDotNet.LibUsbDotNet, Version=2.2.0.0, Culture=neutral, PublicKeyToken=c677239abe1e02a9, processorArchitecture=MSIL">
|
||||||
|
@ -200,7 +200,6 @@
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
<None Include="paperangapp_TemporaryKey.pfx" />
|
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
|
Loading…
Reference in New Issue