summaryrefslogtreecommitdiffstats
path: root/kjsembed/docs/examples/envelopemaker/env.js
diff options
context:
space:
mode:
Diffstat (limited to 'kjsembed/docs/examples/envelopemaker/env.js')
-rwxr-xr-xkjsembed/docs/examples/envelopemaker/env.js253
1 files changed, 253 insertions, 0 deletions
diff --git a/kjsembed/docs/examples/envelopemaker/env.js b/kjsembed/docs/examples/envelopemaker/env.js
new file mode 100755
index 00000000..4d26c295
--- /dev/null
+++ b/kjsembed/docs/examples/envelopemaker/env.js
@@ -0,0 +1,253 @@
+#!/usr/bin/env kjscmd
+
+StdDirs.addResourceType("envelopemaker", StdDirs.kde_default("data") + "/envelopemaker");
+
+var win = new KMainWindow(this);
+var view = Factory.loadui(StdDirs.findResource("envelopemaker", "EnvelopeMakerUI.ui"), this, win);
+//var view = Factory.loadui("EnvelopeMakerUI.ui", this, win);
+var Print = view.child('print');
+var Save = view.child('save');
+var Exit = view.child('exit');
+
+Print.connect(Print, 'clicked()', this, 'print');
+Save.connect(Save, 'clicked()', this, 'save');
+Exit.connect(Exit, 'clicked()', this, 'exit');
+
+var env = new envelope();
+env.init();
+
+win.setCentralWidget(view);
+win.setCaption("EnvelopeMaker");
+win.show();
+application.exec();
+
+function setupEnvelope()
+{
+ var fontName = /(.+)[,](.+)[,](.+)[,](.+)[,](.+)[,](.+)[,](.+)[,](.+)[,](.+)[,](.+)/.exec(view.child('font').font);
+
+ env.returnfont = fontName[1];
+ env.returnpointsize = fontName[2];
+ env.mailfont = fontName[1];
+ env.mailpointsize = fontName[2];
+ env.retAddress[0] = view.child('retAddress1').text;
+ env.retAddress[1] = view.child('retAddress2').text;
+ env.retAddress[2] = view.child('retAddress3').text;
+ env.retAddress[3] = view.child('retAddress4').text;
+ env.mailAddress[0] = view.child('mailAddress1').text;
+ env.mailAddress[1] = view.child('mailAddress2').text;
+ env.mailAddress[2] = view.child('mailAddress3').text;
+ env.mailAddress[3] = view.child('mailAddress4').text;
+ if ( view.child('barcode').checked )
+ {
+ if( env.getZip() == "" )
+ {
+ alert("You must enter a valid 9 digit Zipcode");
+ return false;
+ }
+ }
+ return true;
+}
+
+function print()
+{
+ if (setupEnvelope() )
+ {
+ var dcop = new DCOPClient();
+ if( dcop.attach() )
+ {
+ var ps = env.header();
+ ps += env.returnAddress();
+ ps += env.mailingAddress();
+ if( view.child('barcode').checked )
+ ps += env.barcode();
+ ps += env.footer();
+ if ( !dcop.send("kprinterservice", "printer", "printStream(const QString&)", ps ) )
+ {
+ alert("There was an error talking to the KPrinterService, please check that it is running.");
+ }
+
+ }
+
+ }
+}
+
+function save()
+{
+ if (setupEnvelope() )
+ {
+ var ps = env.header();
+ ps += env.returnAddress();
+ ps += env.mailingAddress();
+ if( view.child('barcode').checked )
+ ps += env.barcode();
+ ps += env.footer();
+ var fileName = StdDialog.getSaveFileName();
+ if( fileName != "")
+ {
+ System.writeFile(fileName, ps);
+ }
+ }
+}
+
+function envelope()
+{
+ this.init = function()
+ {
+
+ this.leftmargin = 0.30;
+ this.ewidth = 9.5;
+ this.eheight = 4.125;
+ this.linepos = 0;
+ this.normalpaper = 11;
+ this.normalwidth = 8.5;
+
+ this.feedcenter = this.normalwidth/2 - this.eheight/2
+ this.topmargin = 0.30 + this.feedcenter;
+ this.x0 = 0;
+ this.y0 = Math.round((this.normalpaper - this.ewidth) * 72);
+ this.xpos = Math.round(0.40*72*this.ewidth);
+ this.ypos = Math.round(-0.40*72*this.eheight);
+ this.xloc = Math.round(this.x0 + (this.topmargin * 72));
+ this.yloc = Math.round(this.y0 + (this.leftmargin * 72));
+
+ this.returnfont = "Times-Roman";
+ this.returnpointsize = 12;
+ this.mailfont = "Times-Roman";
+ this.mailpointsize = 10;
+ this.retAddress = ["Ian Reinhart Geiser","601 Coach Hill Ct","West Chester PA, 19380"];
+ this.mailAddress = ["SourceXtreme, Inc","1149 Broad Run Road","Coatesville, PA 39380-9176"];
+ this.zipcode = "0";
+ }
+
+ this.getZip = function()
+ {
+ var mailAddress = /.+,[\s]*.{2,2}[\s]+([\d]{5,5})[-]*([\d]{4,4})/.exec(this.mailAddress);
+ if( mailAddress )
+ return mailAddress[1] + mailAddress[2];
+ else
+ return "";
+ }
+
+ this.header = function()
+ {
+ var ps = "";
+ ps += "%!\n";
+ ps += "% EnvelopeMaker\n";
+ // Page size
+ // Comm #10 Envelope 297 x 684
+ // C5 Envelope 461 x 648
+ // DL Envelope 312 x 624
+ ps += "newpath\n";
+ return ps;
+ }
+
+ this.returnAddress = function()
+ // Return address
+ {
+ var ps = this.xloc + " " + this.yloc + " translate\n";
+ ps += "90 rotate";
+ for ( var idx = 0; idx < this.retAddress.length; ++idx)
+ {
+ if( this.retAddress[idx] != "")
+ {
+ ps += "/" + this.returnfont + " findfont " + this.returnpointsize + " scalefont setfont\n";
+ ps += "0 " + this.linepos + " moveto\n";
+ ps += "(" + this.retAddress[idx] + ") show\n";
+ this.linepos -= this.returnpointsize;
+ }
+ }
+ return ps;
+ }
+
+ this.mailingAddress = function()
+ // Mailing Address
+ {
+ var ps = "";
+ for ( var idx = 0; idx < this.mailAddress.length; ++idx)
+ {
+ if( this.mailAddress[idx] != "")
+ {
+ ps += "/" + this.mailfont + " findfont " + this.mailpointsize + " scalefont setfont\n";
+ ps += this.xpos + " " + this.ypos + " moveto\n";
+ ps += "(" + this.mailAddress[idx] + ") show\n";
+ this.ypos -= this.mailpointsize;
+ }
+ }
+ return ps;
+ }
+
+ this.footer = function()
+ {
+ return "showpage\n";
+ }
+
+ this.barcode = function()
+ {
+ this.zipcode = this.getZip();
+ if( this.zipcode.length != 9)
+ return "";
+
+ var ps = "";
+
+ this.xpos = Math.round((this.ewidth - 3.875) * 72);
+ this.ypos = Math.round((-1 * this.eheight + 0.375) * 72);
+
+ var code = [ [1, 1, 0, 0, 0], [0, 0, 0, 1, 1], [0, 0, 1, 0, 1], [0, 0, 1, 1, 0],
+ [0, 1, 0, 0, 1], [0, 1, 0, 1, 0], [0, 1, 1, 0, 0], [1, 0, 0, 0, 1],
+ [1, 0, 0, 1, 0],[1, 0, 1, 0, 0] ];
+ var ziparray = new Array(10);
+
+ var zipsum = 0;
+ for ( var idx = 0; idx < this.zipcode.length; ++idx)
+ {
+ ziparray[idx] = this.zipcode.substring(idx, idx+1);
+ zipsum += ziparray[idx];
+ }
+ var correctcode = 10 - zipsum % 10;
+ if( correctcode == 10)
+ correctcode = 0;
+ ziparray[9] = correctcode;
+
+ // Set our barcode dimensions to the POSTNET spec.
+ // Width = 0.02"
+ // Space between CL's (pitch) = 0.05"
+ // Height of 1's = 0.125"
+ // Height of 0's = 0.05"
+
+ var pitch = 3.6; //points
+ var linewidth = 1.44; //points
+ var height = 0;
+
+ var pos = 0;
+ ps += "newpath\n";
+ ps += this.xpos + " " + this.ypos + " translate\n";
+ ps += pos + " 0 moveto\n";
+ ps += linewidth + " setlinewidth\n";
+
+ // Frame bar
+ var height = Math.round(0.125 * 72);
+ ps += "0 " + height + " rlineto\n";
+
+ // Actual barcode
+ for( var idx = 0; idx < ziparray.length; ++idx)
+ {
+ for (var idx2 = 0; idx2 < code[ ziparray[idx] ].length; ++idx2)
+ {
+ pos = Math.round(pos + pitch);
+ ps += pos + " 0 moveto\n";
+ var line = code[ ziparray[idx] ][idx2];
+ height = Math.round((0.05 + line * 0.075) * 72);
+ ps += "0 " + height + " rlineto\n";
+ }
+ }
+
+ // Frame bar
+ pos = Math.round(pos + pitch);
+ ps += pos + " 0 moveto\n";
+ height = Math.round(0.125 * 72);
+ ps += "0 " + height + " rlineto\n";
+ ps += "stroke\n";
+
+ return ps;
+ }
+} \ No newline at end of file