Files
2021-04-20 11:36:21 +02:00

324 lines
14 KiB
C#

//
// (C) Copyright 2003-2019 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Autodesk.Revit.DB;
namespace Revit.SDK.Samples.ViewPrinter.CS
{
public partial class PrintMgrForm : System.Windows.Forms.Form
{
private PrintMgr m_printMgr;
public PrintMgrForm(PrintMgr printMgr)
{
if (null == printMgr)
{
throw new ArgumentNullException("printMgr");
}
else
{
m_printMgr = printMgr;
}
InitializeComponent();
}
private void setupButton_Click(object sender, EventArgs e)
{
m_printMgr.ChangePrintSetup();
printSetupNameLabel.Text = m_printMgr.PrintSetupName;
}
/// <summary>
/// Initialize the UI data.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PrintMgrForm_Load(object sender, EventArgs e)
{
printerNameComboBox.DataSource = m_printMgr.InstalledPrinterNames;
// the selectedValueChange event have to add event handler after
// data source be set, or else the delegate method will be invoked meaningless.
this.printerNameComboBox.SelectedValueChanged += new System.EventHandler(this.printerNameComboBox_SelectedValueChanged);
printerNameComboBox.SelectedItem = m_printMgr.PrinterName;
if (m_printMgr.VerifyPrintToFile(printToFileCheckBox))
{
printToFileCheckBox.Checked = m_printMgr.IsPrintToFile;
}
System.Collections.ObjectModel.Collection<System.Windows.Forms.Control> controlsToEnableOrNot =
new System.Collections.ObjectModel.Collection<System.Windows.Forms.Control>();
controlsToEnableOrNot.Add(copiesNumericUpDown);
controlsToEnableOrNot.Add(numberofcoyiesLabel);
m_printMgr.VerifyCopies(controlsToEnableOrNot);
controlsToEnableOrNot.Clear();
controlsToEnableOrNot.Add(printToFileNameLabel);
controlsToEnableOrNot.Add(printToFileNameTextBox);
controlsToEnableOrNot.Add(browseButton);
m_printMgr.VerifyPrintToFileName(controlsToEnableOrNot);
m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton);
if (m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton))
{
singleFileRadioButton.Checked = m_printMgr.IsCombinedFile;
separateFileRadioButton.Checked = !m_printMgr.IsCombinedFile;
}
if (!m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton)
&& m_printMgr.VerifyPrintToSeparateFile(separateFileRadioButton))
{
separateFileRadioButton.Checked = true;
}
this.singleFileRadioButton.CheckedChanged += new System.EventHandler(this.combineRadioButton_CheckedChanged);
switch (m_printMgr.PrintRange)
{
case PrintRange.Current:
currentWindowRadioButton.Checked = true;
break;
case PrintRange.Select:
selectedViewsRadioButton.Checked = true;
break;
case PrintRange.Visible:
visiblePortionRadioButton.Checked = true;
break;
default:
break;
}
this.currentWindowRadioButton.CheckedChanged += new System.EventHandler(this.currentWindowRadioButton_CheckedChanged);
this.visiblePortionRadioButton.CheckedChanged += new System.EventHandler(this.visiblePortionRadioButton_CheckedChanged);
this.selectedViewsRadioButton.CheckedChanged += new System.EventHandler(this.selectedViewsRadioButton_CheckedChanged);
this.printToFileNameTextBox.Text = Environment.GetFolderPath(
Environment.SpecialFolder.MyDocuments) + "\\" + m_printMgr.DocumentTitle;
controlsToEnableOrNot.Clear();
controlsToEnableOrNot.Add(selectedViewSheetSetLabel);
controlsToEnableOrNot.Add(selectedViewSheetSetButton);
if (m_printMgr.VerifySelectViewSheetSet(controlsToEnableOrNot))
{
this.selectedViewSheetSetLabel.Text = m_printMgr.SelectedViewSheetSetName;
}
orderCheckBox.Checked = m_printMgr.PrintOrderReverse;
this.orderCheckBox.CheckedChanged += new System.EventHandler(this.orderCheckBox_CheckedChanged);
if (m_printMgr.VerifyCollate(collateCheckBox))
{
collateCheckBox.Checked = m_printMgr.Collate;
}
this.collateCheckBox.CheckedChanged += new System.EventHandler(this.collateCheckBox_CheckedChanged);
printSetupNameLabel.Text = m_printMgr.PrintSetupName;
}
private void printerNameComboBox_SelectedValueChanged(object sender, EventArgs e)
{
m_printMgr.PrinterName = printerNameComboBox.SelectedItem as string;
// Verify the relative controls is enable or not, according to the printer changed.
m_printMgr.VerifyPrintToFile(printToFileCheckBox);
System.Collections.ObjectModel.Collection<System.Windows.Forms.Control> controlsToEnableOrNot =
new System.Collections.ObjectModel.Collection<System.Windows.Forms.Control>();
controlsToEnableOrNot.Add(copiesNumericUpDown);
controlsToEnableOrNot.Add(numberofcoyiesLabel);
m_printMgr.VerifyCopies(controlsToEnableOrNot);
controlsToEnableOrNot.Clear();
controlsToEnableOrNot.Add(printToFileNameLabel);
controlsToEnableOrNot.Add(printToFileNameTextBox);
controlsToEnableOrNot.Add(browseButton);
if (!string.IsNullOrEmpty(printToFileNameTextBox.Text))
{
printToFileNameTextBox.Text = printToFileNameTextBox.Text.Remove(
printToFileNameTextBox.Text.LastIndexOf(".")) + m_printMgr.PostFix;
}
m_printMgr.VerifyPrintToFileName(controlsToEnableOrNot);
m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton);
m_printMgr.VerifyPrintToSeparateFile(separateFileRadioButton);
}
private void printToFileCheckBox_CheckedChanged(object sender, EventArgs e)
{
m_printMgr.IsPrintToFile = printToFileCheckBox.Checked;
// Verify the relative controls is enable or not, according to the print to file
// check box is checked or not.
System.Collections.ObjectModel.Collection<System.Windows.Forms.Control> controlsToEnableOrNot =
new System.Collections.ObjectModel.Collection<System.Windows.Forms.Control>();
controlsToEnableOrNot.Add(copiesNumericUpDown);
controlsToEnableOrNot.Add(numberofcoyiesLabel);
m_printMgr.VerifyCopies(controlsToEnableOrNot);
controlsToEnableOrNot.Clear();
controlsToEnableOrNot.Add(printToFileNameLabel);
controlsToEnableOrNot.Add(printToFileNameTextBox);
controlsToEnableOrNot.Add(browseButton);
m_printMgr.VerifyPrintToFileName(controlsToEnableOrNot);
m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton);
}
private void combineRadioButton_CheckedChanged(object sender, EventArgs e)
{
if (m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton))
{
m_printMgr.IsCombinedFile = singleFileRadioButton.Checked;
}
}
private void browseButton_Click(object sender, EventArgs e)
{
string newName = m_printMgr.ChangePrintToFileName();
if (!string.IsNullOrEmpty(newName))
{
printToFileNameTextBox.Text = newName;
}
}
private void currentWindowRadioButton_CheckedChanged(object sender, EventArgs e)
{
if (currentWindowRadioButton.Checked)
{
m_printMgr.PrintRange = Autodesk.Revit.DB.PrintRange.Current;
System.Collections.ObjectModel.Collection<System.Windows.Forms.Control> controlsToEnableOrNot =
new System.Collections.ObjectModel.Collection<System.Windows.Forms.Control>();
controlsToEnableOrNot.Add(selectedViewSheetSetLabel);
controlsToEnableOrNot.Add(selectedViewSheetSetButton);
m_printMgr.VerifySelectViewSheetSet(controlsToEnableOrNot);
if (m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton))
{
m_printMgr.IsCombinedFile = true;
singleFileRadioButton.Checked = true;
separateFileRadioButton.Checked = false;
}
m_printMgr.VerifyPrintToSeparateFile(separateFileRadioButton);
m_printMgr.VerifyCollate(collateCheckBox);
}
}
private void visiblePortionRadioButton_CheckedChanged(object sender, EventArgs e)
{
if (visiblePortionRadioButton.Checked)
{
m_printMgr.PrintRange = Autodesk.Revit.DB.PrintRange.Visible;
System.Collections.ObjectModel.Collection<System.Windows.Forms.Control> controlsToEnableOrNot =
new System.Collections.ObjectModel.Collection<System.Windows.Forms.Control>();
controlsToEnableOrNot.Add(selectedViewSheetSetLabel);
controlsToEnableOrNot.Add(selectedViewSheetSetButton);
m_printMgr.VerifySelectViewSheetSet(controlsToEnableOrNot);
if (m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton))
{
m_printMgr.IsCombinedFile = true;
singleFileRadioButton.Checked = true;
separateFileRadioButton.Checked = false;
}
m_printMgr.VerifyPrintToSeparateFile(separateFileRadioButton);
m_printMgr.VerifyCollate(collateCheckBox);
}
}
private void selectedViewsRadioButton_CheckedChanged(object sender, EventArgs e)
{
if (selectedViewsRadioButton.Checked)
{
m_printMgr.PrintRange = Autodesk.Revit.DB.PrintRange.Select;
System.Collections.ObjectModel.Collection<System.Windows.Forms.Control> controlsToEnableOrNot =
new System.Collections.ObjectModel.Collection<System.Windows.Forms.Control>();
controlsToEnableOrNot.Add(selectedViewSheetSetLabel);
controlsToEnableOrNot.Add(selectedViewSheetSetButton);
m_printMgr.VerifySelectViewSheetSet(controlsToEnableOrNot);
m_printMgr.VerifyPrintToSingleFile(singleFileRadioButton);
if (m_printMgr.VerifyPrintToSeparateFile(separateFileRadioButton))
{
separateFileRadioButton.Checked = true;
}
m_printMgr.VerifyPrintToSeparateFile(separateFileRadioButton);
m_printMgr.VerifyCollate(collateCheckBox);
}
}
private void orderCheckBox_CheckedChanged(object sender, EventArgs e)
{
m_printMgr.PrintOrderReverse = orderCheckBox.Checked;
}
private void collateCheckBox_CheckedChanged(object sender, EventArgs e)
{
m_printMgr.Collate = collateCheckBox.Checked;
}
private void selectButton_Click(object sender, EventArgs e)
{
m_printMgr.SelectViewSheetSet();
selectedViewSheetSetLabel.Text = m_printMgr.SelectedViewSheetSetName;
}
private void copiesNumericUpDown_ValueChanged(object sender, EventArgs e)
{
try
{
m_printMgr.CopyNumber = (int)(copiesNumericUpDown.Value);
}
catch (InvalidOperationException)
{
collateCheckBox.Enabled = false;
return;
}
m_printMgr.VerifyCollate(collateCheckBox);
}
private void okButton_Click(object sender, EventArgs e)
{
try
{
m_printMgr.SubmitPrint();
}
catch (Exception)
{
PrintMgr.MyMessageBox("Print Failed");
}
}
}
}