//Reads the lineparameters from the ticket, and displays the visually depending on type of print-line. public TicketEditorView(TicketClass ticket,MainWindow maininstance) { InitializeComponent(); Ticket = ticket; Ticket.Flipped = 0; Ticket.PaperMargin = 0; if (Ticket.PaperWidth == 564) { stackPanel.Width = 323; } foreach (TicketClass.LineParameters lineparameters in ticket.Lines) { switch (lineparameters.Type) { case IMAGE_LINE: AddImage(lineparameters); break; case ROWSPACE_LINE: AddLineBreak(lineparameters,-1); break; case TEXT_LINE: AddText(lineparameters); break; case QUEUENUMBER_LINE: AddQueueNumber(lineparameters); break; } } MainWindowInstance = maininstance; CodePages = new CodePageList(); LanguageMenu.ItemsSource = CodePages; setMouseEvents(); DisableButtons(); }
//The selections under file in the menubar. private void menu_File(object sender, RoutedEventArgs e) { var menuitem = sender as MenuItem; if (menuitem.Header.Equals("_Save")) { Save(); } else if (menuitem.Header.Equals("_Save As")) { SaveAs(); } else if (menuitem.Header.Equals("_New")) { stackPanel.Children.Clear(); Ticket = new TicketClass(); DisableButtons(); AddDummyText(); TicketChanged = true; } else if (menuitem.Header.Equals("_Print")) { SaveTicket(); TicketManager.GetXml(Ticket); if (MainWindowInstance.Printer.Address != null) { HttpRequestAdapter.sendHttpPost(Ticket.Xml, MainWindowInstance.Printer); } else MainWindowInstance.showDeviceList(); } else if (menuitem.Header.Equals("_Close")) { if (TicketChanged) { PromptView Prompt = new PromptView(this); Prompt.Show(); } else this.Close(); } }
/// <summary> /// Add queuenumber is same as text but can only be aligned since the bitmaps(how the queuenumber is drawn in the printer) cant be offset in the printer. /// </summary> /// <param name="lineparameters"></param> private void AddQueueNumber(TicketClass.LineParameters lineparameters) { TextBox textbox = new TextBox(); textbox.FontSize = lineparameters.Size; textbox.Text = lineparameters.Characters.Trim(); textbox.FontWeight = (lineparameters.Bold == 1) ? FontWeights.Bold : FontWeights.Normal; textbox.FontFamily = new FontFamily("Lucida Sans Unicode"); textbox.PreviewMouseDown += this.edit_Queuenumber; double calculatedpadding = -(textbox.FontFamily.LineSpacing * textbox.FontSize / 5D); Thickness padding = new Thickness(0, calculatedpadding, 0, calculatedpadding); textbox.VerticalContentAlignment = VerticalAlignment.Center; textbox.Padding = padding; textbox.HorizontalAlignment = (HorizontalAlignment)lineparameters.Alignment; // FIX ALIGNMENT Thickness margin = new Thickness(0, 0, 0, -LINE_HEIGHT/DOT_PIXEL_RELATION); textbox.Margin = margin; textbox.Tag = Ticket.Lines.IndexOf(lineparameters); stackPanel.Children.Add(textbox); StackPanel.SetZIndex(textbox, -1); }
///<summary> /// To add a line with text. add events to the element to receive input when dragging and letting go. /// /// Make transformation for the double width double height setting that the printer takes. /// /// /// </summary> private void AddText(TicketClass.LineParameters lineparameters) { double size = 24.0D / DOT_PIXEL_RELATION; TextBox textbox = new TextBox(); textbox.PreviewMouseLeftButtonDown += this.grab_Control_Element; textbox.MouseDoubleClick += this.edit_Queuenumber; textbox.PreviewMouseLeftButtonUp += this.release_Control_Element; textbox.Text = lineparameters.Characters.Trim(); textbox.FontWeight = (lineparameters.Bold == 1) ? FontWeights.Bold : FontWeights.Normal; textbox.FontFamily = new FontFamily("Open Symbol"); textbox.HorizontalAlignment = (HorizontalAlignment)lineparameters.Alignment; textbox.FontSize = size;//PointFromPixel(size); textbox.Padding = GetPadding(textbox.FontFamily.LineSpacing,textbox.FontSize); double FactorX = (lineparameters.Width == 1) ? 2 : 1; double FactorY = (lineparameters.Height == 1) ? 2 : 1; ScaleTransform scale = new ScaleTransform(FactorX,FactorY); TranslateTransform translatetransform = new TranslateTransform(); TransformGroup transformgroup = new TransformGroup(); transformgroup.Children.Add(translatetransform); transformgroup.Children.Add(scale); double transformorigin =1; if (lineparameters.Alignment == 0) transformorigin = 0; else if (lineparameters.Alignment == 1) transformorigin = 0.5D; else if (lineparameters.Alignment == 2) transformorigin = 1D; textbox.RenderTransformOrigin = new Point(transformorigin, 1/FactorY); textbox.RenderTransform = transformgroup; double TranslatedOffset = ((double)lineparameters.OffsetX / (double)Ticket.PaperWidth * (double)stackPanel.Width); translatetransform.X = TranslatedOffset / FactorX; Thickness margin = new Thickness(0, 0, 0, lineparameters.LineSpace / DOT_PIXEL_RELATION); textbox.Margin = margin; textbox.Tag = Ticket.Lines.IndexOf(lineparameters); stackPanel.Children.Add(textbox); textbox.HorizontalAlignment = (HorizontalAlignment)lineparameters.Alignment; sizeBox.IsEnabled = false; }
///<summary> /// the linebreak is made out of an invisible separator. /// /// </summary> private void AddLineBreak(TicketClass.LineParameters lineparameters,int index) { Separator separator = new Separator(); separator.PreviewMouseLeftButtonDown += this.grab_Control_Element; separator.Height = lineparameters.Space/ DOT_PIXEL_RELATION; separator.Tag = Ticket.Lines.IndexOf(lineparameters); if (index == -1) { stackPanel.Children.Add(separator); } else { stackPanel.Children.Insert(index, separator); } }
private void AddImage(TicketClass.LineParameters lineparameters) { Image img = new Image(); img.Source = lineparameters.BitImage; img.HorizontalAlignment = (HorizontalAlignment)lineparameters.Alignment; img.Stretch = Stretch.None; img.PreviewMouseDown += this.view_MouseLeftDown; Thickness margin = new Thickness(0,0, 0, LINE_HEIGHT / DOT_PIXEL_RELATION / 2); img.Margin = margin; img.Tag = Ticket.Lines.IndexOf(lineparameters); stackPanel.Children.Add(img); }
//View with a fresh new ticket public TicketEditorView(MainWindow maininstance) { InitializeComponent(); setMouseEvents(); Ticket = new TicketClass(); MainWindowInstance = maininstance; AddDummyText(); DisableButtons(); CodePages = new CodePageList(); LanguageMenu.ItemsSource = CodePages; }
private void listView_RightClickElement(object sender, MouseButtonEventArgs e) { var listviewelement = sender as ListView; int index = listviewelement.SelectedIndex; if (index > -1) { SelectedTicket = TicketList.ElementAt(index); } }
//Logic for engaging the browser/list private void listView_DoubleClick(object sender, MouseButtonEventArgs e) { var listviewelement = sender as ListView; int index = listviewelement.SelectedIndex; if (index > -1) { SelectedTicket = TicketList.ElementAt(index); TicketEditorView editor = new TicketEditorView(SelectedTicket,this); editor.Show(); } }