Commit 19dda149 by Joona Romppanen

Lisätty commitoimattomia tiedostoja ja projekteja. Poistettu kaikki non-32bit build configit

1 parent f22f48d9
Showing with 6645 additions and 681 deletions
......@@ -8,3 +8,10 @@ bin
/MoyaAdmin/MoyaAdminUI/MoyaAdminUI/obj
*.DotSettings
*.user
MoyaAdmin/MoyaAdminUI/ImageResizer/ImageResizer/TestApp/obj/
MoyaAdmin/MoyaAdminUI/installers/
ThermoPrinterLibrary/ThermoPrinterLibrary/obj/
MoyaSignup/installers/
MoyaAdmin/MoyaAdminUI/ImageResizer/ImageResizer/ImageResizer/obj/
MoyaAdmin/MoyaAdminUI/ImageResizer/ImageResizer/ImageResizer/bin.old/
MoyaAdmin/MoyaAdminUI/ImageResizer/ImageResizer/Backup/

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageResizer", "ImageResizer\ImageResizer.csproj", "{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApp", "TestApp\TestApp.csproj", "{AC55DC8D-6A5A-4A72-92D7-E26003F6D6A5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Release|Any CPU.Build.0 = Release|Any CPU
{AC55DC8D-6A5A-4A72-92D7-E26003F6D6A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC55DC8D-6A5A-4A72-92D7-E26003F6D6A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC55DC8D-6A5A-4A72-92D7-E26003F6D6A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC55DC8D-6A5A-4A72-92D7-E26003F6D6A5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
namespace ImageResizer
{
partial class ImageResizer
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.sfdImage = new System.Windows.Forms.SaveFileDialog();
this.GroupBox3 = new System.Windows.Forms.GroupBox();
this.lblZoomFactor = new System.Windows.Forms.Label();
this.Label1 = new System.Windows.Forms.Label();
this.picZoomIn = new System.Windows.Forms.PictureBox();
this.picZoomOut = new System.Windows.Forms.PictureBox();
this.Label2 = new System.Windows.Forms.Label();
this.tbResize = new System.Windows.Forms.TrackBar();
this.grpImage = new System.Windows.Forms.GroupBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.vsbImage = new System.Windows.Forms.VScrollBar();
this.hsbImage = new System.Windows.Forms.HScrollBar();
this.ofdImage = new System.Windows.Forms.OpenFileDialog();
this.GroupBox1 = new System.Windows.Forms.GroupBox();
this.chkCrop = new System.Windows.Forms.CheckBox();
this.Label4 = new System.Windows.Forms.Label();
this.nudCropWidth = new System.Windows.Forms.NumericUpDown();
this.Label5 = new System.Windows.Forms.Label();
this.nudCropHeight = new System.Windows.Forms.NumericUpDown();
this.Label3 = new System.Windows.Forms.Label();
this.lblSize = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.cropButton = new System.Windows.Forms.Button();
this.rotate90Button = new System.Windows.Forms.Button();
this.rotateLeft90Button = new System.Windows.Forms.Button();
this.GroupBox3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picZoomIn)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.picZoomOut)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.tbResize)).BeginInit();
this.grpImage.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.GroupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudCropWidth)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudCropHeight)).BeginInit();
this.SuspendLayout();
//
// GroupBox3
//
this.GroupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.GroupBox3.Controls.Add(this.lblZoomFactor);
this.GroupBox3.Location = new System.Drawing.Point(9, 254);
this.GroupBox3.Name = "GroupBox3";
this.GroupBox3.Size = new System.Drawing.Size(41, 39);
this.GroupBox3.TabIndex = 59;
this.GroupBox3.TabStop = false;
//
// lblZoomFactor
//
this.lblZoomFactor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lblZoomFactor.Location = new System.Drawing.Point(4, 11);
this.lblZoomFactor.Name = "lblZoomFactor";
this.lblZoomFactor.Size = new System.Drawing.Size(34, 20);
this.lblZoomFactor.TabIndex = 42;
this.lblZoomFactor.Text = "100%";
this.lblZoomFactor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// Label1
//
this.Label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.Label1.Location = new System.Drawing.Point(253, 285);
this.Label1.Name = "Label1";
this.Label1.Size = new System.Drawing.Size(33, 12);
this.Label1.TabIndex = 57;
this.Label1.Text = "200%";
//
// picZoomIn
//
this.picZoomIn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.picZoomIn.Image = global::ImageResizer.Properties.Resources.ZoomIn48;
this.picZoomIn.Location = new System.Drawing.Point(291, 261);
this.picZoomIn.Name = "picZoomIn";
this.picZoomIn.Size = new System.Drawing.Size(32, 32);
this.picZoomIn.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.picZoomIn.TabIndex = 55;
this.picZoomIn.TabStop = false;
this.picZoomIn.Click += new System.EventHandler(this.picZoomIn_Click);
//
// picZoomOut
//
this.picZoomOut.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.picZoomOut.Image = global::ImageResizer.Properties.Resources.ZoomOut48;
this.picZoomOut.Location = new System.Drawing.Point(56, 261);
this.picZoomOut.Name = "picZoomOut";
this.picZoomOut.Size = new System.Drawing.Size(32, 32);
this.picZoomOut.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.picZoomOut.TabIndex = 54;
this.picZoomOut.TabStop = false;
this.picZoomOut.Click += new System.EventHandler(this.picZoomOut_Click);
//
// Label2
//
this.Label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.Label2.Location = new System.Drawing.Point(171, 285);
this.Label2.Name = "Label2";
this.Label2.Size = new System.Drawing.Size(33, 12);
this.Label2.TabIndex = 45;
this.Label2.Text = "100%";
//
// tbResize
//
this.tbResize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.tbResize.Enabled = false;
this.tbResize.Location = new System.Drawing.Point(88, 253);
this.tbResize.Maximum = 200;
this.tbResize.Minimum = 1;
this.tbResize.Name = "tbResize";
this.tbResize.Size = new System.Drawing.Size(199, 45);
this.tbResize.TabIndex = 50;
this.tbResize.TickFrequency = 10;
this.tbResize.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
this.tbResize.Value = 100;
this.tbResize.ValueChanged += new System.EventHandler(this.tbResize_ValueChanged);
//
// grpImage
//
this.grpImage.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.grpImage.Controls.Add(this.pictureBox1);
this.grpImage.Location = new System.Drawing.Point(6, 3);
this.grpImage.Name = "grpImage";
this.grpImage.Size = new System.Drawing.Size(403, 221);
this.grpImage.TabIndex = 43;
this.grpImage.TabStop = false;
this.grpImage.Visible = false;
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Location = new System.Drawing.Point(3, 16);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(397, 202);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// vsbImage
//
this.vsbImage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
this.vsbImage.Enabled = false;
this.vsbImage.LargeChange = 1;
this.vsbImage.Location = new System.Drawing.Point(412, 3);
this.vsbImage.Maximum = 0;
this.vsbImage.Name = "vsbImage";
this.vsbImage.Size = new System.Drawing.Size(16, 221);
this.vsbImage.TabIndex = 52;
this.vsbImage.Scroll += new System.Windows.Forms.ScrollEventHandler(this.ImagedScrolled);
//
// hsbImage
//
this.hsbImage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.hsbImage.Enabled = false;
this.hsbImage.LargeChange = 1;
this.hsbImage.Location = new System.Drawing.Point(6, 227);
this.hsbImage.Maximum = 0;
this.hsbImage.Name = "hsbImage";
this.hsbImage.Size = new System.Drawing.Size(403, 16);
this.hsbImage.TabIndex = 51;
this.hsbImage.Scroll += new System.Windows.Forms.ScrollEventHandler(this.ImagedScrolled);
//
// GroupBox1
//
this.GroupBox1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.GroupBox1.Controls.Add(this.chkCrop);
this.GroupBox1.Controls.Add(this.Label4);
this.GroupBox1.Controls.Add(this.nudCropWidth);
this.GroupBox1.Controls.Add(this.Label5);
this.GroupBox1.Controls.Add(this.nudCropHeight);
this.GroupBox1.Location = new System.Drawing.Point(330, 253);
this.GroupBox1.Name = "GroupBox1";
this.GroupBox1.Size = new System.Drawing.Size(218, 44);
this.GroupBox1.TabIndex = 49;
this.GroupBox1.TabStop = false;
this.GroupBox1.Visible = false;
//
// chkCrop
//
this.chkCrop.AutoSize = true;
this.chkCrop.Checked = true;
this.chkCrop.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkCrop.Enabled = false;
this.chkCrop.Location = new System.Drawing.Point(6, 0);
this.chkCrop.Name = "chkCrop";
this.chkCrop.Size = new System.Drawing.Size(48, 17);
this.chkCrop.TabIndex = 4;
this.chkCrop.Text = "Crop";
this.chkCrop.UseVisualStyleBackColor = true;
this.chkCrop.Visible = false;
this.chkCrop.CheckedChanged += new System.EventHandler(this.chkCrop_CheckedChanged);
//
// Label4
//
this.Label4.AutoSize = true;
this.Label4.Location = new System.Drawing.Point(6, 21);
this.Label4.Name = "Label4";
this.Label4.Size = new System.Drawing.Size(35, 13);
this.Label4.TabIndex = 7;
this.Label4.Text = "Width";
//
// nudCropWidth
//
this.nudCropWidth.Enabled = false;
this.nudCropWidth.Location = new System.Drawing.Point(47, 18);
this.nudCropWidth.Name = "nudCropWidth";
this.nudCropWidth.Size = new System.Drawing.Size(50, 20);
this.nudCropWidth.TabIndex = 6;
this.nudCropWidth.ValueChanged += new System.EventHandler(this.nudCrop_ValueChanged);
//
// Label5
//
this.Label5.AutoSize = true;
this.Label5.Location = new System.Drawing.Point(114, 21);
this.Label5.Name = "Label5";
this.Label5.Size = new System.Drawing.Size(38, 13);
this.Label5.TabIndex = 9;
this.Label5.Text = "Height";
//
// nudCropHeight
//
this.nudCropHeight.Enabled = false;
this.nudCropHeight.Location = new System.Drawing.Point(158, 18);
this.nudCropHeight.Name = "nudCropHeight";
this.nudCropHeight.Size = new System.Drawing.Size(50, 20);
this.nudCropHeight.TabIndex = 8;
this.nudCropHeight.ValueChanged += new System.EventHandler(this.nudCrop_ValueChanged);
//
// Label3
//
this.Label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.Label3.Location = new System.Drawing.Point(91, 285);
this.Label3.Name = "Label3";
this.Label3.Size = new System.Drawing.Size(21, 12);
this.Label3.TabIndex = 58;
this.Label3.Text = "1%";
//
// lblSize
//
this.lblSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lblSize.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblSize.Location = new System.Drawing.Point(441, 227);
this.lblSize.Margin = new System.Windows.Forms.Padding(0);
this.lblSize.Name = "lblSize";
this.lblSize.Size = new System.Drawing.Size(101, 13);
this.lblSize.TabIndex = 53;
this.lblSize.Text = "0 x 0";
this.lblSize.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.button1.Location = new System.Drawing.Point(433, 19);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(105, 23);
this.button1.TabIndex = 60;
this.button1.Text = "Next";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// cropButton
//
this.cropButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.cropButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.cropButton.Location = new System.Drawing.Point(433, 48);
this.cropButton.Name = "cropButton";
this.cropButton.Size = new System.Drawing.Size(105, 23);
this.cropButton.TabIndex = 61;
this.cropButton.Text = "Crop";
this.cropButton.UseVisualStyleBackColor = true;
this.cropButton.Click += new System.EventHandler(this.cropButton_Click);
//
// rotate90Button
//
this.rotate90Button.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.rotate90Button.Location = new System.Drawing.Point(433, 78);
this.rotate90Button.Name = "rotate90Button";
this.rotate90Button.Size = new System.Drawing.Size(105, 23);
this.rotate90Button.TabIndex = 62;
this.rotate90Button.Text = "Rotate right 90";
this.rotate90Button.UseVisualStyleBackColor = true;
this.rotate90Button.Click += new System.EventHandler(this.rotate90Button_Click);
//
// rotateLeft90Button
//
this.rotateLeft90Button.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.rotateLeft90Button.Location = new System.Drawing.Point(433, 107);
this.rotateLeft90Button.Name = "rotateLeft90Button";
this.rotateLeft90Button.Size = new System.Drawing.Size(105, 23);
this.rotateLeft90Button.TabIndex = 63;
this.rotateLeft90Button.Text = "Rotate left 90";
this.rotateLeft90Button.UseVisualStyleBackColor = true;
this.rotateLeft90Button.Click += new System.EventHandler(this.rotateLeft90Button_Click);
//
// ImageResizer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.rotateLeft90Button);
this.Controls.Add(this.rotate90Button);
this.Controls.Add(this.cropButton);
this.Controls.Add(this.button1);
this.Controls.Add(this.GroupBox3);
this.Controls.Add(this.Label1);
this.Controls.Add(this.picZoomIn);
this.Controls.Add(this.picZoomOut);
this.Controls.Add(this.Label2);
this.Controls.Add(this.grpImage);
this.Controls.Add(this.vsbImage);
this.Controls.Add(this.hsbImage);
this.Controls.Add(this.GroupBox1);
this.Controls.Add(this.Label3);
this.Controls.Add(this.lblSize);
this.Controls.Add(this.tbResize);
this.DoubleBuffered = true;
this.MinimumSize = new System.Drawing.Size(550, 300);
this.Name = "ImageResizer";
this.Size = new System.Drawing.Size(550, 300);
this.Load += new System.EventHandler(this.ImageResizer_Load);
this.SizeChanged += new System.EventHandler(this.EasyImageResizerControl_SizeChanged);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.ImageResizer_Paint);
this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.EasyImageResizerControl_MouseClick);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ImageResizer_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.ImageResizer_MouseMove);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ImageResizer_MouseUp);
this.Validated += new System.EventHandler(this.ImageResizer_Validated);
this.GroupBox3.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.picZoomIn)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.picZoomOut)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.tbResize)).EndInit();
this.grpImage.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.GroupBox1.ResumeLayout(false);
this.GroupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudCropWidth)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nudCropHeight)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
internal System.Windows.Forms.SaveFileDialog sfdImage;
internal System.Windows.Forms.GroupBox GroupBox3;
internal System.Windows.Forms.Label lblZoomFactor;
internal System.Windows.Forms.Label Label1;
internal System.Windows.Forms.PictureBox picZoomIn;
internal System.Windows.Forms.PictureBox picZoomOut;
internal System.Windows.Forms.Label Label2;
internal System.Windows.Forms.TrackBar tbResize;
internal System.Windows.Forms.GroupBox grpImage;
internal System.Windows.Forms.VScrollBar vsbImage;
internal System.Windows.Forms.HScrollBar hsbImage;
internal System.Windows.Forms.OpenFileDialog ofdImage;
internal System.Windows.Forms.GroupBox GroupBox1;
internal System.Windows.Forms.CheckBox chkCrop;
internal System.Windows.Forms.Label Label4;
internal System.Windows.Forms.NumericUpDown nudCropWidth;
internal System.Windows.Forms.Label Label5;
internal System.Windows.Forms.NumericUpDown nudCropHeight;
internal System.Windows.Forms.Label Label3;
internal System.Windows.Forms.Label lblSize;
private System.Windows.Forms.PictureBox pictureBox1;
internal System.Windows.Forms.Button button1;
internal System.Windows.Forms.Button cropButton;
private System.Windows.Forms.Button rotate90Button;
private System.Windows.Forms.Button rotateLeft90Button;
}
}
using MoyaAdminLib;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
using System.Web.Script.Serialization;
using System.Net;
using System.Collections.Specialized;
namespace ImageResizer
{
public delegate void WorkCompleteDelegate(object sender, bool complete);
public partial class ImageResizer : UserControl
{
#region Members
// Subscribe to this event when control is not in StandAloneMode; called by close button click
public event WorkCompleteDelegate WorkComplete;
// Used for saving the edited image
private Dictionary<string, ImageCodecInfo> _codecs = new Dictionary<string, ImageCodecInfo>();
private EncoderParameters _encoderParams = new EncoderParameters();
private Image _editedImage = null;
private User selectedUser;
private string defaultApiUrl;
public string DefaultApiUrl
{
get { return defaultApiUrl; }
set { defaultApiUrl = value; }
}
private decimal croppedImageRatio;
public decimal CroppedImageRatio
{
get { return croppedImageRatio; }
set { croppedImageRatio = value; }
}
/*
// Determines whether the image is saved to disk (true) or memory (false). Also controls
// what happens when the Close button is pushed; App.Exit (true) or WorkComplete event (false)
public bool StandAloneMode
{
get
{
return btnSave.Text.Equals("Save");
}
set
{
if (value)
{
btnSave.Text = "Save";
btnSave.Image = Properties.Resources.disk_blue;
btnClose.Text = "Close";
}
else
{
btnSave.Text = "Ok";
btnSave.Image = Properties.Resources.disk_blue;
btnClose.Text = "Cancel";
}
}
}*/
// Set this if the final image must have a minimum width
public int RequiredWidth
{
get
{
return _requiredWidth;
}
set
{
_requiredWidth = value;
}
}
private int _requiredWidth = 0;
// Set this if the final image must have a minimum height
public int RequiredHeight
{
get
{
return _requiredHeight;
}
set
{
_requiredHeight = value;
}
}
private int _requiredHeight = 0;
// The starting image
protected Image BaseImage
{
get
{
return _image;
}
set
{
try
{
SuspendRefresh = true;
_image = value;
tbResize.Value = 100;
SetSizes(true);
if (DrawnImage != null)
{
while (DrawnImage.Width > grpImage.Width || DrawnImage.Height > grpImage.Height)
{
tbResize.Value -= 5;
}
}
}
finally
{
//btnSave.Enabled = true;
chkCrop.Enabled = true;
tbResize.Enabled = true;
SuspendRefresh = false;
RefreshForm();
}
}
}
private Image _image = null;
// The in-process image
protected Bitmap DrawnImage
{
get
{
return _drawnImage;
}
set
{
_drawnImage = value;
}
}
private Bitmap _drawnImage = null;
// X coordinate of the top left point of the yellow crop box
protected int CropBoxX
{
get
{
return _cropBoxX;
}
set
{
_cropBoxX = value;
}
}
private int _cropBoxX = -1;
// Y coordinate of the top left point of the yellow crop box
protected int CropBoxY
{
get
{
return _cropBoxY;
}
set
{
_cropBoxY = value;
}
}
private int _cropBoxY = -1;
protected int MaxCanvasWidth
{
get
{
int retVal = DrawnImage.Width;
if (retVal > grpImage.Width)
{
retVal = grpImage.Width;
}
return retVal;
}
}
protected int MaxCanvasHeight
{
get
{
int retVal = DrawnImage.Height;
if (retVal > grpImage.Height)
{
retVal = grpImage.Height;
}
return retVal;
}
}
protected bool SuspendRefresh
{
get
{
return _suspendRefresh;
}
set
{
_suspendRefresh = value;
}
}
private bool _suspendRefresh = false;
#endregion
#region Constructors
public ImageResizer()
{
InitializeComponent();
// Save in full quality
_encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
// Find the codecs for the supported formats, set the open and save dialog filters
string displayFilters = string.Empty;
int codecCount = 0;
int jpegIndex = 0;
List<Guid> imageFormats = new List<Guid>(new Guid[] { ImageFormat.Bmp.Guid, ImageFormat.Gif.Guid, ImageFormat.Jpeg.Guid, ImageFormat.Png.Guid, ImageFormat.Tiff.Guid });
foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders())
{
if (imageFormats.Contains(codec.FormatID))
{
codecCount++;
if (codec.FormatDescription.Equals("JPEG"))
{
jpegIndex = codecCount;
}
string fileFilterLeft = codec.FormatDescription + " files (";
string fileFilterRight = "|";
foreach (string extension in codec.FilenameExtension.Split(new char[] { ';' }))
{
string ext = extension.ToLower();
fileFilterLeft += ext + ",";
fileFilterRight += ext + ";";
_codecs.Add(ext.Replace("*",string.Empty), codec);
}
displayFilters += fileFilterLeft.Substring(0, fileFilterLeft.Length - 1) + ")" + fileFilterRight.Substring(0, fileFilterRight.Length - 1) + "|";
}
}
ofdImage.Filter = displayFilters.Substring(0, displayFilters.Length - 1 );
sfdImage.Filter = ofdImage.Filter;
ofdImage.FilterIndex = jpegIndex;
}
// Allows developer to set starting image and required size of resulting image
public ImageResizer(Image baseImage, int requiredWidth, int requiredHeight)
{
BaseImage = baseImage;
if (requiredWidth > 0)
{
RequiredWidth = requiredWidth;
}
if (requiredHeight > 0)
{
RequiredHeight = requiredHeight;
}
}
#endregion
#region Methods
// Removes all images for control reuse
public void Reset()
{
_editedImage = null;
DrawnImage = null;
BaseImage = null;
RefreshForm();
}
public Image GetEditedImage()
{
return _editedImage;
}
// Draw the canvas, the image and crop box
private void ImageResizer_Paint(object sender, PaintEventArgs e)
{
// Draws alternating shaded rectangles so user can differentiate canvas from image.
bool xGrayBox = true;
int backgroundX = 0;
while (backgroundX < grpImage.Width)
{
int backgroundY = 0;
bool yGrayBox = xGrayBox;
while (backgroundY < grpImage.Height)
{
int recWidth = (int)((backgroundX + 50 > grpImage.Width) ? grpImage.Width - backgroundX : 50);
int recHeight = (int)((backgroundY + 50 > grpImage.Height) ? grpImage.Height - backgroundY : 50);
e.Graphics.FillRectangle(((Brush)(yGrayBox ? Brushes.LightGray : Brushes.Gainsboro)), backgroundX, backgroundY, recWidth + 2, recHeight + 2);
backgroundY += 50;
yGrayBox = !yGrayBox;
}
backgroundX += 50;
xGrayBox = !xGrayBox;
}
if (!SuspendRefresh && DrawnImage != null)
{
// if( the image is too large, draw only visible portion as dictated by the scrollbars, otherwise draw the whole image.
if (DrawnImage.Width > grpImage.Width || DrawnImage.Height > grpImage.Height)
{
int rectX = 0;
if (hsbImage.Value > 0)
{
rectX = hsbImage.Value;
}
int rectY = 0;
if (vsbImage.Value > 0)
{
rectY = vsbImage.Value;
}
e.Graphics.DrawImage(DrawnImage, 0, 0, new Rectangle(rectX, rectY, grpImage.Width, grpImage.Height), GraphicsUnit.Pixel);
}
else
{
e.Graphics.DrawImage(DrawnImage, 0, 0);
}
// Draw the crop rectangle with both yellow and black so it is easily visible no matter the image.
if (chkCrop.Checked)
{
e.Graphics.DrawRectangle(Pens.Yellow, CropBoxX, CropBoxY, (float)nudCropWidth.Value, (float)nudCropHeight.Value);
e.Graphics.DrawRectangle(Pens.Black, CropBoxX - 1, CropBoxY - 1, (float)nudCropWidth.Value + 2, (float)nudCropHeight.Value + 2);
}
}
}
// Keep all stored values up to date
protected void SetSizes(bool adjustCropSize)
{
if (BaseImage != null)
{
DrawnImage = new Bitmap(BaseImage, (int)Math.Ceiling(BaseImage.Width * 0.01 * tbResize.Value), (int)Math.Ceiling(BaseImage.Height * 0.01 * tbResize.Value));
SetCropValues(adjustCropSize);
hsbImage.Enabled = DrawnImage.Width > grpImage.Width && !SuspendRefresh;
vsbImage.Enabled = DrawnImage.Height > grpImage.Height && !SuspendRefresh;
if (hsbImage.Enabled)
{
hsbImage.Maximum = Math.Max(0, DrawnImage.Width - grpImage.Width);
hsbImage.LargeChange = (int)(hsbImage.Maximum / 10);
}
if (vsbImage.Enabled)
{
vsbImage.Maximum = Math.Max(0, DrawnImage.Height - grpImage.Height);
vsbImage.LargeChange = (int)(vsbImage.Maximum / 10);
}
if (_requiredWidth > 0 || _requiredHeight > 0)
{
chkCrop.Checked = true;
}
}
RefreshForm();
}
// Ensure the crop box size meets the required sizes, if any.
protected void SetCropValues(bool adjustCropSize)
{
if (chkCrop.Checked)
{
if (_requiredWidth < 1)
{
nudCropWidth.Maximum = MaxCanvasWidth;
if (adjustCropSize)
{
nudCropWidth.Value = (int)(MaxCanvasWidth / 2);
}
}
else
{
nudCropWidth.Maximum = _requiredWidth;
if (adjustCropSize)
{
nudCropWidth.Value = _requiredWidth;
}
}
if (_requiredHeight < 1)
{
nudCropHeight.Maximum = MaxCanvasHeight;
if (adjustCropSize)
{
nudCropHeight.Value = (int)(MaxCanvasHeight / 2);
}
}
else
{
nudCropHeight.Maximum = _requiredHeight;
if (adjustCropSize)
{
nudCropHeight.Value = _requiredHeight;
}
}
if (CropBoxX == -1)
{
CropBoxX = (int)(MaxCanvasWidth / 2) - (int)(nudCropWidth.Value / 2);
}
if (CropBoxY == -1)
{
CropBoxY = (int)(MaxCanvasHeight / 2) - (int)(nudCropHeight.Value / 2);
}
}
else
{
// No cropping, reset all values
CropBoxX = -1;
CropBoxY = -1;
nudCropWidth.Value = 0;
nudCropHeight.Value = 0;
nudCropWidth.Maximum = 0;
nudCropHeight.Maximum = 0;
}
VerifyCropValues();
}
// Ensure the crop box stays with in the bounds of the drawn image
protected void VerifyCropValues()
{
bool toggle = false;
try
{
// Suspend repainting so the crop box only redraws once
if (!SuspendRefresh)
{
SuspendRefresh = true;
toggle = true;
}
// First try to fit the existing size crop box in the alloted space.
// if it still won't fit, begin to shrink it.
while (CropBoxX + nudCropWidth.Value > MaxCanvasWidth)
{
if (CropBoxX > 0)
{
CropBoxX -= 1;
}
else
{
nudCropWidth.Value -= 1;
}
}
while (CropBoxY + nudCropHeight.Value > MaxCanvasHeight)
{
if (CropBoxY > 0)
{
CropBoxY -= 1;
}
else
{
nudCropHeight.Value -= 1;
}
}
}
finally
{
if (toggle)
{
SuspendRefresh = false;
}
}
RefreshForm();
}
// Update image size label and repaint
protected void RefreshForm()
{
if (!SuspendRefresh)
{
if (DrawnImage != null)
{
lblSize.Text = DrawnImage.Width.ToString() + " x " + DrawnImage.Height.ToString();
}
Refresh();
Invalidate();
}
}
// Save the resized or cropped image
protected void SaveImage()
{
try
{
// if( cropped, create a new graphics object to draw the new image on, otherwise just save the current image
if (!chkCrop.Checked)
{
_editedImage = new Bitmap(BaseImage, DrawnImage.Width, DrawnImage.Height);
SaveImage(_editedImage);
}
else
{
_editedImage = new Bitmap((int)nudCropWidth.Value, (int)nudCropHeight.Value);
Graphics g = Graphics.FromImage(_editedImage);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
int drawnImageCropBoxX = CropBoxX - grpImage.Location.X + grpImage.Location.X;
if (hsbImage.Enabled)
{
drawnImageCropBoxX += hsbImage.Value;
}
int drawnImageCropBoxY = CropBoxY - grpImage.Location.Y + grpImage.Location.Y;
if (hsbImage.Enabled)
{
drawnImageCropBoxY += vsbImage.Value;
}
g.DrawImage(DrawnImage, 0, 0, new Rectangle(drawnImageCropBoxX, drawnImageCropBoxY, (int)nudCropWidth.Value, (int)nudCropHeight.Value), GraphicsUnit.Pixel);
SaveImage(_editedImage);
}
}
catch (Exception ex)
{
MessageBox.Show("An error occurred while saving: " + ex.Message, "Error", MessageBoxButtons.OK);
}
}
// Save to disk or memory
protected void SaveImage(Image saveImage)
{
/*
if (StandAloneMode)
{
if (sfdImage.ShowDialog() == DialogResult.OK)
{
FileInfo fileName = new FileInfo(sfdImage.FileName);
if (_codecs.ContainsKey(fileName.Extension.ToLower()))
{
saveImage.Save(sfdImage.FileName, _codecs[fileName.Extension.ToLower()], _encoderParams);
}
else
{
MessageBox.Show("Please choose a valid file extension", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
SaveImage(saveImage);
}
}
}
else
{
MemoryStream saveStream = null;
try
{
saveStream = new MemoryStream();
saveImage.Save(saveStream, ImageFormat.Jpeg);
saveImage = Image.FromStream(saveStream);
WorkComplete(this, true);
}
catch (Exception ex)
{
MessageBox.Show("An error occurred while saving: " + ex.Message, "Error", MessageBoxButtons.OK);
}
finally
{
if (saveStream != null)
{
saveStream.Close();
}
}
}*/
}
#endregion
#region Control Events
// Load the image into memory.
private void btnLoad_Click(object sender, EventArgs e)
{
ofdImage.FileName = null;
if (ofdImage.ShowDialog() == DialogResult.OK)
{
// Image.FromFile keeps the file locked, need to copy it
Image img = null;
MemoryStream saveStream = null;
try
{
img = Image.FromFile(ofdImage.FileName);
saveStream = new MemoryStream();
img.Save(saveStream, img.RawFormat);
BaseImage = Image.FromStream(saveStream);
sfdImage.FileName = null;
sfdImage.FilterIndex = ofdImage.FilterIndex;
}
catch( Exception ex)
{
MessageBox.Show("An error has occurred: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (img != null)
{
img.Dispose();
img = null;
}
if (saveStream != null)
{
saveStream.Close();
saveStream = null;
}
chkCrop.Checked = false;
}
}
}
// Save the image to disk
private void btnSave_Click(object sender, EventArgs e)
{
SaveImage();
}
// Raises the Close event so the parent form knows the user is done.
private void btnClose_Click(object sender, EventArgs e)
{
/*
if (StandAloneMode)
{
Application.Exit();
}
else if (WorkComplete != null)
{
WorkComplete(this, false);
}*/
}
// Controls the zoom factor.
private void tbResize_ValueChanged(object sender, EventArgs e)
{
SetSizes(false);
lblZoomFactor.Text = tbResize.Value.ToString() + "%";
}
private void picZoomOut_Click(object sender, EventArgs e)
{
if (tbResize.Value > tbResize.Minimum)
{
tbResize.Value -= 1;
}
}
private void picZoomIn_Click(object sender, EventArgs e)
{
if (tbResize.Value < tbResize.Maximum)
{
tbResize.Value += 1;
}
}
// Toggles the crop box.
private void chkCrop_CheckedChanged(object sender, EventArgs e)
{
nudCropHeight.Enabled = chkCrop.Checked;
nudCropWidth.Enabled = chkCrop.Checked;
SetSizes(true);
}
// Update stored values when user resizes control
private void EasyImageResizerControl_SizeChanged(object sender, EventArgs e)
{
SetSizes(true);
}
// Allows user to reposition the crop box.
private void EasyImageResizerControl_MouseClick(object sender, MouseEventArgs e)
{
/*
// Ignore clicks outside the canvas.
if (e.X < grpImage.Width + 1 && e.Y < grpImage.Height + 1 && chkCrop.Checked)
{
//cropBoxDrag = true;
//Console.WriteLine("CropBoxDrag is true");
// Use the mouse click position as the center for crop box
int newCropX = e.X;
int newCropY = e.Y;
if (newCropX < 0)
{
newCropX = 0;
}
if (newCropY < 0)
{
newCropY = 0;
}
if (newCropX >= 0 && newCropX < DrawnImage.Width && newCropY >= 0 && newCropY < DrawnImage.Height)
{
if (newCropX + (int)nudCropWidth.Value > MaxCanvasWidth)
{
CropBoxX = MaxCanvasWidth - (int)nudCropWidth.Value;
}
else
{
CropBoxX = newCropX;
}
if (newCropY + (int)nudCropHeight.Value > MaxCanvasHeight)
{
CropBoxY = MaxCanvasHeight - (int)nudCropHeight.Value;
}
else
{
CropBoxY = newCropY;
}
}
RefreshForm();
}
*/
}
// Simple scrolling.
private void ImagedScrolled(object sender, ScrollEventArgs e)
{
RefreshForm();
}
// Ensure the crop box draws correctly
private void nudCrop_ValueChanged(object sender, EventArgs e)
{
VerifyCropValues();
}
#endregion
private void ImageResizer_MouseUp(object sender, MouseEventArgs e)
{
cropBoxDrag = false;
//Console.WriteLine("CropBoxDrag is false");
}
bool cropBoxDrag = false;
private void ImageResizer_MouseMove(object sender, MouseEventArgs e)
{
//Console.WriteLine("e.X: " + e.X + ", e.Y: " + e.Y);
//Console.WriteLine("grpImage.Width: " + grpImage.Width + ", grpImage.Height: " + grpImage.Height);
//Console.WriteLine("cropBoxDrag: " + cropBoxDrag);
if (e.X < grpImage.Width + 1 && e.Y < grpImage.Height + 1 && chkCrop.Checked && cropBoxDrag)
{
int newCropWidth = 0;
int newCropHeight = 0;
if (e.X > CropBoxX)
newCropWidth = e.X - CropBoxX;
if (e.Y > CropBoxY)
newCropHeight = e.Y - CropBoxY;
if (croppedImageRatio > 0)
{
newCropHeight = (int)(newCropWidth * croppedImageRatio);
Console.WriteLine("croppedImageRatio setted");
}
if (newCropHeight > nudCropHeight.Maximum ||
newCropWidth > nudCropWidth.Maximum)
return;
nudCropHeight.Value = newCropHeight;
nudCropWidth.Value = newCropWidth;
RefreshForm();
}
}
private void ImageResizer_MouseDown(object sender, MouseEventArgs e)
{
if (e.X < grpImage.Width + 1 && e.Y < grpImage.Height + 1 && chkCrop.Checked)
{
cropBoxDrag = true;
//Console.WriteLine("CropBoxDrag is true");
// Use the mouse click position as the center for crop box
int newCropX = e.X;
int newCropY = e.Y;
if (newCropX < 0)
{
newCropX = 0;
}
if (newCropY < 0)
{
newCropY = 0;
}
if (newCropX >= 0 && newCropX < DrawnImage.Width && newCropY >= 0 && newCropY < DrawnImage.Height)
{
if (newCropX + (int)nudCropWidth.Value > MaxCanvasWidth)
{
CropBoxX = MaxCanvasWidth - (int)nudCropWidth.Value;
}
else
{
CropBoxX = newCropX;
}
if (newCropY + (int)nudCropHeight.Value > MaxCanvasHeight)
{
CropBoxY = MaxCanvasHeight - (int)nudCropHeight.Value;
}
else
{
CropBoxY = newCropY;
}
//CropBoxX = newCropX;
//CropBoxY = newCropY;
}
RefreshForm();
}
}
private void ImageResizer_Load(object sender, EventArgs e)
{
}
private List<User> croppedUsers = new List<User>();
private void selectNextUser()
{
for (int i = 0; i < User.Cache.Count; i++)
{
if(selectedUser != null)
{
croppedUsers.Add(selectedUser);
i = User.Cache.IndexOf(selectedUser) + 1;
if (i >= User.Cache.Count)
break;
}
selectedUser = null;
User user = User.Cache[i];
if (croppedUsers.Contains(user))
continue;
if (defaultApiUrl != null && defaultApiUrl != "")
{
try {
RestClient client = new RestClient(DefaultApiUrl);
string json = client.MakeRequest("user/card/" + user.EventUserId);
var ser = new JavaScriptSerializer();
Card card = ser.Deserialize<Card>(json);
//string url = RestClient.GetRequestURL(defaultApiUrl, "card/GetImage/" + card.id);
if (card.state == "PENDING_VALIDATION" ||
card.state == "REJECTED")
{
selectedUser = user;
string url = RestClient.GetRequestURL(defaultApiUrl, "v2/user/" + user.UserId + "/image");
WebRequest request = WebRequest.Create(url);
using (WebResponse response = request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
BaseImage = Image.FromStream(stream);
}
}
}
else
continue;
} catch(Exception ex)
{
continue;
}
}
break;
}
if(selectedUser == null)
{
MessageBox.Show("No users left to crop!");
}
}
private void ImageResizer_Validated(object sender, EventArgs e)
{
selectNextUser();
}
private void button1_Click(object sender, EventArgs e)
{
selectNextUser();
}
private void cropButton_Click(object sender, EventArgs e)
{
_editedImage = new Bitmap((int)nudCropWidth.Value, (int)nudCropHeight.Value);
Graphics g = Graphics.FromImage(_editedImage);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
int drawnImageCropBoxX = CropBoxX - grpImage.Location.X + grpImage.Location.X;
if (hsbImage.Enabled)
{
drawnImageCropBoxX += hsbImage.Value;
}
int drawnImageCropBoxY = CropBoxY - grpImage.Location.Y + grpImage.Location.Y;
if (hsbImage.Enabled)
{
drawnImageCropBoxY += vsbImage.Value;
}
g.DrawImage(DrawnImage, 0, 0, new Rectangle(drawnImageCropBoxX, drawnImageCropBoxY, (int)nudCropWidth.Value, (int)nudCropHeight.Value), GraphicsUnit.Pixel);
BaseImage = _editedImage;
if (defaultApiUrl != null && defaultApiUrl != "" && selectedUser != null)
{
string url = RestClient.GetRequestURL(defaultApiUrl, "v2/user/" + selectedUser.UserId + "/image");
NameValueCollection postParameters = new NameValueCollection();
//postParameters.Add("password", Util.CreatePasswordHash(this.password));
//postParameters.Add("crc", crc);
//postParameters.Add("size", size);
//postParameters.Add("filename", "image.jpg");
//postParameters.Add("name", "image.jpg");
string contentType = "image/jpeg";
//string paramName = file;
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = "multipart/form-data; boundary=" + boundary;
wr.Method = "PUT";
wr.KeepAlive = true;
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
Stream rs = wr.GetRequestStream();
string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
foreach (string key in postParameters.Keys)
{
rs.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, postParameters[key]);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
rs.Write(formitembytes, 0, formitembytes.Length);
}
rs.Write(boundarybytes, 0, boundarybytes.Length);
string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
//string header = string.Format(headerTemplate, paramName, "recording", contentType);
string header = string.Format(headerTemplate, "image", "image.jpg", contentType);
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
rs.Write(headerbytes, 0, headerbytes.Length);
getJpeg(rs, _editedImage);
byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
rs.Write(trailer, 0, trailer.Length);
rs.Close();
HttpWebResponse response = null;
string responseValue = "";
try
{
response = (HttpWebResponse)wr.GetResponse();
// Read data if there is no exception tet
responseValue = StreamToString(response.GetResponseStream());
// deserialize it if still no exception
Console.WriteLine(responseValue);
}
catch (Exception ex)
{
if (ex is WebException)
{
//Debug.WriteLine("WebException occurred. Ex: " + ex.Message, Debug.DebugChain.ExeptionMessage);
Stream responseStream = ((WebException)ex).Response.GetResponseStream();
if (responseStream != null)
{
responseValue = StreamToString(responseStream);
// Debug.WriteLine("Response was " + responseValue, Debug.DebugChain.Notify);
// return serializer.Deserialize<RestError>(responseValue);
return;
}
//return new RestError("RestServerError");
return;
}
else
{
//Debug.WriteLine("Exception at file upload" + ex.Message, Debug.DebugChain.ExeptionMessage);
//return new RestError("RestClientError");
return;
}
}
finally
{
wr = null;
selectNextUser();
}
}
}
private void getJpeg(Stream datastream, Image croppedImage)
{
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75L); //quality 75
ImageCodecInfo jpegCodec = this.getEncoderInfo("image/jpeg");
if (jpegCodec == null)
return;
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
croppedImage.Save(datastream, jpegCodec, encoderParams);
}
private ImageCodecInfo getEncoderInfo(string mimeType)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
for (int i = 0; i < codecs.Length; i++)
if (codecs[i].MimeType == mimeType)
return codecs[i];
return null;
}
private string StreamToString(Stream responseStream)
{
StreamReader reader = new StreamReader(responseStream);
string responseString = reader.ReadToEnd();
responseStream.Close();
reader.Close();
return responseString;
}
private void button2_Click(object sender, EventArgs e)
{
}
private void rotate90Button_Click(object sender, EventArgs e)
{
if(selectedUser != null && BaseImage != null)
{
object clone = BaseImage.Clone();
Image image = null;
if (clone is Image)
image = (Image)clone;
if(image != null)
{
image.RotateFlip(RotateFlipType.Rotate90FlipNone);
BaseImage = image;
}
}
}
private void rotateLeft90Button_Click(object sender, EventArgs e)
{
if (selectedUser != null && BaseImage != null)
{
object clone = BaseImage.Clone();
Image image = null;
if (clone is Image)
image = (Image)clone;
if (image != null)
{
image.RotateFlip(RotateFlipType.Rotate270FlipNone);
BaseImage = image;
}
}
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ImageResizer</RootNamespace>
<AssemblyName>ImageResizer</AssemblyName>
<ApplicationIcon>photo_portrait.ico</ApplicationIcon>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ImageResizer.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="ImageResizer.Designer.cs">
<DependentUpon>ImageResizer.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ImageResizer.resx">
<SubType>Designer</SubType>
<DependentUpon>ImageResizer.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<SubType>Designer</SubType>
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="Resources\ZoomIn48.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\ZoomOut16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\ZoomOut48.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\delete.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\disk_blue.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\import1.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\ZoomIn16.png" />
</ItemGroup>
<ItemGroup>
<Content Include="photo_portrait.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\MoyaAdminLib\MoyaAdminLib.csproj">
<Project>{095ce28f-5b53-4203-85c6-3a9afd486407}</Project>
<Name>MoyaAdminLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="sfdImage.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="GroupBox3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="lblZoomFactor.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="picZoomIn.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="picZoomOut.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="tbResize.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="grpImage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="vsbImage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="hsbImage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ofdImage.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>115, 17</value>
</metadata>
<metadata name="GroupBox1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="chkCrop.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="nudCropWidth.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="nudCropHeight.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="lblSize.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
\ No newline at end of file
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ImageResizer")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ImageResizer")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("65e27085-bd8e-4aef-b04d-7acc50b52745")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ImageResizer.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ImageResizer.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap delete {
get {
object obj = ResourceManager.GetObject("delete", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap disk_blue {
get {
object obj = ResourceManager.GetObject("disk_blue", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap import1 {
get {
object obj = ResourceManager.GetObject("import1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap ZoomIn48 {
get {
object obj = ResourceManager.GetObject("ZoomIn48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap ZoomOut48 {
get {
object obj = ResourceManager.GetObject("ZoomOut48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="disk_blue" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\disk_blue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="import1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\import1.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ZoomIn48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ZoomIn48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ZoomOut48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ZoomOut48.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
\ No newline at end of file
namespace TestApp
{
partial class IntegratedTestForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnUpload = new System.Windows.Forms.Button();
this.picMain = new System.Windows.Forms.PictureBox();
this.imageResizer1 = new ImageResizer.ImageResizer();
((System.ComponentModel.ISupportInitialize)(this.picMain)).BeginInit();
this.SuspendLayout();
//
// btnUpload
//
this.btnUpload.Location = new System.Drawing.Point(12, 12);
this.btnUpload.Name = "btnUpload";
this.btnUpload.Size = new System.Drawing.Size(75, 23);
this.btnUpload.TabIndex = 0;
this.btnUpload.Text = "Upload Pic";
this.btnUpload.UseVisualStyleBackColor = true;
this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click);
//
// picMain
//
this.picMain.Image = global::TestApp.Properties.Resources.NoImage;
this.picMain.InitialImage = null;
this.picMain.Location = new System.Drawing.Point(93, 12);
this.picMain.Name = "picMain";
this.picMain.Size = new System.Drawing.Size(550, 300);
this.picMain.TabIndex = 2;
this.picMain.TabStop = false;
//
// imageResizer1
//
this.imageResizer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.imageResizer1.Location = new System.Drawing.Point(93, 12);
this.imageResizer1.MinimumSize = new System.Drawing.Size(550, 300);
this.imageResizer1.Name = "imageResizer1";
this.imageResizer1.RequiredHeight = 100;
this.imageResizer1.RequiredWidth = 100;
this.imageResizer1.Size = new System.Drawing.Size(550, 300);
this.imageResizer1.StandAloneMode = false;
this.imageResizer1.TabIndex = 1;
this.imageResizer1.Visible = false;
//
// IntegratedTestForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(649, 315);
this.Controls.Add(this.btnUpload);
this.Controls.Add(this.picMain);
this.Controls.Add(this.imageResizer1);
this.Name = "IntegratedTestForm";
this.Text = "Integrated Test (control displayed and used as needed)";
((System.ComponentModel.ISupportInitialize)(this.picMain)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnUpload;
private ImageResizer.ImageResizer imageResizer1;
private System.Windows.Forms.PictureBox picMain;
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestApp
{
public partial class IntegratedTestForm : Form
{
public IntegratedTestForm()
{
InitializeComponent();
imageResizer1.WorkComplete += new ImageResizer.WorkCompleteDelegate(imageResizer1_WorkComplete);
}
void imageResizer1_WorkComplete(object sender, bool complete)
{
if (complete)
{
picMain.Image = imageResizer1.GetEditedImage();
}
else
{
picMain.Image = TestApp.Properties.Resources.NoImage;
}
imageResizer1.Reset();
btnUpload.Enabled = true;
picMain.Visible = true;
imageResizer1.Visible = false;
}
private void btnUpload_Click(object sender, EventArgs e)
{
btnUpload.Enabled = false;
picMain.Visible = false;
imageResizer1.Visible = true;
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace TestApp
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new StandAloneTestForm());
}
}
}
\ No newline at end of file
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TestApp")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TestApp")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("96fe1f03-3cc3-45a1-8707-d89a8429ddd0")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TestApp.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestApp.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap NoImage {
get {
object obj = ResourceManager.GetObject("NoImage", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="NoImage" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\NoImage.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
\ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TestApp.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
namespace TestApp
{
partial class StandAloneTestForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(StandAloneTestForm));
this.imageResizer1 = new ImageResizer.ImageResizer();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.SuspendLayout();
//
// imageResizer1
//
this.imageResizer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.imageResizer1.Location = new System.Drawing.Point(0, 0);
this.imageResizer1.MinimumSize = new System.Drawing.Size(550, 300);
this.imageResizer1.Name = "imageResizer1";
this.imageResizer1.RequiredHeight = 0;
this.imageResizer1.RequiredWidth = 0;
this.imageResizer1.Size = new System.Drawing.Size(572, 323);
this.imageResizer1.StandAloneMode = true;
this.imageResizer1.TabIndex = 0;
//
// linkLabel1
//
this.linkLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.linkLabel1.Location = new System.Drawing.Point(449, 180);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(123, 50);
this.linkLabel1.TabIndex = 1;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = "http://www.codeproject.com/KB/graphics/ImageResizer.aspx";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// StandAloneTestForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(572, 323);
this.Controls.Add(this.linkLabel1);
this.Controls.Add(this.imageResizer1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "StandAloneTestForm";
this.Text = "http://www.codeproject.com/KB/graphics/ImageResizer.aspx";
this.ResumeLayout(false);
}
#endregion
private ImageResizer.ImageResizer imageResizer1;
private System.Windows.Forms.LinkLabel linkLabel1;
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestApp
{
public partial class StandAloneTestForm : Form
{
public StandAloneTestForm()
{
InitializeComponent();
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("http://www.codeproject.com/KB/graphics/ImageResizer.aspx");
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAgAEBAAAAEACABoBQAAhgAAABAQAAABACAAaAQAAO4FAAAYGAAAAQAIAMgGAABWCgAAGBgAAAEA
IACICQAAHhEAACAgAAABAAgAqAgAAKYaAAAgIAAAAQAgAKgQAABOIwAAMDAAAAEACACoDgAA9jMAADAw
AAABACAAqCUAAJ5CAAAoAAAAEAAAACAAAAABAAgAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
/wAAk8gAy3wkAHrG/wBIVVUA37KaAHeAlwCcOgcA/+yyAB9ulwBopssAqWpQAK6uswA3k9sAz49YAE2s
/wBEg6MAoVMrAPzt2wD405QAAHSuAJra/wCidHMAI4a/AM2YjACzUwQAzLy6ALCcnQC4aS0AgneCAGC7
/wC8ZBYA7MWiAPbx8ACSUjgAPJbIAACHuQBontwAA22dAPnkywCKz/8AxrGtAA98sQC5p6YAR3mWANal
lQAQcqAAq0gAADKPwgDGch0Adrz4APLPigDmu5wA9+7lAMXBwQBVs/8A/fbrAA54qAAAfbEAwWoeALqi
ngA7gqUAua2tAPro0wDcrJQAgsr/APv5+gDxzKMAAIzAAMu2tAAGd6kAaLv/AP3y4gDSoJEAvrGxALWh
pAD26NkAxLy8AP/u1QC1UQoA6L+gACiIvQDFs7IA9/DrANmplwD67eEA4rabANuvmQDBbRoAvaWgAO7F
ngDrwp8A+OXPAACDuAC6bC8A7sikAGC3/wDfspYA++vYANOkkwC2pqgAmNf/AMy6twC5qakAybi2APnp
1gAAc6sA9+/oAOa8nwANeqoA+ufQANusmQDWqJUAxb6+AACRxgDkuZwA9/PxAPvu3wD47eMA78miAOrB
oQDnvZ0A4bSaAN6wmQD38e0A+OfTAPrmzgDux6IA68OiAN60mgDcsZkA1aOTANOikgD66tUA7MOgANqt
mADaq5gA2KiWANiqlgAAhLcAAIu/APfy8AD38e8A+O/nAPnu4QD97dwA++zZAIPL/wDtx6MA7cWhAOm/
nwDnvZ8A5LqdAOO4nADes5kA16aVANWmlQD37+kA+O7jAPfu5AD47eIA+unWAPro0gDcr5kA2KmWAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAEEGfKRwiVWKnC6EGQAAAAB7SWqifkBdb38oT0oAAAAAV00aAx00X1kgMKOF
AAAAAJp3EjIPCRRQPAiGZAAAAACZoUwMBzMLBSMXY50AAAAAbaA9Jh9IYRVrHpNxAAAAAJiQWhCUQgQY
XgoTpQAAAABRnmg4ZhYpK40vkosAAAAAeVQqDjEkUiVzLXaIAAAAAIF9aSc7jEUCRxxWWAAAAAAhj04N
PjpuEWUskYMAAAAAlSI3chtnRlNLP5+bAAAAAGBDdY6PfVSebDY5ggAAAABbRHiAlodcl3o1dGIAAAAA
AAAAAAAAAAAAAAAAAAD//wAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAD
AADAAwAAwAMAAMADAAD//wAAKAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANyslP/fspr/3rCZ/9yvmf/brJn/2quY/9mpl//YqJb/16aV/9allf/Vo5P/z5mN+gAA
AAAAAAAAAAAAAAAAAADhtJr//fLi//np1v/66db/+OfT//ro0//45c//+ufQ//rmzv/55Mv//+7V/9Sh
kvoAAAAAAAAAAAAAAAAAAAAA4rab//bo2f+zUwT/y3wk/7hpLf/yz4r/umwv/8FtGv+8ZBb/q0gA//ro
0v/Vo5P6AAAAAAAAAAAAAAAAAAAAAOO4nP/47eP/oVMr/8ZyHf/Pj1j//+yy//jTlP+1UQr/wWoe/5w6
B//66tX/1qWU+gAAAAAAAAAAAAAAAAAAAADkup3/+O3i/7WhpP+palD/d4CX/3a8+P9opsv/SFVV/5JS
OP+idHP/++vY/9inlvoAAAAAAAAAAAAAAAAAAAAA5ryf//fu5P+6op7/aJ7c/2C7//9ou///YLf//wB0
rv8Ac6v/gneC//vs2f/ZqZb6AAAAAAAAAAAAAAAAAAAAAOe9n//47+f/vaWg/02s//+Dy///gsr//3rG
//8jhr//AIO4/x9ul//87dv/26uX+gAAAAAAAAAAAAAAAAAAAADov6D/9+/p/7mpqf9Vs///mNf//5ra
//+Kz///D3yx/wCLv/8QcqD//e3c/9usl/oAAAAAAAAAAAAAAAAAAAAA6sGh//fw6//Gsa3/N5Pb/zKP
wv88lsj/KIi9/wCHuf8Akcb/R3mW//vu3//dr5n6AAAAAAAAAAAAAAAAAAAAAOvDov/38e3/ybi2/wNt
nf8AfbH/AIS3/wCMwP8Ak8j/Bnep/7Ccnf/67eH/3rGa+gAAAAAAAAAAAAAAAAAAAADsxaL/9/Hv/8S8
vP+urrP/O4Kl/w54qP8Neqr/RIOj/7amqP+5p6b/+e7h/9+zmvoAAAAAAAAAAAAAAAAAAAAA7cej//bx
8P/FwcH/xb6+/8y8uv/Murf/y7a0/8Wzsv++sbH/ua2t//ju4//htZr6AAAAAAAAAAAAAAAAAAAAAO7I
pP/7+fr/9/Px//fy8P/38e//9/Ht//fw6//37+n/9+/o//fu5f/99uv/4bab+gAAAAAAAAAAAAAAAAAA
AADuxZ7/8cyj/+/Jov/ux6L/7cWh/+zDoP/rwp//6b+f/+e9nf/mu5z/5Lmc/+Gzl/wAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD//wAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAD
AAD//wAAKAAAABgAAAAwAAAAAQAIAAAAAACgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AzoMuAACT
xwCUoLoARl9xAPLUlQCXMQAASav/AJzb/wCdbmsAytjPAMyejgAAZJgAaoOWADuSygCtViQAM3qfAGmf
3QB0wf8Av7S0AOO2bwD967YA6cu8AKyEhgDl7tYA37igAKFcQgAAfK8AHoTHAK1NBQC1nncA//vgAKad
ogAxmf8AQZ3lAL5yPQB1lKcAV3SMABlqlgDAbiQAIHuwAIjO/wBfuP8A1cLCAL+KeQDtxXwA1KWiALyg
nQC3XRMAnD0QAK6rrwDqxqkA4924APjgpwCTqckAQIbVAKM9AADFv78AzK+tAABupQATdagAAIi7AP//
7wBCmvQApHx8ANqulwC+qagA4MK2ALFfLgCkZE0AJmyUAM24twC6ZB4APqT/AM2amgCqlZkADmybAD96
nQCS1P8Au2suANqupgBqvP8Ab53UAOK7qgD1254A0qOVAMh7KwDIxsYA3sfCAABjogDty7MAr0QCALWm
qgDFrq4As1YPAMZzIAAlgbQAAWudAHvG/wAAgrUAxZuRALeiowD///cA06+oAP/86ADDubgAnzsGANuy
ngA3ov8Aq4CAAACOwQCByv8A5sKsANChnwDftagAY5zcAM6ooQAAdqsAva2tAOrHsADHq6oAzX8pALdb
DQC9ZhkA0aKPALhgGgDFs7EAl9f/ANeqowDOrKgAqkIEALJLBwCfOQAArq+zALmmpQALaZgA79CWANWl
nQAAcqgAx728ALKtsQAWd6sAxsPDANyzpQDOtrMAy7CxAMCtqQCnPwAAZ7r/AHC//wDNvLkABGygAOO+
rQC9Zx4A9+GrANewqQC9n5kAAG+hAN+1owD///wA///zAP//6wD/++UAAGibAOjErQDRsKsA0aKhAMGz
sQC/r64AuKioAACKvgAAhbkAAH6xAHLD/wCK0f8Ad8P/AIXM/wDsybAA4bioAN21nwDKfS0Axbe2AMKw
rAC9srIA2bCaAMqwrAAAbaIAAJHEAP/54ADkvqsAuaOjAABlmwAAaZ8AAHKlABholADbsZsAxL6+ANSo
owDSo5IA0qOfAMWtrADCcCQA0IUuAJDS/wDft6YAxsHBAKxMBwDcr6QA262jANqwnQDZq6QA2a2kAMu5
tgDVpqEAxLq6AMeysADCra0At6SkAAB3rQAAjMAAAIG0AACEtwD//uwAbL3/AHXE/wCLz/8A6seuAOnG
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
///HrKr/uaal/5Sguv9Jq///d8P//3nD//93wv//cL///2y9//8AaJv/AIK1/wB2q/9XdIz/06+o////
8//WqaH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4rup///////Hq6r/vamm/2+d1P9muv//g8r//4jO
//+FzP//e8b//3XE//8EbKD/AIS3/wCFuf8YaJT/1q+o////9P/XqqL/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA4ruq///////FrKv/wK2p/2Oc3P9yw///i8///5fX//+Q0v//gcr//3TB//8Aapv/AIq9/wCK
vv8LaZj/17Cp////9v/YraT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA476q///////FrKz/wrCs/2mf
3f9xw///ktT//5zb//+V1///itH//zuSyv8AfK7/AI3A/wCNwP8mbJT/1rGq////9//ZraP/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA5L6r///////Fraz/wbOx/5Opyf8ehMf/E3Wo/xZ3q/8lgbT/IHuw/wBy
pf8AkMP/AJLF/wCAtP9qg5b/0bCr////9//arqX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5b+s////
///Fra3/xbe2/3WUp/8AbaL/AH6x/wCBtP8AhLf/AIi7/wCOwf8Ak8b/AJLH/w5sm/+8oJ3/za+t////
+P/cr6T/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5sKs///////Frq7/xLq6/66ts/8AZZv/AHuv/wCC
tf8AiLv/AIy//wCRxP8Ai8D/AWud/6adov+5o6P/zLCs////+f/bsqX/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA58Kt///////Fra3/xL6+/8e9u/+ur7P/M3qf/wBpn/8AbqX/AHKo/wBsov8/ep3/taap/76p
qP+4qKj/zK+t////+f/csqf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6MSt///////Erq7/xsHB/8S9
vf/GvLz/zby5/8u5tv+yrbH/rquv/8Wzsf/HsrD/v6+u/72trf+8ra3/y7Cu////+f/ds6b/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA6cau///////Cra3/yMbG/8bDw//Fv7//xL6+/8O6uv/Dubj/wri3/8C1
tf+/tLT/v7Oz/72ysv+9srL/yrCs////9//ft6b/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6seu////
///VwsL/zLi4/824uP/Nt7f/zbe3/824uP/NuLf/zbe4/824tv/PtrX/z7a1/8+3tP/OtrP/3sfC////
9v/gt6j/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7Mmw////////////////////////////////////
/////////////////////////////////v////v////4////9v/huan/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA6sap/+3Ls//ryrH/7Mmw/+rIsP/px7D/6saw/+jGr//pxa//58Su/+fDrv/mwq3/5sGs/+XA
rf/kv6v/5L6q/+O+rf/ftaP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////AOAABwDgAAcA4AAHAOAABwDgAAcA4AAHAOAABwDgAAcA4AAHAOAABwDgAAcA4AAHAOAA
BwDgAAcA4AAHAOAABwDgAAcA4AAHAOAABwDgAAcA4AAHAOAABwD///8AKAAAACAAAABAAAAAAQAIAAAA
AACABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AHIbXAM6BKgCtrbIAUktGAJovAABuvf8AXnyTAPbe
owAAYZMA26tvAKB3eQBum9EAPqP/ALVZFACX1/8AyszMAOCzngAweaAAf0Y3AAB/sgCGj5wAwpOLAP/5
xQDPklAAPZXQALdsOwCcSSYA7cuLAFac5gAAlckAqHBcAP/14wC/g3QAx6amAG2SpwCcrMgAGGyZACyS
6gCnRwUAzbu5AFev/wCOgYgAhMv/ADRxiQC+aiEAAG2lAOrEpwCCn8gAKJj/APnptgBhsuwASn2bALCF
ggDSoIYAtp6eAMh3PACCm6sA7cN4ANWlmgCaPxYAJobHAMeRegCONwoAvrGxALGUjwDgvrQA89WWAGOd
3QDMmJgAqlEcAACLvgATcqYA//3wANGvrADGwsIAuaioAMZ2KAD/56oAjJilACRtkwA3cpcApIGDAAtp
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
AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB/////8oAAAAIAAAAEAAAAABACAAAAAAAIAQ
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUpZ3/06Sd/9KinP/Topr/0aGa/9Kg
mv/QoJv/0Z+Z/8+fmf/Pnpn/0Jya/86dmP/Pm5j/zZyY/82amP/MmZn/zJqX/8yYmP/Ll5j/y5eY/8uX
mP/Ll5j/y5eY/8uYmf/MmZj/zJmZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANKhmv//+uX///nk///4
5P//+OX///jl///45f//+OX///jl///55f//+eX///nm///55P//+eT///nj///44///+OL///jh///3
4P//99////fe///23f//9tz///Xb///22v/JlJb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0qKa///2
4///9OL///jn///76///++v///rq///66v//+ur///vr///86///+ur///vp///86v//+ej///no///5
5v//+eX///jk///44///9+L///fh///03P//8Nn///HY/8mTlf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADUo5n///Xl///56f/SrKb/x5F6/82Zgf/NmoL/0JyE/9Gghv/LlH//v4Jz/8uXhf/HkX7/v4N0/86a
gv/SoIb/0ZyE/9Ccg//QmoT/z5qD/86Ygv/Mk3z/4L60///03f//89v/yZOV/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANakmf//9uf///3t/8KTi/+rSQL/w28g/8Z0If/Keyb/zoEq/5MoAP/PklD/7MR7/+3D
eP/Bdjf/mC4A/8p7J//FcyL/wWwd/7tlGf+3XxX/s1kQ/6xKA//TrKf///fh///03f/Jk5X/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA1aWb///36f///e//w5aO/5ovAP/Gdij/yHkr/8yCLv+9aSH/pUoW//PW
lf/uy4z/7MqK//LRj/+qURz/sloX/8h6K//CcCX/vWoh/7ljHf+2Xhr/p0cF/9KrqP//9+L///Te/8mU
lP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWppr///jr///98f/Hpqb/mj8W/7BVEv/KfS3/z4Ix/7Vc
F/+4bDf/9d2j//DVnP/w05r/8tSX/9urb/+XLgD/yn0t/8NyJf+/aiH/umUe/7dfG/+YLQD/062o///4
5P//9eD/ypWU/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANinm///+u7///7x/8aiov+xl5T/ly8A/7Zd
F//RhzL/t18Z/7dsO//56bb/9OCv//PfrP/z2qT/9t6j/5s1BP+8aSD/wnIm/75rIv+7ZR7/oT0C/5Y+
Gf/Rr6z///rm///24v/Llpb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA16ib///57v///vT/w6Cd/7ak
pv+xlI//mTgM/6ZDBP+1WRT/rE4Z///5xf//8r7//++4///mr///56r/yHc8/7BNCf/GcyT/sVYU/5wy
AP+cSSb/n3Z5/9KsqP//+ef///Xj/82Xlf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYqZv///rx////
9v/Cnp3/tqKi/7aiov+0oqX/qHBc/6E9Cv9/Rjf/c7v3/0ej+v9Fofr/aa/w/zGAn/80cYn/UktG/443
Cv+jQxv/o2tf/6SAg/+heHn/0Kun///76f//9+b/zJiV/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANmq
nP///PT////3/8GenP+3o6P/taCg/7Wfnv+8npv/YJ3l/y+g//9Lqf//V6///1av//9Nqf//LJLq/wBi
lv8AbaX/AGmj/zdyl/+kgYL/qYB//6F7fP/Qq6b///rs///25v/NmZb/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA26uc///79P////n/wZ6c/7ilpf+2oqL/u5+b/26b0f80n///Z7r//2i6//9puv//Z7n//2O3
//9kuP//JobH/wBsnv8AfK//AG+j/wlnlv+jgoP/pn9+/8+rpv//++z///fn/8+alv8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADarpz///z3////+//AnJz/uKio/7ikpP+yoKT/KJj//2i7//9xwP//csD//3PA
//9wv///bbz//2i7//9WrPT/AGGS/wB/sv8AgLP/AHGk/yRtk/+whYL/zqmm///97f//+er/zpuX/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANuunf///vf////8/8Ccm/+5qKn/vKak/4KfyP8+o///d8P//3vF
//9/x///fsf//3zF//92wv//b73//26+//8AYZT/AH+y/wCBtP8Ag7b/AGWb/46BiP/QqaX///3u///4
6v/Pnpf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3a+c///9+v//////v5yb/7qrq/+/qaX/Y53d/1Ou
//9/yP//hMz//4jP//+Kz///hcz//37I//91wv//dML//wBilP8AgbT/AIS3/wCGuf8AcKT/W3iQ/9Kq
pP///fD///js/9Cfl/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADesJ7////6//////+9nJv/u62t/8Gr
pv9XnOX/XLP//4TL//+L0P//k9X//5TV//+M0f//g8r//3nF//9qufn/AGCS/wCJvP8Ah7r/AIi7/wB0
qf9NdpL/0aqk///+8f//+uv/0qCY/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN+xnf///vv//////76c
m/+8sLD/wq2o/1Wc5/9dtf//hMr//4zR//+X1v//mNf//47S//+Ey///gMn//z2V0P8AbJ//AIy//wCK
vf8AjsH/AHKm/158k//RqqT///7z///57P/RoZj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA37Kd////
/v//////vJqa/76ysv/Cr6v/aqDd/1Ou//+J0P//jtL//5XY//+X2P//kNT//4rR//9hsuz/AGGU/wCG
uf8AjsH/AI/C/wCQw/8AZZz/j42W/8ynpP///vL///nu/9Kimf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADgs5////////////+8mpr/v7S0/8Oysf+crMj/HIbX/wlsn/8AYJP/AGGU/wJmmP8ScqX/E3Km/wBh
lP8AgrX/AI/C/wCRxP8Ak8b/AIS4/xFpmP+9nJr/y6aj///+9P//+e3/1KOZ/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAOG0nv///////////7qZmv/AuLj/xLWz/3+XqP8AZJf/AHiq/wB/sf8AgrX/AIK1/wCB
tP8Ag7b/AIy//wCPwv8AkMP/AJPG/wCUyP8AZJv/ho+c/7ednf/JpaP////z///67//WpJn/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA4reg////////////u5mZ/8G6uv/Ft7f/gJqr/wBkm/8AfLD/AH6x/wCA
s/8Ag7b/AIa5/wCJvP8AjL//AJDD/wCTxv8Alsn/AGyi/0p9m//BpaL/taGh/8elo/////X///nv/9Wl
mv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjuJ////////////+5mZn/xL6+/8O6uv/Murj/MHmg/wBm
nP8Aeq3/AIK1/wCEt/8Ah7r/AIu+/wCOwf8Ak8b/AIa6/wBknP9NgZ3/xKmm/7ikpP+2pKT/yKWj////
9P//+e7/1qaa/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOO5n//+/////////7mZmf/Fv7//w7u7/8S6
uf/NvLn/cpSq/wtpmf8AY5r/AGyi/wBzqP8Adar/AHGm/wBlm/8YbJn/jJil/8atqv+6qKj/uaio/7mo
qf/FpKH////0///58P/Xp5v/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5Lqh//7/////////uJmZ/8bD
w//Evr7/w7y8/8S7uv/JvLr/zry5/62tsv+Dm6v/bpKo/2yRpv98laj/qqar/8qzr//Br63/u6ys/7us
rP+7q6v/u6ur/8ajof////T///nv/9mom/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADlu6D/////////
//+4mZn/yMbG/8bBwf/Fv7//xL29/8O8vP/Curr/w7m4/8a5uP/Hubf/xra1/8S1tP/As7L/vrGx/72w
sP+9sLD/va+v/72vr/+9sLD/xKSh////9P//+fD/2Kmb/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOa8
ov///////////7aXl//KzMz/yMfH/8fFxf/HwsL/xsLC/8W/v//Dvb3/wry8/8O7u//Burr/wrm5/8C3
t//Btrb/v7W1/7+0tP+/tLT/v7W1/760tf/EoZ7////0///57v/ZrJz/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA6L2h////////////vp+f/7mdnf+5nJz/uZyc/7mcnP+6nJz/upyc/7qdnf+6m5v/upyc/7qc
nP+6nJ3/upyb/7qcnP+8nZz/vJ2b/7ydm/+8nZv/vJyb/82uqv///fP///nu/9qsnP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADnwKH////+/////v//////////////////////////////////////////////
/////////////////////////////////f////z////6////+f////b///30///57v//+e//3K2d/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjBpP//////////////////////////////////////////////
//////////////////////////////////////7////7////+v////r///73///99////fT///z0///9
8//cr57/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6sWo/+rFqP/pw6f/6sOn/+jCpf/pwKX/58Gl/+e/
pf/mwKb/5r6k/+a9pP/lvqT/5byl/+S7o//kvKP/47qk/+O5pP/iuqP/4rij/+K3ov/huKL/4bai/+C1
of/gtqH/37Wj/960ov8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////gAAAH4AAAB+AAAAfgAAAH4AAAB+AA
AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA
AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAf/////KAAAADAAAABgAAAAAQAIAAAA
AACACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AHIbXAMx+KgCtrbIAM1JhAJwuAABtvf8AZoCVAPbd
pAAAYJQA4LJ4AJ90dQBeoMkAP6D9ALVZFACX2P8A1c/NAN+znwA0d5sAakIuAACAswB+hZcAwpOLAP/2
xQDSlFEAMo/RAKddRACeTiwA7suKAFGi5QAAlskAtG9aAPrv5ADBgGIAx6amAGaKoQCkrMMAFnCcAB+L
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUpJ3/0qGb/9Kgmv/Snpn/0J+Z/9Cdmf/Qnpn/0ZyZ/8+d
mf/Pm5f/0JuX/86cl//Ompf/z5uX/82ZmP/Nmpb/zZiW/82Ylv/LmJb/y5eW/8yXl//KlpX/ypaW/8uV
lv/JlZb/yZWW/8mUlv/JlJb/yZSW/8mUlv/JlJb/yZSW/8mUlv/JlJb/yZSW/8qVlv/Llpj/zJmZ/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTopv/8tzL//rp1//56Nf/+ejW//no
1v/56Nb/+ejW//no1v/56Nb/+ejW//no1v/66Nb/+OnW//jn1v/459b/+OfX//jn1f/46NX/+OjV//no
1v/55tT/+efV//nn0//559P/+efU//nm0v/55tP/+ebR//nm0v/55dD/+eXP//nlz//55c7/+ePO//rk
zv/w1sL/y5aX/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUopr/9+TU///1
4f//8+D///Ph///z4f//8+H///Th///04f//9OH///Th///04f//9OH///Th///04f//8+H///Ph///z
4f//8+D///Pg///z4P//89////Pf///y3v//8t7///Ld///y3f//8dz///Hc///x2///8dr///DZ///w
2f//8Nj///DX///x1//238r/ypWW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADTpJv/9uTU///14f//9OH///Ti///04v//9OL///Tj///04///9OP///Tj///04///9OP///Tj///0
4///9OP///Ti///04v//9OL///Th///z4f//8+H///Pg///z4P//89////Lf///y3v//8t3///Ld///y
3P//8dv///Hb///x2v//79j//+/X///x2P/138v/ypSW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADVo5v/9ubV///04///9OP//O/g//fo2//46d3/9+ne//fp3v/36d7/9+re//fq
3f/36t7/9+re//rs3//67N//+ere//jq3f/5697/+uzf//rs3f/46t3/+Ond//jq2//46tv/+Onc//jp
2v/66dv/+ena//np2v/56dn/+enZ//nm1P/97tn//+/a///w2f/13sz/ypSW/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVpJv/9uXW///25P//9+f/5MnB/65uZv+6dVf/vHlb/716
W/+/fF7/wH5e/8GAX//Eg2H/woJg/6tfTP+pWUb/tW9Z/8GCaP+vZVD/q11J/69kUP/GhmX/w4Ni/8OB
Yv/CgGH/wX5g/8B9X/+/e17/vnpf/714Xf+8eFz/u3RZ/76Be//y3c3///Lb///y2v/14M3/ypSW/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVppv/9ubX///15v//9+j/587G/6Vb
Q/+zWA//wW4g/8NyI//HdiT/yHoo/8x+Kv/Rhy//p0gI/5MmAP/SlFH/7cN5/+vCd//swXb/vnIy/5El
AP+vUw//zH4q/8Z3Jv/DciL/wW4g/75qHP+7ZRv/uGEX/7VdFf+yWRL/r1AK/7Z0Yf/04NH///Hc///x
2//1387/ypSW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWpZz/9ujZ///3
5///+Or/5c7I/6ZdRv+mRAj/w3Im/8R1J//HeCn/ynws/82BL//LfSz/kigA/750Ov/wzon/7MWD/+zE
gf/rxIH/8cyF/7dmLf+TKgD/w3Mm/8h7K//EdSf/wnAl/79sIv+8aCD/uWMd/7ZfGv+zXBj/sFUQ/7Nw
YP/04dL///Pd///z3P/14c//ypSW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADWppv/+Ofa///26P//+uv/5s7H/6ZeRf+XLQD/wG4k/8R1J//HeSr/yn0s/86FMf+6ZB3/kiYA/+Cz
dv/uzY//7cuN/+3LjP/tyYz/7ciI/+vGhP+WLQD/p0YL/8t/Lf/Fdyj/wnEl/79tI/+8aCD/uWQd/7Zf
G/+zXBj/rE8M/61pW//24dT///Le///y3f/14M//ypWW/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADXp5v/9+nb///46v//+ez/48rE/7CDfv+WKgD/qEkN/8h6Kv/JeSr/y34t/9GF
Mf+xVhb/lCoA//HUmP/v0pj/79KY/+/Smf/v0JX/7s+T//HTlP+8cTj/kyoA/8Z4KP/Gdyn/wnEl/79t
I/+8aSD/uWQd/7ZfG/+1Xhr/nTcA/61pXP/04dP///Tf///y3v/14ND/zJeW/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXqZv/9+jc///36///+e3/48rB/7WYnP+lYEP/lioA/7Zh
G//JfCz/yn0u/9CGMv+wVhX/lSoA//Xepf/x2KP/8tmj//LZo//x16D/8NSc//DUmf/htnn/kiYA/7Ja
F//GeSr/wnEl/79tI/+8aCD/uWUd/7dhHf+qTA7/lysA/61rXv/04dT///Ti///04P/14tH/y5aX/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYqJ3/9+re///57P//++7/4sjB/7SU
lf+2pqj/nkMX/5ctAP+6ZR3/zYEv/9CGMf+xWBb/lCkA//Xhrf/14a7/9OCw//Tgrv/z3qz/8tyl//LW
oP/23KH/oD4L/6E/Bv/Ieir/wnAl/79sIv+9aSH/u2Yf/61RE/+YLwD/mT4V/7GBg//039L///bi///z
4f/14dL/zZeX/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYqZz/9+nd///4
7f//+u//4sjC/7OTlP+1pKT/tZ+f/51CFv+VKgD/rVER/82CL/+6ZR7/kiUA/+rOnf/36bv/9ue6//fo
uf/25LX/9OCu//LbqP/23qX/vndB/5UqAP/Ecyb/wnAl/8BuJP+8aSD/p0gN/5gtAP+aPBH/oHd3/69/
gf/y39P///Xj///14v/349P/zJmX/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADZq5z/9+ve///67v///PD/4sjC/7OTlP+2oqL/tqGi/7aipP+kXj7/likA/5kwAP+oSgz/lSgA/96s
eP//+MX///TE//3wxP//7r3//+yz///mrf/+46f/7bZ2/5omAP+5Wxb/vWgg/6pND/+ZMgD/mCwA/5xO
L/+ifH//oHh5/69+f//y39L///Xk///04//24tT/zpiX/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADZqpz/9+rf///57////PH/4cjC/7OTlP+2o6P/taCg/7Sfn/+0oqX/ro2G/6JU
M/+ZLgD/mSwA/36Fl/9XrPv/LZb//yeU//8rlv//Q6D8/16gyf8AYZX/GXSd/zNSYf9qQi7/nC4A/54t
AP+dRyL/onBo/6SAg/+jfHz/o3p6/69/f//y4NT///fl///05P/25NX/zZmY/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaq57/9+vg///58P///vT/4cjC/7STlP+4pKT/tqGh/7Wf
n/+znZ3/s52e/7mfnf+Tl67/M5X4/yqa//82nf//RaT//0im//9GpP//PKD//y2V/f8Daqb/AGWY/wBn
nf8AaKL/AGSW/09viP+qhYf/qIGC/6R/f/+kfX3/pH19/6+Agf/z39P///bm///25f/249X/z5qY/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADarJ3/9+vh///68f///fX/4MfD/7KT
k/+3paX/tqKi/7WgoP+0np7/uJyZ/5Gatv8pmf//Npz//1iw//9jtv//Yrb//2C1//9gtP//X7P//1qx
//8/oPz/AGWZ/wBpnP8Adaj/AGyg/wBlmv8KaJf/jX2F/6uBgP+lf3//pX9//69/gP/x39X///jo///1
5v/25db/zpyX/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbrp3/+evi///6
8v///fb/4MfD/7KVlf+5pqb/t6Oj/7ahof+4n57/rJyk/y2Z//84nv//Zbj//2e5//9nuf//Z7n//2a5
//9luP//Yrb//2C1//9gtv//MZDW/wBjlP8Adaj/AHyv/wB2qf8AZ5v/AGWY/4t9h/+rg4L/poGB/6+B
gf/x4NT///fp///35//25Nf/0JuX/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADbrp3/+Ozj///88/////f/38fD/7KUlP+4p6f/t6Sk/7aiov+8oZv/XZvg/y2Z//9kuP//bLz//22+
//9uvf//br3//229//9tvP//abr//2W4//9itf//YLT//wBklf8AbqH/AH2w/wB9sP8AfK//AGic/wJm
l/+mhIT/qIOD/6+Agf/x39b///fr///26f/25tj/z5yZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADcr5//+Ozl///79P///vj/38fD/7KUlP+6qKj/uKWl/7mjo/+xoaX/KJj//0mn
//9xv///cb///3TB//91wv//dcL//3TB//9ywP//b77//2u8//9nuf//aLv//xZ4sP8AZ5n/AICz/wB+
sf8Af7L/AHuu/wBkmf9AcpL/sIiG/6+Cgv/y39X///nq///26P/25dj/0Z6Y/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcsJ7/+O3k///79f////n/38fE/7KUlP+5qan/uKam/7uk
ov+Gn8X/Kpf//2W4//91wv//ecP//3zF//9+xv//fsb//3vG//95xP//dcL//3G///9svP//a73//yqI
xP8AYpT/AIG0/wCAs/8AgLP/AIG0/wBvov8AZJn/q4mJ/7CBgv/w3tX///jr///46f/359n/0J2Y/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdsJ3/+O3l///89v////r/3cfE/7KW
lv+7qqr/uaio/7+no/9hneD/Lpn//3fD//95xP//fsf//4HJ//+DzP//hMv//4LK//9/yP//e8X//3bC
//9wv///b77//zKOzP8AYZT/AIK1/wCCtf8Ag7b/AIS3/wB7rv8AY5n/dn+P/7KDg//w3tX///jt///3
6//35tv/0p6Y/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdsZ3/+O7m///8
9/////v/3sbE/7KVlf+6ra3/uqmp/8Koov9NnO3/OZ///33G//9/x///g8z//4nN//+Mz///i8///4rO
//+GzP//gcj//3rF//91wf//csH//zCNyP8AYZT/AIW4/wCEt/8Ahbj/AIW4/wCEt/8AY5j/VXmT/7WD
gv/w3tX///js///36v/35tr/0aCa/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADesp//+O7o///++P////z/3MbE/7KWl/+7ra3/uqqq/8Kpo/9EmvT/QaL//37I//+Byf//h83//47S
//+S0///k9X//5DT//+Jzv//g8v//37G//92wv//dsP//x9+tv8AZpn/AIm8/wCGuf8Ah7r/AIe6/wCJ
vP8AZJn/RneV/7WFhP/v3tf///ru///37P/35tz/06KZ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADes57/+O/n///9+f////3/3MbE/7KWlv+9rq7/u6ys/8Orpf88mvj/RKT//4DJ
//+Eyv//ic7//5HU//+X2P//mdn//5PU//+N0P//hc3//37H//94xP//d8T//wJnmv8Ab6L/AIq9/wCJ
vP8Aibz/AIm8/wCKvf8AY5j/TnmW/7WEg//v3tb///nt///36//26Nv/0qGZ/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADfs57/+u/o///9+v////7/3cbF/7SXmP++sbH/vK2t/8Ss
pv8+mvf/QqP//4HJ//+Cyv//is7//4/S//+W1///l9j//5PV//+L0P//hMv//3/H//97xv//TqPf/wBg
kv8AfrH/AIu+/wCLvv8Ai77/AIy//wCGuf8AY5j/ZIGX/7KFhf/v3tb///nv///57f/259v/1KKZ/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADftJ7/+fDp///++///////28bF/7OW
l/++sbH/va+v/8Wuqf9Qnuz/N57//4DI//+Cy///ic///4/T//+T1f//k9X//5DT//+Jz///g8v//4DJ
//91wv//BWqe/wBom/8AjcD/AIy//wCNwP8AjcD/AI7B/wB+sf8AYpf/k46X/7CEhP/v39X///nu///4
7P/2593/06Sb/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgtaD/+fDr///+
/P//////28bF/7OYmP+/tLT/vbCw/8Kwrf9wotv/K5j//3vH//9otu7/V6rc/1mq3P9fr+D/arbm/3fA
8v+Eyv7/g8z//1qs5P8JbKD/AGKV/wCFuP8AjsH/AI7B/wCPwv8Aj8L/AJLF/wBvov8FaJj/u5yZ/66F
hv/u3dX///nw///47v/26dz/1aOa/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADgtp//+fDq///+/v//////2sXF/7OXl//AtbX/vrKy/8Cxr/+krMP/H4vs/wltpP8AX5L/AGCT/wBg
k/8AX5L/AF+S/wBekf8AXpD/AGCS/wBfkv8AZpn/AIW4/wCPwv8AjsH/AJDD/wCSxf8AksX/AIu+/wBi
l/9Xf5n/up6b/62Ehf/u3dX///vv///47f/26Nz/1aSa/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADitp//+fHs/////f//////2sTE/7OYmP/Bt7f/v7Oz/8G0s/+jpaz/AGGV/wBn
mf8AdKf/AHqt/wB8r/8AfrH/AHyv/wB7rv8AeKv/AHms/wCAs/8AjcD/AI7B/wCOwf8AkMP/AJHE/wCS
xf8Alsn/AG6i/wBkmf+znZ3/tZ6d/62Fhv/u3NX///vv///47f/26N7/1qaa/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADht5//+fHr/////v//////2cXF/7Oamv/Curr/wLW1/8a2
tP9fjKb/AGOY/wB4q/8AfK//AH6x/wB+sf8AgLP/AIO2/wCFuP8Ah7r/AIm8/wCLvv8AjcD/AI7B/wCQ
w/8AkcT/AJTH/wCXyv8AfbD/AGGY/22InP+7oJ7/tJ+f/62Fhf/u3NX///vx///47f/46N3/1qWc/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjuKH/+fHt////////////2cPD/7OZ
mf/Curr/wbe3/8W3tv9+mar/AGGY/wBzpv8AfK//AH2w/wB/sv8AgbT/AIO2/wCFuP8Ah7r/AIm8/wCL
vv8AjcD/AI7B/wCQw/8Ak8b/AJfK/wCFuP8AYZb/NHeb/8Kkov+2oqH/taOj/62Ghv/t3NX///vw///4
7//36N3/1qab/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiuaD/+fLs////
////////2cPD/7Wamv/DvLz/wri4/8K3t//Iubb/EW2b/wBkmf8Adqn/AH6x/wB/sv8AgbT/AIO2/wCF
uP8Ah7r/AIm8/wCLvv8AjcD/AI/C/wCSxf8Alsn/AH2w/wBhlv8lc5z/v6ak/7mjo/+3o6P/uKSk/62H
iP/t3NX///vw///67v/36t3/16eb/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADjuaD/+fLs////////////2MPD/7ScnP/Ev7//wrq6/8K5uf/EuLj/t7K0/xNtnP8AYZf/AG6h/wB7
rv8AhLf/AIW4/wCGuf8AiLv/AIq9/wCNwP8AkMP/AJLF/wCEuP8Aa5//AGCW/z99nv/Bqaf/u6em/7im
pv+4paX/uKam/66Hh//t3dX///vw///57v/36d//2Kmb/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADluqL/+vLu////////////2MLC/7Sbm//Fv7//w7y8/8O6uv/Cubn/xbq5/8e6
t/9ajKb/AGKY/wBhl/8AZZn/AG6i/wBzpv8Ad6v/AHqt/wB4q/8Ac6b/AGab/wBglv8Kapr/gpWl/8au
qv+6qqr/uaio/7moqP+5qKj/uamp/66Iif/t29T///vw///57v/36d7/2Kid/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADku6H/+vLu////////////18LC/7Sdnf/GwsL/xL6+/8S8
vP/Du7v/wrq6/8S5uP/Ku7j/wri2/3yZq/9DgqP/F2+c/wBlmP8AYJb/AGCW/wBhlv8Pa5v/PX6g/4ea
qP/Gsa3/wa6t/7yrq/+7q6v/uqqq/7qqqv+6qqr/u62t/66IiP/s29T///vw///57v/36d7/2Kmc/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmu6H/+vLu////////////18HB/7Se
nv/HxMT/xb+//8S+vv/Evb3/w7y8/8K6uv/Cubn/wrm4/8e5uP/Kurf/zbq3/8q5tP/FtbP/xbSy/8e0
s//KtbH/x7Ox/8Kwr/+9sK//vK6u/7yurv+8ra3/vK2t/7usrP+7rKz/vK6u/62Jif/s29T///vw///5
7v/36d7/2auc/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADlvKH/+vLu////
////////18HB/7Sfn//Ixsb/xsHB/8XAwP/Fv7//xL29/8O8vP/Du7v/wrq6/8K5uf/BuLj/wbe3/8C2
tv/BtbX/v7S0/7+zs/+/s7P/vrKy/76xsf++sbH/vbCw/72wsP+9r6//va+v/72vr/+8r6//vbCw/62K
i//s29P///vw///57v/36d7/2aqc/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADnvaP/+vPu////////////1sHB/7Wfn//Jx8f/x8PD/8bCwv/GwcH/xb+//8S+vv/Evb3/w7y8/8O7
u//Curr/wrm5/8G4uP/Bt7f/wLa2/8C1tf/AtbX/v7S0/7+zs/+/s7P/vrKy/76ysv++srL/vrGx/76x
sf++sbH/v7S0/62Kiv/s2tP///vw///67v/36t7/2qye/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADmvqL/+vPs////////////1sDA/7ejo//Nzc3/ysrK/8nIyP/KyMj/yMXF/8fE
xP/Hw8P/xcLC/8bBwf/EwMD/xb+//8O9vf/DvLz/xLu7/8K8vP/Durr/wbm5/8G6uv/BuLj/wrm5/8C3
t//At7f/wLe3/8C2tv/Atrb/wri4/6+Njf/r2tP///vx///47//56t7/2q2d/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADovqL/+vPt/////v//////1L6+/5txcf+ph4f/p4WF/6eG
hv+nhIT/p4SE/6eEhP+ohYX/qIOD/6iDg/+ohIT/qISE/6iEhP+ohIT/qIWF/6iDg/+og4T/qIOE/6qD
hP+og4T/qoWF/6mEhP+phYX/qYWF/6mFhf+rhYX/q4aH/6Bwcv/p19D///vv///47f/46t7/262d/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADnv6L/+vPr/////f////7/+/j4//Hq
6v/y6ur/8erq//Hq6v/x6ur/8evr//Hr6//x6+v/8evr//Hr6//x6+v/8evr//Hr6//x6ur/8+rp//Pq
6f/z6uj/8+rn//Pp5v/z6eb/8+nl//Po5P/z6OP/8+jj//Po4v/z5+H/8ufg//Pm3v/99ez///nu///4
7f/46t7/266d/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpwKT/+/Hs///+
/v////z////+////////////////////////////////////////////////////////////////////
///////////+/////f////z///77///++v///Pn///33///99v//+/X///z0///88///+vL///vx///5
8P//+e////jt///47v/46t3/3K+f/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADowqT/+/Ps/////v///v3///79/////v////7/////////////////////////////////////////
///////////+/////f///v3///78///++////fr///35///9+P///Pj///z3///89v//+/X///v0///6
8///+vL///rx///58P//+e////jt///67v/5697/3LCf/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADqwqX/+ezi//z38f/89vD//Pby//z28f/89vP//Pbz//z28v/79vT/+/b0//v2
9P/79vT/+/bz//v28//79vP/+/fy//v18v/79vH/+/Tv//v08P/79e7/+/Pt//v07v/78uz/+/Lr//vz
6v/88en/+vHq//ry6P/68Of/+vHm//rv5f/67+T/+vDi//vw5P/25NX/3rGf/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqxaj/6sSl/+rBpP/owaP/6MCj/+nAo//nv6L/57+i/+i+
ov/mvqL/5r6i/+e9ov/lvaH/5byh/+a8of/ku6H/5Luh/+W6of/juqD/47mg/+S5oP/iuKD/4rig/+K4
oP/it6H/4bef/+G2n//htp//4LWf/+C1oP/gtKD/37Sf/9+zn//fs5//3rOf/96yoP/fs6H/3rSi/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf
AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf
AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf
AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA
AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAP///////wAA
</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="14.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{AC55DC8D-6A5A-4A72-92D7-E26003F6D6A5}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>TestApp</RootNamespace>
<AssemblyName>TestApp</AssemblyName>
<ApplicationIcon>photo_portrait.ico</ApplicationIcon>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>2.0</OldToolsVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="IntegratedTestForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="IntegratedTestForm.Designer.cs">
<DependentUpon>IntegratedTestForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="IntegratedTestForm.resx">
<SubType>Designer</SubType>
<DependentUpon>IntegratedTestForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="StandAloneTestForm.resx">
<SubType>Designer</SubType>
<DependentUpon>StandAloneTestForm.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="StandAloneTestForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="StandAloneTestForm.Designer.cs">
<DependentUpon>StandAloneTestForm.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ImageResizer\ImageResizer.csproj">
<Project>{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}</Project>
<Name>ImageResizer</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\NoImage.jpg" />
</ItemGroup>
<ItemGroup>
<Content Include="photo_portrait.ico" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows.Forms;
namespace MoyaAdminLib
{
public class AlphaNumericComparer : IComparer
{
public int ColumnIndex;
public bool SortOrderDesc;
public Type SortOrderType;
public AlphaNumericComparer()
{
ColumnIndex = 0;
}
public AlphaNumericComparer(int column)
{
ColumnIndex = 0;
}
public AlphaNumericComparer(int column, bool sortOrderDesc)
{
this.SortOrderDesc = sortOrderDesc;
ColumnIndex=column;
}
public AlphaNumericComparer(int column, bool sortOrderDesc, Type type)
{
this.SortOrderDesc = sortOrderDesc;
ColumnIndex = column;
this.SortOrderType = type;
}
public int Compare(object x, object y)
{
string s1 = null;
string s2 = null;
if (x != null)
{
if (x is ListViewItem)
{
ListViewItem lvix = (ListViewItem)x;
if (ColumnIndex < lvix.SubItems.Count)
s1 = lvix.SubItems[ColumnIndex].Text;
else
return 0;
}
}
if (s1 == null)
return 0;
if (y != null)
{
if (y is ListViewItem)
{
ListViewItem lviy = (ListViewItem)y;
if (ColumnIndex < lviy.SubItems.Count)
s2 = lviy.SubItems[ColumnIndex].Text;
else
return 0;
}
}
if (s2 == null)
return 0;
decimal num1 = 0;
decimal num2 = 0;
if (SortOrderType != null)
{
if (SortOrderType == typeof(DateTime))
{
DateTime date1 = DateTime.MinValue;
DateTime date2 = DateTime.MinValue;
if (DateTime.TryParse(s1, out date1) && DateTime.TryParse(s2, out date2))
return Compare(date1, date2);
}
}
if (Decimal.TryParse(s1, out num1) && Decimal.TryParse(s2, out num2))
{
return Compare(num1, num2);
}
int len1 = s1.Length;
int len2 = s2.Length;
int marker1 = 0;
int marker2 = 0;
// Walk through two the strings with two markers.
while (marker1 < len1 && marker2 < len2)
{
char ch1 = s1[marker1];
char ch2 = s2[marker2];
// Some buffers we can build up characters in for each chunk.
char[] space1 = new char[len1];
int loc1 = 0;
char[] space2 = new char[len2];
int loc2 = 0;
// Walk through all following characters that are digits or
// characters in BOTH strings starting at the appropriate marker.
// Collect char arrays.
do
{
space1[loc1++] = ch1;
marker1++;
if (marker1 < len1)
{
ch1 = s1[marker1];
}
else
{
break;
}
} while (char.IsDigit(ch1) == char.IsDigit(space1[0]));
do
{
space2[loc2++] = ch2;
marker2++;
if (marker2 < len2)
{
ch2 = s2[marker2];
}
else
{
break;
}
} while (char.IsDigit(ch2) == char.IsDigit(space2[0]));
// If we have collected numbers, compare them numerically.
// Otherwise, if we have strings, compare them alphabetically.
string str1 = new string(space1);
string str2 = new string(space2);
int result = 0;
if (char.IsDigit(space1[0]) && char.IsDigit(space2[0]))
{
try
{
int thisNumericChunk = int.Parse(str1);
int thatNumericChunk = int.Parse(str2);
result = thisNumericChunk.CompareTo(thatNumericChunk);
}catch(Exception ex)
{
if (ex is OverflowException)
{
result = str1.CompareTo(str2);
}
}
}
else
{
result = str1.CompareTo(str2);
}
if (result != 0)
{
return result;
}
}
return len1 - len2;
}
public int Compare(decimal x, decimal y)
{
if (x > y)
return 1;
else if (x < y)
return -1;
else
return 0;
}
public int Compare(DateTime date1, DateTime date2)
{
if (date1 > date2)
return 1;
else if (date1 < date2)
return -1;
else
return 0;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows.Forms;
namespace MoyaAdminLib
{
public class AlphaNumericStringComparer : IComparer<string>
{
public int ColumnIndex;
public bool SortOrderDesc;
public AlphaNumericStringComparer()
{
ColumnIndex = 0;
}
public AlphaNumericStringComparer(int column)
{
ColumnIndex = 0;
}
public AlphaNumericStringComparer(int column, bool sortOrderDesc)
{
this.SortOrderDesc = sortOrderDesc;
ColumnIndex=column;
}
public int Compare(string x, string y)
{
if (x == null)
x = "";
if(y == null)
y = "";
decimal num1 = 0;
decimal num2 = 0;
if (Decimal.TryParse(x, out num1) && Decimal.TryParse(y, out num2))
{
return Compare(num1, num2);
}
int len1 = x.Length;
int len2 = y.Length;
int marker1 = 0;
int marker2 = 0;
// Walk through two the strings with two markers.
while (marker1 < len1 && marker2 < len2)
{
char ch1 = x[marker1];
char ch2 = y[marker2];
// Some buffers we can build up characters in for each chunk.
char[] space1 = new char[len1];
int loc1 = 0;
char[] space2 = new char[len2];
int loc2 = 0;
// Walk through all following characters that are digits or
// characters in BOTH strings starting at the appropriate marker.
// Collect char arrays.
do
{
space1[loc1++] = ch1;
marker1++;
if (marker1 < len1)
{
ch1 = x[marker1];
}
else
{
break;
}
} while (char.IsDigit(ch1) == char.IsDigit(space1[0]));
do
{
space2[loc2++] = ch2;
marker2++;
if (marker2 < len2)
{
ch2 = y[marker2];
}
else
{
break;
}
} while (char.IsDigit(ch2) == char.IsDigit(space2[0]));
// If we have collected numbers, compare them numerically.
// Otherwise, if we have strings, compare them alphabetically.
string str1 = new string(space1);
string str2 = new string(space2);
int result;
if (char.IsDigit(space1[0]) && char.IsDigit(space2[0]))
{
int thisNumericChunk = int.Parse(str1);
int thatNumericChunk = int.Parse(str2);
result = thisNumericChunk.CompareTo(thatNumericChunk);
}
else
{
result = str1.CompareTo(str2);
}
if (result != 0)
{
return result;
}
}
return len1 - len2;
}
public int Compare(decimal x, decimal y)
{
if (x > y)
return 1;
else if (x < y)
return -1;
else
return 0;
}
}
}
......@@ -13,25 +13,6 @@
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
......@@ -65,6 +46,8 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AlphaNumericComparer.cs" />
<Compile Include="AlphaNumericStringComparer.cs" />
<Compile Include="Card.cs" />
<Compile Include="CardList.cs" />
<Compile Include="ComputerPlace.cs" />
......@@ -86,6 +69,7 @@
<Compile Include="OrgMealList.cs" />
<Compile Include="Place.cs" />
<Compile Include="PlaceMap.cs" />
<Compile Include="Product.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Randomizer.cs" />
<Compile Include="Reader.cs" />
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MoyaAdminLib
{
public class Product
{
private string productName;
public string Name
{
get { return productName; }
set { productName = value; }
}
private int productId;
public int Id
{
get { return productId;}
set { productId = value; }
}
}
}
......@@ -149,7 +149,7 @@ namespace MoyaAdminLib
{
var responseValue = string.Empty;
if (response.StatusCode != HttpStatusCode.OK)
if ((int)response.StatusCode < 200 && (int)response.StatusCode >= 300)
{
var message = String.Format("Request failed. Received HTTP {0}", response.StatusCode);
throw new ApplicationException(message);
......
......@@ -27,8 +27,10 @@ namespace MoyaAdminLib
public string firstname;
public string lastname;
public string login;
public string password;
public int userId;
public string nick;
public string email;
public string birthday;
public string gender;
public string phoneNumber;
......

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoyaAdminUI", "MoyaAdminUI\MoyaAdminUI.csproj", "{56D4C2A6-B4A2-4E40-ACFB-19E188AAD703}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoyaAdminLib", "MoyaAdminLib\MoyaAdminLib.csproj", "{095CE28F-5B53-4203-85C6-3A9AFD486407}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageResizer", "ImageResizer\ImageResizer\ImageResizer\ImageResizer.csproj", "{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -21,6 +23,10 @@ Global
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|Any CPU.Build.0 = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|Any CPU.ActiveCfg = Release|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|Any CPU.Build.0 = Release|Any CPU
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E660FA4F-B216-46DE-B387-DDE59BBAAFE6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MoyaAdminUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="MoyaAdminUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<userSettings>
<MoyaAdminUI.Properties.Settings>
......@@ -14,20 +14,20 @@
<value>http://10.220.105.194:8080/MoyaWeb</value>
</setting>
<setting name="ApiApplicationKey" serializeAs="String">
<value />
<value/>
</setting>
<setting name="ApiUser" serializeAs="String">
<value />
<value/>
</setting>
<setting name="ApiPass" serializeAs="String">
<value />
<value/>
</setting>
<setting name="ApplicationVersion" serializeAs="String">
<value />
<value/>
</setting>
<setting name="Port" serializeAs="String">
<value />
<value/>
</setting>
</MoyaAdminUI.Properties.Settings>
</userSettings>
</configuration>
\ No newline at end of file
</configuration>
......@@ -79,7 +79,7 @@ namespace MoyaAdminUI
string json = "{\"" + key + "\":\"" + value + "\"}";
RestClient client2 = new RestClient(Properties.Settings.Default.ApiURL, HttpVerb.POST, json);
RestClient client2 = new RestClient(Properties.Settings.Default.ApiURL, HttpVerb.PUT, json);
try
{
client2.MakeRequest("meta/v1/printedcard/" + card.id + "/card-filing");
......
......@@ -48,17 +48,28 @@
this.label8 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.nudDoubleRowSpacing = new System.Windows.Forms.NumericUpDown();
this.heightNud = new System.Windows.Forms.NumericUpDown();
this.label10 = new System.Windows.Forms.Label();
this.widthNud = new System.Windows.Forms.NumericUpDown();
this.label11 = new System.Windows.Forms.Label();
this.productIdNud = new System.Windows.Forms.NumericUpDown();
this.label12 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.SeatsNud)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.RowsNud)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudSeatSpacing)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudDoubleRowSpacing)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.heightNud)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.widthNud)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.productIdNud)).BeginInit();
this.SuspendLayout();
//
// OkButton
//
this.OkButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.OkButton.Enabled = false;
this.OkButton.Location = new System.Drawing.Point(154, 200);
this.OkButton.Location = new System.Drawing.Point(152, 301);
this.OkButton.Name = "OkButton";
this.OkButton.Size = new System.Drawing.Size(75, 23);
this.OkButton.TabIndex = 0;
......@@ -69,7 +80,7 @@
// CancelGridButton
//
this.CancelGridButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.CancelGridButton.Location = new System.Drawing.Point(73, 200);
this.CancelGridButton.Location = new System.Drawing.Point(71, 301);
this.CancelGridButton.Name = "CancelGridButton";
this.CancelGridButton.Size = new System.Drawing.Size(75, 23);
this.CancelGridButton.TabIndex = 1;
......@@ -134,7 +145,7 @@
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(9, 140);
this.label3.Location = new System.Drawing.Point(9, 207);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(63, 13);
this.label3.TabIndex = 6;
......@@ -142,7 +153,7 @@
//
// NamePrefixTextBox
//
this.NamePrefixTextBox.Location = new System.Drawing.Point(110, 137);
this.NamePrefixTextBox.Location = new System.Drawing.Point(110, 204);
this.NamePrefixTextBox.Name = "NamePrefixTextBox";
this.NamePrefixTextBox.Size = new System.Drawing.Size(100, 20);
this.NamePrefixTextBox.TabIndex = 7;
......@@ -151,7 +162,7 @@
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(12, 177);
this.label4.Location = new System.Drawing.Point(9, 274);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(215, 13);
this.label4.TabIndex = 8;
......@@ -182,7 +193,7 @@
// rabVert
//
this.rabVert.AutoSize = true;
this.rabVert.Location = new System.Drawing.Point(12, 60);
this.rabVert.Location = new System.Drawing.Point(12, 127);
this.rabVert.Name = "rabVert";
this.rabVert.Size = new System.Drawing.Size(84, 17);
this.rabVert.TabIndex = 11;
......@@ -195,7 +206,7 @@
//
this.rabHoriz.AutoSize = true;
this.rabHoriz.Checked = true;
this.rabHoriz.Location = new System.Drawing.Point(110, 60);
this.rabHoriz.Location = new System.Drawing.Point(110, 127);
this.rabHoriz.Name = "rabHoriz";
this.rabHoriz.Size = new System.Drawing.Size(95, 17);
this.rabHoriz.TabIndex = 12;
......@@ -207,7 +218,7 @@
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(12, 160);
this.label5.Location = new System.Drawing.Point(9, 257);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(187, 13);
this.label5.TabIndex = 13;
......@@ -215,7 +226,7 @@
//
// nudSeatSpacing
//
this.nudSeatSpacing.Location = new System.Drawing.Point(110, 83);
this.nudSeatSpacing.Location = new System.Drawing.Point(110, 150);
this.nudSeatSpacing.Name = "nudSeatSpacing";
this.nudSeatSpacing.Size = new System.Drawing.Size(51, 20);
this.nudSeatSpacing.TabIndex = 14;
......@@ -224,7 +235,7 @@
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(167, 85);
this.label6.Location = new System.Drawing.Point(167, 152);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(39, 13);
this.label6.TabIndex = 15;
......@@ -233,7 +244,7 @@
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(9, 85);
this.label7.Location = new System.Drawing.Point(9, 152);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(69, 13);
this.label7.TabIndex = 16;
......@@ -242,7 +253,7 @@
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(9, 113);
this.label8.Location = new System.Drawing.Point(9, 180);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(101, 13);
this.label8.TabIndex = 19;
......@@ -251,7 +262,7 @@
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(167, 113);
this.label9.Location = new System.Drawing.Point(167, 180);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(39, 13);
this.label9.TabIndex = 18;
......@@ -259,18 +270,129 @@
//
// nudDoubleRowSpacing
//
this.nudDoubleRowSpacing.Location = new System.Drawing.Point(110, 111);
this.nudDoubleRowSpacing.Location = new System.Drawing.Point(110, 178);
this.nudDoubleRowSpacing.Name = "nudDoubleRowSpacing";
this.nudDoubleRowSpacing.Size = new System.Drawing.Size(51, 20);
this.nudDoubleRowSpacing.TabIndex = 17;
this.nudDoubleRowSpacing.ValueChanged += new System.EventHandler(this.nudDoubleRowSpacing_ValueChanged);
//
// heightNud
//
this.heightNud.Location = new System.Drawing.Point(60, 88);
this.heightNud.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.heightNud.Name = "heightNud";
this.heightNud.Size = new System.Drawing.Size(57, 20);
this.heightNud.TabIndex = 23;
this.heightNud.Value = new decimal(new int[] {
10,
0,
0,
0});
this.heightNud.ValueChanged += new System.EventHandler(this.heightNud_ValueChanged);
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(9, 90);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(38, 13);
this.label10.TabIndex = 22;
this.label10.Text = "Height";
//
// widthNud
//
this.widthNud.Location = new System.Drawing.Point(60, 60);
this.widthNud.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.widthNud.Name = "widthNud";
this.widthNud.Size = new System.Drawing.Size(57, 20);
this.widthNud.TabIndex = 21;
this.widthNud.Value = new decimal(new int[] {
10,
0,
0,
0});
this.widthNud.ValueChanged += new System.EventHandler(this.widthNud_ValueChanged);
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(9, 61);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(35, 13);
this.label11.TabIndex = 20;
this.label11.Text = "Width";
//
// productIdNud
//
this.productIdNud.Location = new System.Drawing.Point(110, 234);
this.productIdNud.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.productIdNud.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.productIdNud.Name = "productIdNud";
this.productIdNud.Size = new System.Drawing.Size(51, 20);
this.productIdNud.TabIndex = 25;
this.productIdNud.Value = new decimal(new int[] {
10,
0,
0,
0});
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(12, 236);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(55, 13);
this.label12.TabIndex = 24;
this.label12.Text = "Product id";
//
// label13
//
this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(123, 90);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(39, 13);
this.label13.TabIndex = 27;
this.label13.Text = "pixel(s)";
//
// label14
//
this.label14.AutoSize = true;
this.label14.Location = new System.Drawing.Point(123, 60);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(39, 13);
this.label14.TabIndex = 26;
this.label14.Text = "pixel(s)";
//
// ComputerPlaceGridSettings
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(232, 235);
this.ClientSize = new System.Drawing.Size(230, 336);
this.ControlBox = false;
this.Controls.Add(this.label13);
this.Controls.Add(this.label14);
this.Controls.Add(this.productIdNud);
this.Controls.Add(this.label12);
this.Controls.Add(this.heightNud);
this.Controls.Add(this.label10);
this.Controls.Add(this.widthNud);
this.Controls.Add(this.label11);
this.Controls.Add(this.label8);
this.Controls.Add(this.label9);
this.Controls.Add(this.nudDoubleRowSpacing);
......@@ -299,6 +421,9 @@
((System.ComponentModel.ISupportInitialize)(this.RowsNud)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nudSeatSpacing)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nudDoubleRowSpacing)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.heightNud)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.widthNud)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.productIdNud)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
......@@ -326,6 +451,13 @@
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.NumericUpDown nudDoubleRowSpacing;
private System.Windows.Forms.NumericUpDown heightNud;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.NumericUpDown widthNud;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.NumericUpDown productIdNud;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label14;
}
}
\ No newline at end of file
......@@ -8,7 +8,7 @@ using System.Windows.Forms;
namespace MoyaAdminUI
{
public delegate void ComputerPlaceGridSettingsAnswer(bool cancel, int x, int y, bool ix, bool iy, string name, bool horizontalRow, int seatSpacing, int doubleRowSpacing);
public delegate void ComputerPlaceGridSettingsAnswer(bool cancel, int x, int y, bool ix, bool iy, int width, int height, string name, bool horizontalRow, int seatSpacing, int doubleRowSpacing, int productId);
public partial class ComputerPlaceGridSettings : Form
{
public ComputerPlaceGridSettings()
......@@ -16,17 +16,39 @@ namespace MoyaAdminUI
InitializeComponent();
}
public ComputerPlaceGridSettings(int width, int height, int productId)
{
InitializeComponent();
this.width = width;
this.height = height;
this.productId = productId;
}
public event ComputerPlaceGridSettingsAnswer PreviewAnswer;
public event ComputerPlaceGridSettingsAnswer AnswerGiven;
private int width = 0;
public int Width
{
set { width = value; }
}
private int height = 0;
public int Height
{
set { height = value; }
}
private int productId;
void sendAnswer(ComputerPlaceGridSettingsAnswer d, bool cancel)
{
if (d != null)
{
if(rabVert.Checked)
d(cancel, Convert.ToInt32(this.RowsNud.Value), Convert.ToInt32(this.SeatsNud.Value), chbInvertRows.Checked, chbInvertSeats.Checked, this.NamePrefixTextBox.Text.Trim(), rabHoriz.Checked, Convert.ToInt32(nudSeatSpacing.Value), Convert.ToInt32(nudDoubleRowSpacing.Value));
d(cancel, Convert.ToInt32(this.RowsNud.Value), Convert.ToInt32(this.SeatsNud.Value), chbInvertRows.Checked, chbInvertSeats.Checked, Convert.ToInt32(this.widthNud.Value), Convert.ToInt32(this.heightNud.Value), this.NamePrefixTextBox.Text.Trim(), rabHoriz.Checked, Convert.ToInt32(nudSeatSpacing.Value), Convert.ToInt32(nudDoubleRowSpacing.Value), Convert.ToInt32(productIdNud.Value));
else
d(cancel, Convert.ToInt32(this.SeatsNud.Value), Convert.ToInt32(this.RowsNud.Value), chbInvertSeats.Checked, chbInvertRows.Checked, this.NamePrefixTextBox.Text.Trim(), rabHoriz.Checked, Convert.ToInt32(nudSeatSpacing.Value), Convert.ToInt32(nudDoubleRowSpacing.Value));
d(cancel, Convert.ToInt32(this.SeatsNud.Value), Convert.ToInt32(this.RowsNud.Value), chbInvertSeats.Checked, chbInvertRows.Checked, Convert.ToInt32(this.widthNud.Value), Convert.ToInt32(this.heightNud.Value), this.NamePrefixTextBox.Text.Trim(), rabHoriz.Checked, Convert.ToInt32(nudSeatSpacing.Value), Convert.ToInt32(nudDoubleRowSpacing.Value), Convert.ToInt32(productIdNud.Value));
}
}
......@@ -60,6 +82,12 @@ namespace MoyaAdminUI
private void ComputerPlaceGridSettings_Load(object sender, EventArgs e)
{
if (width > 0)
this.widthNud.Value = this.width;
if ( height > 0)
this.heightNud.Value = this.height;
if (productId > 0)
this.productIdNud.Value = this.productId;
sendAnswer(PreviewAnswer, false);
}
......@@ -116,5 +144,15 @@ namespace MoyaAdminUI
{
sendAnswer(PreviewAnswer, false);
}
private void widthNud_ValueChanged(object sender, EventArgs e)
{
sendAnswer(PreviewAnswer, false);
}
private void heightNud_ValueChanged(object sender, EventArgs e)
{
sendAnswer(PreviewAnswer, false);
}
}
}
namespace MoyaAdminUI
{
partial class ImageCropForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.imageResizer1 = new ImageResizer.ImageResizer();
this.SuspendLayout();
//
// imageResizer1
//
this.imageResizer1.CroppedImageRatio = new decimal(new int[] {
0,
0,
0,
0});
this.imageResizer1.DefaultApiUrl = null;
this.imageResizer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.imageResizer1.Location = new System.Drawing.Point(0, 0);
this.imageResizer1.MinimumSize = new System.Drawing.Size(550, 300);
this.imageResizer1.Name = "imageResizer1";
this.imageResizer1.RequiredHeight = 0;
this.imageResizer1.RequiredWidth = 0;
this.imageResizer1.Size = new System.Drawing.Size(958, 936);
this.imageResizer1.TabIndex = 0;
//
// ImageCropForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(958, 936);
this.Controls.Add(this.imageResizer1);
this.Name = "ImageCropForm";
this.Text = "ImageCropForm";
this.Load += new System.EventHandler(this.ImageCropForm_Load);
this.ResumeLayout(false);
}
#endregion
private ImageResizer.ImageResizer imageResizer1;
}
}
\ No newline at end of file
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;
namespace MoyaAdminUI
{
public partial class ImageCropForm : Form
{
private decimal croppedImageRatio;
public decimal CroppedImageRatio
{
get { return croppedImageRatio; }
set { croppedImageRatio = value; }
}
private string defaultApiUrl;
public string DefaultApiUrl
{
get { return defaultApiUrl; }
set { defaultApiUrl = value; }
}
public ImageCropForm()
{
InitializeComponent();
//imageResizer1.CroppedImageRatio = croppedImageRatio;
}
private void ImageCropForm_Load(object sender, EventArgs e)
{
imageResizer1.CroppedImageRatio = croppedImageRatio;
imageResizer1.DefaultApiUrl = defaultApiUrl;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
......@@ -31,6 +31,7 @@
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.placesContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.printPlaceStickersForSelectedPlacesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MapPictureBox = new System.Windows.Forms.PictureBox();
this.placeEditor = new System.Windows.Forms.PropertyGrid();
this.PlacesListView = new System.Windows.Forms.ListView();
......@@ -50,7 +51,11 @@
this.cloackRoomToolStripButton = new System.Windows.Forms.ToolStripButton();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.orgMealToolStripButton = new System.Windows.Forms.ToolStripButton();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.cropImageToolStripButton = new System.Windows.Forms.ToolStripButton();
this.TopPanel = new System.Windows.Forms.Panel();
this.allPlacesCountTextBox = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.freePlacesCountTextBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.reservedPlacesCountTextBox = new System.Windows.Forms.TextBox();
......@@ -63,8 +68,7 @@
this.ImageRefreshTimer = new System.Windows.Forms.Timer(this.components);
this.panel2 = new System.Windows.Forms.Panel();
this.placesCountTimer = new System.Windows.Forms.Timer(this.components);
this.allPlacesCountTextBox = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.placesContextMenuStrip.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.MapPictureBox)).BeginInit();
this.toolStrip1.SuspendLayout();
this.TopPanel.SuspendLayout();
......@@ -74,12 +78,22 @@
//
// placesContextMenuStrip
//
this.placesContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.printPlaceStickersForSelectedPlacesToolStripMenuItem});
this.placesContextMenuStrip.Name = "placesContextMenuStrip";
this.placesContextMenuStrip.Size = new System.Drawing.Size(153, 26);
this.placesContextMenuStrip.Size = new System.Drawing.Size(273, 26);
this.placesContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.placesContextMenuStrip_Opening);
//
// printPlaceStickersForSelectedPlacesToolStripMenuItem
//
this.printPlaceStickersForSelectedPlacesToolStripMenuItem.Name = "printPlaceStickersForSelectedPlacesToolStripMenuItem";
this.printPlaceStickersForSelectedPlacesToolStripMenuItem.Size = new System.Drawing.Size(272, 22);
this.printPlaceStickersForSelectedPlacesToolStripMenuItem.Text = "Print place stickers for selected places";
this.printPlaceStickersForSelectedPlacesToolStripMenuItem.Click += new System.EventHandler(this.printPlaceStickersForSelectedPlacesToolStripMenuItem_Click);
//
// MapPictureBox
//
this.MapPictureBox.Cursor = System.Windows.Forms.Cursors.Default;
this.MapPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.MapPictureBox.Location = new System.Drawing.Point(0, 45);
this.MapPictureBox.Name = "MapPictureBox";
......@@ -95,10 +109,12 @@
//
this.placeEditor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.placeEditor.CategoryForeColor = System.Drawing.SystemColors.InactiveCaptionText;
this.placeEditor.Location = new System.Drawing.Point(6, 223);
this.placeEditor.Name = "placeEditor";
this.placeEditor.Size = new System.Drawing.Size(311, 242);
this.placeEditor.TabIndex = 13;
this.placeEditor.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.placeEditor_PropertyValueChanged);
//
// PlacesListView
//
......@@ -119,8 +135,11 @@
this.PlacesListView.TabIndex = 0;
this.PlacesListView.UseCompatibleStateImageBehavior = false;
this.PlacesListView.View = System.Windows.Forms.View.Details;
this.PlacesListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.PlacesListView_ColumnClick);
this.PlacesListView.SelectedIndexChanged += new System.EventHandler(this.PlacesListView_SelectedIndexChanged);
this.PlacesListView.DoubleClick += new System.EventHandler(this.PlacesListView_DoubleClick);
this.PlacesListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.PlacesListView_KeyDown);
this.PlacesListView.KeyUp += new System.Windows.Forms.KeyEventHandler(this.PlacesListView_KeyUp);
//
// colName
//
......@@ -155,7 +174,9 @@
this.cardInfoToolStripButton,
this.cloackRoomToolStripButton,
this.toolStripButton1,
this.orgMealToolStripButton});
this.orgMealToolStripButton,
this.toolStripButton2,
this.cropImageToolStripButton});
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(1078, 25);
......@@ -271,6 +292,27 @@
this.orgMealToolStripButton.Text = "Org Meal";
this.orgMealToolStripButton.Click += new System.EventHandler(this.orgMealToolStripButton_Click);
//
// toolStripButton2
//
this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton2.Name = "toolStripButton2";
this.toolStripButton2.Size = new System.Drawing.Size(23, 22);
this.toolStripButton2.Text = "Print place stickers";
this.toolStripButton2.Visible = false;
this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click);
//
// cropImageToolStripButton
//
this.cropImageToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.cropImageToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("cropImageToolStripButton.Image")));
this.cropImageToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.cropImageToolStripButton.Name = "cropImageToolStripButton";
this.cropImageToolStripButton.Size = new System.Drawing.Size(23, 22);
this.cropImageToolStripButton.Text = "Crop Image tool";
this.cropImageToolStripButton.Click += new System.EventHandler(this.cropImageToolStripButton_Click);
//
// TopPanel
//
this.TopPanel.Controls.Add(this.allPlacesCountTextBox);
......@@ -287,6 +329,23 @@
this.TopPanel.Size = new System.Drawing.Size(752, 45);
this.TopPanel.TabIndex = 15;
//
// allPlacesCountTextBox
//
this.allPlacesCountTextBox.Location = new System.Drawing.Point(580, 18);
this.allPlacesCountTextBox.Name = "allPlacesCountTextBox";
this.allPlacesCountTextBox.ReadOnly = true;
this.allPlacesCountTextBox.Size = new System.Drawing.Size(100, 20);
this.allPlacesCountTextBox.TabIndex = 12;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(524, 21);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(36, 13);
this.label4.TabIndex = 11;
this.label4.Text = "Kaikki";
//
// freePlacesCountTextBox
//
this.freePlacesCountTextBox.Location = new System.Drawing.Point(418, 18);
......@@ -300,9 +359,6 @@
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(362, 21);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(46, 13);
this.label2.TabIndex = 9;
this.label2.Text = "Avoinna";
this.label2.Size = new System.Drawing.Size(50, 13);
this.label2.TabIndex = 9;
this.label2.Text = "Vapaana";
......@@ -385,26 +441,9 @@
//
// placesCountTimer
//
this.placesCountTimer.Interval = 60000;
this.placesCountTimer.Interval = 600000000;
this.placesCountTimer.Tick += new System.EventHandler(this.placesCountTimer_Tick);
//
// allPlacesCountTextBox
//
this.allPlacesCountTextBox.Location = new System.Drawing.Point(580, 18);
this.allPlacesCountTextBox.Name = "allPlacesCountTextBox";
this.allPlacesCountTextBox.ReadOnly = true;
this.allPlacesCountTextBox.Size = new System.Drawing.Size(100, 20);
this.allPlacesCountTextBox.TabIndex = 12;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(524, 21);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(36, 13);
this.label4.TabIndex = 11;
this.label4.Text = "Kaikki";
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
......@@ -419,6 +458,9 @@
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmComputerPlaces_FormClosing);
this.Load += new System.EventHandler(this.frmEditComputerPlace_Load);
this.SizeChanged += new System.EventHandler(this.MainForm_SizeChanged);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress);
this.placesContextMenuStrip.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.MapPictureBox)).EndInit();
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
......@@ -469,6 +511,9 @@
private System.Windows.Forms.Timer placesCountTimer;
private System.Windows.Forms.TextBox allPlacesCountTextBox;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ToolStripButton toolStripButton2;
private System.Windows.Forms.ToolStripMenuItem printPlaceStickersForSelectedPlacesToolStripMenuItem;
private System.Windows.Forms.ToolStripButton cropImageToolStripButton;
}
}
......@@ -55,6 +55,10 @@ namespace MoyaAdminUI
}
refreshPlacesCountTexBoxes();
placesCountTimer.Start();
//PlacesListView.
//PlacesListView.ListViewItemSorter = new AlphaNumericStringComparer();
}
private void loadPlacemap()
......@@ -122,6 +126,8 @@ namespace MoyaAdminUI
private void MapPictureBox_MouseUp(object sender, MouseEventArgs e)
{
//Point point = new Point(e.Location.X - MapPictureBox.Cursor.Size.Width/2 + 4, e.Location.Y - MapPictureBox.Cursor.Size.Height/2 + 4);
//clickedLocation = point;
clickedLocation = e.Location;
if (e.Button == MouseButtons.Right)
{
......@@ -364,19 +370,19 @@ namespace MoyaAdminUI
private void createNewComputerPlaceGrid(object sender, EventArgs e)
{
gridSettingsForm = new ComputerPlaceGridSettings();
gridSettingsForm = new ComputerPlaceGridSettings(newPlaceWidth, newPlaceHeight, defaultProductId);
gridSettingsForm.PreviewAnswer += new ComputerPlaceGridSettingsAnswer(gridSettingsForm_PreviewAnswer);
gridSettingsForm.AnswerGiven += new ComputerPlaceGridSettingsAnswer(gridSettingsForm_AnswerGiven);
gridSettingsForm.Show(this);
}
void gridSettingsForm_AnswerGiven(bool cancel, int x, int y, bool ix, bool iy, string name, bool horizontalRow, int seatSpacing, int doubleRowSpacing)
void gridSettingsForm_AnswerGiven(bool cancel, int x, int y, bool ix, bool iy, int width, int height, string name, bool horizontalRow, int seatSpacing, int doubleRowSpacing, int productId)
{
List<ComputerPlace> returnList = new List<ComputerPlace>();
this.gridPreview.Clear();
if (!cancel)
{
addPlaceGrid(returnList, x, y, ix, iy, name, false, horizontalRow, seatSpacing, doubleRowSpacing);
addPlaceGrid(returnList, x, y, ix, iy, width, height, name, false, horizontalRow, seatSpacing, doubleRowSpacing, productId);
foreach (ComputerPlace p in returnList)
{
unsavedComputerPlaces.Add(p);
......@@ -391,14 +397,14 @@ namespace MoyaAdminUI
this.gridSettingsForm = null;
}
void gridSettingsForm_PreviewAnswer(bool cancel, int x, int y, bool ix, bool iy, string name, bool horizontalRow, int seatSpacing, int doubleRowSpacing)
void gridSettingsForm_PreviewAnswer(bool cancel, int x, int y, bool ix, bool iy, int width, int height, string name, bool horizontalRow, int seatSpacing, int doubleRowSpacing, int productId)
{
this.gridPreview.Clear();
addPlaceGrid(gridPreview, x, y, ix, iy, name, true, horizontalRow, seatSpacing, doubleRowSpacing);
addPlaceGrid(gridPreview, x, y, ix, iy,width, height, name, true, horizontalRow, seatSpacing, doubleRowSpacing, productId);
this.MapPictureBox.Refresh();
}
void addPlaceGrid(List<ComputerPlace> list, int xcount, int ycount, bool ix, bool iy, string name, bool preview, bool horizontalRow, int seatSpacing, int doubleRowSpacing)
void addPlaceGrid(List<ComputerPlace> list, int xcount, int ycount, bool ix, bool iy, int width, int height, string name, bool preview, bool horizontalRow, int seatSpacing, int doubleRowSpacing, int productId)
{
int dRowCount = -1;
int count = 0;
......@@ -517,9 +523,9 @@ namespace MoyaAdminUI
ComputerPlace p = new ComputerPlace();
p.MapId = SelectedMap.Id;
p.ProductId = defaultProductId;
p.Width = newPlaceWidth;
p.Height = newPlaceHeight;
p.ProductId = productId;
p.Width = width;
p.Height = height;
int xcoord = 0;
int ycoord = 0;
......@@ -742,6 +748,8 @@ namespace MoyaAdminUI
this.MapPictureBox.Refresh();
this.loadComputerPlaces();
this.Cursor = Cursors.Default;
refreshPlacesCountTexBoxes();
}
......@@ -750,7 +758,7 @@ namespace MoyaAdminUI
if (disableEvents)
return;
if (!this.unsavedComputerPlaces.Contains(this.selectedPlace))
if (!this.unsavedComputerPlaces.Contains(this.selectedPlace) && this.selectedPlace != null)
{
this.unsavedComputerPlaces.Add(this.selectedPlace);
}
......@@ -803,6 +811,7 @@ namespace MoyaAdminUI
foreach (ListViewItem li in this.PlacesListView.SelectedItems)
{
ComputerPlace p = (ComputerPlace)li.Tag;
if (p.Id > 0)
{
p.Delete();
......@@ -877,6 +886,7 @@ namespace MoyaAdminUI
);
newPlaceHeight = mouseDownComputerPlace.Height;
newPlaceWidth = mouseDownComputerPlace.Width;
defaultProductId = mouseDownComputerPlace.ProductId;
}
else
{
......@@ -985,7 +995,6 @@ namespace MoyaAdminUI
}
else if (this.PlacesListView.SelectedItems.Count > 1)
{
editObjects();
}
......@@ -1078,9 +1087,12 @@ namespace MoyaAdminUI
private void toolStripRefreshButton_Click(object sender, EventArgs e)
{
User.LoadAll();
PlacesListView.Items.Clear();
loadComputerPlaces();
MapPictureBox.Refresh();
refreshPlacesCountTexBoxes();
}
private void usersToolStripPrintButton_Click(object sender, EventArgs e)
......@@ -1267,10 +1279,113 @@ namespace MoyaAdminUI
private void placesContextMenuStrip_Opening(object sender, CancelEventArgs e)
{
printPlaceStickersForSelectedPlacesToolStripMenuItem.Visible = false;
if(PlacesListView.SelectedItems.Count > 0)
{
printPlaceStickersForSelectedPlacesToolStripMenuItem.Visible = true;
}
}
private void printPlaceStickersForSelectedPlacesToolStripMenuItem_Click(object sender, EventArgs e)
{
List<ComputerPlace> places = new List<ComputerPlace>();
foreach(ListViewItem lvi in PlacesListView.SelectedItems)
{
if (lvi.Tag is ComputerPlace)
places.Add((ComputerPlace)lvi.Tag);
}
PrintPlaceStickersForm frm = new PrintPlaceStickersForm(places);
frm.Show();
}
private void PlacesListView_ColumnClick(object sender, ColumnClickEventArgs e)
{
int column = e.Column;
PlacesListView.ListViewItemSorter = new AlphaNumericComparer(column, true);
PlacesListView.Sort();
}
private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
{
}
private void PlacesListView_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left || e.KeyCode == Keys.Right || e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
{
foreach (ListViewItem li in this.PlacesListView.SelectedItems)
{
ComputerPlace p = (ComputerPlace)li.Tag;
if (!this.unsavedComputerPlaces.Contains(p))
{
this.unsavedComputerPlaces.Add(p);
}
changed();
}
}
}
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
}
private void PlacesListView_KeyDown(object sender, KeyEventArgs e)
{
if (UnlockToolStripButton.Checked)
{
foreach (ListViewItem li in this.PlacesListView.SelectedItems)
{
ComputerPlace p = (ComputerPlace)li.Tag;
//p.Coord += difference;
if (e.KeyCode == Keys.Left)
p.MapX -= 1;
else if (e.KeyCode == Keys.Right)
p.MapX += 1;
else if (e.KeyCode == Keys.Up)
p.MapY -= 1;
else if (e.KeyCode == Keys.Down)
p.MapY += 1;
}
if (this.PlacesListView.SelectedItems.Count == 1)
{
//single move
placeEditor.SelectedObject = mouseDownComputerPlace;
changed();
}
else if (this.PlacesListView.SelectedItems.Count > 1)
{
editObjects();
}
MapPictureBox.Refresh();
}
}
private void placeEditor_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
changed();
}
private void cropImageToolStripButton_Click(object sender, EventArgs e)
{
ImageCropForm frm = new ImageCropForm();
frm.CroppedImageRatio = 1.3675M;
frm.DefaultApiUrl = Properties.Settings.Default.ApiURL;
frm.Show();
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
//PrintPlaceStickersForm frm = new PrintPlaceStickersForm();
}
}
}
......@@ -143,47 +143,47 @@
<data name="toolStripRefreshButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
rkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAk3SURBVFhHtVYJVJNXFiYRUSQhbAJRFGxRC25TFwqIRCN7
UAIGJCQhAQQtFAFRNhWLQ61S62idcXS044KVqS2VtbhRVERBFFARsIIgiLK4oBUXXL55L/zaeoTq6XS+
c+75k/+/793v3fu9+57GH4VPoZW537Fx0/xPTpKrSqZOUxYJ9JhP/z845ZlauRwevs69cGSr+KQ5JGcs
4Hd+BAIqxkBV/iGCzky9E1HpsDvqnJMVM+TPgTDb2MQh3zDT5fhQeNfoQtqmBWkHG35tbEhusDHvOhve
zcQatRBQNxwRF22x5ILwm/hKVwtmij8Mlm0Wz9sun9cpvqSLoPtaCOwaCNntAZB2/krAhyEgbmLDq5HY
VTZUl99D9AXn1rjz7hOYuX4XLFExN9C1YAif+U/Bmp7N8xmfx3kmu66DBd2DEfzLIATdG4yIruFI7ZqN
f91biPR78dhxdzFWd3gguGUkvK8OhFcDIVHPhvKyOaJrZ99JqhTZMHP2jbCwsIFzT3LhcpDzcHaBvh15
xXI8oDdj0gHOo8AbHCx6PARhD7UR1c3H5od+ON69B+lNafjsUigiz7oi9VIIdjetQeG9dKxpE0PWaKQm
QE31swUSa9xbYku8jXuj9QGJRKItPsVFWJsenA9xmpz280fa5nBvyJt5iHyqg4geHSQ9GYvsx6nYULcE
woOm911zRu2as986VrLjo7m+mZMj/A9+uFFebN21+1oqdnTGQNFoDHG9JnwatBB5ZTISq0XbV61axWZC
vg6SgSHzSnWxDFwom3gQHOG2S+t5iHnBQdRzDlY+HYPt7TGIPesNQabp1/PjPKxCQkJMiBkolUq9gIAA
fblcbiz7bK51YJHNN9sbV2DTzSD4X9WD79UhkDbqIqnOoyf+tFffoqQEfMt4iCMEqEU/4WIpecZSe6GP
L+/4wC6H0yPcbb6IBvL19eUQ0xIIBJrkOYB5atH3lJjqmN0/tzUmIO66PfxJcFmTPhKuCpF0wZMkoY8s
yLdMNJafM0YCCRjPGCVCM5IIY4RWTYFg77CldMWRkZGD+kslfU/LKYuW8Recsq3adH0hVM0mULWY4JPm
8Uio9ThN9ca4/wpZ+mS+stIUSeqAvfaSzJJHerDP47YJd5m70+DEndU7ql+waEZD8gS+635egOLuDBx5
sB35v3yFxDr3HvkXch3G7xVYlEBQFR8rSEBqyxl7SSjoOhduJTxSBp1S+yzeLDqmd2jfoGWRLpEahZ7+
6G54pQOW13phbb0SKVckWFY4dyzj9gpqAsHn+UgmwV7aSmKroI80jMYuiPETPse+1lTY5XEfOu95r/8t
1QsWLQXVQ3BwsHnoNi/7j7/3nBOVK3IN3+9rSr/3uvWCpcyYZLHwohlSwFNbGiywE244QqhUPPkee6+t
heqULablclunZxp+Kfp8gj4ztl9QPdCSEdHqEBJcmUymS39TDcRXeln4wncA46rBUuSNtoqq+QCZUOIQ
kV/VswzktX+FhAtuZEsOuj0zyyjdZZvlvMDAwOFUiFTxzNh3BSu8SGAaXSGMWlrtVJLc4Imk2jkq+l79
MSzel6c6r/OguGs30hokkBRxusWF+gfmfmseTJib0a1HmPNoWhkVv02IagSftOcqT09WhZTb/EgPqKWt
1kjsHoYNt8RIPC/6gmpF7UgnVh4dGSIvMzkkzx8VIV0hGk3rR5sMVTSzx6nzWwO7/Wg5yLPofbHP8TGZ
/getHy6qt8SSLv6r3UVt/a05iKv02MgsRkODNhJaI6lUasR0NR1av3cNyoDlVDBcMfuI8Z3gi+OxuNMM
y57rvmpuv7V1nR5YVum+6RUBAhYNRlcaeNJklqLM2E52xnCaX4nhNO8SnbcpXg063uXAiPmfkMMpu20r
cp8nI+W5FZa8oN2U6arEaIddd9sdy8657KTxmOG9oJMoKww3xF6egLAaMwRXD8f8ckN4Fg/uCts25c0O
9htQ1VO1i9KtJa4FI48vv+CP5A5HRPZwsPgpOVOecRD9jIuY51ysueWG2HOz3yRAS6E8xY9MaxJjzW03
fNo5EyvbZiC4yhKiw4ZzicvvlYN2wIHEeKScfPG3E0IVVWOxqFsH4Q/JifqYg8gnhAwhtLpjNqL7IxC4
b/zE6BprbO5UIr7FDkubbPBxzTiIjmnXeW6bMoRx7Q/qUor+/ZfR7kfN2uWNBgi5q43w+wZE/VZY9Wgi
Yh/xkdIpxOIKYeYbBF6mMbDcoGrPzTjEX3VExOVJCK0eB+mZEXAv0skW7DQfzLj3CUG2maWggN/gXWUE
2Y1BUHZoI+WePX64m4Z97an4xyNffNo+C5HlgjcJUJCtN1h52EKxrkGMvzdHIJQoWnHOEvNLzeFVbASn
n7jVwkM8CXF9rRz04jojVz/VLlPngXspF/OuaGL+NS1EtI3C1pZY+J+YWCM/NjV3R/NybOpQIaLMMYs5
3F6HWgdk/yvLTLK2N0cipc4PsjJLeJ3gw73QEE6HuRAe5sAxn9M6PZ97gpwN+21yuRXk+cTxqDacywZA
dJ5cUGs1Edpkjp3tCfDM4/f477P1phcWRenU1qybWxBePuNInwQIWDQLwVvsx8qqDDp2tcThr9UKzDtm
DqdDPBJ4COxzBpKTcQDscjVhmzcQ9gWamFHIxswTbDiVsjGnUhsx9TbIuLkO62ujIM6xTqb9hQpUudN5
urJ02pVFpQ6Z/RFQa4HUhxO4fYqNskL/yq7mZcho/BsiTgnhXGAIu2wSOJsN2xxieWzYH2TD4SgbrsUc
LKiahK3NMdhRvxpOOfwezx/GrlAoFIa03jS7VGO0tTOE+t/aVM1qQW6YNU5eanwy/tJ0HGjdiJxrX2PD
xSisPCtFTJkHospckVQpwfq6cPJ9Cwpu7EVKVQgE2caXRVsmu768RZEp1Zqh81IyNDhdKH3XLxhn9T1P
8d0HPv4lQ4uCyi2RUi3BpstR2Ne4Hnsb1mNzbSKSK1TwPPo+pmfrVwgzRiQFxPqY05Qzq3zXdv4mKEuq
CXX9lEpT6bYpDt7ZI6I9c0zXuuQbZMzKNvyP43fGmx0z+Elu66c4kKwNo6umBxxdADPN/wx1g6GppGWh
9aMHF60ltaCgoKE0KP1GydJa0zG9Q/9kMAIdQFNLnvSYVteTBn1rTd+AhsZ/Abi2D76zmYIDAAAAAElF
TkSuQmCC
</value>
</data>
<data name="UnlockToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
......@@ -214,53 +214,53 @@
<data name="usersToolStripPrintButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALrSURBVDhPjZJ7SBNQGMVnhNoilMIiakikVCb5qKx0SkqT
0pa5R2abUZJpm3OpoVM3H/lKnTnnc81t+ZgrxXe+LZ0olUGilBVRIBklSSimmdpOc+4fA8EffHDvPd85
cL97CethbW19yM3NTeVy1EVLIpFS9Udmq8oGYZ0lM7KibyDIxx1EczN9EYVGaWPUpIRy/g4qsdyZDY7v
SWwxNS8zShtDEcm4vtScgqW6WDTw/X4TiURno7QWG0eyFS1KFGVLppzQbzd5cuJCnOis4JRQhv9iTTQW
qsLxmEdR7rWz277q+A/vqyGefT916Pj+B8X976d48nodW16HAmXcckeS93xv/HkUCQ/rhAqFjibRjJ7m
xWfuc/Vy11s3GwJsyGSryneTutovc6ge/4XyTzPIUhegS2WLkcLdqEu2wLyWgJleK8SXS8FQtiOwohs0
sWbKys7B0RAiHZmYkI39QOGbSeSNfEP266/IGBqHqKEVpSou+mX7Ma02waDKCb65laBKNLggfYxd9s6+
hgBRx3BrxovPSB74iATtB8Q8HUOsvmJ63iK6cxSR7cMIf6hBYsZNeAnzcCapAMej02f1n8XcEMDOr0qP
bBsGt/kVOE1DuFn/HEGP+nFZ3YuAqqcIqOjBpfIusCu6cDJMAHLkXRykBtYazCt4hScwg6p7cUXfwFC2
gV72BHR5C2gPmuEvawRN1mRYMxVt8OAJcYorxE47B5bRrn+JgGskVmX3wsqA6GWtq8bSRsPAmKoOXCyu
g19hreHe7tx42PqFLVpYWFga7QQCk8k0zSxR8iNkmpeBYvUcNU8NX3EFqPmPwKnV4lZNH1iKFpy7pwD5
lgAHvP17jNY1bOLz+Za5uVKXtGKViCdRDPhkl81SkqSgpBSBcb8clOQCuIbGYM8xt9tGz7qYBAcHbxOL
851SpfIYbk7Js/NJkmnPO+nwiEjUeVHpR4x9G8KEzWZvzcmR2GcUyiNEktI0gUCwY1UiEP4BaBZ+C/aV
acAAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALsSURBVDhPjZJ7SBNQGMVnhNoilGJF1JBIqZZU9jBzU1Ka
lLrMPTLbjJLM2pxLjTl185GPUmfObT7W3JbmXDnM0nxrphSVQaKUFFEgGRVJKKaZ2k5z7h+DwB98cO89
3zlwv3sJ/8PNzW0HlUo1eO/z7iWTydnWI6dFZZlwj9LY+UnnERXsB6Kzk7WIUru0POqyYvl/nuox314A
fogPVjk6V9ql5aFLYJ+ba8zCXH0yGkRhv4hE4l67tBT3PTQSM1GW6EGjH7RuVwTwU2K8WNzorFh2+Gxd
EmZq4nBXSNdvplDWLjr+IehMTMDjHxa0ff2Nsr63Y0JVrYWnrUdhWcp8W0bQdE9qKIqkOy3S0lILU2Ea
OixMvbbFN9DPal1pC3Cn0UjagRGL+dMUakd+ourDBPKNKnQYPDCo3oj6TBdM9xIw0UNCapUSbH0rIqs7
wZSbxkiU3XtsIcrB0VHN8HeoX39D8eAXFLz6jLz+EcgamlFhEKBPsxXjRgc8NXghpOg2GAoTjivvYoPn
3hBbgKxtoDnv+UdkPnmPtN53EHcPI9la4q43SGofQkLrAOJumZCedwGB0mIcyVDhQFLupPWzONsCeCU1
uQktAxA0vgT/QT8u3HuGqDt9OGXsQURNNyKqu3CyqgO86g74XJSAlnAV2xmRZpt5gcC4NE5UbQ9OWxvY
+hawKh+CpW0C82YjwjX3wdQ8sK05uhb4C6U4JJBiPWU31263vkTEWTL3dufMwoBYlc2Lxor7toFxDG04
UVaPMLXZdm8/QSrIoRdnXVxcXO12AoHD4TheK9eL4jWmF5Fy4xSj2IgQeTUYJXfAN/fiUt1jcHVNOHZd
B9olCbYFhXfZrUtYIRKJXIuKlN45ZQaZUKF7ElxQOUnPUIKeVQr2jSrQM1XwjRVj037qZbvnvzhER0ev
kctLvLKVWrGgsPxRaIZiPOBKLvzj0y2BDNYue9+ycODxeKsLCxWeeWptvExRkSORSNYtSgTCX4oifbD6
SZWRAAAAAElFTkSuQmCC
</value>
</data>
<data name="cardLocationInputToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="incomingFormToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
......@@ -281,20 +281,20 @@
<data name="cardInfoToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAL0SURBVDhPdVNdSFNhGD5io25MxCIvyunc5vyZDstMLTX8
P/s70/kz/9JU0jTTyhACLbFtZ25zmk5talY3SVdBBF2U/ZCQkBhlFAailZeCBLsR9va+xylJ9MIDh/M+
z/O95/new+ypzJ594aw1LYI1uyPV1iUxy/8m0DO9ox5x/Oy9Fa3jgyJYS6dMZ1tVlVl8qTXDkHpuBJKr
hkBV5oIYQ69PquVXJcghrl+2XeLMngMStaUvlu3zZpwfhcKWSci/OAHqS1NQ0DIBaWh0vGIQ4o0OkOfd
8hKXNH45w0i0ZlOswbqZ03QX9O3TggHbOgmPnn+EZ68/QUatC5JMg5BQMoCT2CFab90kjSAOK7h9WMbx
s2fqRoHruA+atnvC6fnNEzAyMweTj19BSrkFEksHcAInRHP9INfbQKblZ0nLSNRmVlXk3NCikAzY1inI
ahiH9Fq38AmG9ilQcDxIdTbADCBKYxUgM9g3JGqeZbDRpaoZ3qLRc5s9wqhSHQ+13TOw+G0dns4ugkLb
C+JCC2DIu4gssm/JUYvp26x0GoVH41FTXGiGk5j+u8UVeDP/BWI0Pf8YxBU7kG+zMgrO1qUoc21F4Xg7
TSJTWC/ef/+vQZTRsSXncAKZnmcTMAMJftffBDrh5fy2QazuJuAyIfxi5JKGtMItqEocs7FFdojEJgUl
1/dDcuUQvF1YgbmFr5BcahYMaSpcNOE2lKgRboFKwdlNStwDZQk1nEKQbfwT+Ly8DkvLP+CKdQZSKl1w
omJIME6pvrNJGkFMRVuVUOzsO13n9p7BMClQupXy64jOaTBc9kB24yjkNHkgq37MS9w9m0gVivudaBzo
xB1Y07S5fbQTRVcfQPG1h2BEcB1jvrON42tK5BDXL9utAISICZEEH0u/kBun6x5Pq7Z/yK4f+pnZ4PyV
XskvxGtveMJO1RcwweEhyKXTA0m4U/SLkusRhJgRiZSBByPyRIcUJlGovCowKFyN/knYkyKOIshkP8Mw
AX8Aq0epojIVu3gAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALwSURBVDhPdVNrSFNhGD5io/6YiEX+KKdzm3M6FctMzUt4
P7vP+zVNJU0zrQwhcBG2nTO3OZeXbGpWf5J+BRH0o9aFhITEKKMwEK38KUjgn8He3vc4JYleeOBw3ud5
vvc833uYPZVj3hfJchlRrGUsWs0tiVn+N4Ge6R31iBNg761YHR8SxVp7ZTrbanKl2Z/eMALpZ0chtc4N
yZUuiDOa/VItvypBDnEDsu0S55gPSNTWAWWheSv73DiUdExB0YVJUF+chuKOSchAo+M1w5BQ5gA5cohL
moCcYSRaS7XSyG3mt90FffeMYMB2TsGj5x/h2etPkN3ogpTqYUgsH8JJ7BCr5zZJI4gjim8dlhl4b1bT
OBh67oOm655welH7JIzOzsHU41eQVmWFpIohnMAJsYZBkOttINPyXtIyErWFTTY5N7QoJAO2cxpyWyYg
s3FM+ARj9zQoDDxIdTbADCBGwwmQGe0bEjXPMtjoUzSM+Gj0gnaPMKpUx0Nj/ywsfluHp95FUGhvgrjE
ChjyLsQmu0+OWkzfxtFpFB6NJzRLLHAS03+3uAJv5r9AnMb8j0F8qQP5No5RGGx9UZUuXwyOt9MkMoX1
4v33/xqIyxw+uQEnkOl5NhEzkOB3/U2gE17ObxsodTcAlwmx3aMMSENa4RaSyx1epckO0dikoOT6QUit
dcPbhRWYW/gKqRUWwZCmwkUTbkOFGuEWqBQGe7UK90BVTg2nEGQX/wQ+L6/D0vIPuMzNQlqtC07UuAXj
tPrbm6QRxFS0VYmlzoHTTWNbWRgmBUq3UnUN0TsDxkseyGsdh/w2D+Q239ki7p5NpArH/U4qG+rFHVjT
dDn9tBOmKw+g9OpDKEMYelz+M60TayrkEDcg260ghIgJk4QeyzxfEK/rn8iot3/Ia3b/zGlx/sqs5RcS
tNc9Eaeai5nQyDDk0unBJNwp+kXJ9QhCzIhEquCDUYWiQ4pqUbi8LjgkUo3+KdiTIo4iyGQ/wzBBfwAi
LKlm6hKINQAAAABJRU5ErkJggg==
</value>
</data>
<data name="cloackRoomToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
......@@ -330,20 +330,20 @@
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="orgMealToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
......@@ -356,6 +356,46 @@
n+n0FM+7AYOfXb63fqPCAAAAAElFTkSuQmCC
</value>
</data>
<data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="cropImageToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARcSURBVFhHvVdrbJNlGN0P3T8T/bH92i8TYox/FEFR2Lqu
LYxIZoiJBkiMlxg1MeIlExM6RjcvDILBDQjCQBybaBbc3Np1gzmKoKxbd+kY2xgUxChmvazDoAmgHp/z
fK1xs/QyGk9ycvpe9p7zPd/7tu9y/oU7LA7X18VVnShyuEFlm/3GcNaQu7ZhDLatHvCz0WXgLpqeDEzD
MxlWZZv9xnBWkLuucULNF29o4dr3sFOfvKS6C8sqO9BzLoT7K7tV2Y5XJBssFlpqPFi0oZXmj8YD6JN/
98NVLLG7cGwihIc+8Kg+VuHCqUsz8FyI3B7PR9AjPBGIwlytVS0UFgj1FeSZJFnPhSge2ehE51gQi7Z8
q7pskwsrdvtgq+u7LVrrvDDt6EX3ZAQmhwa4N25O5JulAscvSgXkiV2jQSzZdgqus0EUbe5A2X4/yuqH
581Ve4ewcs8ArDt9OHqOAdwMkG9YG8grKv/8BPdAoRi2nQli6fbTqpy8/P2ujGl7r1O5XFjs6BDjaVgk
QMd44gDc5Q8IbRz8akSefIdXNTa5VGjJkKXc7VbZ7VzDeTYC665B1UQBeM4ZYgEHm4eDKKn1qcYm3yfk
H6TLgvg5f/idFj1FraNhrNgzpJooQBz5PCZfDE1J2gFVttlvDKeF3DUx89hRK+P+OjISwcq9ftXkAarc
aBqc0rRUttlvDKfEP+aL31VzHrWFXKPZH8Kq+hHVlAEafFN4Yp9fNYMAicx5zgu0qv4wnjwwqpqsqhrg
oC+IMplMTTPArcx5zvW1Ng2HsfqzcdWkAcxieKA/iNUHx1TZZr8xnBDJzAkNcGgwjKcaJlRTBtgnxpxM
TREglTmhAT4V46cbJ1VTBvikL4RnmiZVkwRIx5zQNfcPRLDm8HnVZA+lk3d7w1h7OKB6i8npmhO6Zr0Y
r/vyomrKADu9ETzbfEk1weRMzAmjqj5jTWrKALXeaTx35LLqnMmZmhNGVfun8bysSU0Z4GMxfrH1J1Wz
/JCwX6jXKGvN8UzMCV1zV38UL7T8qJoywEe9UbzcdkW1eLOLk43vdjGPfb2ma07omnVi/FLrz6ppBJjB
q85fVM0SQH/V1FzvcJmYE7pmbd8MXmm/opo0QElVB7b1XsVr7ilVvgL+pC4sn5c5IWtKgIFreP1oWJVt
9hvDs6EBtnp/xfquELZIBZba22CSS4pJgij5OUMWVrpknXY8LmtR2WYVEl35NcCH3mt481gEdk8UzsB1
tAduZIFcJ84bcF/+M/4qZl35YwF+Q3lPVPn2N1G81Z1dviFsHL8uX8l6wvIMawP5lmo3agZvwn76d1R8
nx3a53CjsH7sj4R7Ic8kl1OGYCWyRbPDBdOmdhRVyH4S5cmiOS/C9DSsDcQvpyZhoovmfFhqlZvx9jN/
wdF/U5Vt6bcJ6TVrD8Qvp0zF0mSDCwrLD52MV5VqdThn2C+kV7b/8f0P5la1RPig8G7h/4JEVaX5nUJB
Ts7foVTHlGY8b5UAAAAASUVORK5CYII=
</value>
</data>
<metadata name="searchTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>307, 17</value>
</metadata>
......
......@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MoyaAdminUI</RootNamespace>
<AssemblyName>MoyaAdminUI</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
......@@ -84,6 +84,12 @@
<Compile Include="ComputerPlaceGridSettings.designer.cs">
<DependentUpon>ComputerPlaceGridSettings.cs</DependentUpon>
</Compile>
<Compile Include="ImageCropForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ImageCropForm.Designer.cs">
<DependentUpon>ImageCropForm.cs</DependentUpon>
</Compile>
<Compile Include="IncomingForm.cs">
<SubType>Form</SubType>
</Compile>
......@@ -97,12 +103,24 @@
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="MoyaUtils.cs" />
<Compile Include="OCRForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="OCRForm.Designer.cs">
<DependentUpon>OCRForm.cs</DependentUpon>
</Compile>
<Compile Include="OrgMealCounter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="OrgMealCounter.Designer.cs">
<DependentUpon>OrgMealCounter.cs</DependentUpon>
</Compile>
<Compile Include="PrintPlaceStickersForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PrintPlaceStickersForm.Designer.cs">
<DependentUpon>PrintPlaceStickersForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Scanner.cs" />
......@@ -133,15 +151,24 @@
<EmbeddedResource Include="ComputerPlaceGridSettings.resx">
<DependentUpon>ComputerPlaceGridSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ImageCropForm.resx">
<DependentUpon>ImageCropForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="IncomingForm.resx">
<DependentUpon>IncomingForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="OCRForm.resx">
<DependentUpon>OCRForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="OrgMealCounter.resx">
<DependentUpon>OrgMealCounter.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PrintPlaceStickersForm.resx">
<DependentUpon>PrintPlaceStickersForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
......@@ -150,6 +177,7 @@
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="ShowCardInformation.resx">
<DependentUpon>ShowCardInformation.cs</DependentUpon>
......@@ -191,11 +219,26 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ImageResizer\ImageResizer\ImageResizer\ImageResizer.csproj">
<Project>{e660fa4f-b216-46de-b387-dde59bbaafe6}</Project>
<Name>ImageResizer</Name>
</ProjectReference>
<ProjectReference Include="..\MoyaAdminLib\MoyaAdminLib.csproj">
<Project>{095ce28f-5b53-4203-85c6-3a9afd486407}</Project>
<Name>MoyaAdminLib</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<COMReference Include="bpac">
<Guid>{90359D74-B7D9-467F-B938-3883F4CAB582}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>False</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>$(SolutionDir)/../../../\AutoUpdate\src\AutoPublish\bin\Debug\AutoPublish.exe $(ConfigurationName) $(ProjectName) $(SolutionDir) $(TargetPath)</PostBuildEvent>
......
namespace MoyaAdminUI
{
partial class OCRForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.panel1 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.xNumericUpDown = new System.Windows.Forms.NumericUpDown();
this.yNumericUpDown = new System.Windows.Forms.NumericUpDown();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.heigthNumericUpDown = new System.Windows.Forms.NumericUpDown();
this.widthNumericUpDown = new System.Windows.Forms.NumericUpDown();
this.firstnamesTextBox = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.lastnameTextBox = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.birthdayTextBox = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.genderTextBox = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.xNumericUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.yNumericUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.heigthNumericUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.widthNumericUpDown)).BeginInit();
this.SuspendLayout();
//
// openFileDialog1
//
this.openFileDialog1.FileName = "openFileDialog1";
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(831, 308);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// panel1
//
this.panel1.Controls.Add(this.genderTextBox);
this.panel1.Controls.Add(this.label8);
this.panel1.Controls.Add(this.label7);
this.panel1.Controls.Add(this.birthdayTextBox);
this.panel1.Controls.Add(this.label6);
this.panel1.Controls.Add(this.lastnameTextBox);
this.panel1.Controls.Add(this.label5);
this.panel1.Controls.Add(this.firstnamesTextBox);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.label4);
this.panel1.Controls.Add(this.heigthNumericUpDown);
this.panel1.Controls.Add(this.widthNumericUpDown);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.yNumericUpDown);
this.panel1.Controls.Add(this.xNumericUpDown);
this.panel1.Controls.Add(this.button1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel1.Location = new System.Drawing.Point(0, 308);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(831, 151);
this.panel1.TabIndex = 1;
//
// button1
//
this.button1.Location = new System.Drawing.Point(332, 17);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "OCR";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// xNumericUpDown
//
this.xNumericUpDown.Location = new System.Drawing.Point(12, 20);
this.xNumericUpDown.Maximum = new decimal(new int[] {
100000,
0,
0,
0});
this.xNumericUpDown.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.xNumericUpDown.Name = "xNumericUpDown";
this.xNumericUpDown.Size = new System.Drawing.Size(66, 20);
this.xNumericUpDown.TabIndex = 1;
this.xNumericUpDown.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
//
// yNumericUpDown
//
this.yNumericUpDown.Location = new System.Drawing.Point(100, 20);
this.yNumericUpDown.Maximum = new decimal(new int[] {
1000000,
0,
0,
0});
this.yNumericUpDown.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.yNumericUpDown.Name = "yNumericUpDown";
this.yNumericUpDown.Size = new System.Drawing.Size(66, 20);
this.yNumericUpDown.TabIndex = 2;
this.yNumericUpDown.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 4);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(12, 13);
this.label1.TabIndex = 3;
this.label1.Text = "x";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(97, 4);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(12, 13);
this.label2.TabIndex = 4;
this.label2.Text = "y";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(257, 4);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(36, 13);
this.label3.TabIndex = 8;
this.label3.Text = "heigth";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(172, 4);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(32, 13);
this.label4.TabIndex = 7;
this.label4.Text = "width";
//
// heigthNumericUpDown
//
this.heigthNumericUpDown.Location = new System.Drawing.Point(260, 20);
this.heigthNumericUpDown.Maximum = new decimal(new int[] {
1000000,
0,
0,
0});
this.heigthNumericUpDown.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.heigthNumericUpDown.Name = "heigthNumericUpDown";
this.heigthNumericUpDown.Size = new System.Drawing.Size(66, 20);
this.heigthNumericUpDown.TabIndex = 6;
this.heigthNumericUpDown.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
//
// widthNumericUpDown
//
this.widthNumericUpDown.Location = new System.Drawing.Point(172, 20);
this.widthNumericUpDown.Maximum = new decimal(new int[] {
10000000,
0,
0,
0});
this.widthNumericUpDown.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.widthNumericUpDown.Name = "widthNumericUpDown";
this.widthNumericUpDown.Size = new System.Drawing.Size(66, 20);
this.widthNumericUpDown.TabIndex = 5;
this.widthNumericUpDown.Value = new decimal(new int[] {
1,
0,
0,
-2147483648});
//
// firstnamesTextBox
//
this.firstnamesTextBox.Location = new System.Drawing.Point(77, 61);
this.firstnamesTextBox.Name = "firstnamesTextBox";
this.firstnamesTextBox.ReadOnly = true;
this.firstnamesTextBox.Size = new System.Drawing.Size(100, 20);
this.firstnamesTextBox.TabIndex = 9;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(15, 64);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(41, 13);
this.label5.TabIndex = 10;
this.label5.Text = "Etunimi";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(15, 92);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(50, 13);
this.label6.TabIndex = 12;
this.label6.Text = "Sukunimi";
//
// lastnameTextBox
//
this.lastnameTextBox.Location = new System.Drawing.Point(77, 89);
this.lastnameTextBox.Name = "lastnameTextBox";
this.lastnameTextBox.ReadOnly = true;
this.lastnameTextBox.Size = new System.Drawing.Size(100, 20);
this.lastnameTextBox.TabIndex = 11;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(188, 64);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(67, 13);
this.label7.TabIndex = 14;
this.label7.Text = "Syntymäaika";
//
// birthdayTextBox
//
this.birthdayTextBox.Location = new System.Drawing.Point(261, 61);
this.birthdayTextBox.Name = "birthdayTextBox";
this.birthdayTextBox.ReadOnly = true;
this.birthdayTextBox.Size = new System.Drawing.Size(100, 20);
this.birthdayTextBox.TabIndex = 13;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(188, 92);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(54, 13);
this.label8.TabIndex = 15;
this.label8.Text = "Sukupuoli";
//
// genderTextBox
//
this.genderTextBox.Location = new System.Drawing.Point(261, 89);
this.genderTextBox.Name = "genderTextBox";
this.genderTextBox.ReadOnly = true;
this.genderTextBox.Size = new System.Drawing.Size(100, 20);
this.genderTextBox.TabIndex = 16;
//
// OCRForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(831, 459);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.panel1);
this.Name = "OCRForm";
this.Text = "OCRForm";
this.Load += new System.EventHandler(this.OCRForm_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.xNumericUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.yNumericUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.heigthNumericUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.widthNumericUpDown)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.NumericUpDown yNumericUpDown;
private System.Windows.Forms.NumericUpDown xNumericUpDown;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.NumericUpDown heigthNumericUpDown;
private System.Windows.Forms.NumericUpDown widthNumericUpDown;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox birthdayTextBox;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox lastnameTextBox;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox firstnamesTextBox;
private System.Windows.Forms.TextBox genderTextBox;
}
}
\ No newline at end of file
//using asprise_ocr_api;
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;
namespace MoyaAdminUI
{
public partial class OCRForm : Form
{
public OCRForm()
{
InitializeComponent();
}
private void OCRForm_Load(object sender, EventArgs e)
{
openFileDialog1.Filter = "image files (*.jpg, *.png)|*.jpg;*.png";
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
pictureBox1.ImageLocation = openFileDialog1.FileName;
}
}
private void button1_Click(object sender, EventArgs e)
{
/*
AspriseOCR.SetUp();
AspriseOCR ocr = new AspriseOCR();
ocr.StartEngine("eng", AspriseOCR.SPEED_FAST);
string s = ocr.Recognize(pictureBox1.ImageLocation, -1, Convert.ToInt32(xNumericUpDown.Value), Convert.ToInt32(yNumericUpDown.Value), Convert.ToInt32(widthNumericUpDown.Value), Convert.ToInt32(heigthNumericUpDown.Value), AspriseOCR.RECOGNIZE_TYPE_TEXT, AspriseOCR.OUTPUT_FORMAT_PLAINTEXT);
Console.WriteLine("OCR Result: " + s);
// process more images here ...
ocr.StopEngine();
if(s.Contains("1"))
{
int start = s.IndexOf("1") + 2;
int end = s.IndexOf('\n', start);
int length = end - start;
string lastname = "";
if(length > 0 && start >= 0)
lastname = s.Substring(start, length);
lastnameTextBox.Text = lastname;
}*/
/*
if (s.Contains("2"))
{
int start = s.IndexOf("2") + 2;
int end = s.IndexOf('\n', start);
int length = end - start;
string firstnames = "";
if (length > 0 && start >= 0)
firstnames = s.Substring(start, length);
firstnamesTextBox.Text = firstnames;
*/
/*
start = end++;
end = s.IndexOf('\n', start);
length = 10;
string date = s.Substring(start, length);
if (date.Contains("?"))
{
start = s.IndexOf("?", start) +2;
end = s.IndexOf('\n', start);
length = 1;
string gender = s.Substring(start, length);
if (gender != null && gender != "" && gender.ToUpper() == "N")
genderTextBox.Text = "Nainen";
if (gender != null && gender != "" && gender.ToUpper() == "M")
genderTextBox.Text = "Mies";
}
birthdayTextBox.Text = date;
*/
}
/*
if(s.Contains("3"))
{
int start = s.IndexOf("3") + 2;
int end = s.IndexOf('\n', start);
int length = 10;
string date = s.Substring(start, length);
if (date.Contains("?"))
{
start = s.IndexOf("?", start) + 2;
end = s.IndexOf('\n', start);
length = 1;
string gender = s.Substring(start, length);
if (gender != null && gender != "" && gender.ToUpper() == "N")
genderTextBox.Text = "Nainen";
if (gender != null && gender != "" && gender.ToUpper() == "M")
genderTextBox.Text = "Mies";
}
birthdayTextBox.Text = date;
}
*/
//}
/*
private void label2_Click(object sender, EventArgs e)
{
}
private void birthdayTextBox_TextChanged(object sender, EventArgs e)
{
}*/
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
\ No newline at end of file
namespace MoyaAdminUI
{
partial class PrintPlaceStickersForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.printButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.showNickCheckBox = new System.Windows.Forms.CheckBox();
this.showCodeCheckBox = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// printButton
//
this.printButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.printButton.Location = new System.Drawing.Point(55, 84);
this.printButton.Name = "printButton";
this.printButton.Size = new System.Drawing.Size(75, 23);
this.printButton.TabIndex = 0;
this.printButton.Text = "Print";
this.printButton.UseVisualStyleBackColor = true;
this.printButton.Click += new System.EventHandler(this.printButton_Click);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.Location = new System.Drawing.Point(136, 84);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 23);
this.cancelButton.TabIndex = 1;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
//
// showNickCheckBox
//
this.showNickCheckBox.AutoSize = true;
this.showNickCheckBox.Location = new System.Drawing.Point(13, 13);
this.showNickCheckBox.Name = "showNickCheckBox";
this.showNickCheckBox.Size = new System.Drawing.Size(70, 17);
this.showNickCheckBox.TabIndex = 2;
this.showNickCheckBox.Text = "Print nick";
this.showNickCheckBox.UseVisualStyleBackColor = true;
//
// showCodeCheckBox
//
this.showCodeCheckBox.AutoSize = true;
this.showCodeCheckBox.Location = new System.Drawing.Point(13, 37);
this.showCodeCheckBox.Name = "showCodeCheckBox";
this.showCodeCheckBox.Size = new System.Drawing.Size(111, 17);
this.showCodeCheckBox.TabIndex = 3;
this.showCodeCheckBox.Text = "Print access code";
this.showCodeCheckBox.UseVisualStyleBackColor = true;
//
// PrintPlaceStickersForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(216, 119);
this.Controls.Add(this.showCodeCheckBox);
this.Controls.Add(this.showNickCheckBox);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.printButton);
this.Name = "PrintPlaceStickersForm";
this.Text = "PrintPlaceStickersForm";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button printButton;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.CheckBox showNickCheckBox;
private System.Windows.Forms.CheckBox showCodeCheckBox;
}
}
\ No newline at end of file
using MoyaAdminLib;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MoyaAdminUI
{
public partial class PrintPlaceStickersForm : Form
{
private string placeLabel = "paikkatarra.lbx";
private List<ComputerPlace> places;
public PrintPlaceStickersForm(List<ComputerPlace> places)
{
InitializeComponent();
this.places = places;
}
private void printButton_Click(object sender, EventArgs e)
{
if (!File.Exists(placeLabel))
{
MessageBox.Show("Cannot find print template");
return;
}
foreach (ComputerPlace place in places)
{
bpac.DocumentClass doc = null;
try
{
doc = new bpac.DocumentClass();
}
catch (Exception ex)
{
MessageBox.Show("Could not print place label. Place: " + place.Name);
Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
return;
}
//doc.SetPrinter(Objects.Conf.BoxLabelPrinter, false);
if (doc != null)
{
//doc.Open(Path.Combine(Properties.Settings.Default.dd, cloakroomLabel));
doc.Open(placeLabel);
doc.GetObject("place").Text = place.Name;
if(showNickCheckBox.Checked && place.User != null)
doc.GetObject("group").Text = place.User.Nick;
else
doc.GetObject("group").Text = "";
//if(showCodeCheckBox.Checked)
doc.GetObject("code").Text = "";
doc.StartPrint("", bpac.PrintOptionConstants.bpoDefault);
if(!doc.PrintOut(1, bpac.PrintOptionConstants.bpoDefault))
{
Console.WriteLine("Error occurred: " + doc.ErrorCode.ToString());
}
doc.EndPrint();
doc.Close();
}
}
this.DialogResult = DialogResult.OK;
this.Close();
}
private void cancelButton_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
......@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.11")]
[assembly: AssemblyFileVersion("1.0.11")]
[assembly: AssemblyVersion("1.0.21")]
[assembly: AssemblyFileVersion("1.0.21")]
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18408
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MoyaAdminUI.Properties
{
namespace MoyaAdminUI.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
......@@ -22,48 +22,40 @@ namespace MoyaAdminUI.Properties
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MoyaAdminUI.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set
{
set {
resourceCulture = value;
}
}
......
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18449
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
......@@ -12,7 +12,7 @@ namespace MoyaAdminUI.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......
......@@ -95,16 +95,20 @@ namespace MoyaAdminUI
User user = (User)usersListView.SelectedItems[0].Tag;
RestClient client = new RestClient(Properties.Settings.Default.ApiURL);
string json = client.MakeRequest("user/card/" + user.EventUserId);
var ser = new JavaScriptSerializer();
Card card = ser.Deserialize<Card>(json);
pictureBox1.ImageLocation = RestClient.GetRequestURL(Properties.Settings.Default.ApiURL, "card/GetImage/" + card.id);
if (card.state == Card.CARD_STATE_PRINTED)
CardState.Text = card.state + " in " + card.GetCardPlace();
else
CardState.Text = card.state;
try {
string json = client.MakeRequest("user/card/" + user.EventUserId);
var ser = new JavaScriptSerializer();
Card card = ser.Deserialize<Card>(json);
pictureBox1.ImageLocation = RestClient.GetRequestURL(Properties.Settings.Default.ApiURL, "card/GetImage/" + card.id);
if (card.state == Card.CARD_STATE_PRINTED)
CardState.Text = card.state + " in " + card.GetCardPlace();
else
CardState.Text = card.state;
}catch
{
Console.WriteLine("Failed to fetch user card");
}
/*
if (card.state == Card.CARD_STATE_PRINTED)
{
......
......@@ -22,7 +22,7 @@
Name "MoyaAdminUI moya v1_00_11"
Name "MoyaAdminUI moya v1_00_21"
; DO NOT CHANGE OutFile "installer_temp.exe" !!! AutoPublish requires this.
......@@ -198,7 +198,7 @@ FunctionEnd
Section "!MoyaAdminUI moya stable v1_00_11" SecMain
Section "!MoyaAdminUI moya stable v1_00_21" SecMain
SetShellVarContext current
......@@ -212,9 +212,9 @@ Section "!MoyaAdminUI moya stable v1_00_11" SecMain
SetOverwrite On
File /oname=autoupdate.xml "I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\autoupdate.moya.xml"
File /oname=autoupdate.xml "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\autoupdate.moya.xml"
File /oname=MoyaAdminUI.exe "I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminUI.exe"
File /oname=MoyaAdminUI.exe "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminUI.exe"
File autoupdate.crt
......@@ -224,12 +224,15 @@ Section "!MoyaAdminUI moya stable v1_00_11" SecMain
; that is referenced to the main project.
File "I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.dll"
File "I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.dll"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.dll"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\ImageResizer.dll"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\Interop.bpac.dll"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.dll"
File "I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminUI.pdb"
File "I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.pdb"
File "I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.pdb"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminUI.pdb"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.pdb"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\ImageResizer.pdb"
File "C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.pdb"
......@@ -317,12 +320,15 @@ Section "Uninstall"
; that is referenced to the main project.
Delete "$INSTDIR\I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.dll"
Delete "$INSTDIR\I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.dll"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.dll"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\ImageResizer.dll"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\Interop.bpac.dll"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.dll"
Delete "$INSTDIR\I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminUI.pdb"
Delete "$INSTDIR\I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.pdb"
Delete "$INSTDIR\I:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.pdb"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminUI.pdb"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\MoyaAdminLib.pdb"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\ImageResizer.pdb"
Delete "$INSTDIR\C:\devel\proj\moya-info-tools\MoyaAdmin\MoyaAdminUI\MoyaAdminUI\bin\Debug\AutoUpdateLib.pdb"
......
using System;
using System.Collections.Generic;
using System.Text;
using ConfLib2;
using System.ComponentModel;
namespace RamaSignup
{
public class Config : ConfObject
{
public Config()
{
}
//Username
private string sqlUsername;
[
ConfValueAttribute(1, 32),
Description("Database username"),
Category("Database"),
DefaultValue((string)"vector_ilmo")
]
public string SqlUsername { get { return sqlUsername; } set { sqlUsername = value; } }
//Password
private string sqlPassword;
[
ConfValueAttribute(1, 64),
Description("Database password"),
Category("Database"),
DefaultValue((string)"ramakukka")
]
public string SqlPassword { get { return sqlPassword; } set { sqlPassword = value; } }
private string sqlDatabase;
[
ConfValueAttribute(1, 32),
Description("Database name"),
Category("Database"),
DefaultValue((string)"vector_ilmo_devel")
]
public string SqlDatabase { get { return sqlDatabase; } set { sqlDatabase = value; } }
private string sqlHost;
[
ConfValueAttribute(1, 64),
Description("Database address"),
Category("Database"),
DefaultValue((string)"sql.f-solutions.net")
]
public string SqlHost { get { return sqlHost; } set { sqlHost = value; } }
private int defaultGroup;
[
ConfValueAttribute(0, 65000),
Description("Default group to new player"),
Category("Defaults"),
DefaultValue((int)1)
]
public int DefaultGroup { get { return defaultGroup; } set { defaultGroup = value; } }
}
}
......@@ -8,16 +8,19 @@ using System.Text;
using System.Windows.Forms;
using WebCam;
using ImageFilters;
using NpgsqlAltPool;
using DynamicPg;
using Npgsql;
using System.IO;
using MoyaAdminLib;
using System.Diagnostics;
using ThermoPrinterLibrary;
namespace RamaSignup
{
public partial class Form1 : Form
{
ThermoPrinter thermoPrinter;
public Form1()
{
RestClient.ApiApplicationKey = Properties.Settings.Default.ApiApplicationKey;
......@@ -55,10 +58,23 @@ namespace RamaSignup
this.btnSave.Enabled = true;
}*/
public void SetPrinter(ThermoPrinter.Models model)
{
thermoPrinter = new ThermoPrinter(model);
try
{
thermoPrinter.Start(Properties.Settings.Default.printerPort);
thermoPrinter.SetBarcodeWidth(ThermoPrinter.BarcodeWidths.Small);
thermoPrinter.SetCharacterAlignment(ThermoPrinter.CharacterAlignments.Center);
thermoPrinter.SetPositionHRI(ThermoPrinter.HRIPrintingPositions.Below);
}
catch
{
thermoPrinter = null;
}
}
private void Form1_Load(object sender, EventArgs e)
{
......@@ -67,14 +83,13 @@ namespace RamaSignup
Application.ExitThread(); //program is required to close by autoupdate (probably updated)
return;
}
if (Debugger.IsAttached)
this.WindowState = FormWindowState.Normal;
}
userLoginControl1.SetPrinter += SetPrinter;
}
bool pictureTaken;
......@@ -136,7 +151,10 @@ namespace RamaSignup
}
else
{
if (thermoPrinter != null)
thermoPrinter.Stop();
}
}
private void Form1_Deactivate(object sender, EventArgs e)
......@@ -152,9 +170,15 @@ namespace RamaSignup
allowShutdown = true;
Application.Exit();
return;
} else if (e.Alt && e.KeyCode == Keys.F5)
{
//userDetailsEditor1.SetPrinter(ThermoPrinterLibrary.ThermoPrinter.Models.IDP3210);
//MessageBox.Show("Printteri: IDP3210");
}
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.Control && e.KeyCode == Keys.S)
......@@ -165,12 +189,11 @@ namespace RamaSignup
}
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
/* if (e.Button == MouseButtons.Right)
{/*
if (e.Button == MouseButtons.Right)
{
allowShutdown = true;
Application.Exit();
......@@ -179,7 +202,7 @@ namespace RamaSignup
}
private void button1_Click(object sender, EventArgs e)
{
allowShutdown = true;
......@@ -190,6 +213,7 @@ namespace RamaSignup
{
userLoginControl1.Visible = false;
userDetailsEditor1.LoadUser(userLoginControl1.CurrentUser);
userDetailsEditor1.ThermoPrinter = thermoPrinter;
userLoginControl1.Clear();
userDetailsEditor1.Visible = true;
//userLoginControl1.CurrentUser;
......
......@@ -120,65 +120,65 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnFinnish.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAH0AAABMCAYAAABAprgtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAASFJREFUeF7tmqEN
AkEUBbcp+qAYxEmKgB4IGnmSFjA0sxgE4jkIkDczyZgn9pIb+8f8Ey7X+xyb/UddDuvzdXnF6ECMDsTo
QIwOxOhAjA7E6ECMDsToQIwOxOhAjA7E6ECMDsToQIwOxOhAjA7E6ECMDsToQIwOxOhAjA7E6ECMDmSc
19v8B5fjGsO943Z3it+iO9LP0nLjqN3GUbuNo3YbR+02jtptHLXbOGq3cdRu46jdxlG7jaN2G0ftNo7a
bRy12zhqt3HUbuOo3cZRu42jdpsO536hh5Hf0xNoIEYHYnQgRgdidCBGB2J0IEYHYnQgRgdidCBGB2J0
IEYHYnQgRgdidCBGB2J0IEYHYnQgRgdidCBGB2J0IEYHYnQccz4AtRiZOblFrIsAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAAH0AAABMCAYAAABAprgtAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABIUlEQVR4Xu2aoQ0CQRQFtyn6oBjESYqA
HggaeZIWMDSzGATiOQiQNzPJmCf2khv7x/wTLtf7HJv9R10O6/N1ecXoQIwOxOhAjA7E6ECMDsToQIwO
xOhAjA7E6ECMDsToQIwOxOhAjA7E6ECMDsToQIwOxOhAjA7E6ECMDsToQIwOZJzX2/wHl+Maw73jdneK
36I70s/ScuOo3cZRu42jdhtH7TaO2m0ctds4ardx1G7jqN3GUbuNo3YbR+02jtptHLXbOGq3cdRu46jd
xlG7jaN2mw7nfqGHkd/TE2ggRgdidCBGB2J0IEYHYnQgRgdidCBGB2J0IEYHYnQgRgdidCBGB2J0IEYH
YnQgRgdidCBGB2J0IEYHYnQgRgdidBxzPgC1GJk5uUWsiwAAAABJRU5ErkJggg==
</value>
</data>
<data name="btnEnglish.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>
\ No newline at end of file
......@@ -17,8 +17,6 @@
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
<IsWebBootstrapper>false</IsWebBootstrapper>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
......@@ -31,34 +29,10 @@
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>AnyCPU</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
......@@ -83,6 +57,29 @@
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<ItemGroup>
<Reference Include="AutoUpdateLib">
<HintPath>Resources\AutoUpdateLib.dll</HintPath>
</Reference>
<Reference Include="ConfLib2, Version=1.0.1.23606, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>deps\ConfLib2.dll</HintPath>
</Reference>
<Reference Include="DynamicPg, Version=1.3.6.41028, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>deps\DynamicPg.dll</HintPath>
</Reference>
<Reference Include="Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>deps\Mono.Security.dll</HintPath>
</Reference>
<Reference Include="Mono.Security.Protocol.Tls, Version=1.0.1528.33423, Culture=neutral, PublicKeyToken=4c884638a2b03853">
<SpecificVersion>False</SpecificVersion>
<HintPath>deps\Mono.Security.Protocol.Tls.dll</HintPath>
</Reference>
<Reference Include="Npgsql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>deps\Npgsql.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
......@@ -205,11 +202,26 @@
<Project>{095ce28f-5b53-4203-85c6-3a9afd486407}</Project>
<Name>MoyaAdminLib</Name>
</ProjectReference>
<ProjectReference Include="..\ThermoPrinterLibrary\ThermoPrinterLibrary\ThermoPrinterLibrary.csproj">
<Project>{25113a41-1991-4d34-95c0-47c238037a39}</Project>
<Name>ThermoPrinterLibrary</Name>
</ProjectReference>
<ProjectReference Include="..\WebCamLib\WebCamLib.vcxproj">
<Project>{fd48314a-9615-4ba6-913a-03787fb2dd30}</Project>
<Name>WebCamLib</Name>
</ProjectReference>
<ProjectReference Include="..\WebCamWrapper\WebCamWrapper.csproj">
<Project>{cc5d5149-0092-4508-ac34-2abe1468a1c9}</Project>
<Name>WebCamWrapper</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="deps\ConfLib2.dll" />
<Content Include="deps\DynamicPg.dll" />
<Content Include="deps\Mono.Security.dll" />
<Content Include="deps\Mono.Security.Protocol.Tls.dll" />
<Content Include="deps\Npgsql.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
......

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoyaSignup", "MoyaSignup.csproj", "{7264F333-9419-4208-AA6D-223D4CE19C05}"
EndProject
......@@ -11,84 +11,34 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebCamLib", "..\WebCamLib\W
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebCamWrapper", "..\WebCamWrapper\WebCamWrapper.csproj", "{CC5D5149-0092-4508-AC34-2ABE1468A1C9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThermoPrinterLibrary", "..\ThermoPrinterLibrary\ThermoPrinterLibrary\ThermoPrinterLibrary.csproj", "{25113A41-1991-4D34-95C0-47C238037A39}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|x64.ActiveCfg = Debug|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|x86.ActiveCfg = Debug|x86
{7264F333-9419-4208-AA6D-223D4CE19C05}.Debug|x86.Build.0 = Debug|x86
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|Any CPU.Build.0 = Release|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|Win32.ActiveCfg = Release|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|x64.ActiveCfg = Release|Any CPU
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|x86.ActiveCfg = Release|x86
{7264F333-9419-4208-AA6D-223D4CE19C05}.Release|x86.Build.0 = Release|x86
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|Any CPU.Build.0 = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|Win32.ActiveCfg = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|x64.ActiveCfg = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|x86.ActiveCfg = Debug|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|Any CPU.ActiveCfg = Release|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|Any CPU.Build.0 = Release|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|Win32.ActiveCfg = Release|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|x64.ActiveCfg = Release|Any CPU
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|x86.ActiveCfg = Debug|x86
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Debug|x86.Build.0 = Debug|x86
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|x86.ActiveCfg = Release|x86
{095CE28F-5B53-4203-85C6-3A9AFD486407}.Release|x86.Build.0 = Release|x86
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|Any CPU.ActiveCfg = Debug|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|Win32.ActiveCfg = Debug|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|Win32.Build.0 = Debug|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|x64.ActiveCfg = Debug|x64
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|x64.Build.0 = Debug|x64
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|x86.ActiveCfg = Debug|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Debug|x86.Build.0 = Debug|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|Any CPU.ActiveCfg = Release|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|Mixed Platforms.Build.0 = Release|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|Win32.ActiveCfg = Release|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|Win32.Build.0 = Release|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|x64.ActiveCfg = Release|x64
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|x64.Build.0 = Release|x64
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|x86.ActiveCfg = Release|Win32
{FD48314A-9615-4BA6-913A-03787FB2DD30}.Release|x86.Build.0 = Release|Win32
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|x64.ActiveCfg = Debug|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|x86.ActiveCfg = Debug|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|Any CPU.Build.0 = Release|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|Win32.ActiveCfg = Release|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|x64.ActiveCfg = Release|Any CPU
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|x86.ActiveCfg = Debug|x86
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Debug|x86.Build.0 = Debug|x86
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|x86.ActiveCfg = Release|x86
{CC5D5149-0092-4508-AC34-2ABE1468A1C9}.Release|x86.Build.0 = Release|x86
{25113A41-1991-4D34-95C0-47C238037A39}.Debug|x86.ActiveCfg = Debug|x86
{25113A41-1991-4D34-95C0-47C238037A39}.Debug|x86.Build.0 = Debug|x86
{25113A41-1991-4D34-95C0-47C238037A39}.Release|x86.ActiveCfg = Release|x86
{25113A41-1991-4D34-95C0-47C238037A39}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.34209
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
......@@ -12,7 +12,7 @@ namespace RamaSignup.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
......@@ -25,19 +25,7 @@ namespace RamaSignup.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://10.220.105.252:8080/MoyaWeb")]
public string ApiURL {
get {
return ((string)(this["ApiURL"]));
}
set {
this["ApiURL"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("8krAyTEpzP6QnwzkxGek")]
[global::System.Configuration.DefaultSettingValueAttribute("myapiclientid")]
public string ApiApplicationKey {
get {
return ((string)(this["ApiApplicationKey"]));
......@@ -49,7 +37,7 @@ namespace RamaSignup.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("tapsa")]
[global::System.Configuration.DefaultSettingValueAttribute("myapiuser")]
public string ApiUser {
get {
return ((string)(this["ApiUser"]));
......@@ -61,7 +49,7 @@ namespace RamaSignup.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("6uGbN6GiQqbZy1n,p3hg")]
[global::System.Configuration.DefaultSettingValueAttribute("myapikey")]
public string ApiPass {
get {
return ((string)(this["ApiPass"]));
......@@ -94,5 +82,53 @@ namespace RamaSignup.Properties {
this["Port"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("TMT188II")]
public string ThermoPrinter {
get {
return ((string)(this["ThermoPrinter"]));
}
set {
this["ThermoPrinter"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Mobius")]
public string Camera {
get {
return ((string)(this["Camera"]));
}
set {
this["Camera"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("COM1")]
public string printerPort {
get {
return ((string)(this["printerPort"]));
}
set {
this["printerPort"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://myapi.moya.endpoint/MoyaWeb")]
public string ApiURL {
get {
return ((string)(this["ApiURL"]));
}
set {
this["ApiURL"] = value;
}
}
}
}
......@@ -2,17 +2,14 @@
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="RamaSignup.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="ApiURL" Type="System.String" Scope="User">
<Value Profile="(Default)">http://10.220.105.252:8080/MoyaWeb</Value>
</Setting>
<Setting Name="ApiApplicationKey" Type="System.String" Scope="User">
<Value Profile="(Default)">8krAyTEpzP6QnwzkxGek</Value>
<Value Profile="(Default)">myapiclientid</Value>
</Setting>
<Setting Name="ApiUser" Type="System.String" Scope="User">
<Value Profile="(Default)">tapsa</Value>
<Value Profile="(Default)">myapiuser</Value>
</Setting>
<Setting Name="ApiPass" Type="System.String" Scope="User">
<Value Profile="(Default)">6uGbN6GiQqbZy1n,p3hg</Value>
<Value Profile="(Default)">myapikey</Value>
</Setting>
<Setting Name="ApplicationVersion" Type="System.String" Scope="User">
<Value Profile="(Default)" />
......@@ -20,5 +17,17 @@
<Setting Name="Port" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ThermoPrinter" Type="System.String" Scope="User">
<Value Profile="(Default)">TMT188II</Value>
</Setting>
<Setting Name="Camera" Type="System.String" Scope="User">
<Value Profile="(Default)">Mobius</Value>
</Setting>
<Setting Name="printerPort" Type="System.String" Scope="User">
<Value Profile="(Default)">COM1</Value>
</Setting>
<Setting Name="ApiURL" Type="System.String" Scope="User">
<Value Profile="(Default)">http://myapi.moya.endpoint/MoyaWeb</Value>
</Setting>
</Settings>
</SettingsFile>
\ No newline at end of file
No preview for this file type
......@@ -15,6 +15,7 @@ using MoyaAdminLib;
using System.Net;
using System.Collections.Specialized;
using System.Drawing.Imaging;
using System.Diagnostics;
namespace RamaSignup
{
......@@ -32,6 +33,8 @@ namespace RamaSignup
private static Bitmap latestFrame;
public event EventHandler Changed;
public bool PictureTaken = false;
public TakePictureControl()
{
InitializeComponent();
......@@ -48,6 +51,7 @@ namespace RamaSignup
public void loadUserImage(User user)
{
PictureTaken = false;
if (user.UserId == 0)
return;
string api = RestClient.GetRequestURL(Properties.Settings.Default.ApiURL, "v2/user/" + user.UserId + "/image");
......@@ -99,6 +103,7 @@ namespace RamaSignup
}
public void SaveUserImage(User user)
{
if (PictureTaken == false) return;
string url = RestClient.GetRequestURL(Properties.Settings.Default.ApiURL, "v2/user/" + user.UserId + "/image");
NameValueCollection postParameters = new NameValueCollection();
//postParameters.Add("password", Util.CreatePasswordHash(this.password));
......@@ -195,7 +200,17 @@ namespace RamaSignup
{
try
{
Camera c = CameraService.AvailableCameras.First();
Camera c = null;
if (Debugger.IsAttached)
{
foreach (Camera cam in CameraService.AvailableCameras)
{
if (cam.Name.ToLower().Contains("mobius"))
c = cam;
}
}
if(c == null)
c = CameraService.AvailableCameras.First();
setFrameSource(new CameraFrameSource(c));
//_frameSource.Camera.CaptureWidth = 1024;
//_frameSource.Camera.CaptureHeight = 768;
......@@ -271,8 +286,8 @@ namespace RamaSignup
private void clear()
{
this.pbIncoming.Image = null;
//pictureTaken = false;
latestFrame = null;
PictureTaken = false;
}
void savePicture(int pid)
......@@ -287,32 +302,7 @@ namespace RamaSignup
//Objects.Pool.ExecNonQuery("UPDATE kortit SET kuva = :bytesData WHERE id=" + pid, new Npgsql.NpgsqlParameter(":bytesData", imageContent));
return;
}
/*
private void btnTakePic_Click(object sender, EventArgs e)
{
this.btnTakePic.Enabled = false;
this.Cursor = Cursors.WaitCursor;
this.btnTakePic.Refresh();
if (freeze)
{
freeze = false;
//this.webcam.StartWebCam();
this.btnTakePic.Text = "Käytä tätä kuvaa";
pictureTaken = false;
}
else
{
freeze = true;
//this.webcam.CloseWebcam();
this.btnTakePic.Text = "Ota uusi kuva";
pictureTaken = true;
}
this.Cursor = Cursors.Default;
this.btnTakePic.Enabled = true;
}
* */
private void TakePictureControl_VisibleChanged(object sender, EventArgs e)
{
......@@ -326,10 +316,8 @@ namespace RamaSignup
public void TakePicture()
{
/*
if (_frameSource != null && _frameSource.Camera == CameraService.AvailableCameras.First())
return;
*/
PictureTaken = false;
if (!cameraOpen)
{
btnTakePic.Enabled = false;
......@@ -339,6 +327,7 @@ namespace RamaSignup
thrashOldCamera();
startCapturing();
btnTakePic.Enabled = true;
PictureTaken = false;
}
else
{
......@@ -348,6 +337,7 @@ namespace RamaSignup
thrashOldCamera();
pbIncoming.Image = latestFrame;
btnTakePic.Enabled = true;
PictureTaken = true;
if (Changed != null)
Changed(null, null);
}
......@@ -358,7 +348,12 @@ namespace RamaSignup
TakePicture();
}
internal void Clear()
{
pbIncoming.Image = null;
}
}
}
......@@ -51,6 +51,7 @@
this.dateTimePickerAge = new System.Windows.Forms.DateTimePicker();
this.btnSaveData = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.txtAge = new System.Windows.Forms.TextBox();
this.takePictureControl1 = new RamaSignup.TakePictureControl();
this.SuspendLayout();
//
......@@ -62,7 +63,7 @@
this.label11.Location = new System.Drawing.Point(271, 56);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(70, 16);
this.label11.TabIndex = 116;
this.label11.TabIndex = 16;
this.label11.Text = "Sukunimi";
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
......@@ -75,7 +76,7 @@
this.txtLastName.Name = "txtLastName";
this.txtLastName.ReadOnly = true;
this.txtLastName.Size = new System.Drawing.Size(135, 26);
this.txtLastName.TabIndex = 115;
this.txtLastName.TabIndex = 3;
//
// label10
//
......@@ -85,7 +86,7 @@
this.label10.Location = new System.Drawing.Point(137, 111);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(76, 16);
this.label10.TabIndex = 114;
this.label10.TabIndex = 18;
this.label10.Text = "Sukupuoli";
//
// cbGender
......@@ -98,7 +99,7 @@
this.cbGender.Margin = new System.Windows.Forms.Padding(3, 3, 3, 10);
this.cbGender.Name = "cbGender";
this.cbGender.Size = new System.Drawing.Size(125, 28);
this.cbGender.TabIndex = 100;
this.cbGender.TabIndex = 5;
//
// txtPhone
//
......@@ -109,7 +110,7 @@
this.txtPhone.Name = "txtPhone";
this.txtPhone.ReadOnly = true;
this.txtPhone.Size = new System.Drawing.Size(138, 26);
this.txtPhone.TabIndex = 101;
this.txtPhone.TabIndex = 6;
//
// label9
//
......@@ -119,7 +120,7 @@
this.label9.Location = new System.Drawing.Point(268, 111);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(110, 16);
this.label9.TabIndex = 113;
this.label9.TabIndex = 19;
this.label9.Text = "Puhelinnumero";
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
......@@ -132,7 +133,7 @@
this.txtCity.Name = "txtCity";
this.txtCity.ReadOnly = true;
this.txtCity.Size = new System.Drawing.Size(125, 26);
this.txtCity.TabIndex = 105;
this.txtCity.TabIndex = 9;
//
// label8
//
......@@ -142,7 +143,7 @@
this.label8.Location = new System.Drawing.Point(137, 223);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(71, 16);
this.label8.TabIndex = 112;
this.label8.TabIndex = 22;
this.label8.Text = "Kaupunki";
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
......@@ -154,7 +155,7 @@
this.label7.Location = new System.Drawing.Point(3, 111);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(97, 16);
this.label7.TabIndex = 111;
this.label7.TabIndex = 17;
this.label7.Text = "Syntymäaika";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
......@@ -166,7 +167,7 @@
this.label6.Location = new System.Drawing.Point(3, 223);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(94, 16);
this.label6.TabIndex = 110;
this.label6.TabIndex = 21;
this.label6.Text = "Postinumero";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
......@@ -178,7 +179,7 @@
this.label5.Location = new System.Drawing.Point(3, 168);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(81, 16);
this.label5.TabIndex = 109;
this.label5.TabIndex = 20;
this.label5.Text = "Katuosoite";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
......@@ -190,7 +191,7 @@
this.label4.Location = new System.Drawing.Point(3, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(52, 16);
this.label4.TabIndex = 108;
this.label4.TabIndex = 13;
this.label4.Text = "E-Mail";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
......@@ -203,7 +204,7 @@
this.txtZip.Name = "txtZip";
this.txtZip.ReadOnly = true;
this.txtZip.Size = new System.Drawing.Size(128, 26);
this.txtZip.TabIndex = 104;
this.txtZip.TabIndex = 8;
//
// txtAdress
//
......@@ -214,7 +215,7 @@
this.txtAdress.Name = "txtAdress";
this.txtAdress.ReadOnly = true;
this.txtAdress.Size = new System.Drawing.Size(403, 26);
this.txtAdress.TabIndex = 103;
this.txtAdress.TabIndex = 7;
//
// txtEmail
//
......@@ -225,7 +226,8 @@
this.txtEmail.Name = "txtEmail";
this.txtEmail.ReadOnly = true;
this.txtEmail.Size = new System.Drawing.Size(403, 26);
this.txtEmail.TabIndex = 102;
this.txtEmail.TabIndex = 0;
this.txtEmail.TextChanged += new System.EventHandler(this.txtEmail_TextChanged);
//
// txtNick
//
......@@ -237,7 +239,8 @@
this.txtNick.Name = "txtNick";
this.txtNick.ReadOnly = true;
this.txtNick.Size = new System.Drawing.Size(128, 26);
this.txtNick.TabIndex = 98;
this.txtNick.TabIndex = 1;
this.txtNick.TextChanged += new System.EventHandler(this.txtNick_TextChanged);
//
// label2
//
......@@ -247,7 +250,7 @@
this.label2.Location = new System.Drawing.Point(3, 56);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(85, 16);
this.label2.TabIndex = 107;
this.label2.TabIndex = 14;
this.label2.Text = "Nimimerkki";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
......@@ -259,7 +262,7 @@
this.label1.Location = new System.Drawing.Point(137, 56);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(58, 16);
this.label1.TabIndex = 106;
this.label1.TabIndex = 15;
this.label1.Text = "Etunimi";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
......@@ -272,7 +275,7 @@
this.txtFirstName.Name = "txtFirstName";
this.txtFirstName.ReadOnly = true;
this.txtFirstName.Size = new System.Drawing.Size(125, 26);
this.txtFirstName.TabIndex = 97;
this.txtFirstName.TabIndex = 2;
//
// lblMessage
//
......@@ -281,7 +284,7 @@
this.lblMessage.Location = new System.Drawing.Point(3, 311);
this.lblMessage.Name = "lblMessage";
this.lblMessage.Size = new System.Drawing.Size(555, 73);
this.lblMessage.TabIndex = 117;
this.lblMessage.TabIndex = 23;
this.lblMessage.Text = "label3";
this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
......@@ -292,7 +295,8 @@
this.dateTimePickerAge.Location = new System.Drawing.Point(9, 131);
this.dateTimePickerAge.Name = "dateTimePickerAge";
this.dateTimePickerAge.Size = new System.Drawing.Size(125, 20);
this.dateTimePickerAge.TabIndex = 119;
this.dateTimePickerAge.TabIndex = 4;
this.dateTimePickerAge.Visible = false;
//
// btnSaveData
//
......@@ -300,7 +304,7 @@
this.btnSaveData.Location = new System.Drawing.Point(287, 441);
this.btnSaveData.Name = "btnSaveData";
this.btnSaveData.Size = new System.Drawing.Size(271, 30);
this.btnSaveData.TabIndex = 120;
this.btnSaveData.TabIndex = 12;
this.btnSaveData.Text = "Tallenna kuva ja tiedot";
this.btnSaveData.UseVisualStyleBackColor = true;
this.btnSaveData.Click += new System.EventHandler(this.btnSaveData_Click);
......@@ -311,23 +315,35 @@
this.btnCancel.Location = new System.Drawing.Point(9, 441);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(272, 30);
this.btnCancel.TabIndex = 121;
this.btnCancel.TabIndex = 11;
this.btnCancel.Text = "Keskeytä";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// txtAge
//
this.txtAge.Location = new System.Drawing.Point(9, 130);
this.txtAge.Name = "txtAge";
this.txtAge.ReadOnly = true;
this.txtAge.Size = new System.Drawing.Size(125, 20);
this.txtAge.TabIndex = 24;
this.txtAge.TextChanged += new System.EventHandler(this.txtAge_TextChanged);
this.txtAge.Leave += new System.EventHandler(this.txtAge_Leave);
//
// takePictureControl1
//
this.takePictureControl1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.takePictureControl1.Location = new System.Drawing.Point(564, 19);
this.takePictureControl1.Name = "takePictureControl1";
this.takePictureControl1.Size = new System.Drawing.Size(308, 463);
this.takePictureControl1.TabIndex = 118;
this.takePictureControl1.TabIndex = 10;
this.takePictureControl1.Load += new System.EventHandler(this.takePictureControl1_Load);
//
// UserDetailsEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.txtAge);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnSaveData);
this.Controls.Add(this.dateTimePickerAge);
......@@ -386,5 +402,6 @@
private System.Windows.Forms.DateTimePicker dateTimePickerAge;
private System.Windows.Forms.Button btnSaveData;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.TextBox txtAge;
}
}
......@@ -11,6 +11,11 @@ using MoyaAdminLib;
using System.Globalization;
using System.Net;
using System.IO;
using System.Diagnostics;
using System.Web.Script.Serialization;
using ThermoPrinterLibrary;
using System.Text.RegularExpressions;
using System.Threading;
namespace RamaSignup
{
......@@ -18,6 +23,16 @@ namespace RamaSignup
{
public event EventHandler CloseView;
public static string BARCODE_PREFIX = "279";
public static int BARCODE_LENGTH = 12;
private ThermoPrinter thermoPrinter;
public ThermoPrinter ThermoPrinter
{
set { thermoPrinter = value; }
get { return thermoPrinter; }
}
User currentUser = null;
public UserDetailsEditor()
{
......@@ -25,7 +40,29 @@ namespace RamaSignup
cbGender.Items.Add("Valitse");
cbGender.Items.Add("Mies");
cbGender.Items.Add("Nainen");
/*
if(Properties.Settings.Default.ThermoPrinter == "TMT188II")
thermoPrinter = new ThermoPrinter(ThermoPrinter.Models.TMT188II);
else
thermoPrinter = new ThermoPrinter(ThermoPrinter.Models.IDP3210);
try
{
thermoPrinter.Start(Properties.Settings.Default.printerPort);
thermoPrinter.SetBarcodeWidth(ThermoPrinter.BarcodeWidths.Small);
thermoPrinter.SetCharacterAlignment(ThermoPrinter.CharacterAlignments.Center);
thermoPrinter.SetPositionHRI(ThermoPrinter.HRIPrintingPositions.Below);
}
catch
{
thermoPrinter = null;
}*/
}
public void LoadUser(User user)
{
btnSaveData.Visible = false;
......@@ -50,8 +87,8 @@ namespace RamaSignup
else
cbGender.SelectedItem = "Valitse";
//txtAge.Text = user.Birthday;
if(user.Birthday != null && user.Birthday.Length >= 10)
txtAge.Text = user.Birthday.Substring(0, 10);
if (user.UserId == 0)
{
......@@ -60,16 +97,36 @@ namespace RamaSignup
txtFirstName.ReadOnly = false;
txtLastName.ReadOnly = false;
txtNick.ReadOnly = false;
txtAge.ReadOnly = false;
txtAdress.ReadOnly = false;
txtZip.ReadOnly = false;
txtCity.ReadOnly = false;
txtPhone.ReadOnly = false;
if (txtEmail.Text.Length > 0)
{
string[] fields = txtEmail.Text.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries);
if (fields.Length == 2)
{
fields = fields[0].Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
if (fields.Length == 2)
{
txtFirstName.Text = fields[0].Substring(0, 1).ToUpper() + fields[0].Substring(1, fields[0].Length - 1).ToLower();
txtLastName.Text = fields[1].Substring(0, 1).ToUpper() + fields[1].Substring(1, fields[1].Length - 1).ToLower();
}
}
}
}
else
{
// old user
takePictureControl1.loadUserImage(user);
btnSaveData.Text = "Tallenna kuva ja tulosta lipputosite";
btnSaveData.Visible = true;
}
currentUser = user;
......@@ -91,7 +148,9 @@ namespace RamaSignup
txtNick.Text = "";
txtPhone.Text = "";
txtZip.Text = "";
txtAge.Text = ""; this.takePictureControl1.Clear();
currentUser = null;
}
void checkFields()
{
......@@ -155,7 +214,11 @@ namespace RamaSignup
private void UserDetailsEditor_Load(object sender, EventArgs e)
{
lblMessage.Text = "";
takePictureControl1.Clear();
takePictureControl1.Changed += takePictureControl1_Changed;
//if(Debugger.IsAttached)
// btnSaveData.Visible = true;
}
......@@ -166,15 +229,129 @@ namespace RamaSignup
private void btnSaveData_Click(object sender, EventArgs e)
{
int userId = 0;
string name = "";
string info = "Siirry tämän kuitin kanssa infotiskille";
if (currentUser.UserId > 0)
takePictureControl1.SaveUserImage(currentUser);
{
userId = currentUser.EventUserId;
if(takePictureControl1.PictureTaken)
takePictureControl1.SaveUserImage(currentUser);
name = currentUser.Firstname + " " + currentUser.Lastname;
}
else
{
Eventuser user = new Eventuser();
user.login = txtEmail.Text;
user.firstname = txtFirstName.Text;
user.lastname = txtLastName.Text;
user.nick = txtNick.Text;
user.phoneNumber = txtPhone.Text;
user.email = txtEmail.Text;
user.streetAddress = txtAdress.Text;
user.zipCode = txtZip.Text;
user.postOffice = txtCity.Text;
DateTime birthday = DateTime.MinValue;
DateTime.TryParse(txtAge.Text, out birthday);
if (birthday > DateTime.MinValue)
user.birthday = birthday.ToString("vvvv-MM-dd");
//user.birthday = dateTimePickerAge.Value.ToString("vvvv-MM-dd");
if (cbGender.SelectedItem != null && ((string)cbGender.SelectedItem) == "Mies")
user.gender = "MALE";
else if (cbGender.SelectedItem != null && ((string)cbGender.SelectedItem) == "Nainen")
user.gender = "FEMALE";
else
user.gender = "UNDEFINED";
string password = "";
string chars = "ABCDEFGHJKMNPQRSTUVWXYZ2345689" + "ABCDEFGHJKMNPQRSTUVWXYZ".ToLower();
for (int k = 0; k < 8; k++)
{
int i = Randomizer.Random.Next(chars.Length - 1);
password += chars[i];
}
Console.WriteLine("Password: " + password);
user.password = password;
RestClient client;
client = new RestClient(RestClient.ApiURL, HttpVerb.POST);
JavaScriptSerializer ser = new JavaScriptSerializer();
client.PostData = ser.Serialize(user);
client.ContentType = "application/json";
try
{
string json = client.MakeRequest("v2/user/create/");
Eventuser euser = ser.Deserialize<Eventuser>(json);
if (euser != null)
{
Console.WriteLine("EuserId: ", euser.eventuserId);
userId = euser.eventuserId;
currentUser = new User(euser);
takePictureControl1.SaveUserImage(currentUser);
name = euser.firstname + " " + euser.lastname;
}
else
Console.WriteLine("Euser is null!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
string barcode = getBarcode(userId);
if (thermoPrinter != null)
{
thermoPrinter.SetCharacterAlignment(ThermoPrinter.CharacterAlignments.Left);
thermoPrinter.PrintText(name.Replace("ä", "a").Replace("ö", "o").Replace("å", "a").Replace("Ä", "A").Replace("Ö", "O").Replace("Å", "A"));
thermoPrinter.PrintAndFeedPaper(1);
thermoPrinter.PrintText(info.Replace("ä", "a").Replace("ö", "o").Replace("å", "a").Replace("Ä", "A").Replace("Ö", "O").Replace("Å", "A"));
thermoPrinter.PrintAndFeedPaper(2);
thermoPrinter.SetCharacterAlignment(ThermoPrinter.CharacterAlignments.Center);
thermoPrinter.PrintBarcode(ThermoPrinter.BarCodeTypes.CODE39, barcode);
thermoPrinter.PrintAndFeedPaper(5);
thermoPrinter.FullCut();
}
lblMessage.Text = "Tiedot on tallennettu. Voit siirtyä infotiskille tulostetun kuitin kanssa.";
lblMessage.Visible = true;
MessageBox.Show("Teidot tallennettu. Siirry infotiskille ja kerro nimesi.\r\nMikäli viereinen tulostin tulosti lapun ota se matkaan ja ojenna infotiskillä");
//Thread.Sleep(3000);
onCloseView();
}
private string getBarcode(int id)
{
string barcode = BARCODE_PREFIX;
int padding = BARCODE_LENGTH - id.ToString().Length;
barcode = barcode.PadRight(padding, '0');
barcode += id.ToString();
var allDigits = barcode.Select(c => int.Parse(c.ToString(CultureInfo.InvariantCulture))).ToArray();
var s = 13 % 2 == 0 ? 3 : 1;
var s2 = s == 3 ? 1 : 3;
int checksum = (10 - (allDigits.Take(13 - 1).Select((c, ci) => c * (ci % 2 == 0 ? s : s2)).Sum() % 10)) % 10;
barcode += checksum.ToString();
return barcode;
}
private void btnCancel_Click(object sender, EventArgs e)
{
onCloseView();
......@@ -185,5 +362,50 @@ namespace RamaSignup
if (CloseView != null)
CloseView(this, null);
}
private void takePictureControl1_Load(object sender, EventArgs e)
{
}
private void txtEmail_TextChanged(object sender, EventArgs e)
{
//emailTimer.Enabled = true;
//emailTimer.Start();
}
private void emailTimer_Tick(object sender, EventArgs e)
{
}
private void txtAge_TextChanged(object sender, EventArgs e)
{
}
private void txtAge_Leave(object sender, EventArgs e)
{
}
private void txtNick_TextChanged(object sender, EventArgs e)
{
/*
if (txtNick.Text == "thermo2")
{
SetPrinter(ThermoPrinterLibrary.ThermoPrinter.Models.IDP3210);
txtNick.Text = "OK";
}
else if (txtNick.Text == "thermo1")
{
SetPrinter(ThermoPrinterLibrary.ThermoPrinter.Models.TMT188II);
txtNick.Text = "OK";
}*/
}
}
}
......@@ -10,12 +10,15 @@ using System.Windows.Forms;
using MoyaAdminLib;
using System.Web.Script.Serialization;
using System.Net;
using ThermoPrinterLibrary;
namespace RamaSignup
{
public partial class UserLoginControl : UserControl
{
public event EventHandler LoginOk;
public delegate void ThermoPrinterEvent(ThermoPrinter.Models model);
public event ThermoPrinterEvent SetPrinter;
public UserLoginControl()
{
......@@ -40,6 +43,19 @@ namespace RamaSignup
}
else
{
if (txtEmail.Text == "thermo2")
{
if(SetPrinter != null)
SetPrinter(ThermoPrinter.Models.IDP3210);
txtEmail.Text = "OK";
}
else if (txtEmail.Text == "thermo1")
{
if(SetPrinter != null)
SetPrinter(ThermoPrinterLibrary.ThermoPrinter.Models.TMT188II);
txtEmail.Text = "OK";
}
timer1.Stop();
CurrentUser = null;
btnNewProfile.Visible = false;
......@@ -171,7 +187,12 @@ namespace RamaSignup
{
CurrentUser = null;
txtEmail.Text = "";
passwordTextBox.Visible = false;
passwordTextBox.Text = "";
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent;
infoLabel.Text = "Hei! Kirjoita sähköpostiosoitteesi";
loginButton.Visible = false;
}
}
}
......@@ -15,17 +15,14 @@
</runtime>
<userSettings>
<RamaSignup.Properties.Settings>
<setting name="ApiURL" serializeAs="String">
<value>http://10.220.105.252:8080/MoyaWeb</value>
</setting>
<setting name="ApiApplicationKey" serializeAs="String">
<value>8krAyTEpzP6QnwzkxGek</value>
<value>myapiclientid</value>
</setting>
<setting name="ApiUser" serializeAs="String">
<value>tapsa</value>
<value>myapiuser</value>
</setting>
<setting name="ApiPass" serializeAs="String">
<value>6uGbN6GiQqbZy1n,p3hg</value>
<value>myapikey</value>
</setting>
<setting name="ApplicationVersion" serializeAs="String">
<value />
......@@ -33,6 +30,18 @@
<setting name="Port" serializeAs="String">
<value />
</setting>
<setting name="ThermoPrinter" serializeAs="String">
<value>TMT188II</value>
</setting>
<setting name="Camera" serializeAs="String">
<value>Mobius</value>
</setting>
<setting name="printerPort" serializeAs="String">
<value>COM1</value>
</setting>
<setting name="ApiURL" serializeAs="String">
<value>http://myapi.moya.endpoint/MoyaWeb</value>
</setting>
</RamaSignup.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThermoPrinterLibrary", "ThermoPrinterLibrary\ThermoPrinterLibrary.csproj", "{25113A41-1991-4D34-95C0-47C238037A39}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{25113A41-1991-4D34-95C0-47C238037A39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{25113A41-1991-4D34-95C0-47C238037A39}.Debug|Any CPU.Build.0 = Debug|Any CPU
{25113A41-1991-4D34-95C0-47C238037A39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{25113A41-1991-4D34-95C0-47C238037A39}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ThermoPrinterLibrary
{
public class Command
{
public int Length
{
get
{
return bytes.Count;
}
}
List<byte> bytes = new List<byte>();
public Command()
{
}
public void Add(ThermoPrinter.Commands command)
{
bytes.Add((byte) command);
}
public void Add(ThermoPrinter.PrintModes mode)
{
bytes.Add((byte)mode);
}
public void Add(ThermoPrinter.BarCodeTypes t)
{
bytes.Add((byte)t);
}
public void Add(ThermoPrinter.CharacterAlignments ca)
{
bytes.Add((byte)ca);
}
public void Add(ThermoPrinter.HRIPrintingPositions pp)
{
bytes.Add((byte)pp);
}
public void Add(ThermoPrinter.BarcodeWidths width)
{
bytes.Add((byte)width);
}
public void Add(char c)
{
bytes.Add((byte)c);
}
public void Add(string text)
{
/*
byte[] textBytes = System.Text.Encoding.UTF8.GetBytes(text);
foreach (byte b in textBytes)
{
bytes.Add(b);
}*/
foreach (char c in text.ToCharArray())
{
bytes.Add((byte)c);
}
}
public void Add(int i)
{
bytes.Add((byte)i);
}
public byte[] GetBytes()
{
return bytes.ToArray();
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ThermoPrinterLibrary")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ThermoPrinterLibrary")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("c65e13bf-d04e-439a-922c-29f0c52e4f57")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ThermoPrinterLibrary
{
public class ThermoPrinter
{
public enum Models
{
Unknown,
IDP3210,
TMT188II
}
public enum Commands: byte
{
ESC = 0x1B,
HT = 0x9,
CR = 0xD,
GS = 0x1D,
LF = 0x0A,
SP = 0x20,
NUL = 0x00
}
public enum PrintModes: byte
{
Highlighting = 8,
DoubleHeight = 16,
DoubleWidth = 32,
Underline = 128
}
public enum BarCodeTypes: byte
{
UPCA = 0x0,
UPCE = 0x1,
JAN13 = 0x2,
JAN8 = 0x3,
CODE39 = 0x4,
ITF = 0x5,
CODABAR = 0x6,
CODE128 = 0x7
}
protected enum BarCodeTypesIDP3210 : byte
{
UPCA = 0x0,
UPCE = 0x1,
JAN13 = 0x2,
JAN8 = 0x3,
CODE39 = 0x4,
ITF = 0x5,
CODABAR = 0x6,
CODE128 = 0x7
}
protected enum BarCodeTypesTMT188II : byte
{
UPCA = 0x0,
UPCE = 0x1,
JAN13 = 0x2,
JAN8 = 0x3,
CODE39 = 0x4,
ITF = 0x5,
CODABAR = 0x6
}
public enum BarcodeWidths : int
{
Small = 2,
Normal = 3,
Big = 4
}
public enum CharacterAlignments: byte
{
Left = 0x0,
Center = 0x1,
Right = 0x2
}
public enum HRIPrintingPositions: byte
{
NoPrinting = 0x0,
Above = 0x1,
Below = 0x2,
AboveAndBelow = 0x3
}
SerialPort port;
bool initialized = false;
byte[] commands;
Models model = Models.Unknown;
public Models Model
{
set { this.model = value; }
get { return model; }
}
private static ThermoPrinter currentPrinter;
public static ThermoPrinter CurrentPrinter
{
get
{
if (currentPrinter == null)
{
currentPrinter = new ThermoPrinter(Models.Unknown);
}
return currentPrinter;
}
}
public ThermoPrinter(Models model)
{
this.model = model;
}
public void Start(string port)
{
this.port = new SerialPort(port, 9600, Parity.None, 8, StopBits.One);
if (this.port != null)
{
this.port.Open();
this.InitializePrinter();
initialized = true;
}
}
public void Stop()
{
if (this.port != null)
{
this.port.Close();
}
}
public void FullCut()
{
if (initialized)
{
commands = new byte[20];
commands[0] = (byte) Commands.ESC;
commands[1] = (byte)'i';
this.port.Write(commands, 0, 2);
}
}
public void PartialCut()
{
if (!initialized) return;
Command c = new Command();
c.Add((byte)Commands.ESC);
c.Add((byte)'m');
this.port.Write(c.GetBytes(), 0, c.Length);
}
public void HorizontalTab()
{
if (initialized)
{
commands = new byte[1];
commands[0] = (byte)Commands.HT;
this.port.Write(commands, 0, 1);
}
}
public void Print()
{
if (initialized)
{
commands = new byte[1];
commands[0] = (byte)Commands.CR;
this.port.Write(commands, 0, 1);
}
}
public void PrintAndFeed()
{
if (initialized)
{
commands = new byte[1];
commands[0] = (byte)Commands.LF;
this.port.Write(commands, 0, 1);
}
}
public void PrintAndFeedPaper(int lines)
{
if (initialized)
{
commands = new byte[3];
commands[0] = (byte)Commands.ESC;
commands[1] = (byte)'d';
commands[2] = Convert.ToByte(lines);
this.port.Write(commands, 0, 3);
}
}
public void SetSpaceAmountForCharacters(decimal amount)
{
if (initialized)
{
commands = new byte[3];
commands[0] = (byte)Commands.ESC;
commands[1] = (byte)Commands.SP;
commands[2] = Convert.ToByte(amount);
this.port.Write(commands, 0, 3);
}
}
public void SetPrintMode(PrintModes mode)
{
if (initialized)
{
commands = new byte[3];
commands[0] = (byte)Commands.ESC;
commands[1] = (byte)Commands.SP;
commands[2] = (byte)mode;
this.port.Write(commands, 0, 3);
}
}
public void PrintText(string text)
{
if (initialized)
{
byte[] bytes = Encoding.ASCII.GetBytes(text);
this.port.Write(bytes, 0, bytes.Length);
//this.port.Write(text);
}
}
public void InitializePrinter()
{
if (initialized)
{
commands = new byte[2];
commands[0] = (byte)Commands.ESC;
commands[1] = (byte)'@';
this.port.Write(commands, 0, 2);
}
}
public void PrintBarcode(BarCodeTypes type, string code)
{
if (!initialized || this.model == Models.Unknown) return;
Command c = new Command();
c.Add(Commands.GS);
c.Add('k');
if (this.model == Models.TMT188II && type == BarCodeTypes.CODE128)
{
throw new ArgumentOutOfRangeException("TM-T188II does not support code 128.");
}
c.Add(type);
c.Add(code);
c.Add(Commands.NUL);
this.port.Write(c.GetBytes(),0,c.Length);
}
public void SetCharacterAlignment(CharacterAlignments alignment)
{
if (!initialized) return;
Command c = new Command();
c.Add(Commands.ESC);
c.Add('a');
c.Add(alignment);
this.port.Write(c.GetBytes(), 0, c.Length);
}
public void SetPositionHRI(HRIPrintingPositions position)
{
if (!initialized) return;
Command c = new Command();
c.Add(Commands.GS);
c.Add('H');
c.Add(position);
this.port.Write(c.GetBytes(), 0, c.Length);
}
public void SetBarcodeWidth(BarcodeWidths width)
{
if (!initialized) return;
Command c = new Command();
c.Add(Commands.GS);
c.Add('w');
c.Add(width);
this.port.Write(c.GetBytes(), 0, c.Length);
}
public void SelectingInternationalCharacters()
{
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{25113A41-1991-4D34-95C0-47C238037A39}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ThermoPrinterLibrary</RootNamespace>
<AssemblyName>ThermoPrinterLibrary</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Command.cs" />
<Compile Include="ThermoPrinter.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
\ No newline at end of file
......@@ -5,18 +5,10 @@
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FD48314A-9615-4BA6-913A-03787FB2DD30}</ProjectGuid>
......@@ -37,19 +29,6 @@
<CLRSupport>true</CLRSupport>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<CLRSupport>true</CLRSupport>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<CLRSupport>true</CLRSupport>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
......@@ -59,12 +38,6 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
......@@ -74,24 +47,12 @@
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)bin\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)bin\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)bin\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
......@@ -137,55 +98,6 @@
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>Strmiids.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>bin\$(Configuration)\$(ProjectName).dll</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AssemblyDebug>true</AssemblyDebug>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<PostBuildEvent>
<Command>
</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>Strmiids.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention>
</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Reference Include="System">
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
......
......@@ -41,29 +41,6 @@
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
......@@ -114,10 +91,6 @@
<Reference Include="UIAutomationProvider">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="WebCamLib, Version=0.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\WebCamLib\bin\Release\WebCamLib.dll</HintPath>
</Reference>
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
......@@ -174,6 +147,12 @@
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebCamLib\WebCamLib.vcxproj">
<Project>{fd48314a-9615-4ba6-913a-03787fb2dd30}</Project>
<Name>WebCamLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!