private void SwitchToPrinter(PrinterInfo printerInfo) { // Switch to new printer PrinterDetails.SwitchPrinters(printerInfo.ID); this.DialogWindow.CloseOnIdle(); }
/// <summary> /// DropDownForPrinter /// Calls [usp_dropdown_PrinterAll] /// </summary> public override List <PrinterDetails> DropDownForPrinter(System.Int32?clientId) { SqlConnection cn = null; SqlCommand cmd = null; try { cn = new SqlConnection(this.ConnectionString); cmd = new SqlCommand("usp_dropdown_PrinterAll", cn); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandTimeout = 30; cmd.Parameters.Add("@ClientId", SqlDbType.Int).Value = clientId; cn.Open(); DbDataReader reader = ExecuteReader(cmd); List <PrinterDetails> lst = new List <PrinterDetails>(); while (reader.Read()) { PrinterDetails obj = new PrinterDetails(); obj.PrinterId = GetReaderValue_Int32(reader, "PrinterId", 0); obj.PrinterName = GetReaderValue_String(reader, "PrinterName", ""); lst.Add(obj); obj = null; } return(lst); } catch (SqlException sqlex) { //LogException(sqlex); throw new Exception("Failed to get Printers", sqlex); } finally { cmd.Dispose(); cn.Close(); cn.Dispose(); } }
/// <summary> /// Call [usp_selectAll_Printer_for_Client] /// </summary> /// <param name="clientId"></param> /// <returns></returns> public override List <PrinterDetails> GetListForClient(System.Int32?clientId) { SqlConnection cn = null; SqlCommand cmd = null; try { cn = new SqlConnection(this.ConnectionString); cmd = new SqlCommand("usp_selectAll_Printer_for_Client", cn); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandTimeout = 30; cmd.Parameters.Add("@ClientId", SqlDbType.Int).Value = clientId; cn.Open(); DbDataReader reader = ExecuteReader(cmd); List <PrinterDetails> lst = new List <PrinterDetails>(); while (reader.Read()) { PrinterDetails obj = new PrinterDetails(); obj.PrinterId = GetReaderValue_Int32(reader, "PrinterId", 0); obj.PrinterName = GetReaderValue_String(reader, "PrinterName", ""); obj.PrinterDescription = GetReaderValue_String(reader, "PrinterDescription", ""); obj.Inactive = GetReaderValue_Boolean(reader, "Inactive", false); obj.ClientNo = GetReaderValue_Int32(reader, "ClientNo", 0); obj.UpdatedBy = GetReaderValue_Int32(reader, "UpdatedBy", 0); obj.DLUP = GetReaderValue_DateTime(reader, "DLUP", DateTime.MinValue); lst.Add(obj); obj = null; } return(lst); } catch (SqlException sqlex) { //LogException(sqlex); throw new Exception("Failed to get Printers", sqlex); } finally { cmd.Dispose(); cn.Close(); cn.Dispose(); } }
public virtual void PrintVouchersInternal(int allocationId, List <int> voucherNumbers) { try { if (string.IsNullOrEmpty(m_PrinterName)) { throw new ArgumentNullException("PrinterName", "Value can not be null or empty"); } if (string.IsNullOrEmpty(m_ReportType2)) { throw new ArgumentNullException("ReportType2", "Value can not be null or empty"); } if (string.IsNullOrEmpty(m_PrinterXmlFilePath)) { throw new ArgumentNullException("PrinterXmlFilePath", "Value can not be null or empty"); } if (!File.Exists(m_PrinterXmlFilePath)) { throw new IOException("Can not find file"); } AllocationId = allocationId; lock (this) { while (ms_VPItems.IndexOf(this) != 0) { Monitor.Wait(this, 3000); } } Printing = new VoucherNumberingAllocationPrinting.VoucherNumberingAllocationPrinting(); Manager = new PartyManagement.PartyManagement(); Allocation = new Func <int, VoucherAllocation>((x) => Printing.RetrieveAllocation(x)).ReTry(allocationId); if (Allocation == null) { throw new ArgumentNullException("Can not get allocation:".concat(allocationId)); } Retailer = new Func <int, int, Retailer>((x, y) => Manager.RetrieveRetailerDetail(x, y)).ReTry(Allocation.CountryId, Allocation.RetailerId); if (Retailer == null) { throw new ArgumentNullException("Can not find retailer:".concat(" CountryId: ", Allocation.CountryId, " RetailerId: ", Allocation.RetailerId)); } Office = new Func <int, int, PtfOffice>((x, y) => Manager.RetrievePtfOfficeDetail(x, y)).ReTry(Retailer.CountryId, Retailer.PrinterBranchId); if (Office == null) { throw new ArgumentNullException("Can not get office:".concat(" CountryId: ", Allocation.CountryId, " PrinterBranchId:", Retailer.PrinterBranchId)); } var guid = CommTools.ToGuid(Allocation.CountryId, Allocation.RetailerId); PrinterDetails printer = null; CacheManager.Instance.Get <PrinterDetails>(guid, out printer, () => new Func <int, int, PrinterDetails>((x, y) => Manager.GetPrinterInfo(x, y)).ReTry(Retailer.CountryId, Allocation.RetailerId)); if (printer == null || printer.IsEmpty || UseLocalFormat) { printer = new PrinterDetails { Name = "Default", Path = m_PrinterName, Type2 = m_ReportType2, Xml = File.ReadAllText(m_PrinterXmlFilePath), IsoID = Retailer.CountryId, RetailerID = Allocation.RetailerId, }; } if (UseLocalPrinter) { printer.Path = m_PrinterName; } #region LOCAL PRINTER //if (!PrintManager.GetInstalledPrinters().Contains(printer.Path, StringComparer.InvariantCultureIgnoreCase)) // throw new ApplicationException("Can not find printer ".concat(printer.Path)); #endregion int countryId = Allocation.CountryId; InitPrinter("Initialization_".concat(Retailer.Name, DateTime.Now.Ticks)); RangeFrom = Allocation.RangeFrom / 10; RangeTo = Allocation.RangeTo / 10; // VPrinting.Documents.VoucherPrintLayout250 Type documentType = Type.GetType(printer.Type2); if (documentType == null) { throw new ArgumentNullException("documentType", "Can not find type of: ".concat(printer.Type2)); } XmlSerializer formatter = new XmlSerializer(documentType); var layout = formatter.ToObject <IVoucherLayout>(printer.Xml); if (layout == null) { throw new ArgumentNullException("layout", "Can not create layout from xml"); } layout.Init(); CacheManager.Instance.Table[Strings.IVoucherLayout] = layout; CacheManager.Instance.Table[Strings.SubRangeFrom] = RangeFrom; var multyLines = new Queue <IList <IPrintLine> >(); int index = 0; foreach (int voucher in voucherNumbers) { CacheManager.Instance.Table[Strings.Index] = index++; VoucherNo = voucher; //Counting starts from 1 for us. StrVoucherNo = new Func <int, int, bool, string>((x, y, z) => Printing.CreateVoucherNumber(x, y, z)).ReTry(countryId, voucher, false); layout.Clear(); layout.DataBind(this, StrVoucherNo, voucher, false); for (int count = 0; count < Repeat[countryId]; count++) { #if DEBUGGER Debug.WriteLine(string.Format("{0}\t{1}\t{2}", countryId, Retailer.Name, voucher), Strings.VRPINT); #endif multyLines.Enqueue(new List <IPrintLine>(layout.PrintLines)); if (!SimulatePrint && !MultyPagePrint) { layout.PrintVouchers(printer.Path, StrVoucherNo, layout.FormLength, layout.DocumentInitialization, multyLines); } if (Test != null) { Test(this, EventArgs.Empty); } if (PrintOnce) { break; } } if (PrintOnce) { break; } } if (!SimulatePrint && MultyPagePrint && multyLines.Count > 0) { layout.PrintVouchers(printer.Path, Strings.VRPINT, layout.FormLength, layout.DocumentInitialization, multyLines); } if (!SimulatePrint) { new Action <int, int, int>((x, y, z) => Printing.LogVoucherAllocationPrinted(x, y, z)).ReTry(allocationId, Program.currentUser.UserID, Program.currentUser.CountryID); new Action <int, bool, int>((x, y, z) => Printing.SetVoucherAllocationPrinted(x, y, z)).ReTry(allocationId, true, Program.currentUser.UserID); } //set the printed status to true } catch (Exception ex) { if (Error != null) { Error(this, new ThreadExceptionEventArgs(ex)); } } finally { if (Done != null) { Done(this, EventArgs.Empty); } } }
public HardwareTabPage(ThemeConfig theme) { this.theme = theme; this.Padding = 0; this.AnchorAll(); var allControls = new FlowLayoutWidget(FlowDirection.TopToBottom); var horizontalSplitter = new Splitter() { SplitterDistance = UserSettings.Instance.LibraryViewWidth, SplitterSize = theme.SplitterWidth, SplitterBackground = theme.SplitterBackground }; horizontalSplitter.AnchorAll(); horizontalSplitter.DistanceChanged += (s, e) => { UserSettings.Instance.LibraryViewWidth = horizontalSplitter.SplitterDistance; }; allControls.AddChild(horizontalSplitter); treeView = new InventoryTreeView(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, Width = 300, Margin = 5 }; treeView.NodeMouseDoubleClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Left && mouseEvent.Clicks == 2) { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { // Open printer PrinterDetails.SwitchPrinters(printerInfo.ID); } } }; treeView.NodeMouseClick += (s, e) => { if (e is MouseEventArgs mouseEvent && s is GuiWidget clickedWidget && mouseEvent.Button == MouseButtons.Right) { UiThread.RunOnIdle(() => { var menu = new PopupMenu(ApplicationController.Instance.MenuTheme); var openMenuItem = menu.CreateMenuItem("Open".Localize()); openMenuItem.Click += (s2, e2) => { if (treeView?.SelectedNode.Tag is PrinterInfo printerInfo) { // Open printer PrinterDetails.SwitchPrinters(printerInfo.ID); } }; menu.CreateHorizontalLine(); var deleteMenuItem = menu.CreateMenuItem("Delete".Localize()); deleteMenuItem.Click += (s2, e2) => { // Delete printer StyledMessageBox.ShowMessageBox( (deletePrinter) => { if (deletePrinter) { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { ProfileManager.Instance.DeletePrinter(printerInfo.ID, true); } } }, "Are you sure you want to delete your currently selected printer?".Localize(), "Delete Printer?".Localize(), StyledMessageBox.MessageType.YES_NO, "Delete Printer".Localize()); }; var systemWindow = this.Parents <SystemWindow>().FirstOrDefault(); systemWindow.ShowPopup( new MatePoint(clickedWidget) { Mate = new MateOptions(MateEdge.Left, MateEdge.Top), AltMate = new MateOptions(MateEdge.Left, MateEdge.Top) }, new MatePoint(menu) { Mate = new MateOptions(MateEdge.Left, MateEdge.Top), AltMate = new MateOptions(MateEdge.Right, MateEdge.Top) }, altBounds: new RectangleDouble(mouseEvent.X + 1, mouseEvent.Y + 1, mouseEvent.X + 1, mouseEvent.Y + 1)); }); } }; treeView.ScrollArea.HAnchor = HAnchor.Stretch; treeView.AfterSelect += async(s, e) => { if (treeView.SelectedNode.Tag is PrinterInfo printerInfo) { horizontalSplitter.Panel2.CloseAllChildren(); horizontalSplitter.Panel2.AddChild(new PrinterDetails(printerInfo, theme) { HAnchor = HAnchor.MaxFitOrStretch, VAnchor = VAnchor.Stretch, Padding = theme.DefaultContainerPadding }); } }; horizontalSplitter.Panel1.AddChild(treeView); horizontalSplitter.Panel2.AddChild(new GuiWidget() { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Stretch, }); allControls.AnchorAll(); this.AddChild(allControls); }