For 32 Bit:
Download binary e.g. ghostpdl-8.71-win32.zip http://www.ghostscript.com/releases/
unzip and find gswin32
command gxps-871.exe -sDEVICE=pdfwrite -sOutputFile=33.pdf -dNOPAUSE tiger.xps
For 64 Bit
download ghostpdl-9.00.tar.gz and get all the source
use VC++ nmake xps_msvc.mak to complike gxps.exe ( from 64 bit sdk prompt)
gxps -sDEVICE=pdfwrite -sOutputFile=77.pdf -sNOPAUSE tigger.xsp
CutePDF is a printer that convert any doc to PDF and can be programed in C#
(PopUp Dialog to save file). It uses ghostscript.
http://www.cutepdf.com/products/cutepdf/writer.asp
Monday, January 17, 2011
Set up ghostscript PDL to convert xps to PDF
Walk WPF visual Tree and Logical Tree
public static List<T> GetChildren<T>(Visual parent) where T : Visual
{
List<T> childrenT = new List<T>();
int numOfChildren = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numOfChildren;i++ )
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
if ((v as T) == null)
{
childrenT.AddRange(GetChildren<T>(v));
}
else childrenT.Add(v as T);
}
return childrenT;
}
public MainWindow() { InitializeComponent(); WalkVisualTree(g); WalkLogicalTree(g); } List<DependencyObject> listV = new List<DependencyObject>(); void WalkVisualTree(DependencyObject dobj) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dobj); i++) { DependencyObject dobj2=VisualTreeHelper.GetChild(dobj, i); listV.Add(dobj2); WalkVisualTree(dobj2); } } List<FrameworkElement> listL = new List<FrameworkElement>(); void WalkLogicalTree(FrameworkElement dobj) { if (dobj == null) return; foreach ( var c in LogicalTreeHelper.GetChildren(dobj)) { listL.Add(c as FrameworkElement); WalkLogicalTree(c as FrameworkElement); } } }
Thursday, December 23, 2010
Config Max Buffer Size of App Fabric Caching
Server Side:
Export-CacheClusterConfig
Stop-CacheCluster
Import-CacheClusterConfig
Start-CacheCluster
XML changes:
<advanctedProperties>
<transportProperties maxBufferPoolSize="7" maxBufferSize="2000000000"/>
</advanctedProperties>
Client Side:
<dataCacheClient>
<transportProperties maxBufferPoolSize="7" maxBufferSize="2000000000"/>
Thursday, December 16, 2010
SpliterContainer Grid
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestRSUIFramework
{
public partial class SpliterContainerGrid : UserControl
{
public SpliterContainerGrid()
{
InitializeComponent();
}
#region Properties
public int Rows { get; set; }
public int Columns { get; set; }
BorderStyle _SplitContainerBorderStyle=BorderStyle.None;
public BorderStyle SplitContainerBorderStyle {
set
{
_SplitContainerBorderStyle = value;
}
}
public SortedList<int, SplitContainer> _SpliterContainerColumns;
public SortedList<int, SortedList<int, SplitContainer>> _SpliterContainerGrid;
#endregion
#region basic algorithm
private SortedList<int, SplitContainer> BuildSplitContainerChain(int NumOfSC, Orientation SCOrient)
{
SortedList<int, SplitContainer> list = new SortedList<int, SplitContainer>();
if (NumOfSC == 0)
{
SplitContainer sc = new SplitContainer();
sc.Orientation = SCOrient;
sc.BorderStyle = _SplitContainerBorderStyle;
sc.Dock = DockStyle.Fill;
sc.Panel1MinSize = 0;
sc.Panel2MinSize = 0;
sc.Panel2Collapsed = true;
list.Add(0, sc);
return list;
}
for (int i = 0; i < NumOfSC; i++)
{
SplitContainer sc = new SplitContainer();
sc.Orientation = SCOrient;
sc.BorderStyle = _SplitContainerBorderStyle;
sc.Dock = DockStyle.Fill;
sc.Panel1MinSize = 0;
sc.Panel2MinSize = 0;
list.Add(i, sc);
}
for (int i = 0; i < NumOfSC - 1; i++)
{
list[i].Panel2.Controls.Add(list[i + 1]);
}
return list;
}
SplitContainer WalkSplitContainerChain(SplitContainer sc, int step)
{
while (step >= 1)
{
SplitContainer sc2 = sc.Panel2.Controls[0] as SplitContainer;
return WalkSplitContainerChain(sc2, step - 1);
}
return sc;
}
#endregion
#region Build Columns
public void BuildSpliterContainerColumns()
{
_SpliterContainerColumns = BuildSplitContainerChain(Columns - 1, Orientation.Vertical);
this.Controls.Add(_SpliterContainerColumns[0]);
for (int i = 0; i < _SpliterContainerColumns.Count; i++)
{
_SpliterContainerColumns[i].SplitterDistance = Width / Columns;
}
}
#endregion
#region Build Grid
public void BuildSpliterContainerGrid()
{
_SpliterContainerGrid = new SortedList<int, SortedList<int, SplitContainer>>();
for (int k = 0; k < _SpliterContainerColumns.Count; k++)
{
_SpliterContainerGrid.Add(k,BuildSplitContainerChain(Rows - 1, Orientation.Horizontal));
_SpliterContainerColumns[k].Panel1.Controls.Add(_SpliterContainerGrid[k][0]);
for (int i = 0; i < Rows - 1; i++)
{
SplitContainer sc1 = WalkSplitContainerChain(_SpliterContainerGrid[k][0], i);
sc1.SplitterDistance = (Height - _SpliterContainerGrid[k][0].SplitterWidth * (Rows - 1)) / (Rows);
}
}
if (Columns >= 2)
{
_SpliterContainerGrid.Add(Columns - 1, BuildSplitContainerChain(Rows - 1, Orientation.Horizontal));
_SpliterContainerColumns[Columns - 2].Panel2.Controls.Add(_SpliterContainerGrid[Columns - 1][0]);
for (int i = 0; i < Rows - 1; i++)
{
SplitContainer sc1 = WalkSplitContainerChain(_SpliterContainerGrid[Columns - 1][0], i);
sc1.SplitterDistance = (Height - _SpliterContainerGrid[Columns - 1][0].SplitterWidth * (Rows - 1)) / (Rows);
}
}
}
#endregion
#region Layout Content
public void PerformLayout( SortedList<int, SortedList<int,UserControl>> contents)
{
SortedList<int, SortedList<int, UserControl>> ucs = contents;
for (int i = 0; i < Rows-1; i++)
{
for (int j = 0; j < Columns-1; j++)
{
_SpliterContainerGrid[j][i].Panel1.Controls.Add(ucs[i][j]);
}
}
for (int j = 0; j < Columns - 1; j++)
{
if (Rows == 1) _SpliterContainerGrid[j][0].Panel1.Controls.Add(ucs[0][j]);
else _SpliterContainerGrid[j][Rows - 2].Panel2.Controls.Add(ucs[Rows-1][j]);
}
for (int i = 0; i < Rows - 1; i++)
{
if (Columns == 1) _SpliterContainerGrid[0][i].Panel1.Controls.Add(ucs[i][0]);
else _SpliterContainerGrid[Columns - 1][i].Panel1.Controls.Add(ucs[i][Columns - 1]);
}
if (Rows == 1) _SpliterContainerGrid[Columns - 1][0].Panel1.Controls.Add(ucs[0][Columns - 1]);
else _SpliterContainerGrid[Columns - 1][Rows - 2].Panel2.Controls.Add(ucs[Rows - 1][Columns - 1]);
}
#endregion
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestRSUIFramework
{
public partial class SpliterContainerGrid : UserControl
{
public SpliterContainerGrid()
{
InitializeComponent();
}
#region Properties
public int Rows { get; set; }
public int Columns { get; set; }
BorderStyle _SplitContainerBorderStyle=BorderStyle.None;
public BorderStyle SplitContainerBorderStyle {
set
{
_SplitContainerBorderStyle = value;
}
}
public SortedList<int, SplitContainer> _SpliterContainerColumns;
public SortedList<int, SortedList<int, SplitContainer>> _SpliterContainerGrid;
#endregion
#region basic algorithm
private SortedList<int, SplitContainer> BuildSplitContainerChain(int NumOfSC, Orientation SCOrient)
{
SortedList<int, SplitContainer> list = new SortedList<int, SplitContainer>();
if (NumOfSC == 0)
{
SplitContainer sc = new SplitContainer();
sc.Orientation = SCOrient;
sc.BorderStyle = _SplitContainerBorderStyle;
sc.Dock = DockStyle.Fill;
sc.Panel1MinSize = 0;
sc.Panel2MinSize = 0;
sc.Panel2Collapsed = true;
list.Add(0, sc);
return list;
}
for (int i = 0; i < NumOfSC; i++)
{
SplitContainer sc = new SplitContainer();
sc.Orientation = SCOrient;
sc.BorderStyle = _SplitContainerBorderStyle;
sc.Dock = DockStyle.Fill;
sc.Panel1MinSize = 0;
sc.Panel2MinSize = 0;
list.Add(i, sc);
}
for (int i = 0; i < NumOfSC - 1; i++)
{
list[i].Panel2.Controls.Add(list[i + 1]);
}
return list;
}
SplitContainer WalkSplitContainerChain(SplitContainer sc, int step)
{
while (step >= 1)
{
SplitContainer sc2 = sc.Panel2.Controls[0] as SplitContainer;
return WalkSplitContainerChain(sc2, step - 1);
}
return sc;
}
#endregion
#region Build Columns
public void BuildSpliterContainerColumns()
{
_SpliterContainerColumns = BuildSplitContainerChain(Columns - 1, Orientation.Vertical);
this.Controls.Add(_SpliterContainerColumns[0]);
for (int i = 0; i < _SpliterContainerColumns.Count; i++)
{
_SpliterContainerColumns[i].SplitterDistance = Width / Columns;
}
}
#endregion
#region Build Grid
public void BuildSpliterContainerGrid()
{
_SpliterContainerGrid = new SortedList<int, SortedList<int, SplitContainer>>();
for (int k = 0; k < _SpliterContainerColumns.Count; k++)
{
_SpliterContainerGrid.Add(k,BuildSplitContainerChain(Rows - 1, Orientation.Horizontal));
_SpliterContainerColumns[k].Panel1.Controls.Add(_SpliterContainerGrid[k][0]);
for (int i = 0; i < Rows - 1; i++)
{
SplitContainer sc1 = WalkSplitContainerChain(_SpliterContainerGrid[k][0], i);
sc1.SplitterDistance = (Height - _SpliterContainerGrid[k][0].SplitterWidth * (Rows - 1)) / (Rows);
}
}
if (Columns >= 2)
{
_SpliterContainerGrid.Add(Columns - 1, BuildSplitContainerChain(Rows - 1, Orientation.Horizontal));
_SpliterContainerColumns[Columns - 2].Panel2.Controls.Add(_SpliterContainerGrid[Columns - 1][0]);
for (int i = 0; i < Rows - 1; i++)
{
SplitContainer sc1 = WalkSplitContainerChain(_SpliterContainerGrid[Columns - 1][0], i);
sc1.SplitterDistance = (Height - _SpliterContainerGrid[Columns - 1][0].SplitterWidth * (Rows - 1)) / (Rows);
}
}
}
#endregion
#region Layout Content
public void PerformLayout( SortedList<int, SortedList<int,UserControl>> contents)
{
SortedList<int, SortedList<int, UserControl>> ucs = contents;
for (int i = 0; i < Rows-1; i++)
{
for (int j = 0; j < Columns-1; j++)
{
_SpliterContainerGrid[j][i].Panel1.Controls.Add(ucs[i][j]);
}
}
for (int j = 0; j < Columns - 1; j++)
{
if (Rows == 1) _SpliterContainerGrid[j][0].Panel1.Controls.Add(ucs[0][j]);
else _SpliterContainerGrid[j][Rows - 2].Panel2.Controls.Add(ucs[Rows-1][j]);
}
for (int i = 0; i < Rows - 1; i++)
{
if (Columns == 1) _SpliterContainerGrid[0][i].Panel1.Controls.Add(ucs[i][0]);
else _SpliterContainerGrid[Columns - 1][i].Panel1.Controls.Add(ucs[i][Columns - 1]);
}
if (Rows == 1) _SpliterContainerGrid[Columns - 1][0].Panel1.Controls.Add(ucs[0][Columns - 1]);
else _SpliterContainerGrid[Columns - 1][Rows - 2].Panel2.Controls.Add(ucs[Rows - 1][Columns - 1]);
}
#endregion
}
}
Thursday, November 4, 2010
MaskEdit Code
If no MaskEdit found do the following rough code
private void ultraTextEditor1_KeyUp(object sender, KeyEventArgs e)
{
UltraTextEditor te = (UltraTextEditor)sender;
var q = from _ in
new List() {
Keys.D0, Keys.D1, Keys.D2,Keys.D3, Keys.D4, Keys.D5,
Keys.D6, Keys.D7, Keys.D8,Keys.D9,
Keys.NumPad0, Keys.NumPad1, Keys.NumPad2,Keys.NumPad3, Keys.NumPad4, Keys.NumPad5,
Keys.NumPad6, Keys.NumPad7, Keys.NumPad8,Keys.NumPad9,
Keys.Delete, Keys.Decimal,Keys.Left, Keys.Right,Keys.OemPeriod,Keys.Back,Keys.Home,
}
where e.KeyCode == _
select _;
e.SuppressKeyPress = q.Count() == 0;
if ((e.KeyCode == Keys.Decimal || e.KeyCode == Keys.OemPeriod) && te.Text.Count(s => s == '.') == 1)
{
e.SuppressKeyPress = true;
}
var q1 = from _ in
new List() {
Keys.Left, Keys.Right,Keys.Back,Keys.Home,
}
where e.KeyCode == _
select _;
if (q1.Count() > 0) return;
if (te.Text.Length > 0)
{
string t = te.Text.Replace(",", "").Replace("..", ".");
double Data = Convert.ToDouble(t);
int i = (int)Math.Floor(Data);
string sInt = string.Format("{0:#,#}", i);
string dec = +t.IndexOf('.') >= 0 ? t.Substring(t.IndexOf('.')) : "";
te.Text = "";
te.AppendText(sInt + dec);
}
}
Monday, November 1, 2010
Dynamically Create Event Handler
public static class UIExtensioins
{
public class Inclusion
{
public string ComponentTypeFullName { get; set; }
public string EventName { get; set; }
public string[] SenderPropertyNames { get; set; }
public string[] EventArgsPropertyNames { get; set; }
}
public static void AttachLoggerToUIEvent(this Form f, IContainer components,ListinclusionList)
{
foreach (Inclusion i in inclusionList)
{
foreach (Component c in FindComponent(f, i.ComponentTypeFullName, components))
{
AttacheEventHandler(c, i);
}
}
}
public static IEnumerableFindComponent(Control ownerControl,string typeFullName, IContainer containter)
{
bool topComponentFound = false;
foreach (Component c1 in containter.Components)
if (c1.GetType().FullName == typeFullName)
{
topComponentFound = true;
yield return c1;
}
if (topComponentFound) yield break;
foreach (Control c1 in ownerControl.Controls)
{
if (c1.GetType().FullName == typeFullName) yield return c1;
else foreach (Control c2 in FindComponent(c1, typeFullName, containter))
if (c2.GetType().FullName == typeFullName) yield return c2;
}
}
public static void Log(Inclusion i, object sender, T args) where T : EventArgs
{
string logMsg="";
StringBuilder sb = new StringBuilder();
try
{
foreach (string s in i.SenderPropertyNames)
{
if (s != null)
{
PropertyInfo pi = sender.GetType().GetProperty(s);
object v = pi.GetValue(sender, null);
sb.Append(s + "=" + v + ";");
}
}
foreach (string s in i.EventArgsPropertyNames)
{
if (s != null)
{
string[] parts = s.Split('.');
PropertyInfo pi;
object v = args;
for (int k = 0; k < parts.Length; k++)
{
pi = v.GetType().GetProperty(parts[k]);
v = pi.GetValue(v, null);
}
sb.Append(s + "=" + v + ";");
}
}
string Name = "";
Control c = sender as Control;
if (c != null) Name = c.Parent.Name + ":" + c.Name;
logMsg = Name + " " + i.EventName + " " + sb.ToString();
}
catch (Exception ex)
{
logMsg = ex.Message + " " + ex.InnerException.Message + " " + ex.StackTrace;
}
finally
{
Action act = delegate
{
Console.WriteLine(logMsg);
ILog LOG = LogManager.GetLogger(typeof(TradeEntryMainForm));
LOG.Info(logMsg);
};
act.BeginInvoke(ar => { try { act.EndInvoke(ar); } catch { } }, null);
}
}
private static void AttacheEventHandler(Component c, Inclusion i)
{
foreach (EventInfo ei in c.GetType().GetEvents())
{
if (c.GetType().FullName == i.ComponentTypeFullName && ei.Name == i.EventName)
{
Type eventArgsType = ei.EventHandlerType.GetMethod("Invoke").GetParameters()[1].ParameterType;
MethodInfo mi = typeof(UIExtensioins).GetMethod("Log",
BindingFlags.Static | BindingFlags.Public).MakeGenericMethod(eventArgsType
);
ei.AddEventHandler(c,
Delegate.CreateDelegate(ei.EventHandlerType, i, mi));
}
}
}
}
App Setting Json serialization
public class Inclusion
{
public string ComponentTypeFullName { get; set; }
public string EventName { get; set; }
public string[] SenderPropertyNames { get; set; }
public string[] EventArgsPropertyNames { get; set; }
}
static Listli = new List ()
{
new Inclusion(){
ComponentTypeFullName="Infragistics.Win.Misc.UltraButton",
EventName="Click",
SenderPropertyNames=new string[]{null},
EventArgsPropertyNames=new string[]{null}},
new Inclusion() {
ComponentTypeFullName="Infragistics.Win.UltraWinEditors.UltraComboEditor",
EventName="SelectionChanged",
SenderPropertyNames=new string[]{"Text"},
EventArgsPropertyNames=new string[]{null}},
new Inclusion() {
ComponentTypeFullName="Infragistics.Win.UltraWinToolbars.UltraToolbarsManager",
EventName="ToolClick",
SenderPropertyNames=new string[]{null},
EventArgsPropertyNames=new string[]{"Tool.Key"}},
};
//Read
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List));
string cd = Settings.Default.Inclusion;
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(cd));
Listli2 =(List ) ser.ReadObject(ms);
ms.Close();
//write to see the format
Type t = li.GetType();
DataContractJsonSerializer ser2 = new DataContractJsonSerializer(t);
FileStream fs = new FileStream(@"c:\3.txt", FileMode.CreateNew);
ser.WriteObject(fs, li);
fs.Flush();
fs.Close();
Subscribe to:
Posts (Atom)