* Added RadioGram
  * Separated ICS213 from main(...) source file
  * Added html document view for ICS213 message
This commit is contained in:
David Freese 2010-05-11 08:00:59 -05:00
parent f555349ec4
commit 11ce56584c
54 changed files with 4713 additions and 1583 deletions

14
INSTALL
View file

@ -1,7 +1,7 @@
Installation Instructions for flics
Installation Instructions for flmsg
************************************
To compile flics you will need:
To compile flmsg you will need:
* A recent C++ compiler. The GNU C++ compilers in the 4.x series are
known to work.
@ -12,27 +12,27 @@ To compile flics you will need:
required.
Once you have installed the required packages, the following commands
should be sufficient to compile flics and install it under /usr/local:
should be sufficient to compile flmsg and install it under /usr/local:
./configure
make
make install (you may need superuser privileges for installation)
The `install' target installs the executable, an icon, and a .desktop
file. After installation, an flics launcher should appear somewhere in
file. After installation, an flmsg launcher should appear somewhere in
your applications menu.
Create the desktop launcher. flics is designed as a desktop application
Create the desktop launcher. flmsg is designed as a desktop application
that accepts target files to be wrapped or unwrapped by dropping the
file onto the desktop launcher.
Windows installation notes
**************************
flics supports win32 systems as a cross compiled application using the
flmsg supports win32 systems as a cross compiled application using the
MinGW win32 environment.
To build an internationalized version of flics, install these
To build an internationalized version of flmsg, install these
additional packages:
gettext gettext-devel libiconv libiconv2

2
README
View file

@ -1,4 +1,4 @@
flics is a editor / file management tool for ics213 forms which form the
flmsg is a editor / file management tool for ics213 forms which form the
basis for emergency communications data transfers.
The latest version can always be found at:

View file

@ -10,21 +10,21 @@ AC_PREREQ([2.63])
dnl major and minor must be integers; patch may
dnl contain other characters or be empty
m4_define(FLICS_MAJOR, [1])
m4_define(FLICS_MINOR, [0])
m4_define(FLICS_PATCH, [.21])
m4_define(FLMSG_MAJOR, [0])
m4_define(FLMSG_MINOR, [9])
m4_define(FLMSG_PATCH, [.04])
AC_INIT([FLICS], FLICS_MAJOR.FLICS_MINOR[]FLICS_PATCH, [w1hkj AT w1hkj DOT com])
AC_INIT([FLMSG], FLMSG_MAJOR.FLMSG_MINOR[]FLMSG_PATCH, [w1hkj AT w1hkj DOT com])
AC_SUBST([FLICS_VERSION_MAJOR], [FLICS_MAJOR])
AC_SUBST([FLICS_VERSION_MINOR], [FLICS_MINOR])
AC_SUBST([FLICS_VERSION_PATCH], [FLICS_PATCH])
AC_SUBST([FLICS_VERSION], [FLICS_MAJOR.FLICS_MINOR[]FLICS_PATCH])
AC_SUBST([FLMSG_VERSION_MAJOR], [FLMSG_MAJOR])
AC_SUBST([FLMSG_VERSION_MINOR], [FLMSG_MINOR])
AC_SUBST([FLMSG_VERSION_PATCH], [FLMSG_PATCH])
AC_SUBST([FLMSG_VERSION], [FLMSG_MAJOR.FLMSG_MINOR[]FLMSG_PATCH])
AC_DEFINE([FLICS_VERSION_MAJOR], [FLICS_MAJOR], [major version number])
AC_DEFINE([FLICS_VERSION_MINOR], [FLICS_MINOR], [minor version number])
AC_DEFINE([FLICS_VERSION_PATCH], ["FLICS_PATCH"], [patch/alpha version string])
AC_DEFINE([FLICS_VERSION], ["FLICS_MAJOR.FLICS_MINOR[]FLICS_PATCH"], [version string])
AC_DEFINE([FLMSG_VERSION_MAJOR], [FLMSG_MAJOR], [major version number])
AC_DEFINE([FLMSG_VERSION_MINOR], [FLMSG_MINOR], [minor version number])
AC_DEFINE([FLMSG_VERSION_PATCH], ["FLMSG_PATCH"], [patch/alpha version string])
AC_DEFINE([FLMSG_VERSION], ["FLMSG_MAJOR.FLMSG_MINOR[]FLMSG_PATCH"], [version string])
AC_SUBST([AC_CONFIG_ARGS], [$ac_configure_args])
AC_CONFIG_AUX_DIR([build-aux])
@ -39,7 +39,7 @@ AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([-Wall foreign std-options 1.9.6])
#change the next config item for the specific application src's
AC_CONFIG_SRCDIR([src/ics213.cxx])
AC_CONFIG_SRCDIR([src/flmsg.cxx])
AC_CONFIG_HEADERS([src/config.h])
AC_CONFIG_MACRO_DIR([m4])
@ -100,11 +100,11 @@ AC_CHECK_FLTK
# Substitute XMLRPC_CFLAGS and XMLRPC_LIBS in Makefile
# Define USE_XMLRPC in config.h
# Set ENABLE_XMLRPC Makefile conditional
#AC_FLICS_XMLRPC
#AC_FLMSG_XMLRPC
### build info
# Define various build variables in config.h
AC_FLICS_BUILD_INFO
AC_FLMSG_BUILD_INFO
AC_CONFIG_FILES([Makefile src/Makefile])

View file

@ -1,9 +1,9 @@
[Desktop Entry]
Name=Flics
Name=flmsg
GenericName=Amateur Radio Data Encapsulation
Comment=Amateur Radio Communications
Exec=flics
Icon=flics
Exec=flmsg
Icon=flmsg
Terminal=false
Type=Application
Categories=Network;HamRadio;

View file

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before After
Before After

69
data/radiogram.rtf Normal file
View file

@ -0,0 +1,69 @@
{\rtf1\ansi\deff1\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Times New Roman;}{\f4\fswiss\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f5\fnil\fprq0\fcharset0 Tahoma Slashed;}}
{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
{\stylesheet{\s1\aspalpha\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033\snext1 Normal;}
{\s2\sb240\sa120\keepn\aspalpha\rtlch\af4\afs28\lang255\ltrch\dbch\af4\langfe1033\hich\f4\fs28\lang1033\loch\f4\fs28\lang1033\sbasedon1\snext3 Heading;}
{\s3\sa120\aspalpha\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033\sbasedon1\snext3 Body Text;}
{\s4\sa120\aspalpha\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033\sbasedon3\snext4 List;}
{\s5\sb120\sa120\aspalpha\rtlch\af5\afs24\lang255\ai\ltrch\dbch\langfe1033\hich\fs24\lang1033\i\loch\fs24\lang1033\i\sbasedon1\snext5 caption;}
{\s6\aspalpha\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033\sbasedon1\snext6 Index;}
{\s7\sb120\sa120\aspalpha\rtlch\afs24\lang255\ai\ltrch\dbch\langfe1033\hich\fs24\lang1033\i\loch\fs24\lang1033\i\sbasedon1\snext7 caption;}
{\s8\sb120\sa120\aspalpha\rtlch\afs24\lang255\ai\ltrch\dbch\langfe1033\hich\fs24\lang1033\i\loch\fs24\lang1033\i\sbasedon1\snext8 WW-caption;}
{\s9\aspalpha\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033\sbasedon1\snext9 Table Contents;}
{\s10\qc\aspalpha\rtlch\afs24\lang255\ab\ltrch\dbch\langfe1033\hich\fs24\lang1033\b\loch\fs24\lang1033\b\sbasedon9\snext10 Table Heading;}
{\*\cs12\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033 Default Paragraph Font;}
}
{\info{\title GENERAL MESSAGE}{\author Dave}{\creatim\yr2010\mo5\dy9\hr3\min22}{\revtim\yr2010\mo5\dy9\hr3\min47}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern3000}}\deftab720
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn720\margrsxn720\margtsxn1440\margbsxn720\pgdscnxt0 Standard;}}
{\*\pgdscno0}\paperh15840\paperw12240\margl720\margr720\margt1440\margb720\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn720\margrsxn720\margtsxn1440\margbsxn720\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\trowd\trql\trleft3\trpaddft3\trpaddt0\trpaddfl3\trpaddl115\trpaddfb3\trpaddb0\trpaddfr3\trpaddr115\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s1\qc\aspalpha\li14\ri0\lin14\rin0\fi0\sb60\sa60\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\rtlch\ltrch\hich\b\loch\b THE AMERICAN RADIO RELAY LEAGUE}}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 \line {\rtlch\ltrch\hich\fs48\b\loch\fs48\b RADIOGRAM}\line {\rtlch\ltrch\hich\fs20\loch\fs20 VIA AMATEUR RADIO}}
\cell\row\pard \trowd\trql\trleft3\trpaddft3\trpaddt0\trpaddfl3\trpaddl115\trpaddfb3\trpaddb0\trpaddfr3\trpaddr115\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx1100\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx2675\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx3740\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx5753\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx6764\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx8980\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9949\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 NUMBER}
\cell\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 PRECEDENCE}
\cell\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 HX}
\cell\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 STATION OF ORIGIN}
\cell\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 CHECK}
\cell\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 PLACE OF ORIGIN}
\cell\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 TIME}
\cell\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 DATE}
\cell\row\pard \trowd\trql\trleft3\trpaddft3\trpaddt0\trpaddfl3\trpaddl115\trpaddfb3\trpaddb0\trpaddfr3\trpaddr115\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx1100\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx2675\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx3740\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx5753\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx6764\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx8980\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx9949\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <nbr:}
\cell\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <prec:}
\cell\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <hx:}
\cell\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <sta:}
\cell\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <ck:}
\cell\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <org:}
\cell\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <t1:}
\cell\pard\plain \intbl\ltrpar\s1\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <d1:}
\cell\row\pard \pard\plain \ltrpar\s1\qj\rtlch\af2\afs20\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs20\lang1033\loch\f2\fs20\lang1033
\par \trowd\trql\trleft3\trpaddft3\trpaddt0\trpaddfl3\trpaddl115\trpaddfb3\trpaddb0\trpaddfr3\trpaddr115\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx5402\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 TO}
\cell\pard\plain \intbl\ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 THIS RADIO MESSAGE WAS RECEIVED AT}
\cell\row\pard \trowd\trql\trleft3\trpaddft3\trpaddt0\trpaddfl3\trpaddl115\trpaddfb3\trpaddb0\trpaddfr3\trpaddr115\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx5402\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <to:}
\cell\pard\plain \intbl\ltrpar\s1\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <rx:}
\cell\row\pard \pard\plain \ltrpar\s1\qj\rtlch\af2\afs20\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs20\lang1033\loch\f2\fs20\lang1033
\par \pard\plain \ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 TELEPHONE NUMBER}
\par \pard\plain \ltrpar\s1\aspalpha\ql\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <tel:}
\par \pard\plain \ltrpar\s1\aspalpha\ql\rtlch\afs24\lang255\ltrch\dbch\langfe1033\hich\fs24\lang1033\loch\fs24\lang1033
\par \trowd\trql\trrh1936\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <msg:}
\cell\row\pard \pard\plain \ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033
\par \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx3309\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4479\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx5400\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx8777\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx9936\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 FROM}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 DATE}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 TIME}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 SENT TO}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 DATE}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 TIME}
\cell\row\pard \trowd\trql\trpaddft3\trpaddt55\trpaddfl3\trpaddl55\trpaddfb3\trpaddb55\trpaddfr3\trpaddr55\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx3309\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4479\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx5400\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx8777\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx9936\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx10800
\pard\intbl\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <sgn:}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <d2:}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <t2:}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <sto:}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <d3:}
\cell\pard\plain \intbl\ltrpar\s9\aspalpha\ql\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033 {\rtlch \ltrch\loch\f2\fs18\lang1033\i0\b0 <t3:}
\cell\row\pard \pard\plain \ltrpar\s1\qj\rtlch\af2\afs18\lang255\ltrch\dbch\af2\langfe1033\hich\f2\fs18\lang1033\loch\f2\fs18\lang1033
\par }

114
data/rgtemplate.html Normal file
View file

@ -0,0 +1,114 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>RG_TEMPLATE</title></head><body>
<table style="text-align: left; width: 1000px; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="vertical-align: top;">
<div style="text-align: center;"><font size="3"><b>THE AMERICAN RADIO RELAY LEAGUE</b></font><br>
<font size="6"><b>RADIOGRAM</b></font><br>
<big><font size="1"><big>VIA AMATEUR RADIO</big></font></big><br>
<br>
</div>
<table style="width: 100%;" border="1" cellpadding="2" cellspacing="0">
<tbody><tr><td style="width: 70px;" class="heading">NUMBER</td><td style="width: 100px;" class="heading">PRECEDENCE</td><td style="width: 40px;" class="heading">HX</td><td class="heading">STATION OF ORIGIN</td><td style="width: 60px;" class="heading">CHECK</td><td class="heading">PLACE OF ORIGIN</td><td style="width: 90px;" class="heading">TIME FILED</td><td style="width: 90px;" class="heading">DATE</td></tr><tr>
<td style="vertical-align: top;">VNBR<br>
</td>
<td style="vertical-align: top;">VPREC<br>
</td>
<td style="vertical-align: top;">VHX<br>
</td>
<td style="vertical-align: top;">VCALL<br>
</td>
<td style="vertical-align: top;">VCHK<br>
</td>
<td style="vertical-align: top;">VORG<br>
</td>
<td style="vertical-align: top;">VT1<br>
</td>
<td style="vertical-align: top;">VD1<br>
</td>
</tr>
</tbody>
</table>
<br>
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td style="vertical-align: top;">TO<br>
</td>
<td style="vertical-align: top;">THIS RADIO MESSAGE WAS RECEIVED AT<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">VTO<br>
</td>
<td style="vertical-align: top; width: 50%;">VRX<br>
</td>
</tr>
</tbody>
</table>
<br>
<table style="text-align: left; width: 100%;" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="vertical-align: top;">TELEPHONE NUMBER<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">VTEL<br>
</td>
</tr>
</tbody>
</table>
<br>
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td style="vertical-align: top;">
<p>VMSG1<br>
VMSG2<br>
VMSG3<br></p>
</td>
</tr>
</tbody>
</table>
<br>
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="0">
<tbody>
<tr>
<td style="vertical-align: top; width: 340px;">FROM<br>
</td>
<td style="vertical-align: top; width: 80px;">DATE<br>
</td>
<td style="vertical-align: top; width: 80px;">TIME<br>
</td>
<td style="vertical-align: top;">SENT TO<br>
</td>
<td style="vertical-align: top; width: 80px;">DATE<br>
</td>
<td style="vertical-align: top; width: 80px;">TIME<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">VFM<br>
</td>
<td style="vertical-align: top;">VD2<br>
</td>
<td style="vertical-align: top;">VT2<br>
</td>
<td style="vertical-align: top;">VSNT<br>
</td>
<td style="vertical-align: top;">VD3<br>
</td>
<td style="vertical-align: top;">VT3<br>
</td>
</tr>
</tbody>
</table>
<br>
</td>
</tr>
</tbody>
</table>
<br>
</body></html>

View file

@ -4,17 +4,17 @@
# Copyright (c) 2009 Stelios Bounanos, M0GLD.
# Copyright (c) 2009 Dave Freese, W1HKJ
# substitute your application name for instances of FLICS
# substitute your application name for instances of FLMSG
# Variables
!define FLICS_DESCRIPTION "${FLICS_NAME} ${FLICS_VERSION}"
!define FLICS_STRING "${FLICS_NAME}-${FLICS_VERSION}"
!define FLMSG_DESCRIPTION "${FLMSG_NAME} ${FLMSG_VERSION}"
!define FLMSG_STRING "${FLMSG_NAME}-${FLMSG_VERSION}"
!define PRODUCT_BINARY "${FLICS_BINARY}"
!define PRODUCT_NAME "${FLICS_NAME}"
!define PRODUCT_VERSION "${FLICS_VERSION}"
!define PRODUCT_STRING "${FLICS_STRING}"
!define PRODUCT_DESCRIPTION "${FLICS_DESCRIPTION}"
!define PRODUCT_BINARY "${FLMSG_BINARY}"
!define PRODUCT_NAME "${FLMSG_NAME}"
!define PRODUCT_VERSION "${FLMSG_VERSION}"
!define PRODUCT_STRING "${FLMSG_STRING}"
!define PRODUCT_DESCRIPTION "${FLMSG_DESCRIPTION}"
# Compression options
SetCompressor /SOLID lzma
@ -59,7 +59,7 @@ InstProgressFlags smooth
VIAddVersionKey ProductName "${PRODUCT_NAME}"
VIAddVersionKey ProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey FileVersion "${PRODUCT_VERSION}"
VIAddVersionKey FileDescription "${FLICS_DESCRIPTION} installer"
VIAddVersionKey FileDescription "${FLMSG_DESCRIPTION} installer"
VIAddVersionKey LegalCopyright "${PRODUCT_NAME} developers"
VIAddVersionKey OriginalFilename "${INSTALLER_FILE}"
VIProductVersion "3.0.0.0"
@ -89,7 +89,7 @@ Section -install
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "DisplayIcon" '"$INSTDIR\${PRODUCT_BINARY}"'
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "HelpLink" "${SUPPORT_URL}"
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "Publisher" "FLICS developers"
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "Publisher" "FLMSG developers"
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "URLUpdateInfo" "${UPDATES_URL}"
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "QuietUninstallString" '"$INSTDIR\uninstall.exe" /S'
@ -98,12 +98,12 @@ Section -install
WriteUninstaller "uninstall.exe"
SectionEnd
#Var WANT_FLICS
#Var WANT_FLMSG
Section "FLICS"
Section "FLMSG"
SectionIn RO
SetOutPath $INSTDIR
File "${FLICS_BINARY}"
File "${FLMSG_BINARY}"
File /nonfatal "${MINGWM_DLL}" "${PTW32_DLL}"
SectionEnd
@ -114,21 +114,21 @@ SectionEnd
# The following sections are optional
Section "Start Menu Shortcuts"
CreateDirectory "${SM_PATH}"
CreateShortCut "${SM_PATH}\${FLICS_NAME}.lnk" "$INSTDIR\${FLICS_BINARY}" "" "$INSTDIR\${FLICS_BINARY}" 0
CreateShortCut "${SM_PATH}\${FLICS_NAME} Beginners' Guide.lnk" "${GUIDE_URL}"
CreateShortCut "${SM_PATH}\${FLICS_NAME} Documentation.lnk" "${FLICS_DOCS_URL}"
CreateShortCut "${SM_PATH}\${FLMSG_NAME}.lnk" "$INSTDIR\${FLMSG_BINARY}" "" "$INSTDIR\${FLMSG_BINARY}" 0
CreateShortCut "${SM_PATH}\${FLMSG_NAME} Beginners' Guide.lnk" "${GUIDE_URL}"
CreateShortCut "${SM_PATH}\${FLMSG_NAME} Documentation.lnk" "${FLMSG_DOCS_URL}"
CreateShortCut "${SM_PATH}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
SectionEnd
Section "Desktop Shortcuts"
CreateShortCut "$DESKTOP\${FLICS_DESCRIPTION}.lnk" "$INSTDIR\${FLICS_BINARY}" "" \
"$INSTDIR\${FLICS_BINARY}" 0
CreateShortCut "$DESKTOP\${FLMSG_DESCRIPTION}.lnk" "$INSTDIR\${FLMSG_BINARY}" "" \
"$INSTDIR\${FLMSG_BINARY}" 0
SectionEnd
# This is unselected by default
Section /o "Quick Launch Shortcuts"
CreateShortCut "$QUICKLAUNCH\${FLICS_DESCRIPTION}}.lnk" "$INSTDIR\${FLICS_BINARY}" "" \
"$INSTDIR\${FLICS_BINARY}" 0
CreateShortCut "$QUICKLAUNCH\${FLMSG_DESCRIPTION}}.lnk" "$INSTDIR\${FLMSG_BINARY}" "" \
"$INSTDIR\${FLMSG_BINARY}" 0
SectionEnd
# Uninstaller
@ -138,13 +138,13 @@ Section "Uninstall"
DeleteRegKey HKLM "${INSTALL_DIR_REG_KEY}"
# Remove files and uninstaller
Delete /REBOOTOK $INSTDIR\${FLICS_BINARY}
Delete /REBOOTOK $INSTDIR\${FLMSG_BINARY}
Delete /REBOOTOK $INSTDIR\uninstall.exe
# Remove shortcuts, if any
Delete "${SM_PATH}\*.*"
Delete "$DESKTOP\${FLICS_DESCRIPTION}.lnk"
Delete "$QUICKLAUNCH\${FLICS_DESCRIPTION}.lnk"
Delete "$DESKTOP\${FLMSG_DESCRIPTION}.lnk"
Delete "$QUICKLAUNCH\${FLMSG_DESCRIPTION}.lnk"
# Remove directories used
RMDir "${SM_PATH}"

View file

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Before After
Before After

View file

@ -1,30 +1,30 @@
AC_DEFUN([AC_FLICS_SH_DQ], [
AC_DEFUN([AC_FLMSG_SH_DQ], [
ac_sh_dq="\"`$1 | sed 's/"/\\\\"/g'`\""
])
AC_DEFUN([AC_FLICS_BUILD_INFO], [
AC_DEFUN([AC_FLMSG_BUILD_INFO], [
# Define build flags and substitute in Makefile.in
# CPPFLAGS
FLICS_BUILD_CPPFLAGS="-I\$(srcdir) -I\$(srcdir)/include"
FLMSG_BUILD_CPPFLAGS="-I\$(srcdir) -I\$(srcdir)/include"
# CXXFLAGS
FLICS_BUILD_CXXFLAGS="$FLTK_CFLAGS -pipe -Wall -fexceptions $OPT_CFLAGS $DEBUG_CFLAGS \
FLMSG_BUILD_CXXFLAGS="$FLTK_CFLAGS -pipe -Wall -fexceptions $OPT_CFLAGS $DEBUG_CFLAGS \
$PTW32_CFLAGS"
# LDFLAGS
FLICS_BUILD_LDFLAGS=
FLMSG_BUILD_LDFLAGS=
# LDADD
FLICS_BUILD_LDADD="$FLTK_LIBS $EXTRA_LIBS $PTW32_LIBS"
FLMSG_BUILD_LDADD="$FLTK_LIBS $EXTRA_LIBS $PTW32_LIBS"
if test "x$ac_cv_debug" = "xyes"; then
FLICS_BUILD_CXXFLAGS="$FLICS_BUILD_CXXFLAGS -UNDEBUG"
FLICS_BUILD_LDFLAGS="$FLICS_BUILD_LDFLAGS $RDYNAMIC"
FLMSG_BUILD_CXXFLAGS="$FLMSG_BUILD_CXXFLAGS -UNDEBUG"
FLMSG_BUILD_LDFLAGS="$FLMSG_BUILD_LDFLAGS $RDYNAMIC"
else
FLICS_BUILD_CXXFLAGS="$FLICS_BUILD_CXXFLAGS -DNDEBUG"
FLMSG_BUILD_CXXFLAGS="$FLMSG_BUILD_CXXFLAGS -DNDEBUG"
fi
AC_SUBST([FLICS_BUILD_CPPFLAGS])
AC_SUBST([FLICS_BUILD_CXXFLAGS])
AC_SUBST([FLICS_BUILD_LDFLAGS])
AC_SUBST([FLICS_BUILD_LDADD])
AC_SUBST([FLMSG_BUILD_CPPFLAGS])
AC_SUBST([FLMSG_BUILD_CXXFLAGS])
AC_SUBST([FLMSG_BUILD_LDFLAGS])
AC_SUBST([FLMSG_BUILD_LDADD])
#define build variables for config.h
AC_DEFINE_UNQUOTED([BUILD_BUILD_PLATFORM], ["$build"], [Build platform])
@ -35,25 +35,25 @@ $PTW32_CFLAGS"
LC_ALL=C
export LC_ALL
AC_FLICS_SH_DQ([echo $ac_configure_args])
AC_FLMSG_SH_DQ([echo $ac_configure_args])
AC_DEFINE_UNQUOTED([BUILD_CONFIGURE_ARGS], [$ac_sh_dq], [Configure arguments])
AC_FLICS_SH_DQ([date])
AC_FLMSG_SH_DQ([date])
AC_DEFINE_UNQUOTED([BUILD_DATE], [$ac_sh_dq], [Build date])
AC_FLICS_SH_DQ([whoami])
AC_FLMSG_SH_DQ([whoami])
AC_DEFINE_UNQUOTED([BUILD_USER], [$ac_sh_dq], [Build user])
AC_FLICS_SH_DQ([hostname])
AC_FLMSG_SH_DQ([hostname])
AC_DEFINE_UNQUOTED([BUILD_HOST], [$ac_sh_dq], [Build host])
AC_FLICS_SH_DQ([$CXX -v 2>&1 | tail -1])
AC_FLMSG_SH_DQ([$CXX -v 2>&1 | tail -1])
AC_DEFINE_UNQUOTED([BUILD_COMPILER], [$ac_sh_dq], [Compiler])
AC_FLICS_SH_DQ([echo $FLICS_BUILD_CPPFLAGS $FLICS_BUILD_CXXFLAGS])
AC_DEFINE_UNQUOTED([FLICS_BUILD_CXXFLAGS], [$ac_sh_dq], [FLICS compiler flags])
AC_FLICS_SH_DQ([echo $FLICS_BUILD_LDFLAGS $FLICS_BUILD_LDADD])
AC_DEFINE_UNQUOTED([FLICS_BUILD_LDFLAGS], [$ac_sh_dq], [FLICS linker flags])
AC_FLMSG_SH_DQ([echo $FLMSG_BUILD_CPPFLAGS $FLMSG_BUILD_CXXFLAGS])
AC_DEFINE_UNQUOTED([FLMSG_BUILD_CXXFLAGS], [$ac_sh_dq], [FLMSG compiler flags])
AC_FLMSG_SH_DQ([echo $FLMSG_BUILD_LDFLAGS $FLMSG_BUILD_LDADD])
AC_DEFINE_UNQUOTED([FLMSG_BUILD_LDFLAGS], [$ac_sh_dq], [FLMSG linker flags])
if test "x$LC_ALL_saved" != "x"; then
LC_ALL="$LC_ALL_saved"

View file

@ -4,7 +4,7 @@
./configure $CROSSCFG $PKGCFG FLTK_CONFIG=$PREFIX/bin/fltk-config --with-ptw32=$PREFIX/ptw32 XMLRPC_C_CONFIG=$PREFIX/bin/xmlrpc-c-config
make
i586-mingw32msvc-strip src/flics.exe
i586-mingw32msvc-strip src/flmsg.exe
make nsisinst
mv src/*setup*exe .

View file

@ -2,15 +2,15 @@
# Linux binary
make clean
./configure --enable-static --prefix=/tmp/flics-build
./configure --enable-static --prefix=/tmp/flmsg-build
make install-strip
tar czf flics-$1.bin.tgz -C /tmp/flics-build/bin flics
tar czf flmsg-$1.bin.tgz -C /tmp/flmsg-build/bin flmsg
# MS exectable
make clean
./configure $CROSSCFG $PKGCFG FLTK_CONFIG=$PREFIX/bin/fltk-config --with-ptw32=$PREFIX/ptw32 XMLRPC_C_CONFIG=$PREFIX/bin/xmlrpc-c-config
make
i586-mingw32msvc-strip src/flics.exe
i586-mingw32msvc-strip src/flmsg.exe
make nsisinst
mv src/*setup*exe .

View file

@ -30,8 +30,8 @@ if ! test -w "$build"; then
fi
plist="${data}/mac/Info.plist.in"
flics_icon="${data}/mac/flics.icns"
for f in "$plist" "$flics_icon"; do
flmsg_icon="${data}/mac/flmsg.icns"
for f in "$plist" "$flmsg_icon"; do
test -r "$f" && continue
echo "E: ${f}: not readable" >&2
exit 1
@ -106,9 +106,9 @@ name=$(echo "$PACKAGE_TARNAME" | upcase1)
# we'll use the first four consonants as the signature
signature="$(echo $PACKAGE_TARNAME | sed 's/[aeiouAEIOU]//g; s/\(^....\).*/\1/')"
binary="$PACKAGE_TARNAME"
icon="$flics_icon"
version="${FLICS_VERSION_MAJOR}.${FLICS_VERSION_MINOR}"
appversion="$FLICS_VERSION"
icon="$flmsg_icon"
version="${flmsg_VERSION_MAJOR}.${flmsg_VERSION_MINOR}"
appversion="$flmsg_VERSION"
bundle

View file

@ -4,8 +4,8 @@
### 20090510 Stelios Bounanos M0GLD, Dave Freese W1HKJ
### change for the target application
FLICS_name=flics
FLICS_bin=flics.exe
flmsg_name=flmsg
flmsg_bin=flmsg.exe
if [ $# -ne 2 ]; then
echo "Syntax: $0 data-dir build-dir" >&2
@ -34,8 +34,8 @@ fi
set -e
test "x$NOSTRIP" = "x" && $STRIP -S "$FLICS_bin"
def="$def -DFLICS_NAME=$FLICS_name -DFLICS_BINARY=$FLICS_bin -DFLICS_VERSION=$PACKAGE_VERSION"
test "x$NOSTRIP" = "x" && $STRIP -S "$flmsg_bin"
def="$def -Dflmsg_NAME=$flmsg_name -Dflmsg_BINARY=$flmsg_bin -Dflmsg_VERSION=$PACKAGE_VERSION"
$MAKENSIS -V2 -NOCD -D"INSTALLER_FILE=$INSTALLER_FILE" -D"LICENSE_FILE=$data/../COPYING" \
-D"SUPPORT_URL=$PACKAGE_HOME" -D"UPDATES_URL=$PACKAGE_DL" $def "$data/win32/fl_app.nsi"

View file

@ -24,7 +24,7 @@
// ----------------------------------------------------------------------------
#include "config.h"
#include "flics_config.h"
#include "flmsg_config.h"
#include <cstring>
#include <cstdlib>

View file

@ -1,42 +1,42 @@
# Copyright (c) 2008 Dave Freese, W1HKJ (w1hkj AT w1hkj DOT com)
bin_PROGRAMS = flics
bin_PROGRAMS = flmsg
flics_CPPFLAGS = @FLICS_BUILD_CPPFLAGS@
flics_CXXFLAGS = @FLICS_BUILD_CXXFLAGS@
flics_CFLAGS = $(flics_CXXFLAGS)
flics_LDFLAGS = @FLICS_BUILD_LDFLAGS@
flics_LDADD = @FLICS_BUILD_LDADD@
flmsg_CPPFLAGS = @FLMSG_BUILD_CPPFLAGS@
flmsg_CXXFLAGS = @FLMSG_BUILD_CXXFLAGS@
flmsg_CFLAGS = $(flmsg_CXXFLAGS)
flmsg_LDFLAGS = @FLMSG_BUILD_LDFLAGS@
flmsg_LDADD = @FLMSG_BUILD_LDADD@
MINGW32_SRC = \
flics-rc.rc \
include/flicsrc.h
flmsg-rc.rc \
include/flmsgrc.h
# We distribute these but do not always compile them
EXTRA_flics_SOURCES = $(FLICS_WIN32_RES_SRC) $(MINGW32_SRC)
EXTRA_flmsg_SOURCES = $(FLMSG_WIN32_RES_SRC) $(MINGW32_SRC)
flics_SOURCES =
flmsg_SOURCES =
if MINGW32
if HAVE_WINDRES
flics_SOURCES += $(MINGW32_SRC)
flmsg_SOURCES += $(MINGW32_SRC)
endif
endif
########################################################################
FLICS_VERSION_MAJOR = @FLICS_VERSION_MAJOR@
FLICS_VERSION_MINOR = @FLICS_VERSION_MINOR@
FLICS_VERSION_PATCH = @FLICS_VERSION_PATCH@
FLICS_VERSION = @FLICS_VERSION@
FLMSG_VERSION_MAJOR = @FLMSG_VERSION_MAJOR@
FLMSG_VERSION_MINOR = @FLMSG_VERSION_MINOR@
FLMSG_VERSION_PATCH = @FLMSG_VERSION_PATCH@
FLMSG_VERSION = @FLMSG_VERSION@
.EXPORT_ALL_VARIABLES: nsisinst appbundle
# Sources that are generated,
BUILT_SOURCES =
# not distributed,
nodist_flics_SOURCES = $(BUILT_SOURCES)
nodist_flmsg_SOURCES = $(BUILT_SOURCES)
# and deleted by the clean targets
CLEANFILES = $(BUILT_SOURCES)
CLEAN_LOCAL =
@ -49,20 +49,20 @@ endif
endif
install-data-local:
if test -f $(srcdir)/../data/flics.xpm; then \
if test -f $(srcdir)/../data/flmsg.xpm; then \
$(mkinstalldirs) $(DESTDIR)/$(datadir)/pixmaps; \
$(INSTALL_DATA) $(srcdir)/../data/flics.xpm $(DESTDIR)/$(datadir)/pixmaps; \
$(INSTALL_DATA) $(srcdir)/../data/flmsg.xpm $(DESTDIR)/$(datadir)/pixmaps; \
fi
if test -f $(srcdir)/../data/flics.desktop; then \
if test -f $(srcdir)/../data/flmsg.desktop; then \
$(mkinstalldirs) $(DESTDIR)/$(datadir)/applications; \
$(INSTALL_DATA) $(srcdir)/../data/flics.desktop $(DESTDIR)/$(datadir)/applications; \
$(INSTALL_DATA) $(srcdir)/../data/flmsg.desktop $(DESTDIR)/$(datadir)/applications; \
fi
uninstall-local:
rm -f $(DESTDIR)/$(datadir)/pixmaps/flics.xpm
rm -f $(DESTDIR)/$(datadir)/applications/flics.desktop
rm -f $(DESTDIR)/$(datadir)/pixmaps/flmsg.xpm
rm -f $(DESTDIR)/$(datadir)/applications/flmsg.desktop
FL_SRC = ics213_dialog.fl
FL_SRC = flmsg_dialog.fl
if HAVE_FLUID
flgen: $(FL_SRC)
@ -76,8 +76,8 @@ flgen: $(FL_SRC)
endif
INSTALLER_FILE = flics-$(FLICS_VERSION)_setup.exe
APPBUNDLE=flics-$(FLICS_VERSION)
INSTALLER_FILE = flmsg-$(FLMSG_VERSION)_setup.exe
APPBUNDLE=flmsg-$(FLMSG_VERSION)
APPBUNDLE_NOLIBS=$(APPBUNDLE)-nolibs
if HAVE_NSIS
@ -96,7 +96,8 @@ clean-local:
-rm -rf $(CLEAN_LOCAL)
# Sources that we build. It is OK to have headers here.
flics_SOURCES += \
flmsg_SOURCES += \
$(srcdir)/arl_msgs.cxx \
$(srcdir)/calendar.cxx \
$(srcdir)/combo.cxx \
$(srcdir)/base64.cxx \
@ -104,12 +105,14 @@ flics_SOURCES += \
$(srcdir)/debug.cxx \
$(srcdir)/fileselect.cxx \
$(srcdir)/flinput2.cxx \
$(srcdir)/flmsg.cxx \
$(srcdir)/icons.cxx \
$(srcdir)/ics213.cxx \
$(srcdir)/ics213_template.cxx \
$(srcdir)/ics213_dialog.cxx \
$(srcdir)/templates.cxx \
$(srcdir)/flmsg_dialog.cxx \
$(srcdir)/parse_xml.cxx \
$(srcdir)/pixmaps.cxx \
$(srcdir)/radiogram.cxx \
$(srcdir)/status.cxx \
$(srcdir)/util.cxx \
$(srcdir)/wrap.cxx \
@ -138,6 +141,7 @@ EXTRA_DIST = \
$(srcdir)/Fl_Native_File_Chooser_MAC.cxx \
$(srcdir)/Fl_Native_File_Chooser_WIN32.cxx \
$(srcdir)/mingw.c \
$(srcdir)/include/arl_msgs.h \
$(srcdir)/include/base64.h \
$(srcdir)/include/calendar.h \
$(srcdir)/include/combo.h \
@ -147,14 +151,14 @@ EXTRA_DIST = \
$(srcdir)/include/date.h \
$(srcdir)/include/debug.h \
$(srcdir)/include/fileselect.h \
$(srcdir)/include/flics_config.h \
$(srcdir)/include/flicsrc.h \
$(srcdir)/include/flmsg_config.h \
$(srcdir)/include/flmsgrc.h \
$(srcdir)/include/flinput2.h \
$(srcdir)/include/gettext.h \
$(srcdir)/include/icons.h \
$(srcdir)/include/ics213.h \
$(srcdir)/include/ics213_dialog.h \
$(srcdir)/include/ics213_template.h \
$(srcdir)/include/flmsg_dialog.h \
$(srcdir)/include/templates.h \
$(srcdir)/include/mingw.h \
$(srcdir)/include/parse_xml.h \
$(srcdir)/include/pixmaps.h \
@ -172,24 +176,24 @@ EXTRA_DIST = \
# Additional non-source files that are distributed
EXTRA_DIST += \
$(srcdir)/../data/template.rtf \
$(srcdir)/../flics-doc/flics-quick-guide.html \
$(srcdir)/../flics-doc/flics-ss1.png \
$(srcdir)/../flics-doc/flics-ss4.png \
$(srcdir)/../flics-doc/Menu0.png \
$(srcdir)/../flics-doc/Menu1.png \
$(srcdir)/../flics-doc/Menu2.png
$(srcdir)/../flmsg-doc/flmsg-quick-guide.html \
$(srcdir)/../flmsg-doc/flmsg-ss1.png \
$(srcdir)/../flmsg-doc/flmsg-ss4.png \
$(srcdir)/../flmsg-doc/Menu0.png \
$(srcdir)/../flmsg-doc/Menu1.png \
$(srcdir)/../flmsg-doc/Menu2.png
# Additional source files that support non-Linux cross compilation
EXTRA_DIST += \
$(srcdir)/../data/flics.desktop \
$(srcdir)/../data/flics.xpm \
$(srcdir)/../data/flmsg.desktop \
$(srcdir)/../data/flmsg.xpm \
$(srcdir)/../data/win32/fl_app.nsi \
$(srcdir)/../data/win32/flics.ico \
$(srcdir)/../data/win32/flmsg.ico \
$(srcdir)/../scripts/build4mingw.sh \
$(srcdir)/../scripts/builddist.sh \
$(srcdir)/../scripts/mkappbundle.sh \
$(srcdir)/../scripts/mknsisinst.sh \
$(srcdir)/../data/mac/Info.plist.in \
$(srcdir)/../data/mac/flics.icns \
$(FLICS_WIN32_SRC) \
$(FLICS_FL_SRC)
$(srcdir)/../data/mac/flmsg.icns \
$(FLMSG_WIN32_SRC) \
$(FLMSG_FL_SRC)

110
src/arl_msgs.cxx Normal file
View file

@ -0,0 +1,110 @@
// =====================================================================
//
// arl_msgs.cxx
//
// Author: Dave Freese, W1HKJ
// Copyright: 2010
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is
// copyright under the GNU General Public License.
//
// You should have received a copy of the GNU General Public License
// along with the program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// =====================================================================
#include "ics213.h"
#include "flmsg_dialog.h"
ARL_TEXT arl_list[] = {
{"ONE", 0, "Everyone safe here. Please don't worry." },
{"TWO", 0, "Coming home as soon as possible." },
{"THREE", 1, "Am in ____ hospital. Receiving excellent care and recovering fine." },
{"FOUR", 0, "Only slight property damage here. Do not be concerned about disaster reports." },
{"FIVE", 0, "Am moving to new location. Send no further mail or communication. Will inform you of new address when relocated." },
{"SIX", 0, "Will contact you as soon as possible." },
{"SEVEN", 0, "Please reply by Amateur Radio through the amateur delivering this message. This is a free public service." },
{"EIGHT", 1, "Need additional ____ mobile or portable equipment for immediate emergency use." },
{"NINE", 1, "Additional ____ radio operators needed to assist with emergency at this location." },
{"TEN", 1, "Please contact ____. Advise to standby and provide further emergency information, instructions or assistance." },
{"ELEVEN", 2, "Establish Amateur Radio emergency communications with ____ on ____ MHz." },
{"TWELVE", 0, "Anxious to hear from you. No word in some time. Please contact me as soon as possible." },
{"THIRTEEN", 0, "Medical emergency situation exits here." },
{"FOURTEEN", 1, "Situation here becoming critical. Losses and damage from ____ increasing." },
{"FIFTEEN", 0, "Please advise your condition and what help is needed." },
{"SIXTEEN", 0, "Property damage very severe in this area." },
{"SEVENTEEN", 2, "REACT communications services also available. Establish REACT communication with ____ on channel ____." },
{"EIGHTEEN", 1, "Please contact me as soon as possible at ____." },
{"NINETEEN", 1, "Request health and welfare report on ____ . (State name, address and telephone number.)" },
{"TWENTY", 1, "Temporarily stranded. Will need some assistance. Please contact me at ____." },
{"TWENTY ONE", 0, "Search and Rescue assistance is needed by local authorities here. Advise availability." },
{"TWENTY TWO", 0, "Need accurate information on the extent and type of conditions now existing at your location. Please furnish this information and reply without delay." },
{"TWENTY THREE", 0, "Report at once the accessibility and best way to reach your location." },
{"TWENTY FOUR", 0, "Evacuation of residents from this area urgently needed. Advise plans for help." },
{"TWENTY FIVE", 0, "Furnish as soon as possible the weather conditions at your location." },
{"TWENTY SIX", 0, "Help and care for evacuation of sick and injured from this location needed at once. Emergency/priority messages originating from official sources must carry the signature of the originating official." },
{"FORTY SIX", 0, "Greetings on your birthday and best wishes for many more to come." },
{"FORTY SEVEN", 4, "Reference your message number ____ to ____ delivered on ____ at ____ UTC." },
{"FIFTY", 0, "Greetings by Amateur Radio." },
{"FIFTY ONE", 1, "Greetings by Amateur Radio. This message is sent as a free public service by ham radio operators at ____. Am having a wonderful time." },
{"FIFTY TWO", 0, "Really enjoyed being with you. Looking forward to getting together again." },
{"FIFTY THREE", 1, "Received your ____. It's appreciated; many thanks." },
{"FIFTY FOUR", 0, "Many thanks for your good wishes." },
{"FIFTY FIVE", 0, "Good news is always welcome. Very delighted to hear about yours." },
{"FIFTY SIX", 1, "Congratulations on your ____, a most worthy and deserved achievement." },
{"FIFTY SEVEN", 0, "Wish we could be together." },
{"FIFTY EIGHT", 0, "Have a wonderful time. Let us know when you return." },
{"FIFTY NINE", 0, "Congratulations on the new arrival. Hope mother and child are well." },
{"SIXTY", 1, "Wishing you the best of everything on ____." },
{"SIXTY ONE", 0, "Wishing you a very Merry Christmas and a Happy New Year." },
{"SIXTY TWO", 1, "Greetings and best wishes to you for a pleasant ____ holiday season." },
{"SIXTY THREE", 0, "Victory or defeat, our best wishes are with you. Hope you win." },
{"SIXTY FOUR", 1, "Arrived safely at ____." },
{"SIXTY FIVE", 2, "Arriving ____ on ____. Please arrange to meet me there." },
{"SIXTY SIX", 2, "DX QSLs are on hand for you at the ____ QSL Bureau. Send ____ self addressed envelopes." },
{"SIXTY SEVEN", 2, "Your message number ____ undeliverable because of ____. Please advise." },
{"SIXTY EIGHT", 0, "Sorry to hear you are ill. Best wishes for a speedy recovery." },
{"SIXTY NINE", 1, "Welcome to the ____. We are glad to have you with us and hope you will enjoy the fun and fellowship of the organization." },
{0, 0, 0}
};
int arl_nbr = 0;
void cb_arl()
{
if (!arlwindow) {
arlwindow = arl_dialog();
int n = 0;
while (arl_list[n].sznbr) {
select_arl->add(arl_list[n].sznbr);
n++;
}
}
select_arl->value(1);
select_arl->do_callback();
arlwindow->show();
}
void cb_arl_cancel()
{
arlwindow->hide();
}
void cb_arl_add()
{
string msg = "ARL ";
string fill;
msg.append(arl_list[arl_nbr].sznbr).append(" X ");
fill = txt_arl_fill1->value(); if (!fill.empty()) msg.append(fill).append(" X ");
fill = txt_arl_fill2->value(); if (!fill.empty()) msg.append(fill).append(" X ");
fill = txt_arl_fill3->value(); if (!fill.empty()) msg.append(fill).append(" X ");
fill = txt_arl_fill4->value(); if (!fill.empty()) msg.append(fill).append(" X ");
txt_rg_msg->addstr(msg.c_str());
select_arl->value(1);
select_arl->do_callback();
cb_rg_check();
}

View file

@ -57,7 +57,7 @@ static bool tty;
static Fl_Double_Window* window;
static Fl_Text_Display* text;
static Fl_Text_Buffer* buffer;
static Fl_Text_Buffer* dgb_buffer;
debug* debug::inst = 0;
debug::level_e debug::level = debug::WARN_LEVEL;
@ -112,8 +112,8 @@ void debug::start(const char* filename)
text->wrap_mode(true, 60);
window->resizable(text);
buffer = new Fl_Text_Buffer();
text->buffer(buffer);
dgb_buffer = new Fl_Text_Buffer();
text->buffer(dgb_buffer);
window->end();
}
@ -225,12 +225,12 @@ static void src_menu_cb(Fl_Widget* w, void*)
static void clear_cb(Fl_Widget* w, void*)
{
buffer->text("");
dgb_buffer->text("");
}
static void save_cb(Fl_Widget* w, void*)
{
string filename = ICS_dir;
filename.append("debug_log.txt");
buffer->savefile(filename.c_str());
dgb_buffer->savefile(filename.c_str());
}

View file

@ -1,7 +0,0 @@
#include <windows.h> // include for version info constants
#include "flicsrc.h"
IDI_ICON ICON DISCARDABLE "flics.ico"
//A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "flics.ico"

View file

@ -1,5 +1,5 @@
#include "config.h"
#include "flics_config.h"
#include "flmsg_config.h"
#include <cctype>

View file

@ -1,6 +1,6 @@
#include <windows.h> // include for version info constants
#include "icsrc.h"
#include "flmsgrc.h"
IDI_ICON ICON DISCARDABLE "flics.ico"
IDI_ICON ICON DISCARDABLE "flmsg.ico"

515
src/flmsg.cxx Normal file
View file

@ -0,0 +1,515 @@
// =====================================================================
//
// flmsg.cxx
//
// Author: Dave Freese, W1HKJ
// Copyright: 2010
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is
// copyright under the GNU General Public License.
//
// You should have received a copy of the GNU General Public License
// along with the program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// =====================================================================
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <cstring>
#include <ctime>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
#include <FL/Fl.H>
#include <FL/Enumerations.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Sys_Menu_Bar.H>
#include <FL/x.H>
#include <FL/Fl_Help_Dialog.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_File_Icon.H>
#include "config.h"
#include "flmsg_config.h"
#include "templates.h"
#include "debug.h"
#include "util.h"
#include "gettext.h"
#include "flmsg_dialog.h"
#include "flinput2.h"
#include "date.h"
#include "calendar.h"
#include "icons.h"
#include "fileselect.h"
#include "wrap.h"
#include "status.h"
#ifdef WIN32
# include "flmsgrc.h"
# include "compat.h"
# define dirent fl_dirent_no_thanks
#endif
#include <FL/filename.H>
#ifdef __MINGW32__
# undef dirent
#endif
#include <dirent.h>
#include <FL/x.H>
#include <FL/Fl_Pixmap.H>
#include <FL/Fl_Image.H>
using namespace std;
Fl_Double_Window *mainwindow = 0;
Fl_Double_Window *optionswindow = 0;
Fl_Double_Window *arlwindow = 0;
Fl_Double_Window *configwindow = 0;
string title;
string flmsgHomeDir;
// flarq, fldigi, flmsg, flwrap share a common NBEMS directory
string NBEMS_dir;
string ARQ_dir;
string ARQ_files_dir;
string ARQ_recv_dir;
string ARQ_send;
string WRAP_dir;
string WRAP_recv_dir;
string WRAP_send_dir;
string WRAP_auto_dir;
string ICS_dir;
string ICS_msg_dir;
string ICS_tmp_dir;
string baseFileName = "";
string defFileName = "";
string defTemplateName = "";
string defRTFname = "";
bool usingTemplate = false;
// utility functions
void remove_spaces_from_filename(string &fname)
{
size_t n = fname.length();
char szfname[n + 1];
char *p;
memset(szfname, 0, n + 1);
strcpy(szfname, fname.c_str());
p = (char *)fl_filename_name(szfname);
while (*p) {
if (*p == ' ') *p = '_';
p++;
}
fname = szfname;
}
char *szTime()
{
static char szDt[80];
time_t tmptr;
tm sTime;
time (&tmptr);
if (progStatus.UTC) {
gmtime_r (&tmptr, &sTime);
strftime(szDt, 79, "%H:%M UTC", &sTime);
} else {
localtime_r(&tmptr, &sTime);
strftime(szDt, 79, "%H:%M", &sTime);
}
return szDt;
}
char *szDate()
{
static char szDt[80];
time_t tmptr;
tm sTime;
time (&tmptr);
if (progStatus.UTC) {
gmtime_r (&tmptr, &sTime);
} else {
localtime_r(&tmptr, &sTime);
}
switch (progStatus.dtformat) {
case 1: strftime(szDt, 79, "%m/%d/%y", &sTime); break;
case 2: strftime(szDt, 79, "%d/%m/%y", &sTime); break;
case 0:
default:
strftime(szDt, 79, "%Y-%m-%d", &sTime);
}
return szDt;
}
char *szAbbrevDate()
{
static char szDt[80];
time_t tmptr;
tm sTime;
time (&tmptr);
if (progStatus.UTC) {
gmtime_r (&tmptr, &sTime);
} else {
localtime_r(&tmptr, &sTime);
}
strftime(szDt, 79, "%b %d", &sTime);
return szDt;
}
//
void cb_new()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_new();
else cb_rg_new();
}
void cb_import()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_import();
else cb_rg_import();
}
void cb_export()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_export();
else cb_rg_export();
}
void cb_wrap_import()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_wrap_import();
else cb_rg_wrap_import();
}
void cb_wrap_export()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_wrap_export();
else cb_rg_wrap_export();
}
void cb_wrap_autosend()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_wrap_autosend();
else cb_rg_wrap_autosend();
}
void cb_load_template()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_load_template();
}
void cb_save_template()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_save_template();
}
void cb_save_as_template()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_save_as_template();
}
void cb_open()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_open();
else cb_rg_open();
}
void cb_save_as()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_save_as();
else cb_rg_save_as();
}
void cb_save()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_save();
else cb_rg_save();
}
void cb_write()
{
}
void cb_html()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_html();
else cb_rg_html();
}
void cb_rtf()
{
if (tabs_msg_type->value() == tab_ics213) cb_ics_write();
else cb_rg_rtf();
}
void cb_text()
{
if (tabs_msg_type->value() == tab_ics213) ;
else cb_rg_textout();
}
void cb_exit()
{
progStatus.saveLastState();
FSEL::destroy();
exit(0);
}
void exit_main(Fl_Widget *w)
{
if (Fl::event_key() == FL_Escape)
return;
cb_exit();
}
void cb_About()
{
fl_alert2(_("Version "PACKAGE_VERSION));
}
void show_filename(string p)
{
baseFileName = fl_filename_name(p.c_str());
txt_filename->value(baseFileName.c_str());
txt_filename->redraw();
}
void set_main_label()
{
string main_label = PACKAGE_NAME;
main_label.append(": ").append(PACKAGE_VERSION);
mainwindow->label(main_label.c_str());
}
int main(int argc, char *argv[])
{
if (argc > 1) {
if (strcasecmp("--help", argv[1]) == 0) {
printf("\
--help this help text\n\
--version\n\
\n\
Usage: flmsg\n");
return 0;
}
if (strcasecmp("--version", argv[1]) == 0) {
printf("Version: "VERSION"\n");
return 0;
}
}
mainwindow = ics_dialog();
configwindow = config_dialog();
char dirbuf[FL_PATH_MAX + 1];
#ifdef __WIN32__
fl_filename_expand(dirbuf, sizeof(dirbuf) - 1, "$USERPROFILE/NBEMS.files/");
#else
fl_filename_expand(dirbuf, sizeof(dirbuf) - 1, "$HOME/.nbems/");
#endif
NBEMS_dir = dirbuf;
checkdirectories();
defFileName = ICS_msg_dir;
defFileName.append("default"DATAFILE_EXT);
defRTFname = ICS_dir;
defRTFname.append("default.rtf");
defTemplateName = ICS_tmp_dir;
defTemplateName.append("default.f2t");
def_rgFileName = ICS_msg_dir;
def_rgFileName.append("default"RGFILE_EXT);
set_rg_choices();
Fl_File_Icon::load_system_icons();
FSEL::create();
int arg_idx;
if (Fl::args(argc, argv, arg_idx, parse_args) != argc)
showoptions();
progStatus.loadLastState();
mainwindow->resize( progStatus.mainX, progStatus.mainY, mainwindow->w(), mainwindow->h());
tab_ics213->show();
#ifdef WIN32
mainwindow->icon((char*)LoadIcon(fl_display, MAKEINTRESOURCE(IDI_ICON)));
mainwindow->show(1, argv);
#else
mainwindow->show(argc, argv);
#endif
set_main_label();
show_filename(defFileName);
return Fl::run();
}
void checkdirectories(void)
{
struct DIRS {
string& dir;
const char* suffix;
void (*new_dir_func)(void);
};
DIRS NBEMS_dirs[] = {
{ NBEMS_dir, 0, 0 },
{ ARQ_dir, "ARQ", 0 },
{ ARQ_files_dir, "ARQ/files", 0 },
{ ARQ_recv_dir, "ARQ/recv", 0 },
{ ARQ_send, "ARQ/send", 0 },
{ WRAP_dir, "WRAP", 0 },
{ WRAP_recv_dir, "WRAP/recv", 0 },
{ WRAP_send_dir, "WRAP/send", 0 },
{ WRAP_auto_dir, "WRAP/auto", 0 },
{ ICS_dir, "ICS", 0 },
{ ICS_msg_dir, "ICS/messages", 0 },
{ ICS_tmp_dir, "ICS/templates", 0 },
};
int r;
for (size_t i = 0; i < sizeof(NBEMS_dirs)/sizeof(*NBEMS_dirs); i++) {
if (NBEMS_dirs[i].suffix)
NBEMS_dirs[i].dir.assign(NBEMS_dir).append(NBEMS_dirs[i].suffix).append(PATH_SEP);
if ((r = mkdir(NBEMS_dirs[i].dir.c_str(), 0777)) == -1 && errno != EEXIST) {
cerr << _("Could not make directory") << ' ' << NBEMS_dirs[i].dir
<< ": " << strerror(errno) << '\n';
exit(EXIT_FAILURE);
}
else if (r == 0 && NBEMS_dirs[i].new_dir_func)
NBEMS_dirs[i].new_dir_func();
}
}
const char *options[] = {\
"-bg\t-background [COLOR]",
"-bg2\t-background2 [COLOR]",
"-di\t-display [host:n.n]",
"-dn\t-dnd : enable drag and drop",
"-nodn\t-nodnd : disable drag and drop",
"-fg\t-foreground [COLOR]",
"-g\t-geometry [WxH+X+Y]",
"-i\t-iconic",
"-k\t-kbd : enable keyboard focus:",
"-nok\t-nokbd : en/disable keyboard focus",
"-na\t-name [CLASSNAME]",
"-s\t-scheme [plastic | gtk+]",
"-ti\t-title [WINDOWTITLE]",
"-to\t-tooltips : enable tooltips",
"-not\t-notooltips : disable tooltips\n",
0
};
const int widths[] = {60, 0};
void showoptions()
{
if (!optionswindow) {
optionswindow = optionsdialog();
brwsOptions->column_widths(widths);
for (int i = 0; options[i] != 0; i++)
brwsOptions->add(options[i]);
}
optionswindow->show();
}
void closeoptions()
{
optionswindow->hide();
}
void cb_config()
{
configwindow->show();
}
void cb_close_config()
{
configwindow->hide();
}
void show_help()
{
open_url("http://www.w1hkj.com/flmsg-help/index.html");
}
int parse_args(int argc, char **argv, int& idx)
{
// Only handle a filename option
if ( argv[idx][0] == '-' )
return 0;
string fname = argv[idx];
if (fname.find(".f2s")) {
clear_ics_form();
defFileName = fname;
read_ics(defFileName);
usingTemplate = false;
show_filename(defFileName);
}
else if (fname.find(".f2t")) {
clear_ics_form();
defFileName = fname;
read_ics(defFileName);
usingTemplate = true;
show_filename(defFileName);
}
idx++;
return 1;
}
void open_url(const char* url)
{
#ifndef __WOE32__
const char* browsers[] = {
# ifdef __APPLE__
getenv("FLDIGI_BROWSER"), // valid for any OS - set by user
"open" // OS X
# else
"fl-xdg-open", // Puppy Linux
"xdg-open", // other Unix-Linux distros
getenv("FLDIGI_BROWSER"), // force use of spec'd browser
getenv("BROWSER"), // most Linux distributions
"sensible-browser",
"firefox",
"mozilla" // must be something out there!
# endif
};
switch (fork()) {
case 0:
# ifndef NDEBUG
unsetenv("MALLOC_CHECK_");
unsetenv("MALLOC_PERTURB_");
# endif
for (size_t i = 0; i < sizeof(browsers)/sizeof(browsers[0]); i++)
if (browsers[i])
execlp(browsers[i], browsers[i], url, (char*)0);
exit(EXIT_FAILURE);
case -1:
fl_alert2(_("Could not run a web browser:\n%s\n\n"
"Open this URL manually:\n%s"),
strerror(errno), url);
}
#else
if ((int)ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL) <= 32)
fl_alert2(_("Could not open url:\n%s\n"), url);
#endif
}

973
src/flmsg_dialog.cxx Normal file
View file

@ -0,0 +1,973 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0110
#include "gettext.h"
#include "flmsg_dialog.h"
#include "status.h"
static void cb_mnuNew(Fl_Menu_*, void*) {
cb_new();
}
static void cb_mnuOpen(Fl_Menu_*, void*) {
cb_open();
}
static void cb_mnuSave(Fl_Menu_*, void*) {
cb_save();
}
static void cb_mnuSaveAs(Fl_Menu_*, void*) {
cb_save_as();
}
static void cb_mnu_html(Fl_Menu_*, void*) {
cb_html();
}
static void cb_mnu_rtf(Fl_Menu_*, void*) {
cb_rtf();
}
static void cb_mnu_text(Fl_Menu_*, void*) {
cb_text();
}
static void cb_mnu_qimport(Fl_Menu_*, void*) {
cb_import();
}
static void cb_mnu_qexport(Fl_Menu_*, void*) {
cb_export();
}
static void cb_mnuWrapImport(Fl_Menu_*, void*) {
cb_wrap_import();
}
static void cb_mnuWrapExport(Fl_Menu_*, void*) {
cb_wrap_export();
}
static void cb_mnuAutoSend(Fl_Menu_*, void*) {
cb_wrap_autosend();
}
static void cb_mnuExit(Fl_Menu_*, void*) {
cb_exit();
}
static void cb_mnu_load_template(Fl_Menu_*, void*) {
cb_load_template();
}
static void cb_mnu_save_template(Fl_Menu_*, void*) {
cb_save_template();
}
static void cb_mnu_save_as_template(Fl_Menu_*, void*) {
cb_save_as_template();
}
static void cb_mnuConfig(Fl_Menu_*, void*) {
cb_config();
}
static void cb_mnuOptions(Fl_Menu_*, void*) {
showoptions();
}
static void cb_mnuOnLineHelp(Fl_Menu_*, void*) {
show_help();
}
static void cb_mnuAbout(Fl_Menu_*, void*) {
cb_About();
}
Fl_Menu_Item menu_[] = {
{_("&File"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("&New"), 0x4006e, (Fl_Callback*)cb_mnuNew, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("&Open"), 0x4006f, (Fl_Callback*)cb_mnuOpen, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("&Save"), 0x40073, (Fl_Callback*)cb_mnuSave, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Save &As"), 0x40061, (Fl_Callback*)cb_mnuSaveAs, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("View"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("Html format"), 0, (Fl_Callback*)cb_mnu_html, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Rich text format"), 0, (Fl_Callback*)cb_mnu_rtf, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Text"), 0, (Fl_Callback*)cb_mnu_text, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("Q-forms"), 0, 0, 0, 192, FL_NORMAL_LABEL, 0, 14, 0},
{_("Import"), 0, (Fl_Callback*)cb_mnu_qimport, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Export"), 0, (Fl_Callback*)cb_mnu_qexport, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("Wrap"), 0, 0, 0, 192, FL_NORMAL_LABEL, 0, 14, 0},
{_("Import"), 0, (Fl_Callback*)cb_mnuWrapImport, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Export"), 0, (Fl_Callback*)cb_mnuWrapExport, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("AutoSend"), 0, (Fl_Callback*)cb_mnuAutoSend, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("E&xit"), 0x40078, (Fl_Callback*)cb_mnuExit, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("&Template"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("Load"), 0, (Fl_Callback*)cb_mnu_load_template, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("Save"), 0, (Fl_Callback*)cb_mnu_save_template, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Save As"), 0, (Fl_Callback*)cb_mnu_save_as_template, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("&Config"), 0, (Fl_Callback*)cb_mnuConfig, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_(" "), 0, 0, 0, 129, FL_NORMAL_LABEL, 0, 14, 0},
{_("&Help"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("Command line options"), 0, (Fl_Callback*)cb_mnuOptions, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("On Line help"), 0, (Fl_Callback*)cb_mnuOnLineHelp, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("About"), 0, (Fl_Callback*)cb_mnuAbout, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}
};
Fl_Output *txt_filename=(Fl_Output *)0;
Fl_Tabs *tabs_msg_type=(Fl_Tabs *)0;
static void cb_tabs_msg_type(Fl_Tabs*, void*) {
cb_msg_type();
}
Fl_Group *tab_ics213=(Fl_Group *)0;
Fl_Tabs *tabs_ics213=(Fl_Tabs *)0;
Fl_Group *tab_originator=(Fl_Group *)0;
Fl_Input2 *txt_To=(Fl_Input2 *)0;
Fl_Input2 *txt_P1=(Fl_Input2 *)0;
Fl_Input2 *txt_Fm=(Fl_Input2 *)0;
Fl_Input2 *txt_P2=(Fl_Input2 *)0;
Fl_Input2 *txt_Subj=(Fl_Input2 *)0;
Fl_DateInput *txt_D1=(Fl_DateInput *)0;
Fl_Button *btnDate1=(Fl_Button *)0;
static void cb_btnDate1(Fl_Button*, void*) {
cb_SetDate1();
}
Fl_Input2 *txt_T1=(Fl_Input2 *)0;
Fl_Button *btnTime1=(Fl_Button *)0;
static void cb_btnTime1(Fl_Button*, void*) {
cb_SetTime1();
}
FTextEdit *txt_Msg=(FTextEdit *)0;
Fl_Input2 *txt_S1=(Fl_Input2 *)0;
Fl_Input2 *txt_P3=(Fl_Input2 *)0;
Fl_Group *tab_responder=(Fl_Group *)0;
Fl_Input2 *txt_S2=(Fl_Input2 *)0;
Fl_DateInput *txt_D2=(Fl_DateInput *)0;
Fl_Input2 *txt_T2=(Fl_Input2 *)0;
Fl_Button *btnTime2=(Fl_Button *)0;
static void cb_btnTime2(Fl_Button*, void*) {
cb_SetTime2();
}
FTextEdit *txt_Reply=(FTextEdit *)0;
Fl_Input2 *txt_P4=(Fl_Input2 *)0;
Fl_Button *btnDate2=(Fl_Button *)0;
static void cb_btnDate2(Fl_Button*, void*) {
cb_SetDate2();
}
Fl_Group *tab_radiogram=(Fl_Group *)0;
Fl_Input2 *txt_rg_station=(Fl_Input2 *)0;
Fl_Input2 *txt_rg_place=(Fl_Input2 *)0;
Fl_Input2 *txt_rg_nbr=(Fl_Input2 *)0;
Fl_Choice *sel_rg_prec=(Fl_Choice *)0;
Fl_Choice *sel_rg_hx=(Fl_Choice *)0;
Fl_Input2 *txt_rg_hx_n=(Fl_Input2 *)0;
Fl_DateInput *txt_rg_d1=(Fl_DateInput *)0;
Fl_Button *btn_rgDate1=(Fl_Button *)0;
static void cb_btn_rgDate1(Fl_Button*, void*) {
cb_rgSetDate1();
}
Fl_Input2 *txt_rg_t1=(Fl_Input2 *)0;
Fl_Button *btn_rgTime1=(Fl_Button *)0;
static void cb_btn_rgTime1(Fl_Button*, void*) {
cb_rgSetTime1();
}
Fl_Input2 *txt_rg_to=(Fl_Input2 *)0;
Fl_Input2 *txt_rg_rx=(Fl_Input2 *)0;
Fl_Input2 *txt_rg_phone=(Fl_Input2 *)0;
FTextEdit *txt_rg_msg=(FTextEdit *)0;
Fl_Input2 *txt_rg_signed=(Fl_Input2 *)0;
Fl_DateInput *txt_rg_d2=(Fl_DateInput *)0;
Fl_Button *btn_rgDate2=(Fl_Button *)0;
static void cb_btn_rgDate2(Fl_Button*, void*) {
cb_rgSetDate2();
}
Fl_Input2 *txt_rg_t2=(Fl_Input2 *)0;
Fl_Button *btn_rgTime2=(Fl_Button *)0;
static void cb_btn_rgTime2(Fl_Button*, void*) {
cb_rgSetTime2();
}
Fl_DateInput *txt_rg_d3=(Fl_DateInput *)0;
Fl_Button *btn_rgDate3=(Fl_Button *)0;
static void cb_btn_rgDate3(Fl_Button*, void*) {
cb_rgSetDate3();
}
Fl_Input2 *txt_rg_t3=(Fl_Input2 *)0;
Fl_Button *btn_rgTime3=(Fl_Button *)0;
static void cb_btn_rgTime3(Fl_Button*, void*) {
cb_rgSetTime3();
}
Fl_Input2 *txt_rg_sent_to=(Fl_Input2 *)0;
Fl_Button *btn_rg_check=(Fl_Button *)0;
static void cb_btn_rg_check(Fl_Button*, void*) {
cb_rg_check();
}
Fl_Output *txt_rg_check=(Fl_Output *)0;
Fl_Button *btn_arl=(Fl_Button *)0;
static void cb_btn_arl(Fl_Button*, void*) {
cb_arl();
}
Fl_Double_Window* ics_dialog() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(569, 431, _("Standard Message Generator"));
w = o;
o->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
{ Fl_Menu_Bar* o = new Fl_Menu_Bar(1, 0, 280, 22);
o->menu(menu_);
} // Fl_Menu_Bar* o
{ txt_filename = new Fl_Output(363, 2, 205, 20, _("filename:"));
txt_filename->box(FL_FLAT_BOX);
txt_filename->color((Fl_Color)FL_BACKGROUND_COLOR);
} // Fl_Output* txt_filename
{ tabs_msg_type = new Fl_Tabs(1, 22, 564, 405);
tabs_msg_type->callback((Fl_Callback*)cb_tabs_msg_type);
{ tab_ics213 = new Fl_Group(2, 45, 560, 380, _("ICS213"));
{ tabs_ics213 = new Fl_Tabs(3, 49, 555, 370);
{ tab_originator = new Fl_Group(4, 72, 551, 346, _("Originator"));
{ txt_To = new Fl_Input2(43, 77, 235, 24, _("To"));
txt_To->tooltip(_("Addressee"));
txt_To->box(FL_DOWN_BOX);
txt_To->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_To->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_To->labeltype(FL_NORMAL_LABEL);
txt_To->labelfont(0);
txt_To->labelsize(14);
txt_To->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_To->align(FL_ALIGN_LEFT);
txt_To->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_To
{ txt_P1 = new Fl_Input2(315, 77, 235, 24, _("Pos."));
txt_P1->tooltip(_("Position of addressee"));
txt_P1->box(FL_DOWN_BOX);
txt_P1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P1->labeltype(FL_NORMAL_LABEL);
txt_P1->labelfont(0);
txt_P1->labelsize(14);
txt_P1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P1->align(FL_ALIGN_LEFT);
txt_P1->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P1
{ txt_Fm = new Fl_Input2(43, 102, 235, 24, _("Fm"));
txt_Fm->tooltip(_("Originator"));
txt_Fm->box(FL_DOWN_BOX);
txt_Fm->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Fm->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Fm->labeltype(FL_NORMAL_LABEL);
txt_Fm->labelfont(0);
txt_Fm->labelsize(14);
txt_Fm->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Fm->align(FL_ALIGN_LEFT);
txt_Fm->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_Fm
{ txt_P2 = new Fl_Input2(315, 102, 235, 24, _("Pos."));
txt_P2->tooltip(_("Position of originator"));
txt_P2->box(FL_DOWN_BOX);
txt_P2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P2->labeltype(FL_NORMAL_LABEL);
txt_P2->labelfont(0);
txt_P2->labelsize(14);
txt_P2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P2->align(FL_ALIGN_LEFT);
txt_P2->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P2
{ txt_Subj = new Fl_Input2(43, 127, 235, 24, _("Sub."));
txt_Subj->tooltip(_("Subject"));
txt_Subj->box(FL_DOWN_BOX);
txt_Subj->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Subj->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Subj->labeltype(FL_NORMAL_LABEL);
txt_Subj->labelfont(0);
txt_Subj->labelsize(14);
txt_Subj->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Subj->align(FL_ALIGN_LEFT);
txt_Subj->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_Subj
{ txt_D1 = new Fl_DateInput(316, 128, 122, 24, _("Date"));
txt_D1->tooltip(_("Date of origination"));
txt_D1->box(FL_DOWN_BOX);
txt_D1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_D1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_D1->labeltype(FL_NORMAL_LABEL);
txt_D1->labelfont(0);
txt_D1->labelsize(14);
txt_D1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_D1->align(FL_ALIGN_LEFT);
txt_D1->when(FL_WHEN_RELEASE);
txt_D1->format(2);
} // Fl_DateInput* txt_D1
{ btnDate1 = new Fl_Button(440, 130, 20, 20, _("..."));
btnDate1->tooltip(_("Set today"));
btnDate1->callback((Fl_Callback*)cb_btnDate1);
} // Fl_Button* btnDate1
{ txt_T1 = new Fl_Input2(317, 153, 100, 24, _("Time"));
txt_T1->tooltip(_("Time of origination"));
txt_T1->box(FL_DOWN_BOX);
txt_T1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_T1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_T1->labeltype(FL_NORMAL_LABEL);
txt_T1->labelfont(0);
txt_T1->labelsize(14);
txt_T1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_T1->align(FL_ALIGN_LEFT);
txt_T1->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_T1
{ btnTime1 = new Fl_Button(419, 155, 20, 20, _("..."));
btnTime1->tooltip(_("Set time now"));
btnTime1->callback((Fl_Callback*)cb_btnTime1);
} // Fl_Button* btnTime1
{ txt_Msg = new FTextEdit(8, 180, 544, 206, _("Message:"));
txt_Msg->box(FL_DOWN_FRAME);
txt_Msg->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Msg->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Msg->labeltype(FL_NORMAL_LABEL);
txt_Msg->labelfont(0);
txt_Msg->labelsize(14);
txt_Msg->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Msg->align(FL_ALIGN_TOP_LEFT);
txt_Msg->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(txt_Msg);
} // FTextEdit* txt_Msg
{ txt_S1 = new Fl_Input2(38, 389, 240, 24, _("Sig."));
txt_S1->tooltip(_("Signature of preparer"));
txt_S1->box(FL_DOWN_BOX);
txt_S1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_S1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_S1->labeltype(FL_NORMAL_LABEL);
txt_S1->labelfont(0);
txt_S1->labelsize(14);
txt_S1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_S1->align(FL_ALIGN_LEFT);
txt_S1->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_S1
{ txt_P3 = new Fl_Input2(312, 389, 240, 24, _("Pos."));
txt_P3->tooltip(_("Position of preparer"));
txt_P3->box(FL_DOWN_BOX);
txt_P3->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P3->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P3->labeltype(FL_NORMAL_LABEL);
txt_P3->labelfont(0);
txt_P3->labelsize(14);
txt_P3->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P3->align(FL_ALIGN_LEFT);
txt_P3->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P3
tab_originator->end();
} // Fl_Group* tab_originator
{ tab_responder = new Fl_Group(4, 72, 551, 346, _("Responder"));
tab_responder->hide();
{ txt_S2 = new Fl_Input2(38, 387, 240, 24, _("Sig."));
txt_S2->tooltip(_("Signature of responder"));
txt_S2->box(FL_DOWN_BOX);
txt_S2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_S2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_S2->labeltype(FL_NORMAL_LABEL);
txt_S2->labelfont(0);
txt_S2->labelsize(14);
txt_S2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_S2->align(FL_ALIGN_LEFT);
txt_S2->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_S2
{ txt_D2 = new Fl_DateInput(240, 78, 122, 24, _("Date"));
txt_D2->tooltip(_("Reply Date"));
txt_D2->box(FL_DOWN_BOX);
txt_D2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_D2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_D2->labeltype(FL_NORMAL_LABEL);
txt_D2->labelfont(0);
txt_D2->labelsize(14);
txt_D2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_D2->align(FL_ALIGN_LEFT);
txt_D2->when(FL_WHEN_RELEASE);
} // Fl_DateInput* txt_D2
{ txt_T2 = new Fl_Input2(425, 78, 100, 24, _("Time"));
txt_T2->tooltip(_("Reply Time"));
txt_T2->box(FL_DOWN_BOX);
txt_T2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_T2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_T2->labeltype(FL_NORMAL_LABEL);
txt_T2->labelfont(0);
txt_T2->labelsize(14);
txt_T2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_T2->align(FL_ALIGN_LEFT);
txt_T2->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_T2
{ btnTime2 = new Fl_Button(528, 80, 20, 20, _("..."));
btnTime2->tooltip(_("Now"));
btnTime2->callback((Fl_Callback*)cb_btnTime2);
} // Fl_Button* btnTime2
{ txt_Reply = new FTextEdit(8, 108, 545, 275, _("Reply"));
txt_Reply->box(FL_DOWN_FRAME);
txt_Reply->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Reply->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Reply->labeltype(FL_NORMAL_LABEL);
txt_Reply->labelfont(0);
txt_Reply->labelsize(14);
txt_Reply->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Reply->align(FL_ALIGN_TOP_LEFT);
txt_Reply->when(FL_WHEN_RELEASE);
} // FTextEdit* txt_Reply
{ txt_P4 = new Fl_Input2(315, 387, 235, 24, _("Pos."));
txt_P4->tooltip(_("Position of responder"));
txt_P4->box(FL_DOWN_BOX);
txt_P4->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P4->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P4->labeltype(FL_NORMAL_LABEL);
txt_P4->labelfont(0);
txt_P4->labelsize(14);
txt_P4->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P4->align(FL_ALIGN_LEFT);
txt_P4->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P4
{ btnDate2 = new Fl_Button(363, 80, 20, 20, _("..."));
btnDate2->tooltip(_("Today"));
btnDate2->callback((Fl_Callback*)cb_btnDate2);
} // Fl_Button* btnDate2
tab_responder->end();
Fl_Group::current()->resizable(tab_responder);
} // Fl_Group* tab_responder
tabs_ics213->end();
Fl_Group::current()->resizable(tabs_ics213);
} // Fl_Tabs* tabs_ics213
tab_ics213->end();
} // Fl_Group* tab_ics213
{ tab_radiogram = new Fl_Group(2, 45, 562, 380, _("RadioGram"));
tab_radiogram->hide();
{ txt_rg_station = new Fl_Input2(146, 51, 80, 24, _("*Originating station"));
txt_rg_station->tooltip(_("Station call sign"));
txt_rg_station->box(FL_DOWN_BOX);
txt_rg_station->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_station->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_station->labeltype(FL_NORMAL_LABEL);
txt_rg_station->labelfont(0);
txt_rg_station->labelsize(14);
txt_rg_station->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_station->align(FL_ALIGN_LEFT);
txt_rg_station->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_station
{ txt_rg_place = new Fl_Input2(273, 51, 283, 24, _("Place"));
txt_rg_place->tooltip(_("Point of origin"));
txt_rg_place->box(FL_DOWN_BOX);
txt_rg_place->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_place->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_place->labeltype(FL_NORMAL_LABEL);
txt_rg_place->labelfont(0);
txt_rg_place->labelsize(14);
txt_rg_place->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_place->align(FL_ALIGN_LEFT);
txt_rg_place->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_place
{ txt_rg_nbr = new Fl_Input2(5, 97, 80, 24, _("*Nbr"));
txt_rg_nbr->tooltip(_("Message number at station of origin"));
txt_rg_nbr->box(FL_DOWN_BOX);
txt_rg_nbr->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_nbr->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_nbr->labeltype(FL_NORMAL_LABEL);
txt_rg_nbr->labelfont(0);
txt_rg_nbr->labelsize(14);
txt_rg_nbr->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_nbr->align(FL_ALIGN_TOP_LEFT);
txt_rg_nbr->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_nbr
{ sel_rg_prec = new Fl_Choice(88, 97, 118, 24, _("*Prec"));
sel_rg_prec->tooltip(_("Message Precedence"));
sel_rg_prec->down_box(FL_BORDER_BOX);
sel_rg_prec->align(FL_ALIGN_TOP_LEFT);
} // Fl_Choice* sel_rg_prec
{ sel_rg_hx = new Fl_Choice(209, 97, 60, 24, _("HX_"));
sel_rg_hx->tooltip(_("Handling instructions"));
sel_rg_hx->down_box(FL_BORDER_BOX);
sel_rg_hx->align(FL_ALIGN_TOP_LEFT);
} // Fl_Choice* sel_rg_hx
{ txt_rg_hx_n = new Fl_Input2(272, 97, 40, 24, _("#"));
txt_rg_hx_n->tooltip(_("Numeric for HXB/C/F"));
txt_rg_hx_n->box(FL_DOWN_BOX);
txt_rg_hx_n->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_hx_n->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_hx_n->labeltype(FL_NORMAL_LABEL);
txt_rg_hx_n->labelfont(0);
txt_rg_hx_n->labelsize(14);
txt_rg_hx_n->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_hx_n->align(FL_ALIGN_TOP_LEFT);
txt_rg_hx_n->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_hx_n
{ txt_rg_d1 = new Fl_DateInput(315, 97, 122, 24, _("*Date filed"));
txt_rg_d1->tooltip(_("Date of origination"));
txt_rg_d1->box(FL_DOWN_BOX);
txt_rg_d1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_d1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_d1->labeltype(FL_NORMAL_LABEL);
txt_rg_d1->labelfont(0);
txt_rg_d1->labelsize(14);
txt_rg_d1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_d1->align(FL_ALIGN_TOP_LEFT);
txt_rg_d1->when(FL_WHEN_RELEASE);
txt_rg_d1->format(4);
} // Fl_DateInput* txt_rg_d1
{ btn_rgDate1 = new Fl_Button(437, 99, 20, 20, _("..."));
btn_rgDate1->tooltip(_("Set today"));
btn_rgDate1->callback((Fl_Callback*)cb_btn_rgDate1);
} // Fl_Button* btn_rgDate1
{ txt_rg_t1 = new Fl_Input2(459, 97, 80, 24, _("Time filed"));
txt_rg_t1->tooltip(_("Time of origination"));
txt_rg_t1->box(FL_DOWN_BOX);
txt_rg_t1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_t1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_t1->labeltype(FL_NORMAL_LABEL);
txt_rg_t1->labelfont(0);
txt_rg_t1->labelsize(14);
txt_rg_t1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_t1->align(FL_ALIGN_TOP_LEFT);
txt_rg_t1->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_t1
{ btn_rgTime1 = new Fl_Button(540, 99, 20, 20, _("..."));
btn_rgTime1->tooltip(_("Set time now"));
btn_rgTime1->callback((Fl_Callback*)cb_btn_rgTime1);
} // Fl_Button* btn_rgTime1
{ txt_rg_to = new Fl_Input2(5, 139, 275, 60, _("*Addressee"));
txt_rg_to->tooltip(_("Addressee"));
txt_rg_to->type(4);
txt_rg_to->box(FL_DOWN_BOX);
txt_rg_to->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_to->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_to->labeltype(FL_NORMAL_LABEL);
txt_rg_to->labelfont(0);
txt_rg_to->labelsize(14);
txt_rg_to->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_to->align(FL_ALIGN_TOP_LEFT);
txt_rg_to->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_to
{ txt_rg_rx = new Fl_Input2(281, 139, 275, 60, _("Message was received at"));
txt_rg_rx->tooltip(_("Receipt information"));
txt_rg_rx->type(4);
txt_rg_rx->box(FL_DOWN_BOX);
txt_rg_rx->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_rx->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_rx->labeltype(FL_NORMAL_LABEL);
txt_rg_rx->labelfont(0);
txt_rg_rx->labelsize(14);
txt_rg_rx->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_rx->align(FL_ALIGN_TOP_LEFT);
txt_rg_rx->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_rx
{ txt_rg_phone = new Fl_Input2(90, 202, 190, 24, _("Tele:"));
txt_rg_phone->tooltip(_("Addressee telephone number"));
txt_rg_phone->box(FL_DOWN_BOX);
txt_rg_phone->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_phone->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_phone->labeltype(FL_NORMAL_LABEL);
txt_rg_phone->labelfont(0);
txt_rg_phone->labelsize(14);
txt_rg_phone->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_phone->align(FL_ALIGN_LEFT);
txt_rg_phone->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_phone
{ txt_rg_msg = new FTextEdit(5, 243, 550, 100, _("Message:"));
txt_rg_msg->tooltip(_("Message contents - recommend limit to 25 words or less"));
txt_rg_msg->box(FL_DOWN_BOX);
txt_rg_msg->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_msg->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_msg->labeltype(FL_NORMAL_LABEL);
txt_rg_msg->labelfont(0);
txt_rg_msg->labelsize(14);
txt_rg_msg->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_msg->align(FL_ALIGN_TOP_LEFT);
txt_rg_msg->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(txt_rg_msg);
} // FTextEdit* txt_rg_msg
{ Fl_Group* o = new Fl_Group(7, 346, 270, 76);
o->box(FL_ENGRAVED_FRAME);
{ txt_rg_signed = new Fl_Input2(73, 349, 200, 24, _("*Signed"));
txt_rg_signed->tooltip(_("Person requesting message"));
txt_rg_signed->box(FL_DOWN_BOX);
txt_rg_signed->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_signed->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_signed->labeltype(FL_NORMAL_LABEL);
txt_rg_signed->labelfont(0);
txt_rg_signed->labelsize(14);
txt_rg_signed->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_signed->align(FL_ALIGN_LEFT);
txt_rg_signed->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_signed
{ txt_rg_d2 = new Fl_DateInput(20, 391, 122, 24, _("Date"));
txt_rg_d2->tooltip(_("Date of preparation"));
txt_rg_d2->box(FL_DOWN_BOX);
txt_rg_d2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_d2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_d2->labeltype(FL_NORMAL_LABEL);
txt_rg_d2->labelfont(0);
txt_rg_d2->labelsize(14);
txt_rg_d2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_d2->align(FL_ALIGN_TOP_LEFT);
txt_rg_d2->when(FL_WHEN_RELEASE);
txt_rg_d1->format(2);
} // Fl_DateInput* txt_rg_d2
{ btn_rgDate2 = new Fl_Button(142, 393, 20, 20, _("..."));
btn_rgDate2->tooltip(_("Set today"));
btn_rgDate2->callback((Fl_Callback*)cb_btn_rgDate2);
} // Fl_Button* btn_rgDate2
{ txt_rg_t2 = new Fl_Input2(164, 391, 80, 24, _("Time"));
txt_rg_t2->tooltip(_("Time of preparation"));
txt_rg_t2->box(FL_DOWN_BOX);
txt_rg_t2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_t2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_t2->labeltype(FL_NORMAL_LABEL);
txt_rg_t2->labelfont(0);
txt_rg_t2->labelsize(14);
txt_rg_t2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_t2->align(FL_ALIGN_TOP_LEFT);
txt_rg_t2->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_t2
{ btn_rgTime2 = new Fl_Button(245, 393, 20, 20, _("..."));
btn_rgTime2->tooltip(_("Set time now"));
btn_rgTime2->callback((Fl_Callback*)cb_btn_rgTime2);
} // Fl_Button* btn_rgTime2
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(284, 346, 270, 76);
o->box(FL_ENGRAVED_FRAME);
{ txt_rg_d3 = new Fl_DateInput(296, 391, 122, 24, _("Date"));
txt_rg_d3->tooltip(_("Date message sent"));
txt_rg_d3->box(FL_DOWN_BOX);
txt_rg_d3->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_d3->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_d3->labeltype(FL_NORMAL_LABEL);
txt_rg_d3->labelfont(0);
txt_rg_d3->labelsize(14);
txt_rg_d3->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_d3->align(FL_ALIGN_TOP_LEFT);
txt_rg_d3->when(FL_WHEN_RELEASE);
txt_rg_d1->format(2);
} // Fl_DateInput* txt_rg_d3
{ btn_rgDate3 = new Fl_Button(418, 393, 20, 20, _("..."));
btn_rgDate3->tooltip(_("Set today"));
btn_rgDate3->callback((Fl_Callback*)cb_btn_rgDate3);
} // Fl_Button* btn_rgDate3
{ txt_rg_t3 = new Fl_Input2(440, 391, 80, 24, _("Time"));
txt_rg_t3->tooltip(_("Time message sent"));
txt_rg_t3->box(FL_DOWN_BOX);
txt_rg_t3->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_t3->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_t3->labeltype(FL_NORMAL_LABEL);
txt_rg_t3->labelfont(0);
txt_rg_t3->labelsize(14);
txt_rg_t3->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_t3->align(FL_ALIGN_TOP_LEFT);
txt_rg_t3->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_t3
{ btn_rgTime3 = new Fl_Button(521, 393, 20, 20, _("..."));
btn_rgTime3->tooltip(_("Set time now"));
btn_rgTime3->callback((Fl_Callback*)cb_btn_rgTime3);
} // Fl_Button* btn_rgTime3
{ txt_rg_sent_to = new Fl_Input2(348, 349, 200, 24, _("Sent to"));
txt_rg_sent_to->tooltip(_("Message sent to (call sign)"));
txt_rg_sent_to->box(FL_DOWN_BOX);
txt_rg_sent_to->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_rg_sent_to->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_rg_sent_to->labeltype(FL_NORMAL_LABEL);
txt_rg_sent_to->labelfont(0);
txt_rg_sent_to->labelsize(14);
txt_rg_sent_to->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_rg_sent_to->align(FL_ALIGN_LEFT);
txt_rg_sent_to->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_rg_sent_to
o->end();
} // Fl_Group* o
{ btn_rg_check = new Fl_Button(435, 216, 52, 24, _("Check"));
btn_rg_check->tooltip(_("Compute check count"));
btn_rg_check->callback((Fl_Callback*)cb_btn_rg_check);
} // Fl_Button* btn_rg_check
{ txt_rg_check = new Fl_Output(494, 215, 60, 25);
txt_rg_check->tooltip(_("check count"));
} // Fl_Output* txt_rg_check
{ btn_arl = new Fl_Button(355, 216, 75, 24, _("ARL MSG"));
btn_arl->tooltip(_("ARL message selector"));
btn_arl->callback((Fl_Callback*)cb_btn_arl);
} // Fl_Button* btn_arl
tab_radiogram->end();
} // Fl_Group* tab_radiogram
tabs_msg_type->end();
} // Fl_Tabs* tabs_msg_type
o->end();
o->resizable(o);
} // Fl_Double_Window* o
return w;
}
Fl_Browser *brwsOptions=(Fl_Browser *)0;
Fl_Return_Button *btnCloseOptions=(Fl_Return_Button *)0;
static void cb_btnCloseOptions(Fl_Return_Button*, void*) {
closeoptions();
}
Fl_Double_Window* optionsdialog() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(411, 263, _("Command Line Options"));
w = o;
{ brwsOptions = new Fl_Browser(3, 31, 405, 202);
} // Fl_Browser* brwsOptions
{ btnCloseOptions = new Fl_Return_Button(329, 239, 72, 20, _("OK"));
btnCloseOptions->callback((Fl_Callback*)cb_btnCloseOptions);
} // Fl_Return_Button* btnCloseOptions
{ Fl_Box* o = new Fl_Box(4, 7, 401, 21, _("usage: flics -<option> [filename]"));
o->box(FL_FLAT_BOX);
o->color((Fl_Color)FL_LIGHT3);
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
} // Fl_Box* o
o->end();
} // Fl_Double_Window* o
return w;
}
Fl_Browser *select_arl=(Fl_Browser *)0;
static void cb_select_arl(Fl_Browser* o, void*) {
arl_nbr = o->value()- 1;
arl_text->clear();
arl_text->addstr(arl_list[arl_nbr].text);
txt_arl_fill1->value("");
txt_arl_fill1->deactivate();
txt_arl_fill2->value("");
txt_arl_fill2->deactivate();
txt_arl_fill3->value("");
txt_arl_fill3->deactivate();
txt_arl_fill4->value("");
txt_arl_fill4->deactivate();
if (arl_list[arl_nbr].nfills > 0) txt_arl_fill1->activate();
if (arl_list[arl_nbr].nfills > 1) txt_arl_fill2->activate();
if (arl_list[arl_nbr].nfills > 2) txt_arl_fill3->activate();
if (arl_list[arl_nbr].nfills > 3) txt_arl_fill4->activate();
}
Fl_Input *txt_arl_fill1=(Fl_Input *)0;
Fl_Input *txt_arl_fill2=(Fl_Input *)0;
Fl_Input *txt_arl_fill3=(Fl_Input *)0;
Fl_Input *txt_arl_fill4=(Fl_Input *)0;
Fl_Button *btn_arl_cancel=(Fl_Button *)0;
static void cb_btn_arl_cancel(Fl_Button*, void*) {
cb_arl_cancel();
}
Fl_Button *btn_arl_add=(Fl_Button *)0;
static void cb_btn_arl_add(Fl_Button*, void*) {
cb_arl_add();
}
FTextEdit *arl_text=(FTextEdit *)0;
Fl_Double_Window* arl_dialog() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(521, 261, _("ARL Message Selector"));
w = o;
{ select_arl = new Fl_Browser(6, 21, 161, 107, _("ARL #"));
select_arl->type(2);
select_arl->callback((Fl_Callback*)cb_select_arl);
select_arl->align(FL_ALIGN_TOP);
} // Fl_Browser* select_arl
{ txt_arl_fill1 = new Fl_Input(48, 131, 465, 22, _("fill 1:"));
} // Fl_Input* txt_arl_fill1
{ txt_arl_fill2 = new Fl_Input(48, 155, 465, 22, _("fill 2:"));
} // Fl_Input* txt_arl_fill2
{ txt_arl_fill3 = new Fl_Input(48, 179, 465, 22, _("fill 3:"));
} // Fl_Input* txt_arl_fill3
{ txt_arl_fill4 = new Fl_Input(48, 204, 465, 22, _("fill 4:"));
} // Fl_Input* txt_arl_fill4
{ btn_arl_cancel = new Fl_Button(362, 232, 70, 20, _("Cancel"));
btn_arl_cancel->callback((Fl_Callback*)cb_btn_arl_cancel);
} // Fl_Button* btn_arl_cancel
{ btn_arl_add = new Fl_Button(440, 232, 70, 20, _("Add"));
btn_arl_add->callback((Fl_Callback*)cb_btn_arl_add);
} // Fl_Button* btn_arl_add
{ arl_text = new FTextEdit(169, 21, 345, 107, _("Message:"));
arl_text->tooltip(_("Message contents - recommend limit to 25 words or less"));
arl_text->box(FL_DOWN_BOX);
arl_text->color((Fl_Color)FL_LIGHT3);
arl_text->selection_color((Fl_Color)FL_SELECTION_COLOR);
arl_text->labeltype(FL_NORMAL_LABEL);
arl_text->labelfont(0);
arl_text->labelsize(14);
arl_text->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
arl_text->align(FL_ALIGN_TOP_LEFT);
arl_text->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(arl_text);
} // FTextEdit* arl_text
o->end();
} // Fl_Double_Window* o
return w;
}
Fl_Check_Button *btn_compress=(Fl_Check_Button *)0;
static void cb_btn_compress(Fl_Check_Button* o, void*) {
progStatus.compression = o->value();
}
Fl_Check_Button *btn_UTC=(Fl_Check_Button *)0;
static void cb_btn_UTC(Fl_Check_Button* o, void*) {
progStatus.UTC = o->value();
}
Fl_Round_Button *btn_dtformat0=(Fl_Round_Button *)0;
static void cb_btn_dtformat0(Fl_Round_Button* o, void*) {
if (o->value()) progStatus.dtformat = 0;
}
Fl_Round_Button *btn_dtformat1=(Fl_Round_Button *)0;
static void cb_btn_dtformat1(Fl_Round_Button* o, void*) {
if (o->value()) progStatus.dtformat = 1;
}
Fl_Round_Button *btn_dtformat2=(Fl_Round_Button *)0;
static void cb_btn_dtformat2(Fl_Round_Button* o, void*) {
if (o->value()) progStatus.dtformat = 2;
}
Fl_Spinner *cnt_wpl=(Fl_Spinner *)0;
static void cb_cnt_wpl(Fl_Spinner* o, void*) {
progStatus.wpl = (int)o->value();
}
Fl_Button *btn_close_config=(Fl_Button *)0;
static void cb_btn_close_config(Fl_Button*, void*) {
cb_close_config();
}
Fl_Double_Window* config_dialog() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(233, 248, _("flmsg configure"));
w = o;
{ Fl_Check_Button* o = btn_compress = new Fl_Check_Button(42, 10, 70, 15, _("Use compression"));
btn_compress->tooltip(_("Compress wrap files"));
btn_compress->down_box(FL_DOWN_BOX);
btn_compress->callback((Fl_Callback*)cb_btn_compress);
o->value(progStatus.compression);
} // Fl_Check_Button* btn_compress
{ Fl_Check_Button* o = btn_UTC = new Fl_Check_Button(44, 41, 70, 15, _("use UTC"));
btn_UTC->tooltip(_("UTC / local time"));
btn_UTC->down_box(FL_DOWN_BOX);
btn_UTC->callback((Fl_Callback*)cb_btn_UTC);
o->value(progStatus.UTC);
} // Fl_Check_Button* btn_UTC
{ Fl_Group* o = new Fl_Group(46, 67, 133, 115, _("Date format"));
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
{ Fl_Round_Button* o = btn_dtformat0 = new Fl_Round_Button(58, 100, 70, 15, _("YYYY-DD-MM"));
btn_dtformat0->down_box(FL_ROUND_DOWN_BOX);
btn_dtformat0->callback((Fl_Callback*)cb_btn_dtformat0);
if (progStatus.dtformat == 0) o->value(1); else o->value(0);
} // Fl_Round_Button* btn_dtformat0
{ Fl_Round_Button* o = btn_dtformat1 = new Fl_Round_Button(58, 125, 70, 15, _("MM/DD/YY"));
btn_dtformat1->down_box(FL_ROUND_DOWN_BOX);
btn_dtformat1->callback((Fl_Callback*)cb_btn_dtformat1);
if (progStatus.dtformat == 1) o->value(1); else o->value(0);
} // Fl_Round_Button* btn_dtformat1
{ Fl_Round_Button* o = btn_dtformat2 = new Fl_Round_Button(58, 151, 70, 15, _("DD/MM/YY"));
btn_dtformat2->down_box(FL_ROUND_DOWN_BOX);
btn_dtformat2->callback((Fl_Callback*)cb_btn_dtformat2);
if (progStatus.dtformat == 2) o->value(1); else o->value(0);
} // Fl_Round_Button* btn_dtformat2
o->end();
} // Fl_Group* o
{ Fl_Spinner* o = cnt_wpl = new Fl_Spinner(47, 188, 40, 25, _("words per line"));
cnt_wpl->tooltip(_("Radiogram message contents auto format"));
cnt_wpl->minimum(4);
cnt_wpl->maximum(10);
cnt_wpl->value(5);
cnt_wpl->callback((Fl_Callback*)cb_cnt_wpl);
cnt_wpl->align(FL_ALIGN_RIGHT);
o->value(progStatus.wpl);
} // Fl_Spinner* cnt_wpl
{ btn_close_config = new Fl_Button(146, 216, 73, 25, _("close"));
btn_close_config->callback((Fl_Callback*)cb_btn_close_config);
} // Fl_Button* btn_close_config
o->end();
} // Fl_Double_Window* o
return w;
}

575
src/flmsg_dialog.fl Normal file
View file

@ -0,0 +1,575 @@
# data file for the Fltk User Interface Designer (fluid)
version 1.0110
i18n_type 1
i18n_include "gettext.h"
i18n_function _
header_name {.h}
code_name {.cxx}
decl {\#include <FL/Fl_Pixmap.H>} {public global
}
decl {\#include <FL/Fl_Text_Editor.H>} {public
}
decl {\#include "FTextView.h"} {public
}
decl {\#include "status.h"} {}
decl {\#include "flinput2.h"} {public global
}
Function {ics_dialog()} {open
} {
Fl_Window {} {
label {Standard Message Generator} open
xywh {488 101 569 431} type Double align 80 resizable visible
} {
Fl_Menu_Bar {} {open
xywh {1 0 280 22}
} {
Submenu {} {
label {&File} open
xywh {0 0 70 21}
} {
MenuItem mnuNew {
label {&New}
callback {cb_new();}
tooltip {New ICS file} xywh {0 0 36 21} shortcut 0x4006e
code0 {\#include "ics213.h"}
}
MenuItem mnuOpen {
label {&Open}
callback {cb_open();}
tooltip {Open ICS file} xywh {0 0 36 21} shortcut 0x4006f divider
}
MenuItem mnuSave {
label {&Save}
callback {cb_save();}
tooltip {Save ICS file} xywh {0 0 36 21} shortcut 0x40073
}
MenuItem mnuSaveAs {
label {Save &As}
callback {cb_save_as();}
tooltip {Save ICS file as} xywh {0 0 36 21} shortcut 0x40061 divider
}
Submenu {} {
label View open
xywh {0 0 70 21}
} {
MenuItem mnu_html {
label {Html format}
callback {cb_html();}
xywh {0 0 36 21}
}
MenuItem mnu_rtf {
label {Rich text format}
callback {cb_rtf();}
xywh {0 0 36 21}
}
MenuItem mnu_text {
label Text
callback {cb_text();}
xywh {0 0 36 21}
}
}
Submenu {} {
label {Q-forms} open
xywh {0 0 70 21} divider
} {
MenuItem mnu_qimport {
label Import
callback {cb_import();}
tooltip {Import Qforms xml data file} xywh {0 0 36 21}
}
MenuItem mnu_qexport {
label Export
callback {cb_export();}
tooltip {Export Qforms xml data file} xywh {0 0 36 21} divider
}
}
Submenu {} {
label Wrap open
xywh {0 0 70 21} divider
} {
MenuItem mnuWrapImport {
label Import
callback {cb_wrap_import();}
tooltip {Import data from wrapped file} xywh {0 0 36 21}
}
MenuItem mnuWrapExport {
label Export
callback {cb_wrap_export();}
tooltip {Export Wrapped data file} xywh {0 0 36 21} divider
}
MenuItem mnuAutoSend {
label AutoSend
callback {cb_wrap_autosend();}
tooltip {Send to fldigi for transmit} xywh {0 0 36 21}
}
}
MenuItem mnuExit {
label {E&xit}
callback {cb_exit();}
xywh {0 0 36 21} shortcut 0x40078
}
}
Submenu {} {
label {&Template} open
xywh {0 0 70 21}
} {
MenuItem mnu_load_template {
label Load
callback {cb_load_template();}
xywh {0 0 36 21} divider
}
MenuItem mnu_save_template {
label Save
callback {cb_save_template();}
xywh {0 0 36 21}
}
MenuItem mnu_save_as_template {
label {Save As}
callback {cb_save_as_template();}
xywh {0 0 36 21}
}
}
MenuItem mnuConfig {
label {&Config}
callback {cb_config();}
xywh {0 0 36 21}
}
MenuItem {} {
label { }
xywh {0 0 36 21} deactivate divider
}
Submenu {} {
label {&Help} open
xywh {0 0 70 21}
} {
MenuItem mnuOptions {
label {Command line options}
callback {showoptions();}
xywh {0 0 36 21}
}
MenuItem mnuOnLineHelp {
label {On Line help}
callback {show_help();}
xywh {0 0 36 21} divider
}
MenuItem mnuAbout {
label About
callback {cb_About();}
xywh {0 0 36 21}
}
}
}
Fl_Output txt_filename {
label {filename:}
xywh {363 2 205 20} box FLAT_BOX color 49
}
Fl_Tabs tabs_msg_type {
callback {cb_msg_type();} open
xywh {1 22 564 405}
} {
Fl_Group tab_ics213 {
label ICS213 open selected
xywh {2 45 560 380}
} {
Fl_Tabs tabs_ics213 {open
xywh {3 49 555 370} resizable
} {
Fl_Group tab_originator {
label Originator open
xywh {4 72 551 346}
} {
Fl_Input txt_To {
label To
tooltip Addressee xywh {43 77 235 24}
class Fl_Input2
}
Fl_Input txt_P1 {
label {Pos.}
tooltip {Position of addressee} xywh {315 77 235 24}
class Fl_Input2
}
Fl_Input txt_Fm {
label Fm
tooltip Originator xywh {43 102 235 24}
class Fl_Input2
}
Fl_Input txt_P2 {
label {Pos.}
tooltip {Position of originator} xywh {315 102 235 24}
class Fl_Input2
}
Fl_Input txt_Subj {
label {Sub.}
tooltip Subject xywh {43 127 235 24}
class Fl_Input2
}
Fl_Input txt_D1 {
label Date
tooltip {Date of origination} xywh {316 128 122 24}
code0 {\#include "calendar.h"}
code1 {txt_D1->format(2);}
class Fl_DateInput
}
Fl_Button btnDate1 {
label {...}
callback {cb_SetDate1();}
tooltip {Set today} xywh {440 130 20 20}
}
Fl_Input txt_T1 {
label Time
tooltip {Time of origination} xywh {317 153 100 24}
class Fl_Input2
}
Fl_Button btnTime1 {
label {...}
callback {cb_SetTime1();}
tooltip {Set time now} xywh {419 155 20 20}
}
Fl_Text_Editor txt_Msg {
label {Message:}
xywh {8 180 544 206} align 5 resizable
class FTextEdit
}
Fl_Input txt_S1 {
label {Sig.}
tooltip {Signature of preparer} xywh {38 389 240 24}
class Fl_Input2
}
Fl_Input txt_P3 {
label {Pos.}
tooltip {Position of preparer} xywh {312 389 240 24}
class Fl_Input2
}
}
Fl_Group tab_responder {
label Responder open
xywh {4 72 551 346} hide resizable
} {
Fl_Input txt_S2 {
label {Sig.}
tooltip {Signature of responder} xywh {38 387 240 24}
class Fl_Input2
}
Fl_Input txt_D2 {
label Date
tooltip {Reply Date} xywh {240 78 122 24}
class Fl_DateInput
}
Fl_Input txt_T2 {
label Time
tooltip {Reply Time} xywh {425 78 100 24}
class Fl_Input2
}
Fl_Button btnTime2 {
label {...}
callback {cb_SetTime2();}
tooltip Now xywh {528 80 20 20}
}
Fl_Text_Editor txt_Reply {
label Reply
xywh {8 108 545 275} align 5
class FTextEdit
}
Fl_Input txt_P4 {
label {Pos.}
tooltip {Position of responder} xywh {315 387 235 24}
class Fl_Input2
}
Fl_Button btnDate2 {
label {...}
callback {cb_SetDate2();}
tooltip Today xywh {363 80 20 20}
}
}
}
}
Fl_Group tab_radiogram {
label RadioGram open
xywh {2 45 562 380} hide
} {
Fl_Input txt_rg_station {
label {*Originating station}
tooltip {Station call sign} xywh {146 51 80 24}
class Fl_Input2
}
Fl_Input txt_rg_place {
label Place
tooltip {Point of origin} xywh {273 51 283 24}
class Fl_Input2
}
Fl_Input txt_rg_nbr {
label {*Nbr}
tooltip {Message number at station of origin} xywh {5 97 80 24} align 5
class Fl_Input2
}
Fl_Choice sel_rg_prec {
label {*Prec} open
tooltip {Message Precedence} xywh {88 97 118 24} down_box BORDER_BOX align 5
} {}
Fl_Choice sel_rg_hx {
label HX_ open
tooltip {Handling instructions} xywh {209 97 60 24} down_box BORDER_BOX align 5
} {}
Fl_Input txt_rg_hx_n {
label {\#}
tooltip {Numeric for HXB/C/F} xywh {272 97 40 24} align 5
class Fl_Input2
}
Fl_Input txt_rg_d1 {
label {*Date filed}
tooltip {Date of origination} xywh {315 97 122 24} align 5
code0 {txt_rg_d1->format(4);}
class Fl_DateInput
}
Fl_Button btn_rgDate1 {
label {...}
callback {cb_rgSetDate1();}
tooltip {Set today} xywh {437 99 20 20}
}
Fl_Input txt_rg_t1 {
label {Time filed}
tooltip {Time of origination} xywh {459 97 80 24} align 5
class Fl_Input2
}
Fl_Button btn_rgTime1 {
label {...}
callback {cb_rgSetTime1();}
tooltip {Set time now} xywh {540 99 20 20}
}
Fl_Input txt_rg_to {
label {*Addressee}
tooltip Addressee xywh {5 139 275 60} type Multiline align 5
class Fl_Input2
}
Fl_Input txt_rg_rx {
label {Message was received at}
tooltip {Receipt information} xywh {281 139 275 60} type Multiline align 5
class Fl_Input2
}
Fl_Input txt_rg_phone {
label {Tele:}
tooltip {Addressee telephone number} xywh {90 202 190 24}
class Fl_Input2
}
Fl_Text_Editor txt_rg_msg {
label {Message:}
tooltip {Message contents - recommend limit to 25 words or less} xywh {5 243 550 100} box DOWN_BOX align 5 resizable
class FTextEdit
}
Fl_Group {} {open
xywh {7 346 270 76} box ENGRAVED_FRAME
} {
Fl_Input txt_rg_signed {
label {*Signed}
tooltip {Person requesting message} xywh {73 349 200 24}
class Fl_Input2
}
Fl_Input txt_rg_d2 {
label Date
tooltip {Date of preparation} xywh {20 391 122 24} align 5
code0 {txt_rg_d1->format(2);}
class Fl_DateInput
}
Fl_Button btn_rgDate2 {
label {...}
callback {cb_rgSetDate2();}
tooltip {Set today} xywh {142 393 20 20}
}
Fl_Input txt_rg_t2 {
label Time
tooltip {Time of preparation} xywh {164 391 80 24} align 5
class Fl_Input2
}
Fl_Button btn_rgTime2 {
label {...}
callback {cb_rgSetTime2();}
tooltip {Set time now} xywh {245 393 20 20}
}
}
Fl_Group {} {open
xywh {284 346 270 76} box ENGRAVED_FRAME
} {
Fl_Input txt_rg_d3 {
label Date
tooltip {Date message sent} xywh {296 391 122 24} align 5
code0 {txt_rg_d1->format(2);}
class Fl_DateInput
}
Fl_Button btn_rgDate3 {
label {...}
callback {cb_rgSetDate3();}
tooltip {Set today} xywh {418 393 20 20}
}
Fl_Input txt_rg_t3 {
label Time
tooltip {Time message sent} xywh {440 391 80 24} align 5
class Fl_Input2
}
Fl_Button btn_rgTime3 {
label {...}
callback {cb_rgSetTime3();}
tooltip {Set time now} xywh {521 393 20 20}
}
Fl_Input txt_rg_sent_to {
label {Sent to}
tooltip {Message sent to (call sign)} xywh {348 349 200 24}
class Fl_Input2
}
}
Fl_Button btn_rg_check {
label Check
callback {cb_rg_check();}
tooltip {Compute check count} xywh {435 216 52 24}
}
Fl_Output txt_rg_check {
tooltip {check count} xywh {494 215 60 25}
}
Fl_Button btn_arl {
label {ARL MSG}
callback {cb_arl();}
tooltip {ARL message selector} xywh {355 216 75 24}
}
}
}
}
}
Function {optionsdialog()} {open
} {
Fl_Window {} {
label {Command Line Options} open
xywh {490 707 411 263} type Double hide
} {
Fl_Browser brwsOptions {
xywh {3 31 405 202}
}
Fl_Return_Button btnCloseOptions {
label OK
callback {closeoptions();}
xywh {329 239 72 20}
}
Fl_Box {} {
label {usage: flics -<option> [filename]}
xywh {4 7 401 21} box FLAT_BOX color 54 align 20
}
}
}
Function {arl_dialog()} {open
} {
Fl_Window {} {
label {ARL Message Selector} open
xywh {489 572 521 261} type Double hide resizable
} {
Fl_Browser select_arl {
label {ARL \#}
callback {arl_nbr = o->value()- 1;
arl_text->clear();
arl_text->addstr(arl_list[arl_nbr].text);
txt_arl_fill1->value("");
txt_arl_fill1->deactivate();
txt_arl_fill2->value("");
txt_arl_fill2->deactivate();
txt_arl_fill3->value("");
txt_arl_fill3->deactivate();
txt_arl_fill4->value("");
txt_arl_fill4->deactivate();
if (arl_list[arl_nbr].nfills > 0) txt_arl_fill1->activate();
if (arl_list[arl_nbr].nfills > 1) txt_arl_fill2->activate();
if (arl_list[arl_nbr].nfills > 2) txt_arl_fill3->activate();
if (arl_list[arl_nbr].nfills > 3) txt_arl_fill4->activate();}
xywh {6 21 161 107} type Hold align 1
}
Fl_Input txt_arl_fill1 {
label {fill 1:}
xywh {48 131 465 22}
}
Fl_Input txt_arl_fill2 {
label {fill 2:}
xywh {48 155 465 22}
}
Fl_Input txt_arl_fill3 {
label {fill 3:}
xywh {48 179 465 22}
}
Fl_Input txt_arl_fill4 {
label {fill 4:}
xywh {48 204 465 22}
}
Fl_Button btn_arl_cancel {
label Cancel
callback {cb_arl_cancel();}
xywh {362 232 70 20}
}
Fl_Button btn_arl_add {
label Add
callback {cb_arl_add();}
xywh {440 232 70 20}
}
Fl_Text_Editor arl_text {
label {Message:}
tooltip {Message contents - recommend limit to 25 words or less} xywh {169 21 345 107} box DOWN_BOX color 54 align 5 resizable
class FTextEdit
}
}
}
Function {config_dialog()} {open
} {
Fl_Window {} {
label {flmsg configure} open
xywh {478 561 233 248} type Double hide
} {
Fl_Check_Button btn_compress {
label {Use compression}
callback {progStatus.compression = o->value();}
tooltip {Compress wrap files} xywh {42 10 70 15} down_box DOWN_BOX
code0 {o->value(progStatus.compression);}
}
Fl_Check_Button btn_UTC {
label {use UTC}
callback {progStatus.UTC = o->value();}
tooltip {UTC / local time} xywh {44 41 70 15} down_box DOWN_BOX
code0 {o->value(progStatus.UTC);}
}
Fl_Group {} {
label {Date format} open
xywh {46 67 133 115} box ENGRAVED_FRAME align 21
} {
Fl_Round_Button btn_dtformat0 {
label {YYYY-DD-MM}
callback {if (o->value()) progStatus.dtformat = 0;}
xywh {58 100 70 15} down_box ROUND_DOWN_BOX
code0 {if (progStatus.dtformat == 0) o->value(1); else o->value(0);}
}
Fl_Round_Button btn_dtformat1 {
label {MM/DD/YY}
callback {if (o->value()) progStatus.dtformat = 1;}
xywh {58 125 70 15} down_box ROUND_DOWN_BOX
code0 {if (progStatus.dtformat == 1) o->value(1); else o->value(0);}
}
Fl_Round_Button btn_dtformat2 {
label {DD/MM/YY}
callback {if (o->value()) progStatus.dtformat = 2;}
xywh {58 151 70 15} down_box ROUND_DOWN_BOX
code0 {if (progStatus.dtformat == 2) o->value(1); else o->value(0);}
}
}
Fl_Spinner cnt_wpl {
label {words per line}
callback {progStatus.wpl = (int)o->value();}
tooltip {Radiogram message contents auto format} xywh {47 188 40 25} align 8 minimum 4 maximum 10 value 5
code0 {o->value(progStatus.wpl);}
}
Fl_Button btn_close_config {
label close
callback {cb_close_config();}
xywh {146 216 73 25}
}
}
}

6
src/flmsgres.rc Normal file
View file

@ -0,0 +1,6 @@
#include <windows.h> // include for version info constants
#include "flmsgrc.h"
IDI_ICON ICON DISCARDABLE "flmsg.ico"

View file

@ -21,7 +21,7 @@
// ----------------------------------------------------------------------------
#include <config.h>
#include "flics_config.h"
#include "flmsg_config.h"
#include "icons.h"
#include "util.h"

View file

@ -20,13 +20,13 @@
#include <FL/Fl_File_Icon.H>
#include "config.h"
#include "flics_config.h"
#include "flmsg_config.h"
#include "ics213_template.h"
#include "templates.h"
#include "debug.h"
#include "util.h"
#include "gettext.h"
#include "ics213_dialog.h"
#include "flmsg_dialog.h"
#include "flinput2.h"
#include "date.h"
#include "calendar.h"
@ -34,9 +34,10 @@
#include "fileselect.h"
#include "wrap.h"
#include "status.h"
#include "parse_xml.h"
#ifdef WIN32
# include "flicsrc.h"
# include "flmsgrc.h"
# include "compat.h"
# define dirent fl_dirent_no_thanks
#endif
@ -53,36 +54,7 @@
using namespace std;
void checkdirectories(void);
int parse_args(int argc, char **argv, int& idx);
void showoptions();
Fl_Double_Window *mainwindow = 0;
Fl_Double_Window *optionswindow = 0;
string title;
string FlicsHomeDir;
// flarq, fldigi, flics, flwrap share a common NBEMS directory
string NBEMS_dir;
string ARQ_dir;
string ARQ_files_dir;
string ARQ_recv_dir;
string ARQ_send;
string WRAP_dir;
string WRAP_recv_dir;
string WRAP_send_dir;
string WRAP_auto_dir;
string ICS_dir;
string ICS_msg_dir;
string ICS_tmp_dir;
string baseFileName = "";
string defFileName = "";
string defTemplateName = "";
string defRTFname = "";
bool usingTemplate = false;
// ICS213 fields
const char * _to = "<to:";
const char * _fm = "<fm:";
@ -123,58 +95,6 @@ FIELD fields[] = {
int numfields = sizeof(fields) / sizeof(FIELD);
void removespaces(string &fname)
{
size_t n = fname.length();
char szfname[n + 1];
char *p;
memset(szfname, 0, n + 1);
strcpy(szfname, fname.c_str());
p = (char *)fl_filename_name(szfname);
while (*p) {
if (*p == ' ') *p = '_';
p++;
}
fname = szfname;
}
char *szTime()
{
static char szDt[80];
time_t tmptr;
tm sTime;
time (&tmptr);
if (progStatus.UTC) {
gmtime_r (&tmptr, &sTime);
strftime(szDt, 79, "%H:%M UTC", &sTime);
} else {
localtime_r(&tmptr, &sTime);
strftime(szDt, 79, "%H:%M", &sTime);
}
return szDt;
}
char *szDate()
{
static char szDt[80];
time_t tmptr;
tm sTime;
time (&tmptr);
if (progStatus.UTC) {
gmtime_r (&tmptr, &sTime);
} else {
localtime_r(&tmptr, &sTime);
}
switch (progStatus.dtformat) {
case 1: strftime(szDt, 79, "%m/%d/%y", &sTime); break;
case 2: strftime(szDt, 79, "%d/%m/%y", &sTime); break;
case 0:
default:
strftime(szDt, 79, "%Y-%m-%d", &sTime);
}
return szDt;
}
void cb_SetDate1()
{
txt_D1->value(szDate());
@ -221,7 +141,7 @@ void update_fields()
}
}
void clear_form()
void clear_ics_form()
{
clear_fields();
txt_To->value("");
@ -247,9 +167,10 @@ void make_buffer()
char sznum[80];
update_fields();
buffer.clear();
buffer.append("<flics>");
buffer.append("<flmsg>");
buffer.append(PACKAGE_VERSION);
buffer += '\n';
buffer.append("<ics213>\n");
for (int i = 0; i < numfields; i++) {
snprintf(sznum, sizeof(sznum), "%0d", (int)strlen(fields[i].f_data.c_str()));
buffer.append(fields[i].f_type);
@ -298,17 +219,16 @@ void read_buffer(string data)
}
}
void cb_new()
void cb_ics_new()
{
clear_form();
clear_ics_form();
defFileName = ICS_msg_dir;
defFileName.append("new"DATAFILE_EXT);
show_filename(defFileName);
}
void cb_import()
void cb_ics_import()
{
extern void qform_import(string);
string deffilename = ICS_dir;
deffilename.append("DEFAULT.XML");
const char *p = FSEL::select(
@ -316,14 +236,13 @@ extern void qform_import(string);
"Qforms xml\t*.{xml,XML}",
deffilename.c_str());
if (p){
clear_form();
qform_import(p);
clear_ics_form();
qform_ics_import(p);
}
}
void cb_export()
void cb_ics_export()
{
extern void qform_export(string);
string deffilename = ICS_dir;
deffilename.append(baseFileName);
deffilename.append(".XML");
@ -335,11 +254,11 @@ extern void qform_export(string);
const char *pext = fl_filename_ext(p);
deffilename = p;
if (strlen(pext) == 0) deffilename.append(".XML");
qform_export(deffilename);
qform_ics_export(deffilename);
}
}
void cb_wrap_import()
void cb_ics_wrap_import()
{
string wrapfilename = WRAP_recv_dir;
string inpbuffer;
@ -350,16 +269,20 @@ void cb_wrap_import()
"Wrap file\t*.{wrap,WRAP}",
wrapfilename.c_str());
if (p){
clear_form();
clear_ics_form();
isok = import_wrapfile(p, wrapfilename, inpbuffer);
read_buffer(inpbuffer);
defFileName = ICS_msg_dir;
defFileName.append(wrapfilename);
show_filename(defFileName);
if (inpbuffer.find("<flics") != string::npos ||
inpbuffer.find("<flmsg") != string::npos) {
defFileName = ICS_msg_dir;
defFileName.append(wrapfilename);
show_filename(defFileName);
} else
fl_alert2(_("Not an flmsg data file"));
}
}
void cb_wrap_export()
void cb_ics_wrap_export()
{
string wrapfilename = WRAP_send_dir;
wrapfilename.append(baseFileName);
@ -376,7 +299,7 @@ void cb_wrap_export()
}
}
void cb_wrap_autosend()
void cb_ics_wrap_autosend()
{
string wrapfilename = WRAP_auto_dir;
wrapfilename.append("wrap_auto_file");
@ -384,7 +307,7 @@ void cb_wrap_autosend()
export_wrapfile(baseFileName, wrapfilename, buffer, false);
}
void cb_load_template()
void cb_ics_load_template()
{
string deffilename = defTemplateName;
const char *p = FSEL::select(
@ -392,7 +315,7 @@ void cb_load_template()
"Template file\t*.f2t",
deffilename.c_str());
if (p) {
clear_form();
clear_ics_form();
read_ics(p);
defTemplateName = p;
show_filename(defTemplateName);
@ -400,7 +323,7 @@ void cb_load_template()
}
}
void cb_save_template()
void cb_ics_save_template()
{
if (!usingTemplate) {
cb_save_as_template();
@ -415,7 +338,7 @@ void cb_save_template()
write_ics(p);
}
void cb_save_as_template()
void cb_ics_save_as_template()
{
string deffilename = defTemplateName;
const char *p = FSEL::saveas(
@ -426,7 +349,7 @@ void cb_save_as_template()
const char *pext = fl_filename_ext(p);
defTemplateName = p;
if (strlen(pext) == 0) defTemplateName.append(".f2t");
removespaces(defTemplateName);
remove_spaces_from_filename(defTemplateName);
write_ics(defTemplateName);
show_filename(defTemplateName);
usingTemplate = true;
@ -447,6 +370,12 @@ void read_ics(string s)
// determine its size for buffer creation
fseek (icsfile, 0, SEEK_END);
filesize = ftell (icsfile);
// test file integrity
if (filesize == 0) {
fl_alert2(_("Empty file"));
return;
}
buff = new char[filesize + 1];
// read the entire file into the buffer
fseek (icsfile, 0, SEEK_SET);
@ -454,28 +383,23 @@ void read_ics(string s)
fclose (icsfile);
buffend = buff + filesize;
// test file integrity
if (filesize == 0) {
fl_alert2(_("Empty file"));
return;
}
if (strstr(buff, "<flmsg") == buff ||
strstr(buff, "<flics") == buff)
read_buffer(buff);
else
fl_alert2(_("Not an flmsg data file"));
if (strstr(buff, "<flics") != buff) {
fl_alert2(_("Not an flics data file"));
return;
}
read_buffer(buff);
delete [] buff;
}
void cb_open()
void cb_ics_open()
{
const char *p = FSEL::select(_("Open data file"), "F2S\t*"DATAFILE_EXT,
defFileName.c_str());
if (!p) return;
if (strlen(p) == 0) return;
clear_form();
clear_ics_form();
read_ics(p);
usingTemplate = false;
defFileName = p;
@ -484,18 +408,14 @@ void cb_open()
void write_ics(string s)
{
//#ifdef __WIN32__
// FILE *icsfile = fopen(s.c_str(), "wb");
//#else
FILE *icsfile = fopen(s.c_str(), "w");
//#endif
if (!icsfile) return;
make_buffer();
fwrite(buffer.c_str(), buffer.length(), 1, icsfile);
fclose(icsfile);
}
void cb_save_as()
void cb_ics_save_as()
{
const char *p;
string newfilename;
@ -504,7 +424,7 @@ void cb_save_as()
newfilename.append(fl_filename_name ( defTemplateName.c_str() ));
size_t ext = newfilename.find(".f2t");
if (ext != string::npos) newfilename.erase(ext, 4);
newfilename.append(".f2s");
newfilename.append(DATAFILE_EXT);
} else newfilename = defFileName;
p = FSEL::saveas(_("Save data file"), "F2S\t*"DATAFILE_EXT,
@ -514,16 +434,16 @@ void cb_save_as()
const char *pext = fl_filename_ext(p);
defFileName = p;
if (strlen(pext) == 0) defFileName.append(".f2s");
removespaces(defFileName);
if (strlen(pext) == 0) defFileName.append(DATAFILE_EXT);
remove_spaces_from_filename(defFileName);
write_ics(defFileName);
show_filename(defFileName);
usingTemplate = false;
}
void cb_save()
void cb_ics_save()
{
if (baseFileName == "new.f2s" || baseFileName == "default.f2s") {
if (baseFileName == "new"DATAFILE_EXT || baseFileName == "default"DATAFILE_EXT) {
cb_save_as();
return;
}
@ -534,36 +454,14 @@ void cb_save()
write_ics(defFileName);
}
void cb_write()
void cb_ics_write()
{
const char *p;
string rtfname;
rtfname = ICS_dir;
if (usingTemplate) {
rtfname.append(fl_filename_name ( defTemplateName.c_str() ));
size_t ext = rtfname.find(".f2t");
if (ext != string::npos) rtfname.erase(ext, 4);
} else {
rtfname.append(fl_filename_name ( defFileName.c_str() ));
size_t ext = rtfname.find(".f2s");
if (ext != string::npos) rtfname.erase(ext, 4);
}
rtfname.append(".rtf");
p = FSEL::saveas(_("Write Rich Text Format file"), "RTF\t*.rtf",
rtfname.c_str());
if (!p) return;
if (strlen(p) == 0) return;
const char *pext = fl_filename_ext(p);
rtfname = p;
if (strlen(pext) == 0)
rtfname.append(".rtf");
removespaces(rtfname);
string rtfname = ICS_dir;
rtfname.append("ics213_doc.rtf");
update_fields();
string form = rtf_template;
string form = ics_rtf_template;
FILE *rtf_file = fopen(rtfname.c_str(), "w");
ICS_msg = fields[numfields-2].f_data;
@ -591,197 +489,71 @@ void cb_write()
ICS_reply);
fprintf(rtf_file,"%s", form.c_str());
fclose(rtf_file);
open_url(rtfname.c_str());
}
void cb_exit()
void cb_ics_html()
{
progStatus.saveLastState();
FSEL::destroy();
exit(0);
}
string icsname = ICS_dir;
icsname.append("ics213_doc.html");
void exit_main(Fl_Widget *w)
{
if (Fl::event_key() == FL_Escape)
return;
cb_exit();
}
update_fields();
string form = ics_html_template;
void cb_About()
{
fl_alert2(_("Version "PACKAGE_VERSION));
}
ICS_msg = fields[numfields-2].f_data;
ICS_reply = fields[numfields-1].f_data;
void show_filename(string p)
{
baseFileName = fl_filename_name(p.c_str());
txt_filename->value(baseFileName.c_str());
txt_filename->redraw();
}
void set_main_label()
{
string main_label = PACKAGE_NAME;
main_label.append(": ").append(PACKAGE_VERSION);
mainwindow->label(main_label.c_str());
}
int main(int argc, char *argv[])
{
if (argc > 1) {
if (strcasecmp("--help", argv[1]) == 0) {
printf("\
--help this help text\n\
--version\n\
\n\
Usage: flics\n");
return 0;
}
if (strcasecmp("--version", argv[1]) == 0) {
printf("Version: "VERSION"\n");
return 0;
}
int nlines = 0;
size_t pos = ICS_msg.find('\n');
while (pos != string::npos) {
ICS_msg.replace(pos, 1, "<br>");
nlines++;
pos = ICS_msg.find( '\n', pos );
}
for (int i = nlines; i < 20; i++) ICS_msg.append("<br>");
to_html(ICS_msg);
mainwindow = ics_dialog();
char dirbuf[FL_PATH_MAX + 1];
#ifdef __WIN32__
fl_filename_expand(dirbuf, sizeof(dirbuf) - 1, "$USERPROFILE/NBEMS.files/");
#else
fl_filename_expand(dirbuf, sizeof(dirbuf) - 1, "$HOME/.nbems/");
#endif
NBEMS_dir = dirbuf;
checkdirectories();
defFileName = ICS_msg_dir;
defFileName.append("default"DATAFILE_EXT);
defRTFname = ICS_dir;
defRTFname.append("default.rtf");
defTemplateName = ICS_tmp_dir;
defTemplateName.append("default.f2t");
Fl_File_Icon::load_system_icons();
FSEL::create();
int arg_idx;
if (Fl::args(argc, argv, arg_idx, parse_args) != argc)
showoptions();
progStatus.loadLastState();
progStatus.compression ? mnuCompress->set() : mnuCompress->clear();
progStatus.UTC ? mnuUTC->set(): mnuUTC->clear();
mainwindow->resize( progStatus.mainX, progStatus.mainY, mainwindow->w(), mainwindow->h());
#ifdef WIN32
mainwindow->icon((char*)LoadIcon(fl_display, MAKEINTRESOURCE(IDI_ICON)));
mainwindow->show(1, argv);
#else
mainwindow->show(argc, argv);
#endif
set_main_label();
show_filename(defFileName);
return Fl::run();
}
void checkdirectories(void)
{
struct DIRS {
string& dir;
const char* suffix;
void (*new_dir_func)(void);
};
DIRS NBEMS_dirs[] = {
{ NBEMS_dir, 0, 0 },
{ ARQ_dir, "ARQ", 0 },
{ ARQ_files_dir, "ARQ/files", 0 },
{ ARQ_recv_dir, "ARQ/recv", 0 },
{ ARQ_send, "ARQ/send", 0 },
{ WRAP_dir, "WRAP", 0 },
{ WRAP_recv_dir, "WRAP/recv", 0 },
{ WRAP_send_dir, "WRAP/send", 0 },
{ WRAP_auto_dir, "WRAP/auto", 0 },
{ ICS_dir, "ICS", 0 },
{ ICS_msg_dir, "ICS/messages", 0 },
{ ICS_tmp_dir, "ICS/templates", 0 },
};
int r;
for (size_t i = 0; i < sizeof(NBEMS_dirs)/sizeof(*NBEMS_dirs); i++) {
if (NBEMS_dirs[i].suffix)
NBEMS_dirs[i].dir.assign(NBEMS_dir).append(NBEMS_dirs[i].suffix).append(PATH_SEP);
if ((r = mkdir(NBEMS_dirs[i].dir.c_str(), 0777)) == -1 && errno != EEXIST) {
cerr << _("Could not make directory") << ' ' << NBEMS_dirs[i].dir
<< ": " << strerror(errno) << '\n';
exit(EXIT_FAILURE);
}
else if (r == 0 && NBEMS_dirs[i].new_dir_func)
NBEMS_dirs[i].new_dir_func();
nlines = 0;
pos = ICS_reply.find('\n');
while (pos != string::npos) {
ICS_reply.replace(pos, 1, "<br>");
nlines++;
pos = ICS_reply.find( '\n', pos );
}
}
for (int i = nlines; i < 20; i++) ICS_reply.append("<br>");
to_html(ICS_reply);
const char *options[] = {\
"-bg\t-background [COLOR]",
"-bg2\t-background2 [COLOR]",
"-di\t-display [host:n.n]",
"-dn\t-dnd : enable drag and drop",
"-nodn\t-nodnd : disable drag and drop",
"-fg\t-foreground [COLOR]",
"-g\t-geometry [WxH+X+Y]",
"-i\t-iconic",
"-k\t-kbd : enable keyboard focus:",
"-nok\t-nokbd : en/disable keyboard focus",
"-na\t-name [CLASSNAME]",
"-s\t-scheme [plastic | gtk+]",
"-ti\t-title [WINDOWTITLE]",
"-to\t-tooltips : enable tooltips",
"-not\t-notooltips : disable tooltips\n",
0
};
const int widths[] = {60, 0};
void showoptions()
{
if (!optionswindow) {
optionswindow = optionsdialog();
brwsOptions->column_widths(widths);
for (int i = 0; options[i] != 0; i++)
brwsOptions->add(options[i]);
for (int i = 0; i < numfields - 2; i++) {
pos = form.find(fields[i].f_type);
if (pos != string::npos)
form.replace( pos,
strlen(fields[i].f_type),
fields[i].f_data );
}
optionswindow->show();
pos = form.find(fields[numfields-2].f_type);
if (pos)
form.replace( pos,
strlen(fields[numfields-2].f_type),
ICS_msg);
pos = form.find(fields[numfields-1].f_type);
if (pos)
form.replace( pos,
strlen(fields[numfields-1].f_type),
ICS_reply);
FILE *icsfile = fopen(icsname.c_str(), "w");
fprintf(icsfile,"%s", form.c_str());
fclose(icsfile);
open_url(icsname.c_str());
}
void closeoptions()
void cb_msg_type()
{
optionswindow->hide();
}
int parse_args(int argc, char **argv, int& idx)
{
// Only handle a filename option
if ( argv[idx][0] == '-' )
return 0;
string fname = argv[idx];
if (fname.find(".f2s")) {
clear_form();
defFileName = fname;
read_ics(defFileName);
usingTemplate = false;
if (tabs_msg_type->value() == tab_ics213 ) {
show_filename(defFileName);
} else {
show_filename(def_rgFileName);
}
else if (fname.find(".f2t")) {
clear_form();
defFileName = fname;
read_ics(defFileName);
usingTemplate = true;
show_filename(defFileName);
}
idx++;
return 1;
}

View file

@ -1,450 +0,0 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0110
#include "gettext.h"
#include "ics213_dialog.h"
#include "status.h"
static void cb_mnuNew(Fl_Menu_*, void*) {
cb_new();
}
static void cb_mnuOpen(Fl_Menu_*, void*) {
cb_open();
}
static void cb_mnuSave(Fl_Menu_*, void*) {
cb_save();
}
static void cb_mnuSaveAs(Fl_Menu_*, void*) {
cb_save_as();
}
static void cb_mnuWrite(Fl_Menu_*, void*) {
cb_write();
}
static void cb_mnu_qimport(Fl_Menu_*, void*) {
cb_import();
}
static void cb_mnu_qexport(Fl_Menu_*, void*) {
cb_export();
}
static void cb_mnuWrapImport(Fl_Menu_*, void*) {
cb_wrap_import();
}
static void cb_mnuWrapExport(Fl_Menu_*, void*) {
cb_wrap_export();
}
static void cb_mnuAutoSend(Fl_Menu_*, void*) {
cb_wrap_autosend();
}
static void cb_mnuExit(Fl_Menu_*, void*) {
cb_exit();
}
static void cb_mnu_load_template(Fl_Menu_*, void*) {
cb_load_template();
}
static void cb_mnu_save_template(Fl_Menu_*, void*) {
cb_save_template();
}
static void cb_mnu_save_as_template(Fl_Menu_*, void*) {
cb_save_as_template();
}
static void cb_mnuCompress(Fl_Menu_*, void*) {
progStatus.compression = mnuCompress->value();
}
static void cb_mnuUTC(Fl_Menu_*, void*) {
progStatus.UTC = mnuUTC->value();
}
static void cb_mnu_dtformat0(Fl_Menu_* o, void*) {
if (o->value()) progStatus.dtformat = 0;
}
static void cb_mnu_dtformat1(Fl_Menu_* o, void*) {
if (o->value()) progStatus.dtformat = 1;
}
static void cb_mnu_dtformat2(Fl_Menu_* o, void*) {
if (o->value()) progStatus.dtformat = 2;
}
static void cb_mnuOptions(Fl_Menu_*, void*) {
showoptions();
}
static void cb_mnuAbout(Fl_Menu_*, void*) {
cb_About();
}
Fl_Menu_Item menu_[] = {
{_("&File"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("&New"), 0x4006e, (Fl_Callback*)cb_mnuNew, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("&Open"), 0x4006f, (Fl_Callback*)cb_mnuOpen, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("&Save"), 0x40073, (Fl_Callback*)cb_mnuSave, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Save &As"), 0x40061, (Fl_Callback*)cb_mnuSaveAs, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("&Write"), 0x40077, (Fl_Callback*)cb_mnuWrite, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("Q-forms"), 0, 0, 0, 192, FL_NORMAL_LABEL, 0, 14, 0},
{_("Import"), 0, (Fl_Callback*)cb_mnu_qimport, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Export"), 0, (Fl_Callback*)cb_mnu_qexport, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("Wrap"), 0, 0, 0, 192, FL_NORMAL_LABEL, 0, 14, 0},
{_("Import"), 0, (Fl_Callback*)cb_mnuWrapImport, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Export"), 0, (Fl_Callback*)cb_mnuWrapExport, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("AutoSend"), 0, (Fl_Callback*)cb_mnuAutoSend, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("E&xit"), 0x40078, (Fl_Callback*)cb_mnuExit, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("&Template"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("Load"), 0, (Fl_Callback*)cb_mnu_load_template, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
{_("Save"), 0, (Fl_Callback*)cb_mnu_save_template, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("Save As"), 0, (Fl_Callback*)cb_mnu_save_as_template, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{_("Config"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("Use compression"), 0, (Fl_Callback*)cb_mnuCompress, 0, 2, FL_NORMAL_LABEL, 0, 14, 0},
{_("Date"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("use UTC"), 0, (Fl_Callback*)cb_mnuUTC, 0, 2, FL_NORMAL_LABEL, 0, 14, 0},
{_("YYYY-DD-MM"), 0, (Fl_Callback*)cb_mnu_dtformat0, 0, 8, FL_NORMAL_LABEL, 0, 14, 0},
{_("MM/DD/YY"), 0, (Fl_Callback*)cb_mnu_dtformat1, 0, 8, FL_NORMAL_LABEL, 0, 14, 0},
{_("DD/MM/YY"), 0, (Fl_Callback*)cb_mnu_dtformat2, 0, 8, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{_(" "), 0, 0, 0, 129, FL_NORMAL_LABEL, 0, 14, 0},
{_("Help"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{_("Options"), 0, (Fl_Callback*)cb_mnuOptions, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{_("About"), 0, (Fl_Callback*)cb_mnuAbout, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}
};
Fl_Input2 *txt_To=(Fl_Input2 *)0;
Fl_Input2 *txt_P1=(Fl_Input2 *)0;
Fl_Input2 *txt_Fm=(Fl_Input2 *)0;
Fl_Input2 *txt_P2=(Fl_Input2 *)0;
Fl_Input2 *txt_Subj=(Fl_Input2 *)0;
Fl_DateInput *txt_D1=(Fl_DateInput *)0;
Fl_Button *btnDate1=(Fl_Button *)0;
static void cb_btnDate1(Fl_Button*, void*) {
cb_SetDate1();
}
Fl_Input2 *txt_T1=(Fl_Input2 *)0;
Fl_Button *btnTime1=(Fl_Button *)0;
static void cb_btnTime1(Fl_Button*, void*) {
cb_SetTime1();
}
FTextEdit *txt_Msg=(FTextEdit *)0;
Fl_Input2 *txt_S1=(Fl_Input2 *)0;
Fl_Input2 *txt_P3=(Fl_Input2 *)0;
Fl_Input2 *txt_S2=(Fl_Input2 *)0;
Fl_DateInput *txt_D2=(Fl_DateInput *)0;
Fl_Input2 *txt_T2=(Fl_Input2 *)0;
Fl_Button *btnTime2=(Fl_Button *)0;
static void cb_btnTime2(Fl_Button*, void*) {
cb_SetTime2();
}
FTextEdit *txt_Reply=(FTextEdit *)0;
Fl_Input2 *txt_P4=(Fl_Input2 *)0;
Fl_Button *btnDate2=(Fl_Button *)0;
static void cb_btnDate2(Fl_Button*, void*) {
cb_SetDate2();
}
Fl_Output *txt_filename=(Fl_Output *)0;
Fl_Double_Window* ics_dialog() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(558, 395, _("ICS213 Message Generator"));
w = o;
o->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
{ Fl_Menu_Bar* o = new Fl_Menu_Bar(1, 0, 555, 20);
{ Fl_Menu_Item* o = &menu_[23];
progStatus.compression ? o->set() :o->clear();
}
{ Fl_Menu_Item* o = &menu_[25];
progStatus.UTC ? o->set() :o->clear();
}
{ Fl_Menu_Item* o = &menu_[26];
progStatus.dtformat==0 ? o->set() :o->clear();
}
{ Fl_Menu_Item* o = &menu_[27];
progStatus.dtformat==1 ? o->set() :o->clear();
}
{ Fl_Menu_Item* o = &menu_[28];
progStatus.dtformat==2 ? o->set() :o->clear();
}
o->menu(menu_);
} // Fl_Menu_Bar* o
{ Fl_Tabs* o = new Fl_Tabs(1, 22, 555, 370);
{ Fl_Group* o = new Fl_Group(2, 45, 551, 346, _("Originator"));
{ txt_To = new Fl_Input2(41, 50, 235, 24, _("To"));
txt_To->tooltip(_("Addressee"));
txt_To->box(FL_DOWN_BOX);
txt_To->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_To->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_To->labeltype(FL_NORMAL_LABEL);
txt_To->labelfont(0);
txt_To->labelsize(14);
txt_To->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_To->align(FL_ALIGN_LEFT);
txt_To->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_To
{ txt_P1 = new Fl_Input2(313, 50, 235, 24, _("Pos."));
txt_P1->tooltip(_("Position of addressee"));
txt_P1->box(FL_DOWN_BOX);
txt_P1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P1->labeltype(FL_NORMAL_LABEL);
txt_P1->labelfont(0);
txt_P1->labelsize(14);
txt_P1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P1->align(FL_ALIGN_LEFT);
txt_P1->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P1
{ txt_Fm = new Fl_Input2(41, 75, 235, 24, _("Fm"));
txt_Fm->tooltip(_("Originator"));
txt_Fm->box(FL_DOWN_BOX);
txt_Fm->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Fm->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Fm->labeltype(FL_NORMAL_LABEL);
txt_Fm->labelfont(0);
txt_Fm->labelsize(14);
txt_Fm->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Fm->align(FL_ALIGN_LEFT);
txt_Fm->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_Fm
{ txt_P2 = new Fl_Input2(313, 75, 235, 24, _("Pos."));
txt_P2->tooltip(_("Position of originator"));
txt_P2->box(FL_DOWN_BOX);
txt_P2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P2->labeltype(FL_NORMAL_LABEL);
txt_P2->labelfont(0);
txt_P2->labelsize(14);
txt_P2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P2->align(FL_ALIGN_LEFT);
txt_P2->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P2
{ txt_Subj = new Fl_Input2(41, 100, 235, 24, _("Sub."));
txt_Subj->tooltip(_("Subject"));
txt_Subj->box(FL_DOWN_BOX);
txt_Subj->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Subj->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Subj->labeltype(FL_NORMAL_LABEL);
txt_Subj->labelfont(0);
txt_Subj->labelsize(14);
txt_Subj->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Subj->align(FL_ALIGN_LEFT);
txt_Subj->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_Subj
{ txt_D1 = new Fl_DateInput(314, 101, 122, 24, _("Date"));
txt_D1->tooltip(_("Date of origination"));
txt_D1->box(FL_DOWN_BOX);
txt_D1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_D1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_D1->labeltype(FL_NORMAL_LABEL);
txt_D1->labelfont(0);
txt_D1->labelsize(14);
txt_D1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_D1->align(FL_ALIGN_LEFT);
txt_D1->when(FL_WHEN_RELEASE);
txt_D1->format(2);
} // Fl_DateInput* txt_D1
{ btnDate1 = new Fl_Button(438, 103, 20, 20, _("..."));
btnDate1->tooltip(_("Set today"));
btnDate1->callback((Fl_Callback*)cb_btnDate1);
} // Fl_Button* btnDate1
{ txt_T1 = new Fl_Input2(315, 126, 100, 24, _("Time"));
txt_T1->tooltip(_("Time of origination"));
txt_T1->box(FL_DOWN_BOX);
txt_T1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_T1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_T1->labeltype(FL_NORMAL_LABEL);
txt_T1->labelfont(0);
txt_T1->labelsize(14);
txt_T1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_T1->align(FL_ALIGN_LEFT);
txt_T1->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_T1
{ btnTime1 = new Fl_Button(417, 128, 20, 20, _("..."));
btnTime1->tooltip(_("Set time now"));
btnTime1->callback((Fl_Callback*)cb_btnTime1);
} // Fl_Button* btnTime1
{ txt_Msg = new FTextEdit(6, 153, 544, 206, _("Message:"));
txt_Msg->box(FL_DOWN_FRAME);
txt_Msg->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Msg->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Msg->labeltype(FL_NORMAL_LABEL);
txt_Msg->labelfont(0);
txt_Msg->labelsize(14);
txt_Msg->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Msg->align(FL_ALIGN_TOP_LEFT);
txt_Msg->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(txt_Msg);
} // FTextEdit* txt_Msg
{ txt_S1 = new Fl_Input2(36, 362, 240, 24, _("Sig."));
txt_S1->tooltip(_("Signature of preparer"));
txt_S1->box(FL_DOWN_BOX);
txt_S1->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_S1->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_S1->labeltype(FL_NORMAL_LABEL);
txt_S1->labelfont(0);
txt_S1->labelsize(14);
txt_S1->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_S1->align(FL_ALIGN_LEFT);
txt_S1->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_S1
{ txt_P3 = new Fl_Input2(310, 362, 240, 24, _("Pos."));
txt_P3->tooltip(_("Position of preparer"));
txt_P3->box(FL_DOWN_BOX);
txt_P3->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P3->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P3->labeltype(FL_NORMAL_LABEL);
txt_P3->labelfont(0);
txt_P3->labelsize(14);
txt_P3->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P3->align(FL_ALIGN_LEFT);
txt_P3->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P3
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(2, 45, 551, 346, _("Responder"));
o->hide();
{ txt_S2 = new Fl_Input2(36, 360, 240, 24, _("Sig."));
txt_S2->tooltip(_("Signature of responder"));
txt_S2->box(FL_DOWN_BOX);
txt_S2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_S2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_S2->labeltype(FL_NORMAL_LABEL);
txt_S2->labelfont(0);
txt_S2->labelsize(14);
txt_S2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_S2->align(FL_ALIGN_LEFT);
txt_S2->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_S2
{ txt_D2 = new Fl_DateInput(238, 51, 122, 24, _("Date"));
txt_D2->tooltip(_("Reply Date"));
txt_D2->box(FL_DOWN_BOX);
txt_D2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_D2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_D2->labeltype(FL_NORMAL_LABEL);
txt_D2->labelfont(0);
txt_D2->labelsize(14);
txt_D2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_D2->align(FL_ALIGN_LEFT);
txt_D2->when(FL_WHEN_RELEASE);
} // Fl_DateInput* txt_D2
{ txt_T2 = new Fl_Input2(423, 51, 100, 24, _("Time"));
txt_T2->tooltip(_("Reply Time"));
txt_T2->box(FL_DOWN_BOX);
txt_T2->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_T2->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_T2->labeltype(FL_NORMAL_LABEL);
txt_T2->labelfont(0);
txt_T2->labelsize(14);
txt_T2->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_T2->align(FL_ALIGN_LEFT);
txt_T2->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_T2
{ btnTime2 = new Fl_Button(526, 53, 20, 20, _("..."));
btnTime2->callback((Fl_Callback*)cb_btnTime2);
} // Fl_Button* btnTime2
{ txt_Reply = new FTextEdit(6, 81, 545, 275, _("Reply"));
txt_Reply->box(FL_DOWN_FRAME);
txt_Reply->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_Reply->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_Reply->labeltype(FL_NORMAL_LABEL);
txt_Reply->labelfont(0);
txt_Reply->labelsize(14);
txt_Reply->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_Reply->align(FL_ALIGN_TOP_LEFT);
txt_Reply->when(FL_WHEN_RELEASE);
} // FTextEdit* txt_Reply
{ txt_P4 = new Fl_Input2(313, 360, 235, 24, _("Pos."));
txt_P4->tooltip(_("Position of responder"));
txt_P4->box(FL_DOWN_BOX);
txt_P4->color((Fl_Color)FL_BACKGROUND2_COLOR);
txt_P4->selection_color((Fl_Color)FL_SELECTION_COLOR);
txt_P4->labeltype(FL_NORMAL_LABEL);
txt_P4->labelfont(0);
txt_P4->labelsize(14);
txt_P4->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
txt_P4->align(FL_ALIGN_LEFT);
txt_P4->when(FL_WHEN_RELEASE);
} // Fl_Input2* txt_P4
{ btnDate2 = new Fl_Button(361, 53, 20, 20, _("..."));
btnDate2->callback((Fl_Callback*)cb_btnDate2);
} // Fl_Button* btnDate2
o->end();
Fl_Group::current()->resizable(o);
} // Fl_Group* o
o->end();
Fl_Group::current()->resizable(o);
} // Fl_Tabs* o
{ txt_filename = new Fl_Output(260, 22, 205, 20, _("filename:"));
txt_filename->box(FL_FLAT_BOX);
txt_filename->color((Fl_Color)FL_BACKGROUND_COLOR);
} // Fl_Output* txt_filename
o->end();
} // Fl_Double_Window* o
return w;
}
Fl_Browser *brwsOptions=(Fl_Browser *)0;
Fl_Return_Button *btnCloseOptions=(Fl_Return_Button *)0;
static void cb_btnCloseOptions(Fl_Return_Button*, void*) {
closeoptions();
}
Fl_Double_Window* optionsdialog() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(411, 263, _("Command Line Options"));
w = o;
{ brwsOptions = new Fl_Browser(3, 31, 405, 202);
} // Fl_Browser* brwsOptions
{ btnCloseOptions = new Fl_Return_Button(329, 239, 72, 20, _("OK"));
btnCloseOptions->callback((Fl_Callback*)cb_btnCloseOptions);
} // Fl_Return_Button* btnCloseOptions
{ Fl_Box* o = new Fl_Box(4, 7, 401, 21, _("usage: flics -<option> [filename]"));
o->box(FL_FLAT_BOX);
o->color((Fl_Color)FL_LIGHT3);
o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
} // Fl_Box* o
o->end();
} // Fl_Double_Window* o
return w;
}

View file

@ -1,319 +0,0 @@
# data file for the Fltk User Interface Designer (fluid)
version 1.0110
i18n_type 1
i18n_include "gettext.h"
i18n_function _
header_name {.h}
code_name {.cxx}
decl {\#include <FL/Fl_Pixmap.H>} {public global
}
decl {\#include <FL/Fl_Text_Editor.H>} {public
}
decl {\#include "FTextView.h"} {public
}
decl {\#include "status.h"} {}
decl {\#include "flinput2.h"} {public global
}
Function {ics_dialog()} {open
} {
Fl_Window {} {
label {ICS213 Message Generator} open
xywh {479 79 558 395} type Double align 80 resizable visible
} {
Fl_Menu_Bar {} {open selected
xywh {1 0 555 20}
} {
Submenu {} {
label {&File} open
xywh {0 0 70 21}
} {
MenuItem mnuNew {
label {&New}
callback {cb_new();}
tooltip {New ICS file} xywh {0 0 36 21} shortcut 0x4006e
code0 {\#include "ics213.h"}
}
MenuItem mnuOpen {
label {&Open}
callback {cb_open();}
tooltip {Open ICS file} xywh {0 0 36 21} shortcut 0x4006f divider
}
MenuItem mnuSave {
label {&Save}
callback {cb_save();}
tooltip {Save ICS file} xywh {0 0 36 21} shortcut 0x40073
}
MenuItem mnuSaveAs {
label {Save &As}
callback {cb_save_as();}
tooltip {Save ICS file as} xywh {0 0 36 21} shortcut 0x40061 divider
}
MenuItem mnuWrite {
label {&Write}
callback {cb_write();}
tooltip {Write Rich Text Format file} xywh {0 0 36 21} shortcut 0x40077 divider
}
Submenu {} {
label {Q-forms} open
xywh {0 0 70 21} divider
} {
MenuItem mnu_qimport {
label Import
callback {cb_import();}
tooltip {Import Qforms xml data file} xywh {0 0 36 21}
}
MenuItem mnu_qexport {
label Export
callback {cb_export();}
tooltip {Export Qforms xml data file} xywh {0 0 36 21} divider
}
}
Submenu {} {
label Wrap open
xywh {0 0 70 21} divider
} {
MenuItem mnuWrapImport {
label Import
callback {cb_wrap_import();}
tooltip {Import data from wrapped file} xywh {0 0 36 21}
}
MenuItem mnuWrapExport {
label Export
callback {cb_wrap_export();}
tooltip {Export Wrapped data file} xywh {0 0 36 21} divider
}
MenuItem mnuAutoSend {
label AutoSend
callback {cb_wrap_autosend();}
tooltip {Send to fldigi for transmit} xywh {0 0 36 21}
}
}
MenuItem mnuExit {
label {E&xit}
callback {cb_exit();}
xywh {0 0 36 21} shortcut 0x40078
}
}
Submenu {} {
label {&Template} open
xywh {0 0 70 21}
} {
MenuItem mnu_load_template {
label Load
callback {cb_load_template();}
xywh {0 0 36 21} divider
}
MenuItem mnu_save_template {
label Save
callback {cb_save_template();}
xywh {0 0 36 21}
}
MenuItem mnu_save_as_template {
label {Save As}
callback {cb_save_as_template();}
xywh {0 0 36 21}
}
}
Submenu mnuConfig {
label Config open
xywh {0 0 70 21}
} {
MenuItem mnuCompress {
label {Use compression}
callback {progStatus.compression = mnuCompress->value();}
tooltip {Compress all files for transmit} xywh {0 0 36 21} type Toggle
code0 {progStatus.compression ? o->set() :o->clear();}
}
Submenu {} {
label Date open
xywh {0 0 70 21}
} {
MenuItem mnuUTC {
label {use UTC}
callback {progStatus.UTC = mnuUTC->value();}
xywh {0 0 36 21} type Toggle
code0 {progStatus.UTC ? o->set() :o->clear();}
}
MenuItem mnu_dtformat0 {
label {YYYY-DD-MM}
callback {if (o->value()) progStatus.dtformat = 0;}
xywh {0 0 36 21} type Radio
code0 {progStatus.dtformat==0 ? o->set() :o->clear();}
}
MenuItem mnu_dtformat1 {
label {MM/DD/YY}
callback {if (o->value()) progStatus.dtformat = 1;}
xywh {10 10 36 21} type Radio
code0 {progStatus.dtformat==1 ? o->set() :o->clear();}
}
MenuItem mnu_dtformat2 {
label {DD/MM/YY}
callback {if (o->value()) progStatus.dtformat = 2;}
xywh {20 20 36 21} type Radio
code0 {progStatus.dtformat==2 ? o->set() :o->clear();}
}
}
}
MenuItem {} {
label { }
xywh {0 0 36 21} deactivate divider
}
Submenu {} {
label Help open
xywh {0 0 70 21}
} {
MenuItem mnuOptions {
label Options
callback {showoptions();}
xywh {0 0 36 21}
}
MenuItem mnuAbout {
label About
callback {cb_About();}
xywh {0 0 36 21}
}
}
}
Fl_Tabs {} {open
xywh {1 22 555 370} resizable
} {
Fl_Group {} {
label Originator open
xywh {2 45 551 346}
} {
Fl_Input txt_To {
label To
tooltip Addressee xywh {41 50 235 24}
class Fl_Input2
}
Fl_Input txt_P1 {
label {Pos.}
tooltip {Position of addressee} xywh {313 50 235 24}
class Fl_Input2
}
Fl_Input txt_Fm {
label Fm
tooltip Originator xywh {41 75 235 24}
class Fl_Input2
}
Fl_Input txt_P2 {
label {Pos.}
tooltip {Position of originator} xywh {313 75 235 24}
class Fl_Input2
}
Fl_Input txt_Subj {
label {Sub.}
tooltip Subject xywh {41 100 235 24}
class Fl_Input2
}
Fl_Input txt_D1 {
label Date
tooltip {Date of origination} xywh {314 101 122 24}
code0 {\#include "calendar.h"}
code1 {txt_D1->format(2);}
class Fl_DateInput
}
Fl_Button btnDate1 {
label {...}
callback {cb_SetDate1();}
tooltip {Set today} xywh {438 103 20 20}
}
Fl_Input txt_T1 {
label Time
tooltip {Time of origination} xywh {315 126 100 24}
class Fl_Input2
}
Fl_Button btnTime1 {
label {...}
callback {cb_SetTime1();}
tooltip {Set time now} xywh {417 128 20 20}
}
Fl_Text_Editor txt_Msg {
label {Message:}
xywh {6 153 544 206} align 5 resizable
class FTextEdit
}
Fl_Input txt_S1 {
label {Sig.}
tooltip {Signature of preparer} xywh {36 362 240 24}
class Fl_Input2
}
Fl_Input txt_P3 {
label {Pos.}
tooltip {Position of preparer} xywh {310 362 240 24}
class Fl_Input2
}
}
Fl_Group {} {
label Responder open
xywh {2 45 551 346} hide resizable
} {
Fl_Input txt_S2 {
label {Sig.}
tooltip {Signature of responder} xywh {36 360 240 24}
class Fl_Input2
}
Fl_Input txt_D2 {
label Date
tooltip {Reply Date} xywh {238 51 122 24}
class Fl_DateInput
}
Fl_Input txt_T2 {
label Time
tooltip {Reply Time} xywh {423 51 100 24}
class Fl_Input2
}
Fl_Button btnTime2 {
label {...}
callback {cb_SetTime2();}
xywh {526 53 20 20}
}
Fl_Text_Editor txt_Reply {
label Reply
xywh {6 81 545 275} align 5
class FTextEdit
}
Fl_Input txt_P4 {
label {Pos.}
tooltip {Position of responder} xywh {313 360 235 24}
class Fl_Input2
}
Fl_Button btnDate2 {
label {...}
callback {cb_SetDate2();}
xywh {361 53 20 20}
}
}
}
Fl_Output txt_filename {
label {filename:}
xywh {260 22 205 20} box FLAT_BOX color 49
}
}
}
Function {optionsdialog()} {open
} {
Fl_Window {} {
label {Command Line Options} open
xywh {484 520 411 263} type Double visible
} {
Fl_Browser brwsOptions {
xywh {3 31 405 202}
}
Fl_Return_Button btnCloseOptions {
label OK
callback {closeoptions();}
xywh {329 239 72 20}
}
Fl_Box {} {
label {usage: flics -<option> [filename]}
xywh {4 7 401 21} box FLAT_BOX color 54 align 20
}
}
}

View file

@ -1,75 +0,0 @@
#include "ics213_template.h"
// rtf ICS-213 template created from Open Office rich text format
// document.
// all occurances of '\ first substituted with '\\'
// all occurances of new line character substituted with "\n\" plus the
// new line character.
// resulting text is then wrapped in double quotes and the
// const char name[] =
// or
// const char name * = is then added to the beginning of the text.
const char rtf_template[] = \
"{\\rtf1\\ansi\\deff1\\adeflang1025\n\
{\\fonttbl{\\f0\\froman\\fprq2\\fcharset0 Liberation Serif{\\*\\falt Times New Roman};}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fswiss\\fprq2\\fcharset0 Liberation Sans{\\*\\falt Arial};}{\\f3\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f4\\fswiss\\fprq2\\fcharset0 Arial;}{\\f5\\fnil\\fprq2\\fcharset0 DejaVu Sans;}{\\f6\\fnil\\fprq2\\fcharset0 Tahoma Slashed;}{\\f7\\fnil\\fprq0\\fcharset0 Tahoma Slashed;}}\n\
{\\colortbl;\\red0\\green0\\blue0;\\red242\\green242\\blue242;\\red229\\green229\\blue229;\\red128\\green128\\blue128;}\n\
{\\stylesheet{\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\snext1 Normal;}\n\
{\\s2\\sb240\\sa120\\keepn\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af6\\afs28\\lang1025\\ltrch\\dbch\\af5\\langfe1033\\hich\\f2\\fs28\\lang1033\\loch\\f2\\fs28\\lang1033\\sbasedon1\\snext3 Heading;}\n\
{\\s3\\sa120\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon1\\snext3 Body Text;}\n\
{\\s4\\sa120\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af7\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon3\\snext4 List;}\n\
{\\s5\\sb120\\sa120\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af7\\afs24\\lang1025\\ai\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\i\\loch\\f1\\fs24\\lang1033\\i\\sbasedon1\\snext5 caption;}\n\
{\\s6\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af7\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon1\\snext6 Index;}\n\
{\\s7\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon1\\snext7 Table Contents;}\n\
{\\s8\\cf0\\qc{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ab\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\b\\loch\\f1\\fs24\\lang1033\\b\\sbasedon7\\snext8 Table Heading;}\n\
{\\*\\cs10\\cf0\\rtlch\\af1\\afs24\\lang1033\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033 Default Paragraph Font;}\n\
}\n\
{\\info{\\title GENERAL MESSAGE}{\\author Dave, W1HKJ}{\\creatim\\yr2009\\mo9\\dy25\\hr15\\min10}{\\author Dave, W1HKJ}{\\revtim\\yr2009\\mo9\\dy25\\hr15\\min10}{\\printim\\yr0\\mo0\\dy0\\hr0\\min0}{\\comment StarWriter}{\\vern3000}}\\deftab720\n\
{\\*\\pgdsctbl\n\
{\\pgdsc0\\pgdscuse195\\pgwsxn12240\\pghsxn15840\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\pgdscnxt0 Standard;}}\n\
{\\*\\pgdscno0}\\paperh15840\\paperw12240\\margl1800\\margr1800\\margt1440\\margb1440\\sectd\\sbknone\\pgwsxn12240\\pghsxn15840\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\ftnbj\\ftnstart1\\ftnrstcont\\ftnnar\\aenddoc\\aftnrstcont\\aftnstart1\\aftnnrlc\n\
\\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\clcbpat2\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0\\qc{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 GENERAL MESSAGE}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4148\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 TO:\\tab <to:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 POSITION:\\tab <p1:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4148\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 FROM: \\tab <fm:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 POSITION:\\tab <p2:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4148\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx6380\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 SUBJ: \\tab <sb:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 DATE:\\tab <d1:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 TIME:\\tab <t1:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\clcbpat3\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 MESSAGE:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trrh4752\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <mg:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4431\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 SIGNATURE:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <s1:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 POSITION:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <p3:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\clcbpat3\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 REPLY:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trrh4680\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <rp:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx1733\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx3429\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 DATE:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <d2:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 TIME:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <t2:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 SIGNATURE/POSITION:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <s2: / <p4:}\n\
\\cell\\row\\pard \\pard\\plain \\ltrpar\\s1\\cf0\\qj{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 \n\
\\par }\n\
";
// rtf formated new line
// rtf substitute for the '\n' character in C++ string
// used to modify the body of the message or reply section.
const char nuline[] = \
"}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\rtlch\\af1\\afs24\\lang1033\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 ";

26
src/include/arl_msgs.h Normal file
View file

@ -0,0 +1,26 @@
// =====================================================================
//
// arl_msgs.h
//
// Author: Dave Freese, W1HKJ
// Copyright: 2010
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is
// copyright under the GNU General Public License.
//
// You should have received a copy of the GNU General Public License
// along with the program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// =====================================================================
#ifndef ARL_MSGS_H
#define ARL_MSGS_H
struct ARL_TEXT { const char *sznbr; int nfills; const char *text; };
extern ARL_TEXT arl_list[];
#endif

View file

@ -1,7 +0,0 @@
#ifndef FLICS_CONFIG_H_
#define FLICS_CONFIG_H_
#define DATAFILE_EXT ".f2s"
#endif

View file

@ -0,0 +1,8 @@
#ifndef FLMSG_CONFIG_H_
#define FLMSG_CONFIG_H_
#define DATAFILE_EXT ".f2s"
#define RGFILE_EXT ".m2s"
#endif

121
src/include/flmsg_dialog.h Normal file
View file

@ -0,0 +1,121 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0110
#ifndef flmsg_dialog_h
#define flmsg_dialog_h
#include <FL/Fl.H>
#include <FL/Fl_Pixmap.H>
#include <FL/Fl_Text_Editor.H>
#include "FTextView.h"
#include "flinput2.h"
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Menu_Bar.H>
#include "ics213.h"
#include <FL/Fl_Output.H>
extern Fl_Output *txt_filename;
#include <FL/Fl_Tabs.H>
extern Fl_Tabs *tabs_msg_type;
#include <FL/Fl_Group.H>
extern Fl_Group *tab_ics213;
extern Fl_Tabs *tabs_ics213;
extern Fl_Group *tab_originator;
extern Fl_Input2 *txt_To;
extern Fl_Input2 *txt_P1;
extern Fl_Input2 *txt_Fm;
extern Fl_Input2 *txt_P2;
extern Fl_Input2 *txt_Subj;
#include "calendar.h"
extern Fl_DateInput *txt_D1;
#include <FL/Fl_Button.H>
extern Fl_Button *btnDate1;
extern Fl_Input2 *txt_T1;
extern Fl_Button *btnTime1;
extern FTextEdit *txt_Msg;
extern Fl_Input2 *txt_S1;
extern Fl_Input2 *txt_P3;
extern Fl_Group *tab_responder;
extern Fl_Input2 *txt_S2;
extern Fl_DateInput *txt_D2;
extern Fl_Input2 *txt_T2;
extern Fl_Button *btnTime2;
extern FTextEdit *txt_Reply;
extern Fl_Input2 *txt_P4;
extern Fl_Button *btnDate2;
extern Fl_Group *tab_radiogram;
extern Fl_Input2 *txt_rg_station;
extern Fl_Input2 *txt_rg_place;
extern Fl_Input2 *txt_rg_nbr;
#include <FL/Fl_Choice.H>
extern Fl_Choice *sel_rg_prec;
extern Fl_Choice *sel_rg_hx;
extern Fl_Input2 *txt_rg_hx_n;
extern Fl_DateInput *txt_rg_d1;
extern Fl_Button *btn_rgDate1;
extern Fl_Input2 *txt_rg_t1;
extern Fl_Button *btn_rgTime1;
extern Fl_Input2 *txt_rg_to;
extern Fl_Input2 *txt_rg_rx;
extern Fl_Input2 *txt_rg_phone;
extern FTextEdit *txt_rg_msg;
extern Fl_Input2 *txt_rg_signed;
extern Fl_DateInput *txt_rg_d2;
extern Fl_Button *btn_rgDate2;
extern Fl_Input2 *txt_rg_t2;
extern Fl_Button *btn_rgTime2;
extern Fl_DateInput *txt_rg_d3;
extern Fl_Button *btn_rgDate3;
extern Fl_Input2 *txt_rg_t3;
extern Fl_Button *btn_rgTime3;
extern Fl_Input2 *txt_rg_sent_to;
extern Fl_Button *btn_rg_check;
extern Fl_Output *txt_rg_check;
extern Fl_Button *btn_arl;
Fl_Double_Window* ics_dialog();
extern Fl_Menu_Item menu_[];
#define mnuNew (menu_+1)
#define mnuOpen (menu_+2)
#define mnuSave (menu_+3)
#define mnuSaveAs (menu_+4)
#define mnu_html (menu_+6)
#define mnu_rtf (menu_+7)
#define mnu_text (menu_+8)
#define mnu_qimport (menu_+11)
#define mnu_qexport (menu_+12)
#define mnuWrapImport (menu_+15)
#define mnuWrapExport (menu_+16)
#define mnuAutoSend (menu_+17)
#define mnuExit (menu_+19)
#define mnu_load_template (menu_+22)
#define mnu_save_template (menu_+23)
#define mnu_save_as_template (menu_+24)
#define mnuConfig (menu_+26)
#define mnuOptions (menu_+29)
#define mnuOnLineHelp (menu_+30)
#define mnuAbout (menu_+31)
#include <FL/Fl_Browser.H>
extern Fl_Browser *brwsOptions;
#include <FL/Fl_Return_Button.H>
extern Fl_Return_Button *btnCloseOptions;
#include <FL/Fl_Box.H>
Fl_Double_Window* optionsdialog();
extern Fl_Browser *select_arl;
#include <FL/Fl_Input.H>
extern Fl_Input *txt_arl_fill1;
extern Fl_Input *txt_arl_fill2;
extern Fl_Input *txt_arl_fill3;
extern Fl_Input *txt_arl_fill4;
extern Fl_Button *btn_arl_cancel;
extern Fl_Button *btn_arl_add;
extern FTextEdit *arl_text;
Fl_Double_Window* arl_dialog();
#include <FL/Fl_Check_Button.H>
extern Fl_Check_Button *btn_compress;
extern Fl_Check_Button *btn_UTC;
#include <FL/Fl_Round_Button.H>
extern Fl_Round_Button *btn_dtformat0;
extern Fl_Round_Button *btn_dtformat1;
extern Fl_Round_Button *btn_dtformat2;
#include <FL/Fl_Spinner.H>
extern Fl_Spinner *cnt_wpl;
extern Fl_Button *btn_close_config;
Fl_Double_Window* config_dialog();
#endif

View file

@ -1,3 +1,20 @@
// =====================================================================
//
// ics213.h
//
// Author: Dave Freese, W1HKJ
// Copyright: 2010
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is
// copyright under the GNU General Public License.
//
// You should have received a copy of the GNU General Public License
// along with the program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// =====================================================================
#ifndef ICS213_H
#define ICS213_H
@ -7,13 +24,27 @@
#include <FL/Fl_Window.H>
#include <FL/Fl_Double_Window.H>
#include "arl_msgs.h"
using namespace std;
struct FIELD { const char *f_type; string f_data; Fl_Widget **w; char w_type; };
extern FIELD fields[];
extern FIELD rg_fields[];
extern void checkdirectories(void);
extern int parse_args(int argc, char **argv, int& idx);
extern void showoptions();
extern string IcsHomeDir;
extern Fl_Double_Window *mainwindow;
extern Fl_Double_Window *optionswindow;
extern Fl_Double_Window *arlwindow;
extern Fl_Double_Window *configwindow;
extern string flmsgHomeDir;
extern string IcsHomeDir;
extern int arl_nbr;
extern string NBEMS_dir;
extern string ARQ_dir;
@ -28,18 +59,23 @@ extern string ICS_dir;
extern string ICS_msg_dir;
extern string ICS_tmp_dir;
extern string baseFileName;
extern string defTemplateName;
extern string defFileName;
extern string defRTFname;
extern string title;
extern string buffer;
extern void clear_form();
extern void read_ics(string);
extern void write_ics(string);
extern void cb_msg_type();
//menu callbacks
extern void cb_new();
extern void cb_open();
extern void cb_save();
extern void cb_save_as();
extern void cb_write();
extern void cb_rtf();
extern void cb_text();
extern void cb_import();
extern void cb_export();
extern void cb_wrap_import();
@ -49,18 +85,96 @@ extern void cb_exit();
extern void cb_load_template();
extern void cb_save_template();
extern void cb_save_as_template();
extern void cb_About();
extern void cb_SetTime1();
extern void cb_SetTime2();
extern void cb_useZulu(bool);
extern void cb_SetDate1();
extern void cb_SetDate2();
extern void cb_config();
extern void cb_close_config();
extern void showoptions();
extern void show_help();
extern void cb_About();
extern void cb_html();
extern void open_url(const char* url);
extern void cb_arl();
extern void cb_arl_cancel();
extern void cb_arl_add();
extern void closeoptions();
extern void remove_spaces_from_filename(string &fname);
extern char *szTime();
extern char *szDate();
extern char *szAbbrevDate();
extern void set_main_label();
extern void show_filename(string);
extern void clear_fields();
extern void update_fields();
extern void to_html(string &s);
extern void fm_html(string &html);
// ics213
extern string rg_base_filename;
extern string def_rgFileName;
extern bool usingTemplate;
extern void clear_ics_form();
extern void read_ics(string);
extern void write_ics(string);
extern void cb_ics_new();
extern void cb_ics_open();
extern void cb_ics_save();
extern void cb_ics_save_as();
extern void cb_ics_write();
extern void cb_ics_html();
extern void cb_ics_import();
extern void cb_ics_export();
extern void cb_ics_wrap_import();
extern void cb_ics_wrap_export();
extern void cb_ics_wrap_autosend();
extern void cb_ics_load_template();
extern void cb_ics_save_template();
extern void cb_ics_save_as_template();
extern void cb_SetDate1();
extern void cb_SetDate2();
extern void cb_SetTime1();
extern void cb_SetTime2();
// radiogram
extern const char hxitems[];
extern const char precitems[];
extern const char *s_prec[];
extern const char *s_hx[];
extern void cb_rgSetDate1();
extern void cb_rgSetDate2();
extern void cb_rgSetDate3();
extern void cb_rgSetTime1();
extern void cb_rgSetTime2();
extern void cb_rgSetTime3();
extern void clear_rg_fields();
extern void update_rg_fields();
extern void clear_rg_form();
extern void make_rg_buffer();
extern void read_rg_buffer(string data);
extern void cb_rg_new();
extern void cb_rg_import();
extern void cb_rg_export();
extern void cb_rg_wrap_import();
extern void cb_rg_wrap_export();
extern void cb_rg_wrap_autosend();
extern void read_rg(string s);
extern void cb_rg_open();
extern void write_rg(string s);
extern void cb_rg_save_as();
extern void cb_rg_save();
extern void cb_rg_html();
extern void cb_rg_rtf();
extern void cb_rg_textout();
extern void set_rg_choices();
extern void cb_rg_check();
#endif

View file

@ -1,68 +0,0 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0110
#ifndef ics213_dialog_h
#define ics213_dialog_h
#include <FL/Fl.H>
#include <FL/Fl_Pixmap.H>
#include <FL/Fl_Text_Editor.H>
#include "FTextView.h"
#include "flinput2.h"
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Menu_Bar.H>
#include "ics213.h"
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Group.H>
extern Fl_Input2 *txt_To;
extern Fl_Input2 *txt_P1;
extern Fl_Input2 *txt_Fm;
extern Fl_Input2 *txt_P2;
extern Fl_Input2 *txt_Subj;
#include "calendar.h"
extern Fl_DateInput *txt_D1;
#include <FL/Fl_Button.H>
extern Fl_Button *btnDate1;
extern Fl_Input2 *txt_T1;
extern Fl_Button *btnTime1;
extern FTextEdit *txt_Msg;
extern Fl_Input2 *txt_S1;
extern Fl_Input2 *txt_P3;
extern Fl_Input2 *txt_S2;
extern Fl_DateInput *txt_D2;
extern Fl_Input2 *txt_T2;
extern Fl_Button *btnTime2;
extern FTextEdit *txt_Reply;
extern Fl_Input2 *txt_P4;
extern Fl_Button *btnDate2;
#include <FL/Fl_Output.H>
extern Fl_Output *txt_filename;
Fl_Double_Window* ics_dialog();
extern Fl_Menu_Item menu_[];
#define mnuNew (menu_+1)
#define mnuOpen (menu_+2)
#define mnuSave (menu_+3)
#define mnuSaveAs (menu_+4)
#define mnuWrite (menu_+5)
#define mnu_qimport (menu_+7)
#define mnu_qexport (menu_+8)
#define mnuWrapImport (menu_+11)
#define mnuWrapExport (menu_+12)
#define mnuAutoSend (menu_+13)
#define mnuExit (menu_+15)
#define mnu_load_template (menu_+18)
#define mnu_save_template (menu_+19)
#define mnu_save_as_template (menu_+20)
#define mnuConfig (menu_+22)
#define mnuCompress (menu_+23)
#define mnuUTC (menu_+25)
#define mnu_dtformat0 (menu_+26)
#define mnu_dtformat1 (menu_+27)
#define mnu_dtformat2 (menu_+28)
#define mnuOptions (menu_+33)
#define mnuAbout (menu_+34)
#include <FL/Fl_Browser.H>
extern Fl_Browser *brwsOptions;
#include <FL/Fl_Return_Button.H>
extern Fl_Return_Button *btnCloseOptions;
#include <FL/Fl_Box.H>
Fl_Double_Window* optionsdialog();
#endif

View file

@ -1,8 +0,0 @@
#ifndef RTF_TEMPLATE
#define RTF_TEMPLATE
extern const char rtf_template[];
extern const char nuline[];
#endif

View file

@ -8,7 +8,13 @@ using namespace std;
struct TAGS { const char *tag; void (*fp)(size_t &, string);};
void parse_xml( string );
extern void parse_ics(string);
extern bool qform_ics_import(string);
extern void qform_ics_export(string);
extern void parse_rg(string);
extern bool qform_rg_import(string);
extern void qform_rg_export(string);
#endif

View file

@ -9,6 +9,7 @@ struct status {
int mainX;
int mainY;
int wpl; // words per line in radiogram
bool compression;
bool UTC;
int dtformat;

12
src/include/templates.h Normal file
View file

@ -0,0 +1,12 @@
#ifndef _TEMPLATES
#define _TEMPLATES
extern const char ics_rtf_template[];
extern const char nuline[];
extern const char ics_html_template[];
extern const char rg_html_template[];
extern const char rg_rtf_template[];
#endif

File diff suppressed because it is too large Load diff

665
src/radiogram.cxx Normal file
View file

@ -0,0 +1,665 @@
// =====================================================================
//
// radiogram.cxx
//
// Author: Dave Freese, W1HKJ
// Copyright: 2010
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is
// copyright under the GNU General Public License.
//
// You should have received a copy of the GNU General Public License
// along with the program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// =====================================================================
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <cstring>
#include <ctime>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
#include <FL/Fl.H>
#include <FL/Enumerations.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Sys_Menu_Bar.H>
#include <FL/x.H>
#include <FL/Fl_Help_Dialog.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_File_Icon.H>
#include "config.h"
#include "flmsg_config.h"
#include "templates.h"
#include "debug.h"
#include "util.h"
#include "gettext.h"
#include "flmsg_dialog.h"
#include "flinput2.h"
#include "date.h"
#include "calendar.h"
#include "icons.h"
#include "fileselect.h"
#include "wrap.h"
#include "status.h"
#include "parse_xml.h"
#ifdef WIN32
# include "flmsgrc.h"
# include "compat.h"
# define dirent fl_dirent_no_thanks
#endif
#include <FL/filename.H>
#ifdef __MINGW32__
# undef dirent
#endif
#include <dirent.h>
#include <FL/x.H>
#include <FL/Fl_Pixmap.H>
#include <FL/Fl_Image.H>
using namespace std;
string rg_base_filename = "";
string def_rgFileName = "";
// Radiogram rg_fields
const char * _rg_nbr = "<nbr:";
const char * _rg_prec = "<prec:";
const char * _rg_hx = "<hx:";
const char * _rg_hx_n = "<hn:";
const char * _rg_d1 = "<d1:";
const char * _rg_t1 = "<t1:";
const char * _rg_d2 = "<d2:";
const char * _rg_t2 = "<t2:";
const char * _rg_d3 = "<d3:";
const char * _rg_t3 = "<t3:";
const char * _rg_to = "<to:";
const char * _rg_rx = "<rx:";
const char * _rg_phone = "<tel:";
const char * _rg_msg = "<msg:";
const char * _rg_check = "<ck:";
const char * _rg_station = "<sta:";
const char * _rg_place = "<org:";
const char * _rg_signed = "<sgn:";
const char * _rg_sent_to = "<sto:";
const char *s_prec[] = {"ROUTINE", "WELFARE", "PRIORITY", "EMERGENCY"};
const char *s_hx[] = {"", "HXA", "HXB", "HXC", "HXD", "HXE", "HXF", "HXG"};
const char hxitems[] = " |HXA|HXB|HXC|HXD|HXE|HXF|HXG";
const char precitems[] = "ROUTINE|WELFARE|PRIORITY|EMERGENCY";
FIELD rg_fields[] = {
{ _rg_nbr, "", (Fl_Widget **)&txt_rg_nbr, 't' }, // 0
{ _rg_prec, "", (Fl_Widget **)&sel_rg_prec, 's' }, // 1
{ _rg_hx, "", (Fl_Widget **)&sel_rg_hx, 's' }, // 2
{ _rg_hx_n, "", (Fl_Widget **)&txt_rg_hx_n, 't' }, // 3
{ _rg_d1, "", (Fl_Widget **)&txt_rg_d1, 'd' }, // 4
{ _rg_t1, "", (Fl_Widget **)&txt_rg_t1, 't' }, // 5
{ _rg_d2, "", (Fl_Widget **)&txt_rg_d2, 'd' }, // 6
{ _rg_t2, "", (Fl_Widget **)&txt_rg_t2, 't' }, // 7
{ _rg_d3, "", (Fl_Widget **)&txt_rg_d3, 'd' }, // 8
{ _rg_t3, "", (Fl_Widget **)&txt_rg_t3, 't' }, // 9
{ _rg_to, "", (Fl_Widget **)&txt_rg_to, 't' }, // 10
{ _rg_rx, "", (Fl_Widget **)&txt_rg_rx, 't' }, // 11
{ _rg_phone, "", (Fl_Widget **)&txt_rg_phone, 't' }, // 12
{ _rg_msg, "", (Fl_Widget **)&txt_rg_msg, 'e' }, // 13
{ _rg_station, "", (Fl_Widget **)&txt_rg_station, 't' }, // 14
{ _rg_place, "", (Fl_Widget **)&txt_rg_place, 't' }, // 15
{ _rg_signed, "", (Fl_Widget **)&txt_rg_signed, 't' }, // 16
{ _rg_sent_to, "", (Fl_Widget **)&txt_rg_sent_to, 't' }, // 17
{ _rg_check, "", (Fl_Widget **)&txt_rg_check, 't' } };// 18
int num_rg_fields = sizeof(rg_fields) / sizeof(FIELD);
//======================================================================
void ucase(string &s)
{
for (size_t n = 0; n < s.length(); n++) s[n] = toupper(s[n]);
}
//======================================================================
void cb_rgSetDate1()
{
txt_rg_d1->value(szAbbrevDate());
}
void cb_rgSetDate2()
{
txt_rg_d2->value(szDate());
}
void cb_rgSetDate3()
{
txt_rg_d3->value(szDate());
}
void cb_rgSetTime1()
{
txt_rg_t1->value(szTime());
}
void cb_rgSetTime2()
{
txt_rg_t2->value(szTime());
}
void cb_rgSetTime3()
{
txt_rg_t3->value(szTime());
}
void clear_rg_fields()
{
for (int i = 0; i < num_rg_fields; i++)
rg_fields[i].f_data.clear();
}
string numeric(int n)
{
static char snum[10];
snprintf(snum, sizeof(snum), "%d", n);
return snum;
}
void update_rg_fields()
{
for (int i = 0; i < num_rg_fields; i++) {
if (rg_fields[i].w_type == 'd')
rg_fields[i].f_data = ((Fl_DateInput *)(*rg_fields[i].w))->value();
else if (rg_fields[i].w_type == 't')
rg_fields[i].f_data = ((Fl_Input2 *)(*rg_fields[i].w))->value();
else if (rg_fields[i].w_type == 's')
rg_fields[i].f_data = numeric(((Fl_Choice *)(*rg_fields[i].w))->value());
else if (rg_fields[i].w_type == 'e') {
rg_fields[i].f_data = ((FTextEdit *)(*rg_fields[i].w))->buffer()->text();
}
}
}
void set_rg_choices() {
sel_rg_prec->clear();
sel_rg_prec->add(precitems);
sel_rg_prec->value(0);
sel_rg_hx->clear();
sel_rg_hx->add(hxitems);
sel_rg_hx->value(0);
}
void clear_rg_form()
{
clear_rg_fields();
for (int i = 0; i < num_rg_fields; i++)
if (rg_fields[i].w_type == 'd')
((Fl_DateInput *)(*rg_fields[i].w))->value("");
else if (rg_fields[i].w_type == 't')
((Fl_Input2 *)(*rg_fields[i].w))->value("");
else if (rg_fields[i].w_type == 's')
((Fl_Choice *)(*rg_fields[i].w))->value(0);
else if (rg_fields[i].w_type == 'e')
((FTextEdit *)(*rg_fields[i].w))->clear();
update_rg_fields();
}
void make_rg_buffer()
{
char sznum[80];
update_rg_fields();
buffer.clear();
buffer.append("<flmsg>");
buffer.append(PACKAGE_VERSION);
buffer += '\n';
buffer.append("<radiogram>\n");
for (int i = 0; i < num_rg_fields; i++) {
snprintf(sznum, sizeof(sznum), "%0d", (int)strlen(rg_fields[i].f_data.c_str()));
buffer.append(rg_fields[i].f_type);
buffer.append(sznum);
buffer += ' ';
buffer.append(rg_fields[i].f_data);
buffer += '\n';
}
}
void read_rg_buffer(string data)
{
const char *buff, *p1, *p2, *buffend;
size_t pos = 0;
while ((pos = data.find('\r', pos)) != string::npos) data.erase(pos, 1);
p1 = buff = data.c_str();
buffend = p1 + data.length();
clear_rg_fields();
// search the file buffer for each of the ics rg_fields
for (int i = 0; i < num_rg_fields; i++) {
p1 = strstr(buff, rg_fields[i].f_type);
if (p1) {
int nchars;
p2 = p1 + strlen(rg_fields[i].f_type);
sscanf(p2, "%d", &nchars);
if (nchars) {
p2 = strchr(p2, ' ') + 1;
if (p2 < buffend && p2 + nchars < buffend)
for ( int ch = 0; ch < nchars; ch++, p2++)
rg_fields[i].f_data += *p2;
if (rg_fields[i].w_type == 'd')
((Fl_DateInput *)(*rg_fields[i].w))->value(rg_fields[i].f_data.c_str());
else if (rg_fields[i].w_type == 't')
((Fl_Input2 *)(*rg_fields[i].w))->value(rg_fields[i].f_data.c_str());
else if (rg_fields[i].w_type == 's') {
int n;
sscanf(rg_fields[i].f_data.c_str(),"%d", &n);
((Fl_Choice *)(*rg_fields[i].w))->value(n);
}
else if (rg_fields[i].w_type == 'e') {
((FTextEdit *)(*rg_fields[i].w))->clear();
((FTextEdit *)(*rg_fields[i].w))->addstr(rg_fields[i].f_data.c_str());
}
}
}
}
}
void cb_rg_new()
{
clear_rg_form();
def_rgFileName = ICS_msg_dir;
def_rgFileName.append("new"RGFILE_EXT);
show_filename(def_rgFileName);
}
void cb_rg_import()
{
string def_rgFileName = ICS_dir;
def_rgFileName.append("DEFAULT.XML");
const char *p = FSEL::select(
"Open Qforms xml file",
"Qforms xml\t*.{xml,XML}",
def_rgFileName.c_str());
if (p){
clear_rg_form();
qform_rg_import(p);
}
}
void cb_rg_export()
{
string def_rgFileName = ICS_dir;
def_rgFileName.append(rg_base_filename);
def_rgFileName.append(".XML");
const char *p = FSEL::saveas(
"Open Qforms xml file",
"Qforms xml\t*.{xml,XML}",
def_rgFileName.c_str());
if (p) {
const char *pext = fl_filename_ext(p);
def_rgFileName = p;
if (strlen(pext) == 0) def_rgFileName.append(".XML");
qform_rg_export(def_rgFileName);
}
}
void cb_rg_wrap_import()
{
string wrapfilename = WRAP_recv_dir;
string inpbuffer;
bool isok;
wrapfilename.append("default.wrap");
const char *p = FSEL::select(
"Import wrapped radiogram file",
"Wrap file\t*.{wrap,WRAP}",
wrapfilename.c_str());
if (p){
clear_rg_form();
isok = import_wrapfile(p, wrapfilename, inpbuffer);
read_rg_buffer(inpbuffer);
def_rgFileName = ICS_msg_dir;
def_rgFileName.append(wrapfilename);
show_filename(def_rgFileName);
}
}
void cb_rg_wrap_export()
{
string wrapfilename = WRAP_send_dir;
wrapfilename.append(baseFileName);
wrapfilename.append(".wrap");
const char *p = FSEL::saveas(
"Save as wrapped radiogram file",
"Wrap file\t*.{wrap,WRAP}",
wrapfilename.c_str());
if (p) {
string pext = fl_filename_ext(p);
wrapfilename = p;
make_rg_buffer();
export_wrapfile(baseFileName, wrapfilename, buffer, pext != ".wrap");
}
}
void cb_rg_wrap_autosend()
{
string wrapfilename = WRAP_auto_dir;
wrapfilename.append("wrap_auto_file");
make_rg_buffer();
export_wrapfile(baseFileName, wrapfilename, buffer, false);
}
void read_rg(string s)
{
// def_rgFileName = s;
long filesize = 0;
char *buff, *buffend;
int retval;
FILE *icsfile;
icsfile = fopen (s.c_str(), "r");
if (!icsfile)
return;
// determine its size for buffer creation
fseek (icsfile, 0, SEEK_END);
filesize = ftell (icsfile);
buff = new char[filesize + 1];
// read the entire file into the buffer
fseek (icsfile, 0, SEEK_SET);
retval = fread (buff, filesize, 1, icsfile);
fclose (icsfile);
buffend = buff + filesize;
// test file integrity
if (filesize == 0) {
fl_alert2(_("Empty file"));
return;
}
if (strstr(buff, "<flmsg") != buff) {
fl_alert2(_("Not an flmsg data file"));
return;
}
read_rg_buffer(buff);
delete [] buff;
}
void cb_rg_open()
{
const char *p = FSEL::select(_("Open data file"), "M2S\t*"RGFILE_EXT,
def_rgFileName.c_str());
if (!p) return;
if (strlen(p) == 0) return;
clear_ics_form();
read_rg(p);
usingTemplate = false;
def_rgFileName = p;
show_filename(def_rgFileName);
}
void write_rg(string s)
{
FILE *icsfile = fopen(s.c_str(), "w");
if (!icsfile) return;
make_rg_buffer();
fwrite(buffer.c_str(), buffer.length(), 1, icsfile);
fclose(icsfile);
}
void cb_rg_save_as()
{
const char *p;
string newfilename;
newfilename = def_rgFileName;
p = FSEL::saveas(_("Save data file"), "M2S\t*"RGFILE_EXT,
newfilename.c_str());
if (!p) return;
if (strlen(p) == 0) return;
const char *pext = fl_filename_ext(p);
def_rgFileName = p;
if (strlen(pext) == 0) def_rgFileName.append(".m2s");
remove_spaces_from_filename(def_rgFileName);
write_rg(def_rgFileName);
show_filename(def_rgFileName);
}
void cb_rg_save()
{
if (rg_base_filename == "new"RGFILE_EXT || rg_base_filename == "default"RGFILE_EXT) {
cb_save_as();
return;
}
write_rg(def_rgFileName);
}
void cb_rg_check()
{
update_rg_fields();
string hx = rg_fields[2].f_data;
string hxn = rg_fields[3].f_data;
if ((hx == "2" || hx == "3" || hx == "6") &&
hxn.empty()) {
fl_alert2(_("HXB/C/F require secondary data"));
return;
}
string temp = txt_rg_msg->buffer()->text();
if (temp.empty()) {
txt_rg_check->value("");
return;
}
// convert to uppercase
for (size_t n = 0; n < temp.length(); n++)
temp[n] = toupper(temp[n]);
size_t pos = string::npos;
// convert periods and commas into " X "
while ((pos = temp.find(". ")) != string::npos) temp.replace(pos,1," X");
if (temp[temp.length()-1] == '.') {
temp[temp.length()-1] = ' '; temp += 'X';
}
while ((pos = temp.find(", ")) != string::npos) temp.replace(pos,1," X");
if (temp[temp.length()-1] == ',') {
temp[temp.length()-1] = ' '; temp += 'X';
}
// remove any user inserted end-of-lines
while ((pos = temp.find('\n')) != string::npos) temp[pos] = ' ';
// only single spaces no trailing spaces, no leading spaces
while ((pos = temp.find(" ")) != string::npos) temp.erase(pos,1);
if (temp[temp.length() -1] == ' ') temp.erase(temp.length()-1, 1);
if (temp[0] == ' ') temp.erase(0,1);
// count number of words in text
int numwords = 1;
if (temp.length()) {
pos = 0;
while ((pos = temp.find(" ", pos + 1)) != string::npos) numwords++;
}
// no more than 5 words to a line
if (numwords > progStatus.wpl) {
int wc = numwords;
size_t pos = 0;
while (wc > progStatus.wpl) {
for (int i = 0; i < progStatus.wpl; i++) pos = temp.find(' ', pos + 1);
temp[pos] = '\n';
wc -= progStatus.wpl;
}
}
// insert trailing end-of-line
temp += '\n';
// return converted text to editor
txt_rg_msg->clear();
txt_rg_msg->addstr(temp.c_str());
char snum[10];
snprintf(snum, sizeof(snum), "%s %d",
temp.find("ARL") != string::npos ? "ARL" : "",
numwords);
txt_rg_check->value(snum);
}
void cb_rg_html()
{
string rgname;
int nbr;
rgname = ICS_dir;
rgname.append("radiogram.html");
cb_rg_check();
string form = rg_html_template;
int nlines = 0;
size_t pos;
for (int i = 0; i < num_rg_fields; i++) {
if (rg_fields[i].w_type == 'e' || rg_fields[i].w_type == 't') {
nlines = 0;
string MSG = rg_fields[i].f_data;
size_t pos2 = MSG.find('\n');
while (pos2 != string::npos) {
MSG.replace(pos2, 1, "<br>");
nlines++;
pos2 = MSG.find( '\n', pos2 );
}
if (strcmp(rg_fields[i].f_type ,"<msg:") == 0)
for (int k = nlines; k < 10; k++) MSG.append("<br>");
to_html(MSG);
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type), MSG );
} else if (strcmp(rg_fields[i].f_type, "<prec:") == 0) {
sscanf(rg_fields[i].f_data.c_str(), "%d", &nbr);
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type), s_prec[nbr] );
} else if (strcmp(rg_fields[i].f_type, "<hx:") == 0) {
sscanf(rg_fields[i].f_data.c_str(), "%d", &nbr);
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type), s_hx[nbr] );
} else {
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type),
rg_fields[i].f_data );
}
}
FILE *rgfile = fopen(rgname.c_str(), "w");
fprintf(rgfile,"%s", form.c_str());
fclose(rgfile);
open_url(rgname.c_str());
}
void cb_rg_rtf()
{
string rgname;
int nbr;
rgname = ICS_dir;
rgname.append("radiogram.rtf");
cb_rg_check();
string form = rg_rtf_template;
int nlines = 0;
size_t pos;
for (int i = 0; i < num_rg_fields; i++) {
if (rg_fields[i].w_type == 'e' || rg_fields[i].w_type == 't') {
nlines = 0;
string MSG = rg_fields[i].f_data;
size_t pos2 = MSG.find('\n');
while (pos2 != string::npos) {
MSG.replace(pos2, 1, nuline);
nlines++;
pos2 = MSG.find( '\n', pos2 + strlen(nuline) );
}
if (strcmp(rg_fields[i].f_type ,"<msg:") == 0)
for (int k = nlines; k < 10; k++) MSG.append("\n");//nuline);
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type), MSG );
} else if (strcmp(rg_fields[i].f_type, "<prec:") == 0) {
sscanf(rg_fields[i].f_data.c_str(), "%d", &nbr);
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type), s_prec[nbr] );
} else if (strcmp(rg_fields[i].f_type, "<hx:") == 0) {
sscanf(rg_fields[i].f_data.c_str(), "%d", &nbr);
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type), s_hx[nbr] );
} else {
if ((pos = form.find(rg_fields[i].f_type)) != string::npos)
form.replace( pos, strlen(rg_fields[i].f_type),
rg_fields[i].f_data );
}
}
FILE *rgfile = fopen(rgname.c_str(), "w");
fprintf(rgfile,"%s", form.c_str());
fclose(rgfile);
open_url(rgname.c_str());
}
void cb_rg_textout()
{
string rgname;
string lines;
string str;
int nbr;
rgname = ICS_dir;
rgname.append("radiogram.txt");
cb_rg_check();
// first line
lines = rg_fields[0].f_data; // message number
lines += ' ';
sscanf(rg_fields[1].f_data.c_str(), "%d", &nbr);
str = s_prec[nbr];
if (str == "EMERGENCY")
lines.append(" ").append(str); // EMERGENCY spelled out
else
lines += str[0]; // just first char
sscanf(rg_fields[2].f_data.c_str(), "%d", &nbr);
lines.append(" ").append(s_hx[nbr]); // HX_
lines.append(" ").append(rg_fields[3].f_data); // additional HX
lines.append(" ").append(rg_fields[14].f_data); // station
lines.append(" ").append(rg_fields[18].f_data); // check
lines.append(" ").append(rg_fields[5].f_data); // time
lines.append(" ").append(rg_fields[4].f_data); // date
lines += '\n';
// addressee
lines.append(rg_fields[10].f_data);
if (lines[lines.length()-1] != '\n') lines += '\n';
// telephone
lines.append(rg_fields[12].f_data).append("\nBT\n");
// body of message
lines.append(rg_fields[13].f_data);
if (lines[lines.length()-1] != '\n') lines += '\n';
lines.append("BT\n");
// signed
lines.append(rg_fields[16].f_data).append("\nAR\n");
ucase(lines);
FILE *rgfile = fopen(rgname.c_str(), "w");
fprintf(rgfile,"%s", lines.c_str());
fclose(rgfile);
open_url(rgname.c_str());
}

View file

@ -16,12 +16,13 @@
#include "status.h"
#include "config.h"
#include "ics213.h"
#include "ics213_dialog.h"
#include "flmsg_dialog.h"
status progStatus = {
50, // int mainX;
50, // int mainY;
5, // int wpl;
false, // bool compression;
true, // bool UTC
0 // date format 0: YYYY-MM-DD, 1: MM/DD/YY, 2: DD/MM/YY
@ -29,7 +30,7 @@ status progStatus = {
void status::saveLastState()
{
Fl_Preferences flicspref(ICS_dir.c_str(), "w1hkj.com", PACKAGE_NAME);
Fl_Preferences flmsgpref(ICS_dir.c_str(), "w1hkj.com", PACKAGE_NAME);
int mX = mainwindow->x();
int mY = mainwindow->y();
@ -38,45 +39,45 @@ void status::saveLastState()
mainY = mY;
}
flicspref.set("version", PACKAGE_VERSION);
flicspref.set("mainx", mX);
flicspref.set("mainy", mY);
flmsgpref.set("version", PACKAGE_VERSION);
flmsgpref.set("mainx", mX);
flmsgpref.set("mainy", mY);
flicspref.set("compression", compression);
flicspref.set("utc", UTC);
flicspref.set("dtformat", dtformat);
flmsgpref.set("wpl", wpl);
flmsgpref.set("compression", compression);
flmsgpref.set("utc", UTC);
flmsgpref.set("dtformat", dtformat);
}
void status::loadLastState()
{
Fl_Preferences flicspref(ICS_dir.c_str(), "w1hkj.com", PACKAGE_NAME);
Fl_Preferences flmsgpref(ICS_dir.c_str(), "w1hkj.com", PACKAGE_NAME);
if (flicspref.entryExists("version")) {
if (flmsgpref.entryExists("version")) {
int i;
flicspref.get("mainx", mainX, mainX);
flicspref.get("mainy", mainY, mainY);
flmsgpref.get("mainx", mainX, mainX);
flmsgpref.get("mainy", mainY, mainY);
if (flicspref.get("compression", i, i)) compression = i;
if (flicspref.get("utc", i, i)) UTC = i;
flicspref.get("dtformat", dtformat, dtformat);
flmsgpref.get("wpl", wpl, wpl);
cnt_wpl->value(wpl);
if (flmsgpref.get("compression", i, i)) compression = i;
if (flmsgpref.get("utc", i, i)) UTC = i;
flmsgpref.get("dtformat", dtformat, dtformat);
btn_dtformat0->value(0);
btn_dtformat1->value(0);
btn_dtformat2->value(0);
switch (dtformat) {
case 1:
mnu_dtformat0->clear();
mnu_dtformat1->set();
mnu_dtformat2->clear();
btn_dtformat0->value(1);
break;
case 2:
mnu_dtformat0->clear();
mnu_dtformat1->clear();
mnu_dtformat2->set();
btn_dtformat1->value(1);
break;
case 0:
default:
mnu_dtformat0->set();
mnu_dtformat1->clear();
mnu_dtformat2->clear();
btn_dtformat2->value(1);
break;
}
}

343
src/templates.cxx Normal file
View file

@ -0,0 +1,343 @@
#include "templates.h"
// rtf ICS-213 template created from Open Office rich text format
// document.
// all occurances of '\ first substituted with '\\'
// all occurances of new line character substituted with "\n\" plus the
// new line character.
// resulting text is then wrapped in double quotes and the
// const char name[] =
// or
// const char name * = is then added to the beginning of the text.
const char ics_rtf_template[] = \
"{\\rtf1\\ansi\\deff1\\adeflang1025\n\
{\\fonttbl{\\f0\\froman\\fprq2\\fcharset0 Liberation Serif{\\*\\falt Times New Roman};}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fswiss\\fprq2\\fcharset0 Liberation Sans{\\*\\falt Arial};}{\\f3\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f4\\fswiss\\fprq2\\fcharset0 Arial;}{\\f5\\fnil\\fprq2\\fcharset0 DejaVu Sans;}{\\f6\\fnil\\fprq2\\fcharset0 Tahoma Slashed;}{\\f7\\fnil\\fprq0\\fcharset0 Tahoma Slashed;}}\n\
{\\colortbl;\\red0\\green0\\blue0;\\red242\\green242\\blue242;\\red229\\green229\\blue229;\\red128\\green128\\blue128;}\n\
{\\stylesheet{\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\snext1 Normal;}\n\
{\\s2\\sb240\\sa120\\keepn\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af6\\afs28\\lang1025\\ltrch\\dbch\\af5\\langfe1033\\hich\\f2\\fs28\\lang1033\\loch\\f2\\fs28\\lang1033\\sbasedon1\\snext3 Heading;}\n\
{\\s3\\sa120\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon1\\snext3 Body Text;}\n\
{\\s4\\sa120\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af7\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon3\\snext4 List;}\n\
{\\s5\\sb120\\sa120\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af7\\afs24\\lang1025\\ai\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\i\\loch\\f1\\fs24\\lang1033\\i\\sbasedon1\\snext5 caption;}\n\
{\\s6\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\af7\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon1\\snext6 Index;}\n\
{\\s7\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033\\sbasedon1\\snext7 Table Contents;}\n\
{\\s8\\cf0\\qc{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\aspalpha\\rtlch\\afs24\\lang1025\\ab\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\b\\loch\\f1\\fs24\\lang1033\\b\\sbasedon7\\snext8 Table Heading;}\n\
{\\*\\cs10\\cf0\\rtlch\\af1\\afs24\\lang1033\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033 Default Paragraph Font;}\n\
}\n\
{\\info{\\title GENERAL MESSAGE}{\\author Dave, W1HKJ}{\\creatim\\yr2009\\mo9\\dy25\\hr15\\min10}{\\author Dave, W1HKJ}{\\revtim\\yr2009\\mo9\\dy25\\hr15\\min10}{\\printim\\yr0\\mo0\\dy0\\hr0\\min0}{\\comment StarWriter}{\\vern3000}}\\deftab720\n\
{\\*\\pgdsctbl\n\
{\\pgdsc0\\pgdscuse195\\pgwsxn12240\\pghsxn15840\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\pgdscnxt0 Standard;}}\n\
{\\*\\pgdscno0}\\paperh15840\\paperw12240\\margl1800\\margr1800\\margt1440\\margb1440\\sectd\\sbknone\\pgwsxn12240\\pghsxn15840\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\ftnbj\\ftnstart1\\ftnrstcont\\ftnnar\\aenddoc\\aftnrstcont\\aftnstart1\\aftnnrlc\n\
\\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\clcbpat2\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0\\qc{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 GENERAL MESSAGE}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4148\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 TO:\\tab <to:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 POSITION:\\tab <p1:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4148\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 FROM: \\tab <fm:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 POSITION:\\tab <p2:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4148\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx6380\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 SUBJ: \\tab <sb:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 DATE:\\tab <d1:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 TIME:\\tab <t1:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\clcbpat3\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 MESSAGE:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trrh4752\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <mg:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\cellx4431\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 SIGNATURE:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <s1:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 POSITION:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <p3:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\clcbpat3\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 REPLY:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trrh4680\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <rp:}\n\
\\cell\\row\\pard \\trowd\\trql\\trleft0\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl10\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr10\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx1733\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx3429\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8619\n\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 DATE:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <d2:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 TIME:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <t2:}\n\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 SIGNATURE/POSITION:}\n\
\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\ql\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 <s2: / <p4:}\n\
\\cell\\row\\pard \\pard\\plain \\ltrpar\\s1\\cf0\\qj{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\rtlch\\af4\\afs20\\lang1025\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs20\\lang1033\\loch\\f4\\fs20\\lang1033 \n\
\\par }\n\
";
// rtf formated new line
// rtf substitute for the '\n' character in C++ string
// used to modify the body of the message or reply section.
const char nuline[] = "\\line ";
//\
//"}\n\
//\\par \\pard\\plain \\intbl\\ltrpar\\s1\\cf0{\\*\\hyphen2\\hyphlead2\\hyphtrail2\\hyphmax0}\\rtlch\\af1\\afs24\\lang1033\\ltrch\\dbch\\af1\\langfe1033\\hich\\f1\\fs24\\lang1033\\loch\\f1\\fs24\\lang1033 {\\rtlch \\ltrch\\loch\\f4\\fs20\\lang1033\\i0\\b0 ";
// ICS213 HTML TEMPLATE
const char ics_html_template[] =
"\
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n\
<html><head><meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\"><title>ics_html_template</title></head><body>\n\
<table style=\"text-align: left; width: 1000px;\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\">\n\
<tbody>\n\
<tr align=\"center\">\n\
<td colspan=\"3\" style=\"vertical-align: top; background-color: rgb(238, 238, 238);\"><big><span style=\"font-weight: bold;\"><br>\n\
GENERAL MESSAGE</span></big><br>\n\
(ics-213)<br>\n\
<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\">TO: <to:<br>\n\
</td>\n\
<td style=\"vertical-align: top; width: 50%;\" colspan=\"2\">POSITION: <p1:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\">FROM: <fm:<br>\n\
</td>\n\
<td colspan=\"2\" style=\"vertical-align: top;\">POSITION: <p2:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\">SUBJ: <sb:<br>\n\
</td>\n\
<td style=\"vertical-align: top; width: 25%;\">DATE: <d1:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\">TIME: <t1:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td colspan=\"3\" style=\"vertical-align: top; background-color: rgb(238, 238, 238);\">MESSAGE:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td colspan=\"3\" style=\"vertical-align: top;\"><mg:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\">SIGNATURE: <s1:<br>\n\
</td>\n\
<td colspan=\"2\" style=\"vertical-align: top;\">POSITION: <p3:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td colspan=\"3\" style=\"vertical-align: top; background-color: rgb(238, 238, 238);\">REPLY:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td colspan=\"3\" style=\"vertical-align: top;\"><rp:<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\">\n\
<table style=\"text-align: left; width: 100%;\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n\
<tbody>\n\
<tr>\n\
<td style=\"vertical-align: top; width: 50%; height: 100%;\">DATE:<br>\n\
<d2:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\">TIME:<br>\n\
<t2:<br>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
</td>\n\
<td style=\"vertical-align: top;\" colspan=\"2\">SIGNATURE/POSITION:<br>\n\
<p4:<br>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
<br>\n\
</body></html>\
";
// RADIOGRAM HTML TEMPLATE
const char rg_html_template[] = \
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n\
<html><head><meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\"><title>rg_html_template</title></head><body>\n\
<table style=\"text-align: left; width: 1000px; margin-left: auto; margin-right: auto;\" border=\"0\" cellpadding=\"2\" cellspacing=\"2\">\n\
<tbody>\n\
<tr>\n\
<td style=\"vertical-align: top;\">\n\
<div style=\"text-align: center;\"><font size=\"3\"><b>THE AMERICAN RADIO RELAY LEAGUE</b></font><br>\n\
<font size=\"6\"><b>RADIOGRAM</b></font><br>\n\
<big><font size=\"1\"><big>VIA AMATEUR RADIO</big></font></big><br>\n\
<br>\n\
</div>\n\
<table style=\"width: 100%;\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\">\n\
<tbody><tr><td style=\"width: 70px;\" class=\"heading\">NUMBER</td><td style=\"width: 100px;\" class=\"heading\">PRECEDENCE</td><td style=\"width: 40px;\" class=\"heading\">HX</td><td class=\"heading\">STATION OF ORIGIN</td><td style=\"width: 60px;\" class=\"heading\">CHECK</td><td class=\"heading\">PLACE OF ORIGIN</td><td style=\"width: 90px;\" class=\"heading\">TIME FILED</td><td style=\"width: 90px;\" class=\"heading\">DATE</td></tr><tr>\n\
<td style=\"vertical-align: top;\"><nbr:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><prec:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><hx:<hn:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><sta:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><ck:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><org:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><t1:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><d1:<br>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
<br>\n\
<table style=\"text-align: left; width: 100%;\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\">\n\
<tbody>\n\
<tr>\n\
<td style=\"vertical-align: top;\">TO<br>\n\
</td>\n\
<td style=\"vertical-align: top;\">THIS RADIO MESSAGE WAS RECEIVED AT<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\"><to:<br>\n\
</td>\n\
<td style=\"vertical-align: top; width: 50%;\"><rx:<br>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
<br>\n\
<table style=\"text-align: left; width: 100%;\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n\
<tbody>\n\
<tr>\n\
<td style=\"vertical-align: top;\">TELEPHONE NUMBER<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\"><tel:<br>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
<br>\n\
<table style=\"text-align: left; width: 100%;\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\">\n\
<tbody>\n\
<tr>\n\
<td style=\"vertical-align: top;\">\n\
<p><msg:</p>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
<br>\n\
<table style=\"text-align: left; width: 100%;\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\">\n\
<tbody>\n\
<tr>\n\
<td style=\"vertical-align: top; width: 340px;\">FROM<br>\n\
</td>\n\
<td style=\"vertical-align: top; width: 80px;\">DATE<br>\n\
</td>\n\
<td style=\"vertical-align: top; width: 80px;\">TIME<br>\n\
</td>\n\
<td style=\"vertical-align: top;\">SENT TO<br>\n\
</td>\n\
<td style=\"vertical-align: top; width: 80px;\">DATE<br>\n\
</td>\n\
<td style=\"vertical-align: top; width: 80px;\">TIME<br>\n\
</td>\n\
</tr>\n\
<tr>\n\
<td style=\"vertical-align: top;\"><sgn:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><d2:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><t2:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><sto:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><d3:<br>\n\
</td>\n\
<td style=\"vertical-align: top;\"><t3:<br>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
<br>\n\
</td>\n\
</tr>\n\
</tbody>\n\
</table>\n\
<br>\n\
</body></html>\
";
const char rg_rtf_template[] = "\
{\\rtf1\\ansi\\deff1\\adeflang1025\
{\\fonttbl{\\f0\\froman\\fprq2\\fcharset0 Liberation Serif{\\*\\falt Times New Roman};}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fswiss\\fprq2\\fcharset0 Arial;}{\\f3\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f4\\fswiss\\fprq2\\fcharset0 Liberation Sans{\\*\\falt Arial};}{\\f5\\fnil\\fprq0\\fcharset0 Tahoma Slashed;}}\
{\\colortbl;\\red0\\green0\\blue0;\\red128\\green128\\blue128;}\
{\\stylesheet{\\s1\\aspalpha\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033\\snext1 Normal;}\
{\\s2\\sb240\\sa120\\keepn\\aspalpha\\rtlch\\af4\\afs28\\lang255\\ltrch\\dbch\\af4\\langfe1033\\hich\\f4\\fs28\\lang1033\\loch\\f4\\fs28\\lang1033\\sbasedon1\\snext3 Heading;}\
{\\s3\\sa120\\aspalpha\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033\\sbasedon1\\snext3 Body Text;}\
{\\s4\\sa120\\aspalpha\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033\\sbasedon3\\snext4 List;}\
{\\s5\\sb120\\sa120\\aspalpha\\rtlch\\af5\\afs24\\lang255\\ai\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\i\\loch\\fs24\\lang1033\\i\\sbasedon1\\snext5 caption;}\
{\\s6\\aspalpha\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033\\sbasedon1\\snext6 Index;}\
{\\s7\\sb120\\sa120\\aspalpha\\rtlch\\afs24\\lang255\\ai\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\i\\loch\\fs24\\lang1033\\i\\sbasedon1\\snext7 caption;}\
{\\s8\\sb120\\sa120\\aspalpha\\rtlch\\afs24\\lang255\\ai\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\i\\loch\\fs24\\lang1033\\i\\sbasedon1\\snext8 WW-caption;}\
{\\s9\\aspalpha\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033\\sbasedon1\\snext9 Table Contents;}\
{\\s10\\qc\\aspalpha\\rtlch\\afs24\\lang255\\ab\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\b\\loch\\fs24\\lang1033\\b\\sbasedon9\\snext10 Table Heading;}\
{\\*\\cs12\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033 Default Paragraph Font;}\
}\
{\\info{\\title GENERAL MESSAGE}{\\author Dave}{\\creatim\\yr2010\\mo5\\dy9\\hr3\\min22}{\\revtim\\yr2010\\mo5\\dy9\\hr3\\min47}{\\printim\\yr0\\mo0\\dy0\\hr0\\min0}{\\comment StarWriter}{\\vern3000}}\\deftab720\
{\\*\\pgdsctbl\
{\\pgdsc0\\pgdscuse195\\pgwsxn12240\\pghsxn15840\\marglsxn720\\margrsxn720\\margtsxn1440\\margbsxn720\\pgdscnxt0 Standard;}}\
{\\*\\pgdscno0}\\paperh15840\\paperw12240\\margl720\\margr720\\margt1440\\margb720\\sectd\\sbknone\\pgwsxn12240\\pghsxn15840\\marglsxn720\\margrsxn720\\margtsxn1440\\margbsxn720\\ftnbj\\ftnstart1\\ftnrstcont\\ftnnar\\aenddoc\\aftnrstcont\\aftnstart1\\aftnnrlc\
\\trowd\\trql\\trleft3\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl115\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr115\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\qc\\aspalpha\\li14\\ri0\\lin14\\rin0\\fi0\\sb60\\sa60\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033{\\rtlch \\ltrch\\loch\\f1\\fs24\\lang1033\\i0\\b0{\\rtlch\\ltrch\\hich\\b\\loch\\b THE AMERICAN RADIO RELAY LEAGUE}}{\\rtlch \\ltrch\\loch\\f1\\fs24\\lang1033\\i0\\b0 \\line {\\rtlch\\ltrch\\hich\\fs48\\b\\loch\\fs48\\b RADIOGRAM}\\line {\\rtlch\\ltrch\\hich\\fs20\\loch\\fs20 VIA AMATEUR RADIO}}\
\\cell\\row\\pard \\trowd\\trql\\trleft3\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl115\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr115\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx1100\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx2675\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx3740\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx5753\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx6764\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8980\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx9949\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 NUMBER}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 PRECEDENCE}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 HX}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 STATION OF ORIGIN}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 CHECK}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 PLACE OF ORIGIN}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 TIME}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 DATE}\
\\cell\\row\\pard \\trowd\\trql\\trleft3\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl115\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr115\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx1100\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx2675\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx3740\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx5753\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx6764\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx8980\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx9949\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <nbr:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <prec:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <hx:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <sta:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <ck:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <org:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <t1:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <d1:}\
\\cell\\row\\pard \\pard\\plain \\ltrpar\\s1\\qj\\rtlch\\af2\\afs20\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs20\\lang1033\\loch\\f2\\fs20\\lang1033 \
\\par \\trowd\\trql\\trleft3\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl115\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr115\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx5402\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 TO}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 THIS RADIO MESSAGE WAS RECEIVED AT}\
\\cell\\row\\pard \\trowd\\trql\\trleft3\\trpaddft3\\trpaddt0\\trpaddfl3\\trpaddl115\\trpaddfb3\\trpaddb0\\trpaddfr3\\trpaddr115\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx5402\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s1\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <to:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s1\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <rx:}\
\\cell\\row\\pard \\pard\\plain \\ltrpar\\s1\\qj\\rtlch\\af2\\afs20\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs20\\lang1033\\loch\\f2\\fs20\\lang1033 \
\\par \\pard\\plain \\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 TELEPHONE NUMBER}\
\\par \\pard\\plain \\ltrpar\\s1\\aspalpha\\ql\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <tel:}\
\\par \\pard\\plain \\ltrpar\\s1\\aspalpha\\ql\\rtlch\\afs24\\lang255\\ltrch\\dbch\\langfe1033\\hich\\fs24\\lang1033\\loch\\fs24\\lang1033 \
\\par \\trowd\\trql\\trrh1936\\trpaddft3\\trpaddt55\\trpaddfl3\\trpaddl55\\trpaddfb3\\trpaddb55\\trpaddfr3\\trpaddr55\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <msg:}\
\\cell\\row\\pard \\pard\\plain \\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 \
\\par \\trowd\\trql\\trpaddft3\\trpaddt55\\trpaddfl3\\trpaddl55\\trpaddfb3\\trpaddb55\\trpaddfr3\\trpaddr55\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx3309\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx4479\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx5400\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx8777\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx9936\\clbrdrt\\brdrs\\brdrw1\\brdrcf1\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 FROM}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 DATE}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 TIME}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 SENT TO}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 DATE}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 TIME}\
\\cell\\row\\pard \\trowd\\trql\\trpaddft3\\trpaddt55\\trpaddfl3\\trpaddl55\\trpaddfb3\\trpaddb55\\trpaddfr3\\trpaddr55\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx3309\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx4479\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx5400\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx8777\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\cellx9936\\clbrdrl\\brdrs\\brdrw1\\brdrcf1\\clbrdrb\\brdrs\\brdrw1\\brdrcf1\\clbrdrr\\brdrs\\brdrw1\\brdrcf1\\cellx10800\
\\pard\\intbl\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <sgn:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <d2:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <t2:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <sto:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <d3:}\
\\cell\\pard\\plain \\intbl\\ltrpar\\s9\\aspalpha\\ql\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 {\\rtlch \\ltrch\\loch\\f2\\fs18\\lang1033\\i0\\b0 <t3:}\
\\cell\\row\\pard \\pard\\plain \\ltrpar\\s1\\qj\\rtlch\\af2\\afs18\\lang255\\ltrch\\dbch\\af2\\langfe1033\\hich\\f2\\fs18\\lang1033\\loch\\f2\\fs18\\lang1033 \
\\par }";