You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
5.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using IntelOrca.Launchpad;
using IntelOrca.LaunchpadTests;
using Kidd_s_Passwort_Generator;
namespace Kidd_s_Passwort_Generator
{
public partial class Form_MainMenue : Form
{
LaunchpadDevice device;
PWGenerator Generator;
Queue<string> ImageList;
public Form_MainMenue()
{
InitializeComponent();
try
{
// Assign the launchpad if one is plugged in
device = new LaunchpadDevice();
device.DoubleBuffered = true;
}
catch
{
Console.WriteLine("No launchpad found");
Console.ReadLine();
return;
}
}
private void button_startLaunchPad_Click(object sender, EventArgs e)
{
textBox_finalesPassword.Text = "";
PassWort_Anleitung.Controls.Clear();
bool userCancel;
switch (comboBox_Device.Text)
{
case "Novation Launchpad":
try
{
if (device == null)
{
device = new LaunchpadDevice();
device.DoubleBuffered = true;
}
//Try to initialize with custom parameters otherwise use the default ones
Generator = new PWGenerator(device, Convert.ToInt32(textBox_Seed.Text), Convert.ToInt32(textBox_pKey.Text), comboBox_CharSet.Text, comboBox_CodePage.Text);
}
catch
{
if (device == null)
{
device = new LaunchpadDevice();
device.DoubleBuffered = true;
}
Generator = new PWGenerator(device);
}
userCancel = Generator.Run();
// after confirmation is pushed leave the routine and display the password
textBox_finalesPassword.Text = Generator.GetFinalPassword();
if (!userCancel)
{
ImageList = new Queue<string>();
ImageList = Generator.GetInstructionList();
generateInstruction(ImageList);
}
device.Reset();
Generator = null;
break;
case "8 x 8 Eingabefeld":
default:
Generator = new PWGenerator(device, Convert.ToInt32(textBox_Seed.Text), Convert.ToInt32(textBox_pKey.Text), comboBox_CharSet.Text, comboBox_CodePage.Text);
_8x8EingabeFeld Feld = new _8x8EingabeFeld(Generator);
Feld.Show();
//Problem: Nach show ausführung wird hier nichtmehr wiederholt!!! Andere Routine überlegen!!!
// ToDo:
// Eingabefeld von PWGenerator Logik entkoppeln!!!
// D.h. Generator liefert daten wie bei device wird jedoch gefüttert mit input von eingabefeld
// after confirmation is pushed leave the routine and display the password
//textBox_finalesPassword.Text = Generator.GetFinalPassword();
/*if (!userCancel)
{
ImageList = new Queue<string>();
ImageList = Generator.GetInstructionList();
generateInstruction(ImageList);
}*/
//Feld = null;
//Generator = null;
break;
}
}
private void generateInstruction(Queue<string> Instructions)
{
Queue<PictureBox> InstructionList = new Queue<PictureBox>();
int XPos = 20;
int YPos = 20;
int stdWidth = 52;
int stdHeight = 52;
PassWort_Anleitung.Controls.Clear();
if (Instructions.Count() > 0)
{
while (Instructions.Count() > 0)
{
PictureBox Picture = new PictureBox();
Picture.SizeMode = PictureBoxSizeMode.Zoom;
Picture.ImageLocation = Instructions.Dequeue();
Picture.Width = stdWidth * 2;
Picture.Height = stdHeight * 2;
Picture.Left = XPos;
Picture.Top = YPos;
Picture.Load();
PassWort_Anleitung.Controls.Add(Picture);
XPos += stdWidth * 2;
if (XPos > 8 * (stdWidth * 2))
{
YPos += stdHeight * 2;
XPos = 20;
}
}
}
}
}
}