* Add flarq to build system and installers
* Modify test scripts
* Add flarq manual page
* Add flarq command line argument handling
* Improve flarq's windowing system support
pull/2/head
Stelios Bounanos 2009-05-26 19:57:44 +01:00
rodzic 91a1425e1d
commit d4b1a038ac
37 zmienionych plików z 8576 dodań i 185 usunięć

Wyświetl plik

@ -18,9 +18,11 @@ nsisinst:
(cd src && $(MAKE) $(AM_MAKEFLAGS) $@)
endif
if WANT_FLDIGI
if ENABLE_HAMLIB
hamlib-static:
(cd src && $(MAKE) $(AM_MAKEFLAGS) $@)
endif
endif
EXTRA_DIST = build-aux/config.rpath

Wyświetl plik

@ -8,19 +8,32 @@ AC_PREREQ(2.61)
dnl major and minor must be integers; patch may
dnl contain other characters or be empty
m4_define(FLDIGI_MAJOR, [3])
m4_define(FLDIGI_MINOR, [1])
m4_define(FLDIGI_PATCH, [2AF])
m4_define(FLDIGI_MINOR, [12])
m4_define(FLDIGI_PATCH, [AF])
m4_define(FLARQ_MAJOR, [4])
m4_define(FLARQ_MINOR, [1])
m4_define(FLARQ_PATCH, [])
AC_INIT([fldigi], FLDIGI_MAJOR.FLDIGI_MINOR[FLDIGI_PATCH], [w1hkj AT w1hkj DOT com])
AC_INIT([fldigi], FLDIGI_MAJOR.FLDIGI_MINOR[]FLDIGI_PATCH, [w1hkj AT w1hkj DOT com])
# substitute in Makefiles
AC_SUBST([FLDIGI_VERSION_MAJOR], [FLDIGI_MAJOR])
AC_SUBST([FLDIGI_VERSION_MINOR], [FLDIGI_MINOR])
AC_SUBST([FLDIGI_VERSION_PATCH], [FLDIGI_PATCH])
AC_SUBST([FLDIGI_VERSION], [FLDIGI_MAJOR.FLDIGI_MINOR[]FLDIGI_PATCH])
AC_SUBST([FLARQ_VERSION_MAJOR], [FLARQ_MAJOR])
AC_SUBST([FLARQ_VERSION_MINOR], [FLARQ_MINOR])
AC_SUBST([FLARQ_VERSION_PATCH], [FLARQ_PATCH])
AC_SUBST([FLARQ_VERSION], [FLARQ_MAJOR.FLARQ_MINOR[]FLARQ_PATCH])
# define in config.h
AC_DEFINE([FLDIGI_VERSION_MAJOR], [FLDIGI_MAJOR], [Major version number])
AC_DEFINE([FLDIGI_VERSION_MINOR], [FLDIGI_MINOR], [Minor version number])
AC_DEFINE([FLDIGI_VERSION_PATCH], ["FLDIGI_PATCH"], [Patch/alpha version string])
AC_DEFINE([FLDIGI_VERSION_MAJOR], [FLDIGI_MAJOR], [Fldigi major version number])
AC_DEFINE([FLDIGI_VERSION_MINOR], [FLDIGI_MINOR], [Fldigi minor version number])
AC_DEFINE([FLDIGI_VERSION_PATCH], ["FLDIGI_PATCH"], [Fldigi patch/alpha version string])
AC_DEFINE([FLARQ_VERSION_MAJOR], [FLARQ_MAJOR], [Flarq major version number])
AC_DEFINE([FLARQ_VERSION_MINOR], [FLARQ_MINOR], [Flarq minor version number])
AC_DEFINE([FLARQ_VERSION_PATCH], ["FLARQ_PATCH"], [Flarq patch/alpha version string])
AC_DEFINE([FLDIGI_VERSION], ["FLDIGI_MAJOR.FLDIGI_MINOR[]FLDIGI_PATCH"], [Fldigi version string])
AC_DEFINE([FLARQ_VERSION], ["FLARQ_MAJOR.FLARQ_MINOR[]FLARQ_PATCH"], [Flarq version string])
AC_SUBST([AC_CONFIG_ARGS], [$ac_configure_args])
@ -40,25 +53,30 @@ AC_CONFIG_HEADER([src/config.h])
AC_CONFIG_MACRO_DIR([m4])
PACKAGE_AUTHORS="Dave Freese, Stelios Bounanos, Leigh Klotz, and others"
FLDIGI_AUTHORS="Dave Freese, Stelios Bounanos, Leigh Klotz, and others"
FLARQ_AUTHORS="Dave Freese"
PACKAGE_HOME="http://www.w1hkj.com/Fldigi.html"
PACKAGE_DL="http://www.w1hkj.com/Downloads.html"
PACKAGE_PROJ="http://developer.berlios.de/project/showfiles.php?group_id=9149"
PACKAGE_DOCS="http://www.w1hkj.com/FldigiHelp/index.html"
PACKAGE_GUIDE="http://www.w1hkj.com/beginners.html"
AC_DEFINE_UNQUOTED([PACKAGE_AUTHORS], ["$PACKAGE_AUTHORS"], [Authors])
FLARQ_DOCS="http://www.w1hkj.com/FlarqHelpFiles/flarq.html"
AC_DEFINE_UNQUOTED([FLDIGI_AUTHORS], ["$FLDIGI_AUTHORS"], [Fldigi authors])
AC_DEFINE_UNQUOTED([FLARQ_AUTHORS], ["$FLARQ_AUTHORS"], [Flarq authors])
AC_DEFINE_UNQUOTED([PACKAGE_HOME], ["$PACKAGE_HOME"], [Home page])
AC_DEFINE_UNQUOTED([PACKAGE_DL], ["$PACKAGE_DL"], [Download page])
AC_DEFINE_UNQUOTED([PACKAGE_PROJ], ["$PACKAGE_PROJ"], [BerliOS page])
AC_DEFINE_UNQUOTED([PACKAGE_DOCS], ["$PACKAGE_DOCS"], [Docs index])
AC_DEFINE_UNQUOTED([PACKAGE_GUIDE], ["$PACKAGE_GUIDE"], [Beginners guide])
AC_SUBST([PACKAGE_AUTHORS], [$PACKAGE_AUTHORS])
AC_DEFINE_UNQUOTED([FLARQ_DOCS], ["$FLARQ_DOCS"], [Flarq Docs index])
AC_SUBST([FLDIGI_AUTHORS], [$FLDIGI_AUTHORS])
AC_SUBST([FLARQ_AUTHORS], [$FLARQ_AUTHORS])
AC_SUBST([PACKAGE_HOME], [$PACKAGE_HOME])
AC_SUBST([PACKAGE_DL], [$PACKAGE_DL])
AC_SUBST([PACKAGE_PROJ], [$PACKAGE_PROJ])
AC_SUBST([PACKAGE_DOCS], [$PACKAGE_DOCS])
AC_SUBST([PACKAGE_GUIDE], [$PACKAGE_GUIDE])
AC_SUBST([FLARQ_DOCS], [$FLARQ_DOCS])
# Checks for programs.
@ -108,6 +126,12 @@ AC_PRESERVE_HELP_ORDER
AM_GNU_GETTEXT([external])
AM_CONDITIONAL([USE_NLS], [test "x$USE_NLS" = "xyes"])
### Programs
# Determine if fldigi and flarq have been requested and can be built
# Set ac_cv_want_fldigi and ac_cv_want_flarq to yes/no
# Set WANT_FLDIGI and WANT_FLARQ Makefile conditionals
AC_FLDIGI_PROGRAMS
###### OS support
### OSX
# Set ac_cv_mac_universal to yes/no
@ -179,16 +203,18 @@ AC_FLDIGI_XMLRPC
AC_FLDIGI_OSS
### libpng
# Set ac_cv_png to yes/no (not used because we require libpng)
# Required if $ac_cv_want_fldigi is "yes"
# Set ac_cv_png to yes/no (not used)
# Define USE_PNG in config.h (as above)
# Substitute PNG_CFLAGS and PNG_LIBS in Makefile
AC_FLDIGI_PKG_CHECK([png], [libpng >= 1.2.8], [no], [no])
AC_FLDIGI_PKG_CHECK([png], [libpng >= 1.2.8], [$ac_cv_want_fldigi], [no])
### libsamplerate
# Set ac_cv_samplerate to yes/no (not used because we require samplerate)
# Required if $ac_cv_want_fldigi is "yes"
# Set ac_cv_samplerate to yes/no (not used)
# Define USE_SAMPLERATE in config.h (as above)
# Substitute SAMPLERATE_CFLAGS and SAMPLERATE_LIBS in Makefile
AC_FLDIGI_PKG_CHECK([samplerate], [samplerate >= 0.1.1], [no], [no])
AC_FLDIGI_PKG_CHECK([samplerate], [samplerate >= 0.1.1], [$ac_cv_want_fldigi], [no])
### libsndfile
# Set ac_cv_sndfile to yes/no
@ -252,6 +278,7 @@ AH_TOP([
#define CONFIG_H_
])
AH_BOTTOM([
#include "pkg.h"
#include "util.h"
#endif /* CONFIG_H_ */
])
@ -269,6 +296,15 @@ Configuration summary:
CPU optimizations ........... $ac_cv_opt
Debugging ................... $ac_cv_debug
fldigi ...................... $ac_cv_want_fldigi
flarq ....................... $ac_cv_want_flarq
i18n ........................ $USE_NLS
])
if test "x$ac_cv_want_fldigi" = "xyes"; then
AC_MSG_RESULT([ fldigi build options:
sndfile ..................... $ac_cv_sndfile
oss ......................... $ac_cv_oss
portaudio ................... $ac_cv_portaudio
@ -276,6 +312,5 @@ Configuration summary:
hamlib ...................... $ac_cv_hamlib
xmlrpc ...................... $ac_cv_xmlrpc
i18n ........................ $USE_NLS
])
fi

Wyświetl plik

@ -0,0 +1,9 @@
[Desktop Entry]
Name=Flarq
GenericName=Fldigi ARQ Utility
Comment=Amateur Radio Data Transfer with ARQ
Exec=flarq
Icon=flarq
Terminal=false
Type=Application
Categories=Network;HamRadio;

975
data/flarq.xpm 100644
Wyświetl plik

@ -0,0 +1,975 @@
/* XPM */
static char * flarq_xpm[] = {
"48 48 924 2",
" c None",
". c #5B1E0E",
"+ c #7F381B",
"@ c #A7624B",
"# c #A8624E",
"$ c #652012",
"% c #90555F",
"& c #AA7A86",
"* c #D4B5BE",
"= c #5E231C",
"- c #540900",
"; c #AC5D55",
"> c #B4644F",
", c #CF7F58",
"' c #FCAD85",
") c #FBB18F",
"! c #BA7057",
"~ c #965140",
"{ c #4F1509",
"] c #3B1314",
"^ c #45151B",
"/ c #895156",
"( c #AB8687",
"_ c #D7C6C1",
": c #FFFFFD",
"< c #FFFFFE",
"[ c #A58088",
"} c #945D68",
"| c #642D34",
"1 c #AC6352",
"2 c #A45C49",
"3 c #A35B46",
"4 c #CC8C74",
"5 c #F4B8A0",
"6 c #FAC5A8",
"7 c #FFD4B3",
"8 c #FFD8B8",
"9 c #FFDCBD",
"0 c #FFCFAC",
"a c #E7A380",
"b c #A2563C",
"c c #984D37",
"d c #A2787A",
"e c #997474",
"f c #AA8B91",
"g c #D1C0C6",
"h c #CAB3BD",
"i c #FBE6F1",
"j c #F9FFFF",
"k c #F8FAFA",
"l c #FEFFFF",
"m c #F3F2EF",
"n c #E9D7D9",
"o c #AC9092",
"p c #AC8C8D",
"q c #926A6E",
"r c #9A737B",
"s c #9B747C",
"t c #9E573C",
"u c #98543D",
"v c #9A5F47",
"w c #BF8469",
"x c #E9AE90",
"y c #FFCAA8",
"z c #FFD9B6",
"A c #FFDFBA",
"B c #FDE1BA",
"C c #FDDEB8",
"D c #FEDBBB",
"E c #FBDBC3",
"F c #F8DBC5",
"G c #FFDCC3",
"H c #FFD1AF",
"I c #FBB891",
"J c #E79B74",
"K c #9A4E30",
"L c #9B5644",
"M c #7D4F54",
"N c #D0BCBE",
"O c #F5EDE7",
"P c #FCF4EE",
"Q c #FFFAFC",
"R c #FFFFFF",
"S c #C7BDC6",
"T c #C4B0BD",
"U c #F4F3F8",
"V c #FDFCFF",
"W c #FFFDFF",
"X c #F7FFFF",
"Y c #DEDCDC",
"Z c #E6E1E1",
"` c #FFFAF9",
" . c #FFF3F5",
".. c #FFF4F7",
"+. c #E2D9DA",
"@. c #C1AEB5",
"#. c #C5A3AF",
"$. c #7B5057",
"%. c #7D2F24",
"&. c #C87559",
"*. c #EA9464",
"=. c #FFA873",
"-. c #FFB886",
";. c #FFC193",
">. c #FBBD92",
",. c #FBBE92",
"'. c #F9B98A",
"). c #FAB784",
"!. c #F8AE77",
"~. c #F9AC76",
"{. c #F3A97B",
"]. c #F3BB97",
"^. c #FDD7BD",
"/. c #FEDCC3",
"(. c #FFDBB4",
"_. c #FED2A6",
":. c #FEBF94",
"<. c #E89574",
"[. c #D07355",
"}. c #C06F4F",
"|. c #C09581",
"1. c #F0F1E9",
"2. c #E8FBF4",
"3. c #EEF9F3",
"4. c #FDFDFE",
"5. c #FDF8FE",
"6. c #EFE7ED",
"7. c #A6969F",
"8. c #F2E9EF",
"9. c #F7F9F9",
"0. c #FEFDFF",
"a. c #B2A3AC",
"b. c #CBBFC7",
"c. c #FCFBFE",
"d. c #F9F6F8",
"e. c #F5F8F7",
"f. c #F6FFFF",
"g. c #69302D",
"h. c #5D0100",
"i. c #A0402C",
"j. c #CC7D59",
"k. c #BF6F4E",
"l. c #C16645",
"m. c #F6996A",
"n. c #FCA264",
"o. c #F8995F",
"p. c #F3925E",
"q. c #F29968",
"r. c #F29F71",
"s. c #E79469",
"t. c #C26640",
"u. c #CF6A43",
"v. c #FD9366",
"w. c #FF9B68",
"x. c #F99B63",
"y. c #F19F6E",
"z. c #EEAB80",
"A. c #F8C59B",
"B. c #FBD3AB",
"C. c #FCD2AA",
"D. c #FCD9B1",
"E. c #F8D1AA",
"F. c #F9C596",
"G. c #FFB371",
"H. c #FEAC6B",
"I. c #D69B78",
"J. c #EAD5D1",
"K. c #ECF6FA",
"L. c #F1FAFB",
"M. c #FFFBFF",
"N. c #FDF4FB",
"O. c #FDFAFB",
"P. c #D3CACE",
"Q. c #D8C7CE",
"R. c #F6FAF8",
"S. c #FEFCFF",
"T. c #C4B4C0",
"U. c #D3C8D3",
"V. c #FAFBFF",
"W. c #FBFBFF",
"X. c #FBFDFF",
"Y. c #F7FEFF",
"Z. c #F8DEDA",
"`. c #B76C57",
" + c #D76E4E",
".+ c #F89463",
"++ c #F9A36A",
"@+ c #FFB783",
"#+ c #F5A27A",
"$+ c #D0744E",
"%+ c #EB9060",
"&+ c #E68655",
"*+ c #EA8855",
"=+ c #F1935B",
"-+ c #F0975D",
";+ c #D27B43",
">+ c #E18450",
",+ c #E98B5A",
"'+ c #DD7C50",
")+ c #D07242",
"!+ c #F9A06A",
"~+ c #FFA771",
"{+ c #F6A26B",
"]+ c #EE9D67",
"^+ c #EEA26D",
"/+ c #F2AA77",
"(+ c #ECA776",
"_+ c #EDAC7B",
":+ c #EEB17D",
"<+ c #F1A55D",
"[+ c #FFA45C",
"}+ c #DC855E",
"|+ c #D9A3A2",
"1+ c #F5F0FC",
"2+ c #E9F7FA",
"3+ c #F6FDFE",
"4+ c #FDFBFE",
"5+ c #F8F9F9",
"6+ c #D1CFD0",
"7+ c #CCB9C0",
"8+ c #F9FAF9",
"9+ c #FBFAFC",
"0+ c #F7F0F5",
"a+ c #D7C6D1",
"b+ c #E7E0EB",
"c+ c #EAF4FB",
"d+ c #F1F9FD",
"e+ c #F9FEFF",
"f+ c #F2FCFB",
"g+ c #F6F5F5",
"h+ c #CA9E8E",
"i+ c #F4A27A",
"j+ c #FAA77A",
"k+ c #F6B280",
"l+ c #F5C896",
"m+ c #FED8AD",
"n+ c #FFCFAB",
"o+ c #FFCCA8",
"p+ c #F8C39B",
"q+ c #F5BC9C",
"r+ c #F2B48F",
"s+ c #ECA878",
"t+ c #F3A86C",
"u+ c #FCAA68",
"v+ c #FAA664",
"w+ c #F9A76A",
"x+ c #EC9B65",
"y+ c #D38048",
"z+ c #E69056",
"A+ c #E0874E",
"B+ c #FAA26B",
"C+ c #FAA470",
"D+ c #F5A06F",
"E+ c #F59E6A",
"F+ c #FA9C62",
"G+ c #F99A5D",
"H+ c #F49E6C",
"I+ c #F89E63",
"J+ c #FF9D5E",
"K+ c #ED8F64",
"L+ c #B67466",
"M+ c #F5EBF0",
"N+ c #E4F6F9",
"O+ c #EAFCFA",
"P+ c #FDFFFF",
"Q+ c #F5F8F8",
"R+ c #E6E6E7",
"S+ c #BEAAB2",
"T+ c #E9E2E6",
"U+ c #FCF9FB",
"V+ c #DFCFD2",
"W+ c #C4AEB7",
"X+ c #FAF0F9",
"Y+ c #EAF0F6",
"Z+ c #F3F8FC",
"`+ c #FBFEFF",
" @ c #F8F9F8",
".@ c #EADFDD",
"+@ c #B47A60",
"@@ c #E99560",
"#@ c #F3BB8E",
"$@ c #FDD8B6",
"%@ c #FFDDC1",
"&@ c #FDCFB2",
"*@ c #FECEAD",
"=@ c #FBD0A7",
"-@ c #F7D3A7",
";@ c #FAD1AA",
">@ c #F9CAA1",
",@ c #F8C392",
"'@ c #FAB179",
")@ c #F9A468",
"!@ c #F9A166",
"~@ c #F69F67",
"{@ c #F9A470",
"]@ c #FDA56E",
"^@ c #F69A5A",
"/@ c #D37536",
"(@ c #D1753D",
"_@ c #EF9868",
":@ c #F8A67A",
"<@ c #F39F71",
"[@ c #FB9E68",
"}@ c #FF9D60",
"|@ c #FA9C65",
"1@ c #FAA06B",
"2@ c #FA9C63",
"3@ c #FDA26C",
"4@ c #D5926E",
"5@ c #F2DFDA",
"6@ c #F0F3FD",
"7@ c #EDF3F8",
"8@ c #FEFCFC",
"9@ c #F9FAFA",
"0@ c #F3F4F6",
"a@ c #A2929B",
"b@ c #C0B1BA",
"c@ c #C4B0B0",
"d@ c #AC9398",
"e@ c #FEF1F8",
"f@ c #EEF2F7",
"g@ c #F2F3F8",
"h@ c #FEF9FB",
"i@ c #FBF2F0",
"j@ c #EFD9D8",
"k@ c #E09D81",
"l@ c #F0A268",
"m@ c #F9CCA1",
"n@ c #FDD3B7",
"o@ c #F2B094",
"p@ c #F3A377",
"q@ c #F5A66E",
"r@ c #F4A873",
"s@ c #F3A476",
"t@ c #F4A66D",
"u@ c #F6A367",
"v@ c #F9A269",
"w@ c #FBA169",
"x@ c #FD9F69",
"y@ c #FC9F69",
"z@ c #FC9F68",
"A@ c #F99F65",
"B@ c #F4A471",
"C@ c #F9B385",
"D@ c #F6A36E",
"E@ c #F19359",
"F@ c #D1743D",
"G@ c #E3905E",
"H@ c #F5A370",
"I@ c #F59F69",
"J@ c #FAA062",
"K@ c #FBA05E",
"L@ c #F8A26B",
"M@ c #F9A46F",
"N@ c #FAA160",
"O@ c #EA9C62",
"P@ c #C3998A",
"Q@ c #F7EBFA",
"R@ c #EEEAF8",
"S@ c #F6F4F6",
"T@ c #FCFEFF",
"U@ c #F4F4F7",
"V@ c #E4DCE3",
"W@ c #D4C1CD",
"X@ c #F2F5FA",
"Y@ c #AEA19F",
"Z@ c #C2B0B5",
"`@ c #F9F8FC",
" # c #E5F2F8",
".# c #EAF5FB",
"+# c #F0F5F5",
"@# c #F9F7F7",
"## c #D3B3A9",
"$# c #DF916B",
"%# c #FAA76E",
"&# c #F3B787",
"*# c #F0AE84",
"=# c #EE9D6B",
"-# c #F6A15D",
";# c #F7A559",
"># c #F9A160",
",# c #FE9B68",
"'# c #FD9D67",
")# c #FC9F67",
"!# c #FA9F69",
"~# c #F9A06C",
"{# c #F69F6A",
"]# c #F5A067",
"^# c #F9A464",
"/# c #F5A35C",
"(# c #E9A779",
"_# c #F8D5C1",
":# c #FFCEAA",
"<# c #FAB079",
"[# c #E1884B",
"}# c #CD713A",
"|# c #F39961",
"1# c #FAA56C",
"2# c #F8A668",
"3# c #FFA864",
"4# c #EF9965",
"5# c #E59462",
"6# c #FBA360",
"7# c #F49958",
"8# c #BE8469",
"9# c #E7DAE0",
"0# c #EFF2FB",
"a# c #EBF0F3",
"b# c #FBFEFE",
"c# c #F6F6FA",
"d# c #FAF3FA",
"e# c #B7A0AF",
"f# c #C4C0C8",
"g# c #D4CECD",
"h# c #DED5DD",
"i# c #EEF5FC",
"j# c #E4F0FD",
"k# c #E6F2FC",
"l# c #EBF5FB",
"m# c #EAE0E9",
"n# c #B67A69",
"o# c #ED8F5B",
"p# c #FCA368",
"q# c #F59E66",
"r# c #F9A067",
"s# c #F9A165",
"t# c #F99F66",
"u# c #FAA069",
"v# c #FAA169",
"w# c #FAA166",
"x# c #F8A264",
"y# c #F7A262",
"z# c #F9A162",
"A# c #F59E5E",
"B# c #FCA464",
"C# c #F0A172",
"D# c #F8C7AA",
"E# c #FFDFBE",
"F# c #F7D7AF",
"G# c #F7C497",
"H# c #F19C6B",
"I# c #DC7947",
"J# c #E48552",
"K# c #DD8553",
"L# c #BF6033",
"M# c #E28B60",
"N# c #E99B6D",
"O# c #F2A367",
"P# c #FA9F60",
"Q# c #E89874",
"R# c #E2CBBF",
"S# c #E9F6F7",
"T# c #EAF1FA",
"U# c #F6F6FB",
"V# c #FAF9FC",
"W# c #F9F1FA",
"X# c #BBABB5",
"Y# c #BDAEB7",
"Z# c #DDCBCC",
"`# c #FBF1F9",
" $ c #EFEAF7",
".$ c #E9EFFC",
"+$ c #EAF0FC",
"@$ c #F1F6FE",
"#$ c #E2CDCB",
"$$ c #D28869",
"%$ c #FFA26B",
"&$ c #F99F64",
"*$ c #FAA065",
"=$ c #FAA167",
"-$ c #FAA168",
";$ c #F9A066",
">$ c #F7A168",
",$ c #F7A167",
"'$ c #F7A165",
")$ c #F9A163",
"!$ c #FB9F63",
"~$ c #FA9E65",
"{$ c #F89D64",
"]$ c #FEA667",
"^$ c #F4B072",
"/$ c #FBD2AB",
"($ c #FBDFCB",
"_$ c #F9DECA",
":$ c #FBCBAA",
"<$ c #EFA579",
"[$ c #D3764B",
"}$ c #AE4621",
"|$ c #EA865A",
"1$ c #F8A674",
"2$ c #F8A16F",
"3$ c #FAA66A",
"4$ c #E38A65",
"5$ c #D5AFA0",
"6$ c #F1FDFF",
"7$ c #E9EFFF",
"8$ c #EEEDFC",
"9$ c #F5F4FD",
"0$ c #F0EDF6",
"a$ c #F5E9EF",
"b$ c #C6AFB4",
"c$ c #A28385",
"d$ c #FFF7FE",
"e$ c #F1E8F9",
"f$ c #EBEFF9",
"g$ c #EBEFFA",
"h$ c #F0EFF8",
"i$ c #D5B09E",
"j$ c #ED9B6E",
"k$ c #FDA168",
"l$ c #F89F66",
"m$ c #F89F65",
"n$ c #F6A066",
"o$ c #F5A166",
"p$ c #F6A065",
"q$ c #F8A065",
"r$ c #F9A167",
"s$ c #FCA06A",
"t$ c #F99B68",
"u$ c #DA7F51",
"v$ c #E88B52",
"w$ c #F9A15D",
"x$ c #F1AF7D",
"y$ c #F8D0B1",
"z$ c #FBDCC7",
"A$ c #FDDEC9",
"B$ c #FED4B9",
"C$ c #FBBC9A",
"D$ c #E58C65",
"E$ c #DB794C",
"F$ c #F69F61",
"G$ c #FF9F61",
"H$ c #FD9D60",
"I$ c #FAA163",
"J$ c #F79C6E",
"K$ c #DCA289",
"L$ c #EAE3E3",
"M$ c #ECF2FF",
"N$ c #E7F0FB",
"O$ c #E7F3FA",
"P$ c #E7EFF2",
"Q$ c #FEF7F9",
"R$ c #B49DA0",
"S$ c #C0A5A8",
"T$ c #F7F6FB",
"U$ c #E9EAFB",
"V$ c #E9F0F8",
"W$ c #E9F0FA",
"X$ c #F5F1FA",
"Y$ c #DBAD8E",
"Z$ c #EF975E",
"`$ c #FBA16A",
" % c #F7A065",
".% c #F6A165",
"+% c #F6A067",
"@% c #F6A570",
"#% c #F4A673",
"$% c #EC9A6C",
"%% c #D1794A",
"&% c #E68752",
"*% c #FDA26F",
"=% c #F2A374",
"-% c #F9C29B",
";% c #FFE0C1",
">% c #FDDDBC",
",% c #F4C29D",
"'% c #E09266",
")% c #D67F46",
"!% c #FB9E5C",
"~% c #FF9D63",
"{% c #FBA972",
"]% c #CE805C",
"^% c #C8A39D",
"/% c #F2F5FD",
"(% c #EAF1F4",
"_% c #E6F2F3",
":% c #E6F5F4",
"<% c #E7F1F1",
"[% c #EAEDED",
"}% c #E6E0E3",
"|% c #E7F3F7",
"1% c #DEF1FD",
"2% c #E7F2FB",
"3% c #EBF3FB",
"4% c #E7D7DC",
"5% c #D5916A",
"6% c #FCA265",
"7% c #F89E68",
"8% c #F8A066",
"9% c #F29F67",
"0% c #EFA56E",
"a% c #FBC490",
"b% c #F6BC8A",
"c% c #E9A26E",
"d% c #D8834F",
"e% c #E58456",
"f% c #FF9B6E",
"g% c #FAA16D",
"h% c #EDB075",
"i% c #F3C790",
"j% c #FCD7AD",
"k% c #FED4B6",
"l% c #F6BB94",
"m% c #CE8350",
"n% c #D6854A",
"o% c #FBA16F",
"p% c #F39F6D",
"q% c #F1A86D",
"r% c #E89568",
"s% c #D79F8D",
"t% c #F4EDEE",
"u% c #F0EEF8",
"v% c #ECEEF6",
"w% c #ECEFF9",
"x% c #ECEDF7",
"y% c #F1F0FC",
"z% c #F0F4FA",
"A% c #E6F2F5",
"B% c #DCF5FD",
"C% c #E3EBF7",
"D% c #F9FBFF",
"E% c #C19A96",
"F% c #D57E55",
"G% c #FDA366",
"H% c #F99F67",
"I% c #F99F63",
"J% c #FA9F63",
"K% c #F99E64",
"L% c #F8A86F",
"M% c #F1A66F",
"N% c #F8B985",
"O% c #FDD4A2",
"P% c #F2BD89",
"Q% c #F5A971",
"R% c #E28955",
"S% c #D97847",
"T% c #F69962",
"U% c #F4A66A",
"V% c #E9A46A",
"W% c #F2AA79",
"X% c #F9AE84",
"Y% c #F6AB7C",
"Z% c #EA9B63",
"`% c #E49159",
" & c #FFA572",
".& c #FBA36B",
"+& c #F8A363",
"@& c #FFA66F",
"#& c #CE7F5A",
"$& c #E9CAC3",
"%& c #F2F3FF",
"&& c #EBEDFD",
"*& c #F1EFFF",
"=& c #F8F1FF",
"-& c #FAEFFE",
";& c #FDF8FF",
">& c #FCF4F9",
",& c #F4F9FA",
"'& c #F9F7FF",
")& c #FDE9EB",
"!& c #D99781",
"~& c #F59668",
"{& c #F8A165",
"]& c #F8A164",
"^& c #F7A063",
"/& c #F9A164",
"(& c #FBA069",
"_& c #D98350",
":& c #DA8954",
"<& c #E79A68",
"[& c #FAB887",
"}& c #F6B181",
"|& c #F5A46D",
"1& c #F4A15F",
"2& c #E6914E",
"3& c #D37D41",
"4& c #EA9569",
"5& c #F8A078",
"6& c #FC9E6C",
"7& c #FE9D5C",
"8& c #FF9F5B",
"9& c #FFA46B",
"0& c #E58B5F",
"a& c #F09769",
"b& c #F39562",
"c& c #F09762",
"d& c #EF9A6A",
"e& c #D67F58",
"f& c #BB8678",
"g& c #F6F6FF",
"h& c #F7F4FF",
"i& c #EADFE9",
"j& c #D8C4CE",
"k& c #DABEC8",
"l& c #E3C8DB",
"m& c #E9CAD1",
"n& c #ECD7D4",
"o& c #EEDFE4",
"p& c #B98787",
"q& c #D9805B",
"r& c #F9A266",
"s& c #F6A360",
"t& c #F79E64",
"u& c #F6A466",
"v& c #F6A465",
"w& c #F9A065",
"x& c #FD9E67",
"y& c #DC7E4D",
"z& c #C7693C",
"A& c #ED9167",
"B& c #F4976B",
"C& c #FBA160",
"D& c #FFAC67",
"E& c #F49B60",
"F& c #D6784A",
"G& c #E5895F",
"H& c #F09662",
"I& c #FFA866",
"J& c #FFAD6E",
"K& c #E07F5D",
"L& c #7B2B1B",
"M& c #853D24",
"N& c #963E27",
"O& c #8D472B",
"P& c #824730",
"Q& c #843A2A",
"R& c #712A23",
"S& c #BA9092",
"T& c #DABABA",
"U& c #8B6E6B",
"V& c #4D3232",
"W& c #5D2D3D",
"X& c #68353A",
"Y& c #734744",
"Z& c #6A4A4C",
"`& c #663235",
" * c #934833",
".* c #DF8766",
"+* c #F99766",
"@* c #FB9E61",
"#* c #FFA66E",
"$* c #FCA16D",
"%* c #F99E69",
"&* c #F7A169",
"** c #F3A266",
"=* c #F4A365",
"-* c #FB9F68",
";* c #F6A16A",
">* c #F6A16B",
",* c #FCA06C",
"'* c #FC9D69",
")* c #FF9D6B",
"!* c #FF9E6C",
"~* c #F69563",
"{* c #D67949",
"]* c #D47348",
"^* c #F79567",
"/* c #FA9F68",
"(* c #F9A265",
"_* c #FFA166",
":* c #FC9B65",
"<* c #E98D5B",
"[* c #C4683A",
"}* c #BE6339",
"|* c #B06D4E",
"1* c #732F25",
"2* c #64201E",
"3* c #8B463B",
"4* c #B6573A",
"5* c #D06B39",
"6* c #D37A42",
"7* c #F4986B",
"8* c #FC9C73",
"9* c #F99F6C",
"0* c #F4A766",
"a* c #F1A561",
"b* c #F49E63",
"c* c #FB9E6B",
"d* c #F7A069",
"e* c #F9A16A",
"f* c #FCA16C",
"g* c #FE9F6C",
"h* c #FFA06C",
"i* c #FBA468",
"j* c #F49D5F",
"k* c #ED925B",
"l* c #C86A3A",
"m* c #DF8653",
"n* c #FBA26F",
"o* c #F9A369",
"p* c #FFA673",
"q* c #F6936D",
"r* c #7C1705",
"s* c #7C3625",
"t* c #C76E51",
"u* c #DE7B53",
"v* c #CA693D",
"w* c #BF633B",
"x* c #E88C57",
"y* c #E98E54",
"z* c #F9A267",
"A* c #FEA86F",
"B* c #F4A167",
"C* c #F6A362",
"D* c #F19C5B",
"E* c #DD8848",
"F* c #E89255",
"G* c #E68F53",
"H* c #F49D63",
"I* c #FEA76D",
"J* c #FCA36A",
"K* c #FAA466",
"L* c #F29B5B",
"M* c #EC8E5C",
"N* c #DB8154",
"O* c #D6874F",
"P* c #E79659",
"Q* c #FFA778",
"R* c #D07B64",
"S* c #6E1913",
"T* c #6C1F18",
"U* c #963729",
"V* c #EC9366",
"W* c #FFB374",
"X* c #E98F56",
"Y* c #B24C23",
"Z* c #ED8661",
"`* c #E78B58",
" = c #FAA561",
".= c #F8A262",
"+= c #F6A164",
"@= c #F7A466",
"#= c #E49459",
"$= c #C16E36",
"%= c #E08C58",
"&= c #E1895C",
"*= c #EF9265",
"== c #FFA372",
"-= c #FEA36A",
";= c #F5A268",
">= c #F6AA6A",
",= c #DC8545",
"'= c #D47440",
")= c #C87153",
"!= c #69241A",
"~= c #AB5E46",
"{= c #E88666",
"]= c #E37B53",
"^= c #D26E43",
"/= c #F4996C",
"(= c #CC6C39",
"_= c #E5834A",
":= c #F39462",
"<= c #FA9F6F",
"[= c #F6A16D",
"}= c #F49F6B",
"|= c #F69E6D",
"1= c #DD7F55",
"2= c #C7653C",
"3= c #E7825E",
"4= c #E4895D",
"5= c #F1A364",
"6= c #FFAC66",
"7= c #FEA067",
"8= c #CD7151",
"9= c #6E2215",
"0= c #7F2427",
"a= c #902F20",
"b= c #E5895A",
"c= c #FFB175",
"d= c #F2915D",
"e= c #B7522B",
"f= c #C05D34",
"g= c #D67649",
"h= c #F69E68",
"i= c #FDA46B",
"j= c #FCA069",
"k= c #FFA46E",
"l= c #F49460",
"m= c #EB8E5D",
"n= c #D06F41",
"o= c #C9683C",
"p= c #D67D55",
"q= c #A55135",
"r= c #682616",
"s= c #8F4C2E",
"t= c #DE8C68",
"u= c #CA6E51",
"v= c #C4654C",
"w= c #FFA579",
"x= c #F09360",
"y= c #CC7345",
"z= c #DA844C",
"A= c #EE9556",
"B= c #F59D5E",
"C= c #FFB174",
"D= c #FFB075",
"E= c #FFB073",
"F= c #FFA472",
"G= c #B85D49",
"H= c #6C1515",
"I= c #8B5446",
"J= c #73251B",
"K= c #95402C",
"L= c #E48F68",
"M= c #FFAA79",
"N= c #F59D70",
"O= c #EB9061",
"P= c #E48A59",
"Q= c #C57046",
"R= c #B26340",
"S= c #B16947",
"T= c #B36943",
"U= c #A65D40",
"V= c #7B3629",
"W= c #6A230D",
"X= c #BA6848",
"Y= c #D57C5E",
"Z= c #D1745E",
"`= c #CE7260",
" - c #923C2D",
".- c #84382F",
"+- c #813F39",
"@- c #7B423B",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" . + @ # $ % & * ",
" = - ; > , ' ) ! ~ { ] ^ / ( _ : < ",
"[ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l ",
"m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W ",
"X Y Z ` ...+.@.#.$. %.&.*.=.-.;.>.,.'.).!.~.{.].^./.9 (._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.",
"R a.b.c.d.e.f.R W g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.",
"R T.U.V.W.X.Y.V Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+",
"0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+",
"V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@R ",
"c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@",
"Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#",
"g#h#i#j#k#l#m#n#o#p#~@q#r#s#s#s#t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#",
"Z#`# $.$+$@$#$$$%$&$&$*$=$-$r#r#;$>$,$'$)$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$~@3$4$5$6$7$8$9$0$a$b$",
"c$d$e$f$g$h$i$j$k$A@;$=$;$;$l$m$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$",
"S$T$U$V$W$X$Y$Z$`$;$=$;$=$=$;$;$;$ % %.% %+%@%#%$%%%&%*%=%-%D ;%>%,%'%)%!%~%t#{%]%^%/%(%_%:%<%[%",
"}%|%1%2%3%4%5%6%7%r#=$m$;$;$=$;$8%&$&$q$+%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%",
"z%A%B%C%D%E%F%G%H%=$=$;$;$;$=$;$m$I%J%K%v@L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&",
";&>&,&'&)&!&~&{&]&;$;$;$;$;$;$;$;$^&/&K%(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&",
"l&m&n&o&p&q&=.r&s&t&t&r$;$;$m$;$r$u&v&w&x&t$y&z&A&B&x@C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V& ",
"W&X&Y&Z&`& *.*+*@*#*$*%*&***=*A@-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*1* 2* ",
" 3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*z@i*j*k*l*m*n*8%o*p*q*r* ",
" s*t*u*v*w*x*y*z*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S* ",
" T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!= ",
" ~={=]=^=/=(=_=:=<=n*[=}=|=1=2=3=4=5=6=7=8=9= ",
" 0=a=b=c=d=e=f=g=o%h=i=j=k=l=m=n=o=p=q=r= ",
" s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H= ",
" I=J=K=L=M=N=O=P=Q=R=S=T=U=V= ",
" W=X=Y=Z=`= -.-+-@- ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

BIN
data/mac/flarq.icns 100644

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 12 KiB

Wyświetl plik

@ -4,28 +4,59 @@
# Copyright (c) 2009 Stelios Bounanos, M0GLD.
# Variables
!define FLDIGI_DESCRIPTION "${FLDIGI_NAME} ${FLDIGI_VERSION}"
!define FLDIGI_STRING "${FLDIGI_NAME}-${FLDIGI_VERSION}"
!define FLARQ_DESCRIPTION "${FLARQ_NAME} ${FLARQ_VERSION}"
!define FLARQ_STRING "${FLARQ_NAME}-${FLARQ_VERSION}"
!ifdef HAVE_FLDIGI
!define PRODUCT_BINARY "${FLDIGI_BINARY}"
!define PRODUCT_NAME "${FLDIGI_NAME}"
!define PRODUCT_VERSION "${FLDIGI_VERSION}"
!define PRODUCT_STRING "${FLDIGI_STRING}"
!define PRODUCT_DESCRIPTION "${FLDIGI_DESCRIPTION}"
!else ifdef HAVE_FLARQ
!define PRODUCT_BINARY "${FLARQ_BINARY}"
!define PRODUCT_NAME "${FLARQ_NAME}"
!define PRODUCT_VERSION "${FLARQ_VERSION}"
!define PRODUCT_STRING "${FLARQ_STRING}"
!define PRODUCT_DESCRIPTION "${FLARQ_DESCRIPTION}"
!else
!error "Either HAVE_FLDIGI or HAVE_FLARQ must be defined"
!endif
# Compression options
SetCompressor /SOLID lzma
# This function is called before displaying the first installer page.
# It aborts the installation if the Windows version is too old.
!include WinVer.nsh
Function .onInit
${IfNot} ${AtLeastWin2000}
MessageBox MB_ICONSTOP "Sorry, your Windows version is too old.$\n${PRODUCT_NAME} requires Windows 2000 or later."
Abort
${EndIf}
FunctionEnd
# The name of the installer
Name "${PROGRAM_NAME} ${PROGRAM_VERSION}"
Name "${PRODUCT_DESCRIPTION}"
# The file to write
OutFile ${INSTALLER_FILE}
# The default installation directory
InstallDir $PROGRAMFILES\${PROGRAM_NAME}-${PROGRAM_VERSION}
InstallDir $PROGRAMFILES\${PRODUCT_STRING}
# Registry key to check for directory (so if you install again, it will
# overwrite the old one automatically)
!define INSTALL_DIR_REG_KEY SOFTWARE\${PROGRAM_NAME}-${PROGRAM_VERSION}
!define INSTALL_DIR_REG_KEY SOFTWARE\${PRODUCT_STRING}
InstallDirRegKey HKLM "${INSTALL_DIR_REG_KEY}" "Install_Dir"
# Request application privileges for Windows Vista
RequestExecutionLevel admin
# License
LicenseText "${PROGRAM_NAME} is distributed under the GNU GPL as detailed \
LicenseText "${PRODUCT_NAME} is distributed under the GNU GPL as detailed \
below. You must abide by the terms of this license if you modify or \
redistribute the program." "Continue"
LicenseData "${LICENSE_FILE}"
@ -34,10 +65,10 @@ SubCaption 0 ": License Information"
# Other options
BrandingText " "
InstProgressFlags smooth
VIAddVersionKey ProductName "${PROGRAM_NAME}"
VIAddVersionKey ProductVersion "${PROGRAM_VERSION}"
VIAddVersionKey FileVersion "${PROGRAM_VERSION}"
VIAddVersionKey FileDescription "${PROGRAM_NAME} ${PROGRAM_VERSION} installer"
VIAddVersionKey ProductName "${PRODUCT_NAME}"
VIAddVersionKey ProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey FileVersion "${PRODUCT_VERSION}"
VIAddVersionKey FileDescription "${FLDIGI_DESCRIPTION} installer"
VIAddVersionKey LegalCopyright "Fldigi developers"
VIAddVersionKey OriginalFilename "${INSTALLER_FILE}"
VIProductVersion "3.0.0.0"
@ -53,50 +84,111 @@ UninstPage uninstConfirm
UninstPage instfiles
# Registry uninstall path
!define REG_UNINSTALL_PATH Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}-${PROGRAM_VERSION}
!define REG_UNINSTALL_PATH Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_STRING}
# The stuff to install
Section "${PROGRAM_NAME}"
SectionIn RO
# This is a hidden section and is always selected. It writes the uninstall
# registry keys and uninstaller binary.
Section -install
# Set output path to the installation directory.
SetOutPath $INSTDIR
# List files to be installed here
File "${BINARY}"
# Write the installation path into the registry
# Write the installation paths into the registry
WriteRegStr HKLM "${INSTALL_DIR_REG_KEY}" "Install_Dir" "$INSTDIR"
# Write the uninstall keys for Windows
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "DisplayName" "${PROGRAM_NAME} ${PROGRAM_VERSION}"
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "DisplayVersion" "${PROGRAM_VERSION}"
WriteRegStr HKLM "${REG_UNINSTALL_PATH}" "DisplayName" "${PRODUCT_DESCRIPTION}"
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" "Fldigi 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'
WriteRegDWORD HKLM "${REG_UNINSTALL_PATH}" "NoModify" 1
WriteRegDWORD HKLM "${REG_UNINSTALL_PATH}" "NoRepair" 1
WriteUninstaller "uninstall.exe"
SectionEnd
!ifdef HAVE_FLDIGI
Var WANT_FLDIGI
!endif
!ifdef HAVE_FLARQ
Var WANT_FLARQ
!endif
# This section is present (and required) if the installer contains fldigi.
!ifdef HAVE_FLDIGI
Section "Fldigi"
SectionIn RO
SetOutPath $INSTDIR
File "${FLDIGI_BINARY}"
StrCpy $WANT_FLDIGI "true"
SectionEnd
!endif
# This section is present if the installer contains flarq. It is optional if
# the installer also contains fldigi.
!ifdef HAVE_FLARQ
Section "Flarq"
!ifndef HAVE_FLDIGI
SectionIn RO
!endif
SetOutPath $INSTDIR
File "${FLARQ_BINARY}"
StrCpy $WANT_FLARQ "true"
SectionEnd
!endif
# Start Menu path
!define SM_PATH_BASE $SMPROGRAMS\${PROGRAM_NAME}
!define SM_PATH ${SM_PATH_BASE}\${PROGRAM_NAME}-${PROGRAM_VERSION}
!define SM_PATH_BASE $SMPROGRAMS\${PRODUCT_NAME}
!define SM_PATH ${SM_PATH_BASE}\${PRODUCT_STRING}
# The following sections are optional
Section "Start Menu Shortcuts"
CreateDirectory "${SM_PATH}"
CreateShortCut "${SM_PATH}\${PROGRAM_NAME}.lnk" "$INSTDIR\${BINARY}" "" "$INSTDIR\${BINARY}" 0
CreateShortCut "${SM_PATH}\Beginners' Guide.lnk" "${GUIDE_URL}"
CreateShortCut "${SM_PATH}\Documentation.lnk" "${DOCS_URL}"
!ifdef HAVE_FLDIGI
${If} $WANT_FLDIGI == 'true'
CreateShortCut "${SM_PATH}\${FLDIGI_NAME}.lnk" "$INSTDIR\${FLDIGI_BINARY}" "" "$INSTDIR\${FLDIGI_BINARY}" 0
CreateShortCut "${SM_PATH}\${FLDIGI_NAME} Beginners' Guide.lnk" "${GUIDE_URL}"
CreateShortCut "${SM_PATH}\${FLDIGI_NAME} Documentation.lnk" "${FLDIGI_DOCS_URL}"
${EndIf}
!endif
!ifdef HAVE_FLARQ
${If} $WANT_FLARQ == 'true'
CreateShortCut "${SM_PATH}\${FLARQ_NAME}.lnk" "$INSTDIR\${FLARQ_BINARY}" "" "$INSTDIR\${FLARQ_BINARY}" 0
CreateShortCut "${SM_PATH}\${FLARQ_NAME} Documentation.lnk" "${FLARQ_DOCS_URL}"
${EndIf}
!endif
CreateShortCut "${SM_PATH}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
SectionEnd
Section "Desktop Shortcut"
CreateShortCut "$DESKTOP\${PROGRAM_NAME} ${PROGRAM_VERSION}.lnk" "$INSTDIR\${BINARY}" "" "$INSTDIR\${BINARY}" 0
Section "Desktop Shortcuts"
!ifdef HAVE_FLDIGI
${If} $WANT_FLDIGI == 'true'
CreateShortCut "$DESKTOP\${FLDIGI_DESCRIPTION}.lnk" "$INSTDIR\${FLDIGI_BINARY}" "" \
"$INSTDIR\${FLDIGI_BINARY}" 0
${EndIf}
!endif
!ifdef HAVE_FLARQ
${If} $WANT_FLARQ == 'true'
CreateShortCut "$DESKTOP\${FLARQ_DESCRIPTION}.lnk" "$INSTDIR\${FLARQ_BINARY}" "" \
"$INSTDIR\${FLARQ_BINARY}" 0
${EndIf}
!endif
SectionEnd
# This is unselected by default
Section /o "Quick Launch Shortcut"
CreateShortCut "$QUICKLAUNCH\${PROGRAM_NAME} ${PROGRAM_VERSION}.lnk" "$INSTDIR\${BINARY}" "" "$INSTDIR\${BINARY}" 0
Section /o "Quick Launch Shortcuts"
!ifdef HAVE_FLDIGI
${If} $WANT_FLDIGI == 'true'
CreateShortCut "$QUICKLAUNCH\${FLDIGI_DESCRIPTION}}.lnk" "$INSTDIR\${FLDIGI_BINARY}" "" \
"$INSTDIR\${FLDIGI_BINARY}" 0
${EndIf}
!endif
!ifdef HAVE_FLARQ
${If} $WANT_FLARQ == 'true'
CreateShortCut "$QUICKLAUNCH\${FLARQ_DESCRIPTION}.lnk" "$INSTDIR\${FLARQ_BINARY}" "" \
"$INSTDIR\${FLARQ_BINARY}" 0
${EndIf}
!endif
SectionEnd
# Uninstaller
@ -106,16 +198,43 @@ Section "Uninstall"
DeleteRegKey HKLM "${INSTALL_DIR_REG_KEY}"
# Remove files and uninstaller
Delete $INSTDIR\${BINARY}
Delete $INSTDIR\uninstall.exe
!ifdef HAVE_FLDIGI
Delete /REBOOTOK $INSTDIR\${FLDIGI_BINARY}
!endif
!ifdef HAVE_FLARQ
Delete /REBOOTOK $INSTDIR\${FLARQ_BINARY}
!endif
Delete /REBOOTOK $INSTDIR\uninstall.exe
# Remove shortcuts, if any
Delete "${SM_PATH}\*.*"
Delete "$DESKTOP\${PROGRAM_NAME} ${PROGRAM_VERSION}.lnk"
Delete "$QUICKLAUNCH\${PROGRAM_NAME} ${PROGRAM_VERSION}.lnk"
!ifdef HAVE_FLDIGI
Delete "$DESKTOP\${FLDIGI_DESCRIPTION}.lnk"
Delete "$QUICKLAUNCH\${FLDIGI_DESCRIPTION}.lnk"
!endif
!ifdef HAVE_FLARQ
Delete "$DESKTOP\${FLARQ_DESCRIPTION}.lnk"
Delete "$QUICKLAUNCH\${FLARQ_DESCRIPTION}.lnk"
!endif
# Remove directories used
RMDir "${SM_PATH}"
RMDir "${SM_PATH_BASE}"
RMDir "$INSTDIR"
SectionEnd
# Offer to reboot the machine if the reboot flag is nonzero. This flag is set by
# commands that specify the /REBOOTOK switch if the BINARY_* files were in use
# during uninstallation. Stupid Windows.
Function un.onGUIEnd
IfRebootFlag 0 noreboot
MessageBox MB_YESNO|MB_ICONQUESTION \
"A reboot is required to finish removing ${PRODUCT_NAME}. Do you wish to reboot now?" IDNO noreboot
Reboot
noreboot:
FunctionEnd
# Tell the user if we could not reboot for some reason.
Function un.onRebootFailed
MessageBox MB_OK|MB_ICONSTOP "Reboot failed. Please reboot manually." /SD IDOK
FunctionEnd

Wyświetl plik

@ -1,13 +1,23 @@
# Copyright (C) 2009 Stelios Bounanos, M0GLD (m0gld AT enotty DOT net)
ASCIIDOC_CONF = asciidoc.conf
ASCIIDOC_SRC = fldigi.1.txt fldigi-shell.1.txt guide.txt
ASCIIDOC_MAN_DIST = fldigi.1 fldigi-shell.1
ASCIIDOC_MAN_INST = fldigi.1
ASCIIDOC_SRC = fldigi.1.txt fldigi-shell.1.txt flarq.1.txt guide.txt
ASCIIDOC_MAN_DIST = fldigi.1 fldigi-shell.1 flarq.1
ASCIIDOC_MAN_INST =
ASCIIDOC_HTML =
if WANT_FLDIGI
ASCIIDOC_MAN_INST += fldigi.1
if ENABLE_XMLRPC
ASCIIDOC_MAN_INST += fldigi-shell.1
ASCIIDOC_MAN_INST += fldigi-shell.1
endif
ASCIIDOC_HTML += guide.html
endif
if WANT_FLARQ
ASCIIDOC_MAN_INST += flarq.1
endif
ASCIIDOC_HTML = guide.html
EXTRA_DIST = $(ASCIIDOC_CONF) $(ASCIIDOC_SRC) $(ASCIIDOC_MAN_DIST)

147
doc/flarq.1.txt 100644
Wyświetl plik

@ -0,0 +1,147 @@
FLARQ(1)
=========
== NAME ==
flarq - ARQ data transfer utility for fldigi
== SYNOPSIS ==
*flarq* ['OPTIONS']
== DESCRIPTION ==
*Flarq* (fast light automatic repeat request) is a file transfer application
that is based on the ARQ specification developed by Paul Schmidt, K9PS. It is
capable of transmitting and receiving frames of ARQ data via fldigi, as well as
MultiPSK on Windows.
== OPTIONS ==
Long options begin with two hyphens and are handled by flarq. The option names
may be abbreviated to any unambiguous substring, and the option argument may be
separated from the name by a space or equals sign, as per +getopt(3)+.
Short options begin with a single hyphen and are passed directly to FLTK. They
may be abbreviated only as indicated.
*--arq-protocol* 'TYPE'::
Set the ARQ protocol. May be either ``fldigi'' or ``multipsk''. Defaults to
``fldigi''.
*--arq-server-address* 'HOSTNAME'::
Set the ARQ TCP server address. Defaults to ``127.0.0.1''. 'HOSTNAME' may be
any 'node name' string accepted by +getaddrinfo(3)+.
*--arq-server-port* 'PORT'::
Set the ARQ TCP server port. Defaults to ``7322''. 'PORT' may be any 'service
name' string accepted by +getaddrinfo(3)+.
*--debug*::
Enable debugging messages.
*--version*::
Print version information and exit.
*--build-info*::
Print build information and exit.
*--help*::
Print options summary and exit.
=== Standard FLTK options ===
*-bg, -background* 'COLOUR'::
Set the background colour.
*-bg2, -background2* 'COLOUR'::
Set the secondary (text) background colour.
*-di, -display* 'DISPLAY'::
Specifies the X server to connect to; see +X(7)+.
*-dn, -dnd* or *-nodn, -nodnd*::
Enable or disable drag and drop copy and paste in text fields.
*-fg, -foreground* 'COLOUR'::
Set the foreground colour.
*-g, -geometry* 'GEOMETRY'::
Set the initial window size and position. *Flarq may not honour this option*.
*-i, -iconic*::
Start flarq in iconified state. *Flarq may not honour this option*.
*-k, -kbd* or *-nok, -nokbd*::
Enable or disable visible keyboard focus in non-text widgets.
*-na, -name* 'CLASSNAME'::
Set the window class. Defaults to ``Flarq''.
*-ti, -title* 'WINDOWTITLE'::
Set the window title. Defaults to ``flarq - <callsign>''.
=== Additional UI options ===
*--font* 'FONT[:SIZE]'::
Set the widget font and (optionally) size. Defaults to ``sans:12''.
== FILES ==
$HOME/.flarq::
The main settings file.
The following directories are used to interface with MUAs such as Sylpheed:
$HOME/Mail/ARQin::
Stores incoming email messages.
$HOME/Mail/ARQout::
Stores outgoing email messages.
$HOME/Mail/ARQsent::
Stores sent email messages.
The following directories are used for ARQ file transfer:
$HOME/ARQrecv::
Stores received files.
$HOME/ARQsend::
Stores files to be transmitted.
$HOME/ARQfiles/logfile.txt::
Stores transfer logs.
== BUGS ==
* There are no command line arguments to override the default configuration file
and ARQ and Mail directories.
== SEE ALSO ==
fldigi(1), getaddrinfo(3), getopt(3), X(7)
== RESOURCES ==
Flarq web site: http://www.w1hkj.com/flarq_main.html
Fldigi web site: http://www.w1hkj.com/Fldigi.html
BerliOS project page: http://developer.berlios.de/projects/fldigi/
ARQ specification by Paul Schmidt, K9PS: http://www.w1hkj.com/FlarqHelpFiles/ARQ2.pdf
== AUTHORS ==
Flarq was written by David Freese, +W1HKJ+.
This manual page was written by Stelios Bounanos <sb[at]enotty(dot)net>.
== COPYING ==
License GPLv2+: GNU GPL version 2 or later.
////////////////////////////////////////////////////////////////////////////////
// Emacs settings
// Local Variables:
// mode: doc
// End:
////////////////////////////////////////////////////////////////////////////////

Wyświetl plik

@ -3,27 +3,50 @@ AC_DEFUN([AC_FLDIGI_SH_DQ], [
])
AC_DEFUN([AC_FLDIGI_BUILD_INFO], [
# define build flags and substitute in Makefile.in
BUILD_CPPFLAGS="$BUILD_CPPFLAGS -I\$(srcdir) -I\$(srcdir)/include -I\$(srcdir)/irrxml \
# Define build flags and substitute in Makefile.in
# CPPFLAGS
FLDIGI_BUILD_CPPFLAGS="-I\$(srcdir) -I\$(srcdir)/include -I\$(srcdir)/irrxml \
-I\$(srcdir)/fileselector $BOOST_CPPFLAGS"
AC_SUBST([BUILD_CPPFLAGS])
BUILD_CXXFLAGS="$PORTAUDIO_CFLAGS $FLTK_CFLAGS $SNDFILE_CFLAGS $SAMPLERATE_CFLAGS \
# CXXFLAGS
FLDIGI_BUILD_CXXFLAGS="$PORTAUDIO_CFLAGS $FLTK_CFLAGS $SNDFILE_CFLAGS $SAMPLERATE_CFLAGS \
$PULSEAUDIO_CFLAGS $HAMLIB_CFLAGS $PNG_CFLAGS $XMLRPC_CFLAGS $MAC_UNIVERSAL_CFLAGS \
$INTL_CFLAGS $PTW32_CFLAGS $BFD_CFLAGS -pipe -Wall -fexceptions $OPT_CFLAGS $DEBUG_CFLAGS"
BUILD_LDFLAGS="$MAC_UNIVERSAL_LDFLAGS"
if test "x$ac_cv_debug" = "xyes"; then
BUILD_CXXFLAGS="$BUILD_CXXFLAGS -UNDEBUG"
BUILD_LDFLAGS="$BUILD_LDFLAGS $RDYNAMIC"
else
BUILD_CXXFLAGS="$BUILD_CXXFLAGS -DNDEBUG"
fi
AC_SUBST([BUILD_CXXFLAGS])
AC_SUBST([BUILD_LDFLAGS])
BUILD_LDADD="$PORTAUDIO_LIBS $BOOST_LDFLAGS $FLTK_LIBS $SNDFILE_LIBS $SAMPLERATE_LIBS \
# LDFLAGS
FLDIGI_BUILD_LDFLAGS="$MAC_UNIVERSAL_LDFLAGS"
# LDADD
FLDIGI_BUILD_LDADD="$PORTAUDIO_LIBS $BOOST_LDFLAGS $FLTK_LIBS $SNDFILE_LIBS $SAMPLERATE_LIBS \
$PULSEAUDIO_LIBS $HAMLIB_LIBS $PNG_LIBS $XMLRPC_LIBS $INTL_LIBS $PTW32_LIBS $BFD_LIBS $EXTRA_LIBS"
AC_SUBST([BUILD_LDADD])
# CPPFLAGS
FLARQ_BUILD_CPPFLAGS="-I\$(srcdir) -I\$(srcdir)/include -I\$(srcdir)/fileselector \
-I\$(srcdir)/flarq-src -I\$(srcdir)/flarq-src/include $BOOST_CPPFLAGS"
# CXXFLAGS
FLARQ_BUILD_CXXFLAGS="$FLTK_CFLAGS $MAC_UNIVERSAL_CFLAGS $INTL_CFLAGS $PTW32_CFLAGS $BFD_CFLAGS \
-pipe -Wall -fexceptions $OPT_CFLAGS $DEBUG_CFLAGS"
# LDFLAGS
FLARQ_BUILD_LDFLAGS="$MAC_UNIVERSAL_LDFLAGS"
# LDADD
FLARQ_BUILD_LDADD="$BOOST_LDFLAGS $FLTK_LIBS $INTL_LIBS $PTW32_LIBS $BFD_LIBS $EXTRA_LIBS"
if test "x$ac_cv_debug" = "xyes"; then
FLDIGI_BUILD_CXXFLAGS="$FLDIGI_BUILD_CXXFLAGS -UNDEBUG"
FLDIGI_BUILD_LDFLAGS="$FLDIGI_BUILD_LDFLAGS $RDYNAMIC"
FLARQ_BUILD_CXXFLAGS="$FLARQ_BUILD_CXXFLAGS -UNDEBUG"
FLARQ_BUILD_LDFLAGS="$FLARQ_BUILD_LDFLAGS $RDYNAMIC"
else
FLDIGI_BUILD_CXXFLAGS="$FLDIGI_BUILD_CXXFLAGS -DNDEBUG"
FLARQ_BUILD_CXXFLAGS="$FLARQ_BUILD_CXXFLAGS -DNDEBUG"
fi
AC_SUBST([FLDIGI_BUILD_CPPFLAGS])
AC_SUBST([FLDIGI_BUILD_CXXFLAGS])
AC_SUBST([FLDIGI_BUILD_LDFLAGS])
AC_SUBST([FLDIGI_BUILD_LDADD])
AC_SUBST([FLARQ_BUILD_CPPFLAGS])
AC_SUBST([FLARQ_BUILD_CXXFLAGS])
AC_SUBST([FLARQ_BUILD_LDFLAGS])
AC_SUBST([FLARQ_BUILD_LDADD])
#define build variables for config.h
AC_DEFINE_UNQUOTED([BUILD_BUILD_PLATFORM], ["$build"], [Build platform])
@ -49,11 +72,15 @@ $PULSEAUDIO_LIBS $HAMLIB_LIBS $PNG_LIBS $XMLRPC_LIBS $INTL_LIBS $PTW32_LIBS $BFD
AC_FLDIGI_SH_DQ([$CXX -v 2>&1 | tail -1])
AC_DEFINE_UNQUOTED([BUILD_COMPILER], [$ac_sh_dq], [Compiler])
AC_FLDIGI_SH_DQ([echo $BUILD_CPPFLAGS $BUILD_CXXFLAGS])
AC_DEFINE_UNQUOTED([BUILD_CXXFLAGS], [$ac_sh_dq], [Compiler flags])
AC_FLDIGI_SH_DQ([echo $FLDIGI_BUILD_CPPFLAGS $FLDIGI_BUILD_CXXFLAGS])
AC_DEFINE_UNQUOTED([FLDIGI_BUILD_CXXFLAGS], [$ac_sh_dq], [Fldigi compiler flags])
AC_FLDIGI_SH_DQ([echo $FLDIGI_BUILD_LDFLAGS $FLDIGI_BUILD_LDADD])
AC_DEFINE_UNQUOTED([FLDIGI_BUILD_LDFLAGS], [$ac_sh_dq], [Fldigi linker flags])
AC_FLDIGI_SH_DQ([echo $BUILD_LDFLAGS $BUILD_LDADD])
AC_DEFINE_UNQUOTED([BUILD_LDFLAGS], [$ac_sh_dq], [Linker flags])
AC_FLDIGI_SH_DQ([echo $FLARQ_BUILD_CPPFLAGS $FLARQ_BUILD_CXXFLAGS])
AC_DEFINE_UNQUOTED([FLARQ_BUILD_CXXFLAGS], [$ac_sh_dq], [Flarq compiler flags])
AC_FLDIGI_SH_DQ([echo $FLARQ_BUILD_LDFLAGS $FLARQ_BUILD_LDADD])
AC_DEFINE_UNQUOTED([FLARQ_BUILD_LDFLAGS], [$ac_sh_dq], [Flarq linker flags])
if test "x$LC_ALL_saved" != "x"; then
LC_ALL="$LC_ALL_saved"

21
m4/progs.m4 100644
Wyświetl plik

@ -0,0 +1,21 @@
AC_DEFUN([AC_FLDIGI_PROGRAMS], [
AC_ARG_ENABLE([fldigi],
AC_HELP_STRING([--disable-fldigi], [do not build fldigi]),
[case "${enableval}" in
yes|no) ac_cv_want_fldigi="${enableval}" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --disable-fldigi]) ;;
esac],
[ac_cv_want_fldigi=yes])
AM_CONDITIONAL([WANT_FLDIGI], [test "x$ac_cv_want_fldigi" = "xyes"])
AC_ARG_ENABLE([flarq],
AC_HELP_STRING([--disable-flarq], [do not build flarq]),
[case "${enableval}" in
yes|no) ac_cv_want_flarq="${enableval}" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --disable-flarq]) ;;
esac],
[ac_cv_want_flarq=yes])
AM_CONDITIONAL([WANT_FLARQ], [test "x$ac_cv_want_flarq" = "xyes"])
])

Wyświetl plik

@ -3,9 +3,10 @@
### Script to create the .app structure for osx
### 20080227 Stelios Bounanos M0GLD
### Updated 20080727: enable the .icns support
### Updated 20090525: add flarq
if [ $# -ne 4 ]; then
echo "Syntax: $0 data-dir build-dir bundle-dir static-bundle-dir" >&2
if [ $# -ne 2 ]; then
echo "Syntax: $0 data-dir build-dir" >&2
exit 1
fi
@ -17,8 +18,8 @@ fi
PWD=`pwd`
data="${PWD}/$1"
build="${PWD}/$2"
bundle_dir="$3"
static_bundle_dir="$4"
bundle_dir="$APPBUNDLE_NOLIBS"
static_bundle_dir="$APPBUNDLE"
# more sanity checks
for d in "$data" "$build"; do
test -d "$d" && continue
@ -31,8 +32,9 @@ if ! test -w "$build"; then
fi
plist="${data}/mac/Info.plist.in"
icon="${data}/mac/fldigi.icns"
for f in "$plist" "$icon"; do
fldigi_icon="${data}/mac/fldigi.icns"
flarq_icon="${data}/mac/flarq.icns"
for f in "$plist" "$fldigi_icon" "$flarq_icon"; do
test -r "$f" && continue
echo "E: ${f}: not readable" >&2
exit 1
@ -44,67 +46,91 @@ upcase1()
sed 'h; s/\(^.\).*/\1/; y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/; G; s/\n.//'
}
identifier="com.w1hkj.$PACKAGE_TARNAME"
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"
version="${FLDIGI_VERSION_MAJOR}.${FLDIGI_VERSION_MINOR}"
function copy_libs()
{
list="$1"
while test "x$list" != "x"; do
change="$list"
list=""
for obj in $change; do
for lib in `otool -L $obj | \
sed -n 's!^.*[[:space:]]\([^[:space:]]*\.dylib\).*$!\1!p' | \
grep -Ev '^/(usr/lib|System)'`; do
libfn="`basename $lib`"
if ! test -f "Frameworks/$libfn"; then
cp "$lib" "Frameworks/$libfn"
install_name_tool -id "@executable_path/../Frameworks/$libfn" "Frameworks/$libfn"
list="$list Frameworks/$libfn"
fi
install_name_tool -change "$lib" "@executable_path/../Frameworks/$libfn" "$obj"
done
done
done
}
function bundle()
{
appname="${binary}-${appversion}.app"
cd "$build"
# bundle the binary
echo "creating ${build}/$bundle_dir/$appname"
$mkinstalldirs "$bundle_dir/$appname/Contents/MacOS" "$bundle_dir/$appname/Contents/Resources"
cd "$bundle_dir"
$INSTALL_PROGRAM "${build}/$binary" "$appname/Contents/MacOS"
test "x$NOSTRIP" = "x" && ${STRIP:-strip} -S "$appname/Contents/MacOS/$binary"
$INSTALL_DATA "$icon" "$appname/Contents/Resources"
echo "APPL${signature}" > "$appname/Contents/PkgInfo"
sed -e "s!%%IDENTIFIER%%!${identifier}!g; s!%%NAME%%!${name}!g;\
s!%%SIGNATURE%%!${signature}!g; s!%%BINARY%%!${binary}!g;\
s!%%VERSION%%!${version}!g; s!%%ICON%%!${icon##*/}!g;" < "$plist" > "$appname/Contents/Info.plist"
if grep '%%[A-Z]*%%' "$appname/Contents/Info.plist"; then
echo "E: unsubstituted variables in $appname/Contents/Info.plist" >&2
exit 1
fi
# bundle the binary and its non-standard dependencies
echo "creating ${build}/$static_bundle_dir/$appname"
cd ..
$mkinstalldirs "$static_bundle_dir"
cp -pR "$bundle_dir/$appname" "$static_bundle_dir"
$mkinstalldirs "$static_bundle_dir/$appname/Contents/Frameworks"
cd "$static_bundle_dir/$appname/Contents"
copy_libs "MacOS/$binary"
}
set -e
cd "$build"
if test "x$WANT_FLDIGI" = "xyes"; then
identifier="com.w1hkj.$PACKAGE_TARNAME"
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="$fldigi_icon"
version="${FLDIGI_VERSION_MAJOR}.${FLDIGI_VERSION_MINOR}"
appversion="$FLDIGI_VERSION"
# bundle the binary
appname="${PACKAGE_TARNAME}-${PACKAGE_VERSION}.app"
echo "creating ${build}/$bundle_dir/$appname"
$mkinstalldirs "$bundle_dir/$appname/Contents/MacOS" "$bundle_dir/$appname/Contents/Resources"
cd "$bundle_dir"
$INSTALL_PROGRAM "${build}/$binary" "$appname/Contents/MacOS"
if test "x$STRIP" != "x0"; then
strip -S "$appname/Contents/MacOS/$binary"
fi
$INSTALL_DATA "$icon" "$appname/Contents/Resources"
echo "APPL${signature}" > "$appname/Contents/PkgInfo"
sed -e "s!%%IDENTIFIER%%!${identifier}!g; s!%%NAME%%!${name}!g;\
s!%%SIGNATURE%%!${signature}!g; s!%%BINARY%%!${binary}!g;\
s!%%VERSION%%!${version}!g; s!%%ICON%%!${icon##*/}!g;" < "$plist" > "$appname/Contents/Info.plist"
if grep '%%[A-Z]*%%' "$appname/Contents/Info.plist"; then
echo "E: unsubstituted variables in $appname/Contents/Info.plist" >&2
exit 1
bundle
fi
if test "x$WANT_FLARQ" = "xyes"; then
identifier="com.w1hkj.flarq"
name="Flarq"
signature="flrq"
binary="flarq"
icon="$flarq_icon"
version="${FLARQ_VERSION_MAJOR}.${FLARQ_VERSION_MINOR}"
appversion="$FLARQ_VERSION"
# bundle the binary and its non-standard dependencies
echo "creating ${build}/$static_bundle_dir/$appname"
cd ..
$mkinstalldirs "$static_bundle_dir"
cp -pR "$bundle_dir/$appname" "$static_bundle_dir"
$mkinstalldirs "$static_bundle_dir/$appname/Contents/Frameworks"
cd "$static_bundle_dir/$appname/Contents"
list="MacOS/$binary"
while test "x$list" != "x"; do
change="$list"
list=""
for obj in $change; do
for lib in `otool -L $obj | \
sed -n 's!^.*[[:space:]]\([^[:space:]]*\.dylib\).*$!\1!p' | \
grep -Ev '^/(usr/lib|System)'`; do
libfn="`basename $lib`"
if ! test -f "Frameworks/$libfn"; then
cp "$lib" "Frameworks/$libfn"
install_name_tool -id "@executable_path/../Frameworks/$libfn" "Frameworks/$libfn"
list="$list Frameworks/$libfn"
fi
install_name_tool -change "$lib" "@executable_path/../Frameworks/$libfn" "$obj"
done
done
done
bundle
fi
cd "$build"
echo $ECHO_N "creating disk image"
hdiutil create -ov -srcfolder "$bundle_dir" -format UDZO -tgtimagekey zlib-level=9 "$PACKAGE_TARNAME-$PACKAGE_VERSION-nolibs.dmg"
hdiutil create -ov -srcfolder "$bundle_dir" -format UDZO -tgtimagekey zlib-level=9 "${APPBUNDLE}-nolibs.dmg"
echo $ECHO_N "creating disk image"
hdiutil create -ov -srcfolder "$static_bundle_dir" -format UDZO -tgtimagekey zlib-level=9 "$PACKAGE_TARNAME-$PACKAGE_VERSION.dmg"
hdiutil create -ov -srcfolder "$static_bundle_dir" -format UDZO -tgtimagekey zlib-level=9 "${APPBUNDLE}.dmg"

Wyświetl plik

@ -42,4 +42,4 @@ case "$target_os" in
;;
esac
$CXX -o ${1}${EXEEXT} $AM_CXXFLAGS $CXXFLAGS $AM_LDFLAGS $LDFLAGS $fldigi_OBJECTS $fldigi_LDADD
$CXX -o ${1}${EXEEXT} $AM_CXXFLAGS $fldigi_CXXFLAGS $CXXFLAGS $AM_LDFLAGS $fldigi_LDFLAGS $LDFLAGS $fldigi_OBJECTS $fldigi_LDADD

Wyświetl plik

@ -4,8 +4,8 @@
### 20090510 Stelios Bounanos M0GLD
if [ $# -ne 3 ]; then
echo "Syntax: $0 data-dir build-dir installer-file" >&2
if [ $# -ne 2 ]; then
echo "Syntax: $0 data-dir build-dir" >&2
exit 1
fi
@ -17,7 +17,6 @@ fi
PWD=`pwd`
data="${PWD}/$1"
build="${PWD}/$2"
installer_file="$3"
# more sanity checks
for d in "$data" "$build"; do
@ -30,20 +29,26 @@ if ! test -w "$build"; then
exit 1
fi
# aaaaaaaaaargh => Aaaaaaaaaargh
upcase1()
{
sed 'h; s/\(^.\).*/\1/; y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/; G; s/\n.//'
}
set -e
binary="$PACKAGE_TARNAME".exe
if test "x$STRIP" != "x0"; then
$STRIP -S "$binary"
fldigi_name=Fldigi
fldigi_bin=fldigi.exe
flarq_name=Flarq
flarq_bin=flarq.exe
if test "x$WANT_FLDIGI" != "xyes" && test "x$WANT_FLARQ" != "xyes"; then
echo "E: refusing to create empty installer" >&2
exit 1
fi
if test "x$WANT_FLDIGI" = "xyes"; then
test "x$NOSTRIP" = "x" && $STRIP -S "$fldigi_bin"
def="$def -DHAVE_FLDIGI -DFLDIGI_NAME=$fldigi_name -DFLDIGI_BINARY=$fldigi_bin -DFLDIGI_VERSION=$PACKAGE_VERSION"
fi
if test "x$WANT_FLARQ" = "xyes"; then
test "x$NOSTRIP" = "x" && $STRIP -S "$flarq_bin"
def="$def -DHAVE_FLARQ -DFLARQ_NAME=$flarq_name -DFLARQ_BINARY=$flarq_bin -DFLARQ_VERSION=$FLARQ_VERSION"
fi
name="$(echo $PACKAGE_TARNAME | upcase1)"
$MAKENSIS -V2 -NOCD -D"INSTALLER_FILE=$installer_file" -D"LICENSE_FILE=$data/../COPYING" \
-D"PROGRAM_NAME=$name" -D"PROGRAM_VERSION=$PACKAGE_VERSION" \
-D"BINARY=$binary" -D"SUPPORT_URL=$PACKAGE_HOME" -D"UPDATES_URL=$PACKAGE_DL" \
-D"DOCS_URL=$PACKAGE_DOCS" -D"GUIDE_URL=$PACKAGE_GUIDE" "$data/win32/fldigi.nsi"
$MAKENSIS -V2 -NOCD -D"INSTALLER_FILE=$INSTALLER_FILE" -D"LICENSE_FILE=$data/../COPYING" \
-D"SUPPORT_URL=$PACKAGE_HOME" -D"UPDATES_URL=$PACKAGE_DL" -D"FLDIGI_DOCS_URL=$PACKAGE_DOCS" \
-D"FLARQ_DOCS_URL=$FLARQ_DOCS" -D"GUIDE_URL=$PACKAGE_GUIDE" $def "$data/win32/fldigi.nsi"

Wyświetl plik

@ -3,10 +3,11 @@
# Check for translation units that don't include config.h
r=0
for f in $fldigi_SOURCES; do
for f in $fldigi_SOURCES $flarq_SOURCES; do
base=$(echo $f | sed -n '/\.[cC][cCpPxX]\{1,\}/ { s!.*/\(.*\)\.[^.]*$!\1!; p }')
if test "x$base" != "x" && test -f "${base}.${OBJEXT}" && \
! grep "include.*config\.h" "${srcdir}/${f}" >/dev/null; then
test "x$base" = "x" && continue
test -f "fldigi-${base}.${OBJEXT}" || test -f "flarq-${base}.${OBJEXT}" || continue
if ! grep "include.*config\.h" "${srcdir}/${f}" >/dev/null; then
echo "E: $f does not include config.h" >&2
r=1
fi

Wyświetl plik

@ -3,7 +3,7 @@
# Check for files with CRLF line terminators
r=0
for f in $fldigi_SOURCES $EXTRA_fldigi_SOURCES $EXTRA_DIST; do
for f in $fldigi_SOURCES $flarq_SOURCES $EXTRA_fldigi_SOURCES $EXTRA_DIST; do
base=$(echo $f | sed -n '/\.[cC][cCpPxX]\{1,\}/ { s!.*/\(.*\)\.[^.]*$!\1!; p }')
if test "x$base" != "x" && grep " " "${srcdir}/${f}" >/dev/null; then
echo "E: $f has CRLF line terminators" >&2

Wyświetl plik

@ -1,18 +1,32 @@
# Copyright (C) 2007-2009 Stelios Bounanos, M0GLD (m0gld AT enotty DOT net)
# Copyright (c) 2008 Dave Freese, W1HKJ (w1hkj AT w1hkj DOT com)
bin_PROGRAMS = fldigi
bin_PROGRAMS =
if WANT_FLDIGI
bin_PROGRAMS += fldigi
endif
if WANT_FLARQ
bin_PROGRAMS += flarq
endif
# The BUILD_* variables are defined in build.m4
AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" @BUILD_CPPFLAGS@
AM_CXXFLAGS = @BUILD_CXXFLAGS@
AM_CFLAGS = $(AM_CXXFLAGS)
AM_LDFLAGS = @BUILD_LDFLAGS@
LDADD = @BUILD_LDADD@
fldigi_CPPFLAGS = -DBUILD_FLDIGI -DLOCALEDIR=\"$(localedir)\" @FLDIGI_BUILD_CPPFLAGS@
fldigi_CXXFLAGS = @FLDIGI_BUILD_CXXFLAGS@
fldigi_CFLAGS = $(fldigi_CXXFLAGS)
fldigi_LDFLAGS = @FLDIGI_BUILD_LDFLAGS@
fldigi_LDADD = @FLDIGI_BUILD_LDADD@
flarq_CPPFLAGS = -DBUILD_FLARQ -DLOCALEDIR=\"$(localedir)\" @FLARQ_BUILD_CPPFLAGS@
flarq_CXXFLAGS = @FLARQ_BUILD_CXXFLAGS@
flarq_CFLAGS = $(flarq_CXXFLAGS)
flarq_LDFLAGS = @FLARQ_BUILD_LDFLAGS@
flarq_LDADD = @FLARQ_BUILD_LDADD@
HAMLIB_SRC = include/hamlib.h rigcontrol/hamlib.cxx include/rigclass.h rigcontrol/rigclass.cxx
XMLRPC_SRC = include/xmlrpc.h misc/xmlrpc.cxx
WIN32_RES_SRC = fldigirc.rc
FLDIGI_WIN32_RES_SRC = fldigirc.rc
FLARQ_WIN32_RES_SRC = flarq-src/flarqrc.rc
LOCATOR_SRC = misc/locator.c
BENCHMARK_SRC = include/benchmark.h misc/benchmark.cxx
REGEX_SRC = compat/regex.h compat/regex.c
@ -23,8 +37,10 @@ NLS_SRC = misc/nls.cxx
# We distribute these but do not always compile them
EXTRA_fldigi_SOURCES = $(HAMLIB_SRC) $(XMLRPC_SRC) $(WIN32_RES_SRC) $(LOCATOR_SRC) \
$(BENCHMARK_SRC) $(REGEX_SRC) $(STACK_SRC) $(MINGW32_SRC) $(NLS_SRC)
EXTRA_flarq_SOURCES = $(FLARQ_WIN32_RES_SRC)
fldigi_SOURCES =
flarq_SOURCES =
if ENABLE_HAMLIB
fldigi_SOURCES += $(HAMLIB_SRC)
@ -43,18 +59,22 @@ endif
if COMPAT_REGEX
fldigi_SOURCES += $(REGEX_SRC)
flarq_SOURCES += $(REGEX_SRC)
endif
if COMPAT_STACK
fldigi_SOURCES += $(STACK_SRC)
flarq_SOURCES += $(STACK_SRC)
endif
if MINGW32
fldigi_SOURCES += $(MINGW32_SRC)
flarq_SOURCES += $(MINGW32_SRC)
endif
if USE_NLS
fldigi_SOURCES += $(NLS_SRC)
flarq_SOURCES += $(NLS_SRC)
endif
########################################################################
@ -63,6 +83,12 @@ endif
FLDIGI_VERSION_MAJOR = @FLDIGI_VERSION_MAJOR@
FLDIGI_VERSION_MINOR = @FLDIGI_VERSION_MINOR@
FLDIGI_VERSION_PATCH = @FLDIGI_VERSION_PATCH@
FLDIGI_VERSION = @FLDIGI_VERSION@
FLARQ_VERSION_MAJOR = @FLARQ_VERSION_MAJOR@
FLARQ_VERSION_MINOR = @FLARQ_VERSION_MINOR@
FLARQ_VERSION_PATCH = @FLARQ_VERSION_PATCH@
FLARQ_VERSION = @FLARQ_VERSION@
.EXPORT_ALL_VARIABLES: appbundle nsisinst hamlib-static
@ -72,24 +98,29 @@ BUILT_SOURCES =
nodist_fldigi_SOURCES = $(BUILT_SOURCES)
# and deleted by the clean targets
CLEANFILES = $(BUILT_SOURCES)
CLEAN_LOCAL =
if WIN32
if HAVE_WINDRES
.rc.o:
$(WINDRES) -I$(srcdir)/include -I$(srcdir)/../data/win32 $< -O coff $@
fldigi_SOURCES += $(WIN32_RES_SRC)
fldigi_SOURCES += $(FLDIGI_WIN32_RES_SRC)
flarq_SOURCES += $(FLARQ_WIN32_RES_SRC)
endif
endif
install-exec-local:
if WANT_FLDIGI
if ENABLE_XMLRPC
if test -f $(srcdir)/../scripts/fldigi-shell; then \
$(mkinstalldirs) $(DESTDIR)/$(bindir); \
$(INSTALL_SCRIPT) $(srcdir)/../scripts/fldigi-shell $(DESTDIR)/$(bindir); \
fi
endif
endif
install-data-local:
if WANT_FLDIGI
if test -f $(srcdir)/../data/fldigi.xpm; then \
$(mkinstalldirs) $(DESTDIR)/$(datadir)/pixmaps; \
$(INSTALL_DATA) $(srcdir)/../data/fldigi.xpm $(DESTDIR)/$(datadir)/pixmaps; \
@ -98,42 +129,84 @@ install-data-local:
$(mkinstalldirs) $(DESTDIR)/$(datadir)/applications; \
$(INSTALL_DATA) $(srcdir)/../data/fldigi.desktop $(DESTDIR)/$(datadir)/applications; \
fi
endif
if WANT_FLARQ
if test -f $(srcdir)/../data/flarq.xpm; then \
$(mkinstalldirs) $(DESTDIR)/$(datadir)/pixmaps; \
$(INSTALL_DATA) $(srcdir)/../data/flarq.xpm $(DESTDIR)/$(datadir)/pixmaps; \
fi
if test -f $(srcdir)/../data/flarq.desktop; then \
$(mkinstalldirs) $(DESTDIR)/$(datadir)/applications; \
$(INSTALL_DATA) $(srcdir)/../data/flarq.desktop $(DESTDIR)/$(datadir)/applications; \
fi
endif
uninstall-local:
if WANT_FLDIGI
rm -f $(DESTDIR)$(bindir)/fldigi-shell
rm -f $(DESTDIR)/$(datadir)/pixmaps/fldigi.xpm
rm -f $(DESTDIR)/$(datadir)/applications/fldigi.desktop
endif
if WANT_FLARQ
rm -f $(DESTDIR)/$(datadir)/pixmaps/flarq.xpm
rm -f $(DESTDIR)/$(datadir)/applications/flarq.desktop
endif
FLDIGI_FL_SRC = dialogs/confdialog.fl dialogs/colorsfonts.fl rigcontrol/rigdialog.fl logbook/lgbook.fl
FLARQ_FL_SRC = flarq-src/arqdialogs.fl
if HAVE_FLUID
flgen: $(srcdir)/dialogs/confdialog.fl $(srcdir)/dialogs/colorsfonts.fl $(srcdir)/rigcontrol/rigdialog.fl
flgen: $(FLDIGI_FL_SRC) $(FLARQ_FL_SRC)
if WANT_FLDIGI
(cd $(srcdir)/include; \
$(FLUID) -c -o ../dialogs/confdialog.cxx -h confdialog.h ../dialogs/confdialog.fl; \
$(FLUID) -c -o ../dialogs/colorsfonts.cxx -h colorsfonts.h ../dialogs/colorsfonts.fl; \
$(FLUID) -c -o ../rigcontrol/rigdialog.cxx -h rigdialog.h ../rigcontrol/rigdialog.fl; \
$(FLUID) -c -o ../logbook/lgbook.cxx -h lgbook.h ../logbook/lgbook.fl)
for f in $(FLDIGI_FL_SRC); do \
c=$${f%.fl}.cxx; h=$${f%.fl}.h; h=$${h##*/}; \
$(FLUID) -c -o ../$$c -h $$h ../$$f; \
done)
endif
if WANT_FLARQ
(cd $(srcdir)/flarq-src/include; \
for f in $(FLARQ_FL_SRC); do \
c=$${f%.fl}.cxx; h=$${f%.fl}.h; h=$${h##*/}; \
$(FLUID) -c -o ../../$$c -h $$h ../../$$f; \
done)
endif
endif
if WANT_FLDIGI
WANT_FLDIGI = yes
INSTALLER_FILE = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_setup.exe
APPBUNDLE=$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
APPBUNDLE_NOLIBS=$(APPBUNDLE)-nolibs
endif
if WANT_FLARQ
WANT_FLARQ = yes
if !WANT_FLDIGI
INSTALLER_FILE = flarq-$(FLARQ_VERSION)_setup.exe
APPBUNDLE=flarq-$(FLARQ_VERSION)
APPBUNDLE_NOLIBS=$(APPBUNDLE)-nolibs
endif
endif
if DARWIN
appbundle: $(bin_PROGRAMS)
sh $(srcdir)/../scripts/mkappbundle.sh "$(srcdir)/../data" . \
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-nolibs \
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
CLEANFILES += $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-nolibs \
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION) \
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)*.dmg
sh $(srcdir)/../scripts/mkappbundle.sh "$(srcdir)/../data" .
CLEAN_LOCAL += $(APPBUNDLE_NOLIBS) $(APPBUNDLE) $(APPBUNDLE)*.dmg
endif
if HAVE_NSIS
nsisinst: $(bin_PROGRAMS)
sh $(srcdir)/../scripts/mknsisinst.sh "$(srcdir)/../data" . \
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_setup.exe
CLEANFILES += $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)_setup.exe
sh $(srcdir)/../scripts/mknsisinst.sh "$(srcdir)/../data" .
CLEANFILES += $(INSTALLER_FILE)
endif
if WANT_FLDIGI
if ENABLE_HAMLIB
hamlib-static: $(fldigi_OBJECTS)
sh $(srcdir)/../scripts/mkhamlibstatic.sh fldigi
endif
endif
TESTS = $(srcdir)/../scripts/tests/config-h.sh $(srcdir)/../scripts/tests/cr.sh
@ -152,6 +225,8 @@ distclean-local:
fi
endif
clean-local:
-rm -rf $(CLEAN_LOCAL)
# Sources that we build. It is OK to have headers here.
fldigi_SOURCES += \
@ -249,6 +324,7 @@ fldigi_SOURCES += \
include/dsp.h \
include/newinstall.h \
include/olivia.h \
include/pkg.h \
include/picture.h \
include/progress.h \
include/psk.h \
@ -433,6 +509,52 @@ EXTRA_fldigi_SOURCES += \
rsid/rsid_fft.h \
dialogs/guide.cxx
flarq_SOURCES += \
dialogs/font_browser.cxx \
flarq-src/arq.cxx \
flarq-src/arqdialogs.cxx \
flarq-src/arqhelp.cxx \
flarq-src/b64.cxx \
flarq-src/flarq.cxx \
flarq-src/flarqenv.cxx \
flarq-src/include/arq.h \
flarq-src/include/arqdialogs.h \
flarq-src/include/b64.h \
flarq-src/include/flarq.h \
flarq-src/include/flarqenv.h \
include/Fl_Text_Display_mod.H \
include/Fl_Text_Editor_mod.H \
include/FTextView.h \
include/debug.h \
include/fileselect.h \
include/flinput2.h \
include/flmisc.h \
include/font_browser.h \
include/icons.h \
include/pixmaps.h \
include/re.h \
include/socket.h \
include/stacktrace.h \
include/table.h \
include/util.h \
fileselector/FL/Fl_Native_File_Chooser.H \
fileselector/Fl_Native_File_Chooser.cxx \
fileselector/fileselect.cxx \
logbook/table.cxx \
misc/ascii.cxx \
misc/debug.cxx \
misc/stacktrace.cxx \
widgets/flinput2.cxx \
widgets/flmisc.cxx \
misc/icons.cxx \
misc/pixmaps.cxx \
misc/re.cxx \
misc/socket.cxx \
misc/util.cxx \
widgets/Fl_Text_Display_mod.cxx \
widgets/Fl_Text_Editor_mod.cxx \
widgets/FTextView.cxx
# Additional non-source files that we distribute
EXTRA_DIST = \
$(srcdir)/../scripts/mkappbundle.sh \
@ -447,7 +569,9 @@ EXTRA_DIST = \
$(srcdir)/../data/mac/Info.plist.in \
$(srcdir)/../data/mac/fldigi.icns \
$(srcdir)/../data/win32/fldigi.ico \
dialogs/confdialog.fl \
dialogs/colorsfonts.fl \
rigcontrol/rigdialog.fl \
logbook/lgbook.fl
$(srcdir)/../data/flarq.desktop \
$(srcdir)/../data/flarq.xpm \
$(srcdir)/../data/mac/flarq.icns \
$(srcdir)/../data/win32/flarq.ico \
$(FLDIGI_FL_SRC) \
$(FLARQ_FL_SRC)

1460
src/flarq-src/arq.cxx 100644

Plik diff jest za duży Load Diff

Wyświetl plik

@ -0,0 +1,732 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0109
#include "arqdialogs.h"
#include <config.h>
#include <string>
#include "flarq.h"
static void cb_flarq(Fl_Double_Window*, void*) {
arqCLOSE();
}
Fl_Menu_Bar *mnu=(Fl_Menu_Bar *)0;
static void cb_mnuExit(Fl_Menu_*, void*) {
arqCLOSE();
}
static void cb_mnuSendEmail(Fl_Menu_*, void*) {
sendEmailFile();
}
static void cb_mnuSendText(Fl_Menu_*, void*) {
sendAsciiFile();
}
static void cb_mnuSendImage(Fl_Menu_*, void*) {
sendImageFile();
}
static void cb_mnuSendBinary(Fl_Menu_*, void*) {
sendBinaryFile();
}
static void cb_mnuCompose(Fl_Menu_*, void*) {
ComposeMail();
}
static void cb_mnuConfig(Fl_Menu_*, void*) {
cbMenuConfig();
}
static void cb_mnuHowTo(Fl_Menu_*, void*) {
help_cb();
}
static void cb_mnuAbout(Fl_Menu_*, void*) {
cbMenuAbout();
}
Fl_Menu_Item menu_mnu[] = {
{"&File", 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{"E&xit", 0, (Fl_Callback*)cb_mnuExit, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{"&Send", 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{"Email", 0, (Fl_Callback*)cb_mnuSendEmail, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{"Text File", 0, (Fl_Callback*)cb_mnuSendText, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{"Image File", 0, (Fl_Callback*)cb_mnuSendImage, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{"Binary File", 0, (Fl_Callback*)cb_mnuSendBinary, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{0,0,0,0,0,0,0,0,0},
{"Compose", 0, (Fl_Callback*)cb_mnuCompose, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{"&Config", 0, (Fl_Callback*)cb_mnuConfig, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
{"Help", 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
{"How To", 0, (Fl_Callback*)cb_mnuHowTo, 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_Button *btnCONNECT=(Fl_Button *)0;
static void cb_btnCONNECT(Fl_Button*, void*) {
arqCONNECT();
}
Fl_Input2 *txtURCALL=(Fl_Input2 *)0;
Fl_Light_Button *btnBEACON=(Fl_Light_Button *)0;
static void cb_btnBEACON(Fl_Light_Button*, void*) {
arqBEACON();
}
Fl_Input2 *txtBeaconing=(Fl_Input2 *)0;
Fl_Box *indCONNECT=(Fl_Box *)0;
Fl_Input2 *txtState=(Fl_Input2 *)0;
Fl_Text_Display *txtARQ=(Fl_Text_Display *)0;
Fl_Input2 *txtStatus=(Fl_Input2 *)0;
Fl_Input2 *txtStatus2=(Fl_Input2 *)0;
Fl_Progress *prgStatus=(Fl_Progress *)0;
Fl_Button *btnClearText=(Fl_Button *)0;
static void cb_btnClearText(Fl_Button*, void*) {
cbClearText();
}
Fl_Text_Display *txtRX=(Fl_Text_Display *)0;
Fl_Input2 *txtTX=(Fl_Input2 *)0;
static void cb_txtTX(Fl_Input2*, void*) {
cbSendTalk();
}
Fl_Button *btnSendTalk=(Fl_Button *)0;
static void cb_btnSendTalk(Fl_Button*, void*) {
cbClearTalk();
}
Fl_Double_Window* arq_dialog() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(515, 415, "flarq");
w = o;
o->color(FL_LIGHT1);
o->callback((Fl_Callback*)cb_flarq);
{ mnu = new Fl_Menu_Bar(0, 0, 516, 22);
mnu->menu(menu_mnu);
} // Fl_Menu_Bar* mnu
{ Fl_Group* o = new Fl_Group(0, 25, 515, 60);
{ Fl_Group* o = new Fl_Group(0, 25, 515, 31);
o->box(FL_ENGRAVED_FRAME);
{ btnCONNECT = new Fl_Button(5, 28, 90, 24, "Connnect");
btnCONNECT->tooltip("Connect to other station");
btnCONNECT->color(FL_LIGHT1);
btnCONNECT->callback((Fl_Callback*)cb_btnCONNECT);
} // Fl_Button* btnCONNECT
{ txtURCALL = new Fl_Input2(97, 28, 70, 24);
txtURCALL->tooltip("Connect-to callsign");
txtURCALL->box(FL_DOWN_BOX);
txtURCALL->color(FL_BACKGROUND2_COLOR);
txtURCALL->selection_color(FL_SELECTION_COLOR);
txtURCALL->labeltype(FL_NORMAL_LABEL);
txtURCALL->labelfont(0);
txtURCALL->labelsize(14);
txtURCALL->labelcolor(FL_FOREGROUND_COLOR);
txtURCALL->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
txtURCALL->when(FL_WHEN_RELEASE);
} // Fl_Input2* txtURCALL
{ btnBEACON = new Fl_Light_Button(168, 28, 79, 24, "Beacon");
btnBEACON->tooltip("Beacon ON / OFF");
btnBEACON->selection_color((Fl_Color)2);
btnBEACON->callback((Fl_Callback*)cb_btnBEACON);
} // Fl_Light_Button* btnBEACON
{ Fl_Input2* o = txtBeaconing = new Fl_Input2(249, 28, 261, 24, "output:");
txtBeaconing->box(FL_FLAT_BOX);
txtBeaconing->color(FL_LIGHT1);
txtBeaconing->selection_color(FL_SELECTION_COLOR);
txtBeaconing->labeltype(FL_NORMAL_LABEL);
txtBeaconing->labelfont(0);
txtBeaconing->labelsize(14);
txtBeaconing->labelcolor(FL_FOREGROUND_COLOR);
txtBeaconing->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
txtBeaconing->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(txtBeaconing);
o->type(FL_NORMAL_OUTPUT);
} // Fl_Input2* txtBeaconing
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(0, 54, 515, 31);
o->box(FL_ENGRAVED_FRAME);
{ indCONNECT = new Fl_Box(5, 60, 18, 18);
indCONNECT->tooltip("ARQ state");
indCONNECT->box(FL_DIAMOND_DOWN_BOX);
indCONNECT->color(FL_LIGHT1);
indCONNECT->labelfont(13);
indCONNECT->align(FL_ALIGN_RIGHT|FL_ALIGN_INSIDE);
} // Fl_Box* indCONNECT
{ Fl_Input2* o = txtState = new Fl_Input2(27, 57, 483, 24, "Disconnecting");
txtState->box(FL_FLAT_BOX);
txtState->color(FL_LIGHT1);
txtState->selection_color(FL_SELECTION_COLOR);
txtState->labeltype(FL_NORMAL_LABEL);
txtState->labelfont(0);
txtState->labelsize(14);
txtState->labelcolor(FL_FOREGROUND_COLOR);
txtState->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
txtState->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(txtState);
o->type(FL_NORMAL_OUTPUT);
} // Fl_Input2* txtState
o->end();
} // Fl_Group* o
o->end();
} // Fl_Group* o
{ txtARQ = new Fl_Text_Display(0, 87, 515, 117);
txtARQ->box(FL_DOWN_BOX);
txtARQ->textfont(4);
Fl_Group::current()->resizable(txtARQ);
} // Fl_Text_Display* txtARQ
{ Fl_Group* o = new Fl_Group(0, 206, 516, 26);
o->box(FL_DOWN_BOX);
{ Fl_Input2* o = txtStatus = new Fl_Input2(5, 208, 220, 22);
txtStatus->tooltip("Status messages");
txtStatus->box(FL_DOWN_BOX);
txtStatus->color(FL_BACKGROUND2_COLOR);
txtStatus->selection_color(FL_SELECTION_COLOR);
txtStatus->labeltype(FL_NORMAL_LABEL);
txtStatus->labelfont(0);
txtStatus->labelsize(14);
txtStatus->labelcolor(FL_FOREGROUND_COLOR);
txtStatus->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
txtStatus->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(txtStatus);
o->type(FL_NORMAL_OUTPUT);
} // Fl_Input2* txtStatus
{ Fl_Input2* o = txtStatus2 = new Fl_Input2(225, 208, 170, 22);
txtStatus2->box(FL_DOWN_BOX);
txtStatus2->color(FL_BACKGROUND2_COLOR);
txtStatus2->selection_color(FL_SELECTION_COLOR);
txtStatus2->labeltype(FL_NORMAL_LABEL);
txtStatus2->labelfont(0);
txtStatus2->labelsize(14);
txtStatus2->labelcolor(FL_FOREGROUND_COLOR);
txtStatus2->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
txtStatus2->when(FL_WHEN_RELEASE);
o->type(FL_NORMAL_OUTPUT);
} // Fl_Input2* txtStatus2
{ Fl_Progress* o = prgStatus = new Fl_Progress(395, 210, 70, 18);
prgStatus->tooltip("Tx/Rx ARQ file transfer progress");
prgStatus->selection_color((Fl_Color)70);
prgStatus->labelfont(1);
o->minimum(0.0);
o->maximum(1.0);
} // Fl_Progress* prgStatus
{ btnClearText = new Fl_Button(468, 210, 45, 20, "Clear");
btnClearText->callback((Fl_Callback*)cb_btnClearText);
} // Fl_Button* btnClearText
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(0, 235, 515, 180, "Plain Talk");
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
{ txtRX = new Fl_Text_Display(5, 255, 505, 130);
txtRX->box(FL_DOWN_BOX);
txtRX->textfont(4);
Fl_Group::current()->resizable(txtRX);
} // Fl_Text_Display* txtRX
{ Fl_Group* o = new Fl_Group(0, 387, 515, 28);
o->box(FL_ENGRAVED_FRAME);
{ txtTX = new Fl_Input2(5, 390, 450, 22, "input:");
txtTX->tooltip("Plain talk text - ENTER to send");
txtTX->box(FL_DOWN_BOX);
txtTX->color(FL_BACKGROUND2_COLOR);
txtTX->selection_color(FL_SELECTION_COLOR);
txtTX->labeltype(FL_NORMAL_LABEL);
txtTX->labelfont(0);
txtTX->labelsize(14);
txtTX->labelcolor(FL_FOREGROUND_COLOR);
txtTX->callback((Fl_Callback*)cb_txtTX);
txtTX->align(FL_ALIGN_CENTER);
txtTX->when(FL_WHEN_ENTER_KEY);
Fl_Group::current()->resizable(txtTX);
txtTX->value("");
txtTX->maximum_size(80);
} // Fl_Input2* txtTX
{ btnSendTalk = new Fl_Button(460, 390, 49, 22, "Clear");
btnSendTalk->callback((Fl_Callback*)cb_btnSendTalk);
} // Fl_Button* btnSendTalk
o->end();
} // Fl_Group* o
o->end();
} // Fl_Group* o
o->end();
} // Fl_Double_Window* o
return w;
}
Fl_Input2 *txtMyCall=(Fl_Input2 *)0;
static void cb_txtMyCall(Fl_Input2* o, void*) {
changeMyCall(o->value());
}
Fl_Input2 *txtFolder=(Fl_Input2 *)0;
static void cb_txtFolder(Fl_Input2* o, void*) {
InFolder = o->value();
}
Fl_Input2 *txtOutputFolder=(Fl_Input2 *)0;
static void cb_txtOutputFolder(Fl_Input2* o, void*) {
OutFolder = o->value();
}
Fl_Input2 *txtMail_IN=(Fl_Input2 *)0;
static void cb_txtMail_IN(Fl_Input2* o, void*) {
MailInFolder = o->value();
}
Fl_Input2 *txtMail_OUT=(Fl_Input2 *)0;
static void cb_txtMail_OUT(Fl_Input2* o, void*) {
MailOutFolder = o->value();
}
Fl_Input2 *txtMail_SENT=(Fl_Input2 *)0;
static void cb_txtMail_SENT(Fl_Input2* o, void*) {
MailSentFolder = o->value();
}
Fl_Check_Button *btnSylpheedMail=(Fl_Check_Button *)0;
static void cb_btnSylpheedMail(Fl_Check_Button* o, void*) {
bSylpheedFolder = o->value();
}
Fl_Spinner *spnExponent=(Fl_Spinner *)0;
static void cb_spnExponent(Fl_Spinner* o, void*) {
exponent = (int)o->value();
switch (exponent) {
case 4: txtBlockSize->value("16"); break;
case 5: txtBlockSize->value("32"); break;
case 6: txtBlockSize->value("64"); break;
case 7: txtBlockSize->value("128"); break;
case 8: txtBlockSize->value("256"); break;
default:
txtBlockSize->value("32");break;
}
cbSetConfig();
}
Fl_Spinner *spnRetries=(Fl_Spinner *)0;
static void cb_spnRetries(Fl_Spinner* o, void*) {
iretries = (int)o->value();
cbSetConfig();
}
Fl_Spinner *spnWaitTime=(Fl_Spinner *)0;
static void cb_spnWaitTime(Fl_Spinner* o, void*) {
iwaittime = (int)(1000 * o->value());
cbSetConfig();
}
Fl_Spinner *spnTimeout=(Fl_Spinner *)0;
static void cb_spnTimeout(Fl_Spinner* o, void*) {
itimeout = (int)(o->value() * 1000.0);
cbSetConfig();
}
Fl_Spinner *spnTxDelay=(Fl_Spinner *)0;
static void cb_spnTxDelay(Fl_Spinner* o, void*) {
txdelay = (int)o->value();
cbSetConfig();
}
Fl_Spinner *spnBcnInterval=(Fl_Spinner *)0;
static void cb_spnBcnInterval(Fl_Spinner* o, void*) {
bcnInterval = (int)o->value();
cbSetConfig();
}
Fl_Input2 *txtBlockSize=(Fl_Input2 *)0;
Fl_Button *btnOK=(Fl_Button *)0;
static void cb_btnOK(Fl_Button*, void*) {
closeConfig();
}
Fl_Input2 *txtBEACONTXT=(Fl_Input2 *)0;
static void cb_txtBEACONTXT(Fl_Input2* o, void*) {
changeBeaconText(o->value());
}
Fl_Double_Window* arq_configure() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(610, 195, "Configure flarq");
w = o;
{ Fl_Group* o = new Fl_Group(2, 2, 190, 166);
o->box(FL_ENGRAVED_FRAME);
{ Fl_Input2* o = txtMyCall = new Fl_Input2(5, 22, 100, 24, "My Call:");
txtMyCall->box(FL_DOWN_BOX);
txtMyCall->color(FL_BACKGROUND2_COLOR);
txtMyCall->selection_color(FL_SELECTION_COLOR);
txtMyCall->labeltype(FL_NORMAL_LABEL);
txtMyCall->labelfont(0);
txtMyCall->labelsize(14);
txtMyCall->labelcolor(FL_FOREGROUND_COLOR);
txtMyCall->callback((Fl_Callback*)cb_txtMyCall);
txtMyCall->align(FL_ALIGN_TOP_LEFT);
txtMyCall->when(FL_WHEN_RELEASE);
o->value(MyCall.c_str());
} // Fl_Input2* txtMyCall
{ Fl_Group* o = new Fl_Group(2, 60, 190, 105, "Text/Binary Files");
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE);
{ Fl_Input2* o = txtFolder = new Fl_Input2(6, 96, 180, 24, "In folder:");
txtFolder->tooltip("Folder (in $HOME) to store incoming files");
txtFolder->box(FL_DOWN_BOX);
txtFolder->color(FL_BACKGROUND2_COLOR);
txtFolder->selection_color(FL_SELECTION_COLOR);
txtFolder->labeltype(FL_NORMAL_LABEL);
txtFolder->labelfont(0);
txtFolder->labelsize(14);
txtFolder->labelcolor(FL_FOREGROUND_COLOR);
txtFolder->callback((Fl_Callback*)cb_txtFolder);
txtFolder->align(FL_ALIGN_TOP_LEFT);
txtFolder->when(FL_WHEN_CHANGED);
o->value(InFolder.c_str());
} // Fl_Input2* txtFolder
{ Fl_Input2* o = txtOutputFolder = new Fl_Input2(6, 138, 180, 24, "Out folder:");
txtOutputFolder->tooltip("Folder (in $HOME) to store outgoing files");
txtOutputFolder->box(FL_DOWN_BOX);
txtOutputFolder->color(FL_BACKGROUND2_COLOR);
txtOutputFolder->selection_color(FL_SELECTION_COLOR);
txtOutputFolder->labeltype(FL_NORMAL_LABEL);
txtOutputFolder->labelfont(0);
txtOutputFolder->labelsize(14);
txtOutputFolder->labelcolor(FL_FOREGROUND_COLOR);
txtOutputFolder->callback((Fl_Callback*)cb_txtOutputFolder);
txtOutputFolder->align(FL_ALIGN_TOP_LEFT);
txtOutputFolder->when(FL_WHEN_CHANGED);
o->value(OutFolder.c_str());
} // Fl_Input2* txtOutputFolder
o->end();
} // Fl_Group* o
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(194, 3, 190, 164, "Mail Client Files");
o->box(FL_ENGRAVED_FRAME);
o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE);
{ Fl_Input2* o = txtMail_IN = new Fl_Input2(200, 37, 178, 24, "Mail In:");
txtMail_IN->tooltip("Folder to store incoming files");
txtMail_IN->box(FL_DOWN_BOX);
txtMail_IN->color(FL_BACKGROUND2_COLOR);
txtMail_IN->selection_color(FL_SELECTION_COLOR);
txtMail_IN->labeltype(FL_NORMAL_LABEL);
txtMail_IN->labelfont(0);
txtMail_IN->labelsize(14);
txtMail_IN->labelcolor(FL_FOREGROUND_COLOR);
txtMail_IN->callback((Fl_Callback*)cb_txtMail_IN);
txtMail_IN->align(FL_ALIGN_TOP_LEFT);
txtMail_IN->when(FL_WHEN_CHANGED);
o->value(MailInFolder.c_str());
} // Fl_Input2* txtMail_IN
{ Fl_Input2* o = txtMail_OUT = new Fl_Input2(200, 78, 178, 24, "Mail Out:");
txtMail_OUT->tooltip("Folder to store outgoing files");
txtMail_OUT->box(FL_DOWN_BOX);
txtMail_OUT->color(FL_BACKGROUND2_COLOR);
txtMail_OUT->selection_color(FL_SELECTION_COLOR);
txtMail_OUT->labeltype(FL_NORMAL_LABEL);
txtMail_OUT->labelfont(0);
txtMail_OUT->labelsize(14);
txtMail_OUT->labelcolor(FL_FOREGROUND_COLOR);
txtMail_OUT->callback((Fl_Callback*)cb_txtMail_OUT);
txtMail_OUT->align(FL_ALIGN_TOP_LEFT);
txtMail_OUT->when(FL_WHEN_CHANGED);
o->value(MailOutFolder.c_str());
} // Fl_Input2* txtMail_OUT
{ Fl_Input2* o = txtMail_SENT = new Fl_Input2(200, 119, 178, 24, "Mail Sent:");
txtMail_SENT->tooltip("Folder to store outgoing files");
txtMail_SENT->box(FL_DOWN_BOX);
txtMail_SENT->color(FL_BACKGROUND2_COLOR);
txtMail_SENT->selection_color(FL_SELECTION_COLOR);
txtMail_SENT->labeltype(FL_NORMAL_LABEL);
txtMail_SENT->labelfont(0);
txtMail_SENT->labelsize(14);
txtMail_SENT->labelcolor(FL_FOREGROUND_COLOR);
txtMail_SENT->callback((Fl_Callback*)cb_txtMail_SENT);
txtMail_SENT->align(FL_ALIGN_TOP_LEFT);
txtMail_SENT->when(FL_WHEN_CHANGED);
o->value(MailSentFolder.c_str());
} // Fl_Input2* txtMail_SENT
{ Fl_Check_Button* o = btnSylpheedMail = new Fl_Check_Button(200, 146, 175, 15, "Sylpheed Mail Client");
btnSylpheedMail->tooltip("Check ONLY if Sylpheed is used as mail client");
btnSylpheedMail->down_box(FL_DOWN_BOX);
btnSylpheedMail->callback((Fl_Callback*)cb_btnSylpheedMail);
o->value(bSylpheedFolder);
} // Fl_Check_Button* btnSylpheedMail
o->end();
} // Fl_Group* o
{ Fl_Group* o = new Fl_Group(386, 3, 224, 163);
o->box(FL_ENGRAVED_FRAME);
{ Fl_Spinner* o = spnExponent = new Fl_Spinner(464, 138, 30, 22, "Exponent:");
spnExponent->tooltip("block size = 2^exponent");
spnExponent->value(1);
spnExponent->callback((Fl_Callback*)cb_spnExponent);
o->minimum(4);
o->maximum(8);
o->step(1);
o->value(exponent);
} // Fl_Spinner* spnExponent
{ Fl_Spinner* o = spnRetries = new Fl_Spinner(558, 7, 45, 22, "Retries:");
spnRetries->tooltip("# retries before connection declared down");
spnRetries->value(1);
spnRetries->callback((Fl_Callback*)cb_spnRetries);
o->minimum(2);
o->maximum(20);
o->step(1);
o->value(iretries);
} // Fl_Spinner* spnRetries
{ Fl_Spinner* o = spnWaitTime = new Fl_Spinner(533, 33, 70, 22, "Wait time (sec):");
spnWaitTime->tooltip("time between retries");
spnWaitTime->value(1);
spnWaitTime->callback((Fl_Callback*)cb_spnWaitTime);
o->minimum(10);
o->maximum(30);
o->step(5);
o->value(iwaittime/1000);
} // Fl_Spinner* spnWaitTime
{ Fl_Spinner* o = spnTimeout = new Fl_Spinner(533, 59, 70, 22, "Timeout (sec):");
spnTimeout->tooltip("Time out for dead connection");
spnTimeout->value(1);
spnTimeout->callback((Fl_Callback*)cb_spnTimeout);
o->minimum(30);
o->maximum(300);
o->step(15);
o->value(itimeout / 1000);
} // Fl_Spinner* spnTimeout
{ Fl_Spinner* o = spnTxDelay = new Fl_Spinner(533, 85, 70, 22, "Tx delay (msec):");
spnTxDelay->tooltip("delay from Rx to Tx");
spnTxDelay->value(1);
spnTxDelay->callback((Fl_Callback*)cb_spnTxDelay);
o->minimum(200);
o->maximum(2000);
o->step(100);
o->value(txdelay);
} // Fl_Spinner* spnTxDelay
{ Fl_Spinner* o = spnBcnInterval = new Fl_Spinner(554, 111, 49, 22, "Beacon interval (sec)");
spnBcnInterval->tooltip("Time between beacon transmissions");
spnBcnInterval->value(1);
spnBcnInterval->callback((Fl_Callback*)cb_spnBcnInterval);
o->minimum(15); o->maximum(600);
o->step(15);
o->value(bcnInterval);
} // Fl_Spinner* spnBcnInterval
{ Fl_Input2* o = txtBlockSize = new Fl_Input2(568, 137, 35, 24, " = Blk Size");
txtBlockSize->box(FL_DOWN_BOX);
txtBlockSize->color(FL_BACKGROUND2_COLOR);
txtBlockSize->selection_color(FL_SELECTION_COLOR);
txtBlockSize->labeltype(FL_NORMAL_LABEL);
txtBlockSize->labelfont(0);
txtBlockSize->labelsize(14);
txtBlockSize->labelcolor(FL_FOREGROUND_COLOR);
txtBlockSize->align(FL_ALIGN_LEFT);
txtBlockSize->when(FL_WHEN_RELEASE);
switch (exponent) {
case 4: o->value("16"); break;
case 5: o->value("32"); break;
case 6: o->value("64"); break;
case 7: o->value("128"); break;
default:
o->value("32");break;
}
o->type(FL_NORMAL_OUTPUT);
} // Fl_Input2* txtBlockSize
o->end();
} // Fl_Group* o
{ btnOK = new Fl_Button(540, 169, 62, 24, "Ok");
btnOK->callback((Fl_Callback*)cb_btnOK);
} // Fl_Button* btnOK
{ Fl_Input2* o = txtBEACONTXT = new Fl_Input2(90, 168, 443, 24, "Beacon Text");
txtBEACONTXT->tooltip("Text for the beacon 64 chars max");
txtBEACONTXT->box(FL_DOWN_BOX);
txtBEACONTXT->color(FL_BACKGROUND2_COLOR);
txtBEACONTXT->selection_color(FL_SELECTION_COLOR);
txtBEACONTXT->labeltype(FL_NORMAL_LABEL);
txtBEACONTXT->labelfont(0);
txtBEACONTXT->labelsize(14);
txtBEACONTXT->labelcolor(FL_FOREGROUND_COLOR);
txtBEACONTXT->callback((Fl_Callback*)cb_txtBEACONTXT);
txtBEACONTXT->align(FL_ALIGN_LEFT);
txtBEACONTXT->when(FL_WHEN_RELEASE);
Fl_Group::current()->resizable(txtBEACONTXT);
o->value(beacontext.c_str());
} // Fl_Input2* txtBEACONTXT
o->end();
} // Fl_Double_Window* o
return w;
}
Table *tblOutgoing=(Table *)0;
Fl_Button *send_Cancel=(Fl_Button *)0;
static void cb_send_Cancel(Fl_Button*, void*) {
sendCancel();
}
Fl_Return_Button *send_OK=(Fl_Return_Button *)0;
static void cb_send_OK(Fl_Return_Button*, void*) {
sendOK();
}
Fl_Double_Window* arq_SendSelect() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(500, 170, "Select Email");
w = o;
{ tblOutgoing = new Table(0, 3, 500, 140);
tblOutgoing->box(FL_DOWN_BOX);
tblOutgoing->color(FL_BACKGROUND2_COLOR);
tblOutgoing->selection_color((Fl_Color)246);
tblOutgoing->labeltype(FL_NORMAL_LABEL);
tblOutgoing->labelfont(0);
tblOutgoing->labelsize(14);
tblOutgoing->labelcolor(FL_FOREGROUND_COLOR);
tblOutgoing->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
tblOutgoing->when(FL_WHEN_RELEASE);
} // Table* tblOutgoing
{ send_Cancel = new Fl_Button(335, 145, 70, 20, "Cancel");
send_Cancel->callback((Fl_Callback*)cb_send_Cancel);
} // Fl_Button* send_Cancel
{ send_OK = new Fl_Return_Button(420, 145, 72, 20, "OK");
send_OK->callback((Fl_Callback*)cb_send_OK);
} // Fl_Return_Button* send_OK
o->set_modal();
o->end();
o->resizable(o);
} // Fl_Double_Window* o
return w;
}
Fl_Input2 *inpMailTo=(Fl_Input2 *)0;
Fl_Input2 *inpMailSubj=(Fl_Input2 *)0;
Fl_Text_Editor *txtMailText=(Fl_Text_Editor *)0;
Fl_Button *btnOpenComposedMail=(Fl_Button *)0;
static void cb_btnOpenComposedMail(Fl_Button*, void*) {
cb_OpenComposeMail();
}
Fl_Button *btnClearComposer=(Fl_Button *)0;
static void cb_btnClearComposer(Fl_Button*, void*) {
cb_ClearComposer();
}
Fl_Button *btnUseTemplate=(Fl_Button *)0;
static void cb_btnUseTemplate(Fl_Button*, void*) {
cb_UseTemplate();
}
Fl_Button *btnCancelComposedMail=(Fl_Button *)0;
static void cb_btnCancelComposedMail(Fl_Button*, void*) {
cb_CancelComposeMail();
}
Fl_Button *btnSaveComposedMail=(Fl_Button *)0;
static void cb_btnSaveComposedMail(Fl_Button*, void*) {
cb_SaveComposeMail();
}
Fl_Double_Window* arq_composer() {
Fl_Double_Window* w;
{ Fl_Double_Window* o = new Fl_Double_Window(515, 275, "Flarq Mail Composer");
w = o;
{ inpMailTo = new Fl_Input2(48, 4, 460, 24, "To:");
inpMailTo->box(FL_DOWN_BOX);
inpMailTo->color(FL_BACKGROUND2_COLOR);
inpMailTo->selection_color(FL_SELECTION_COLOR);
inpMailTo->labeltype(FL_NORMAL_LABEL);
inpMailTo->labelfont(0);
inpMailTo->labelsize(14);
inpMailTo->labelcolor(FL_FOREGROUND_COLOR);
inpMailTo->align(FL_ALIGN_LEFT);
inpMailTo->when(FL_WHEN_RELEASE);
} // Fl_Input2* inpMailTo
{ inpMailSubj = new Fl_Input2(48, 30, 460, 24, "Subj:");
inpMailSubj->box(FL_DOWN_BOX);
inpMailSubj->color(FL_BACKGROUND2_COLOR);
inpMailSubj->selection_color(FL_SELECTION_COLOR);
inpMailSubj->labeltype(FL_NORMAL_LABEL);
inpMailSubj->labelfont(0);
inpMailSubj->labelsize(14);
inpMailSubj->labelcolor(FL_FOREGROUND_COLOR);
inpMailSubj->align(FL_ALIGN_LEFT);
inpMailSubj->when(FL_WHEN_RELEASE);
} // Fl_Input2* inpMailSubj
{ txtMailText = new Fl_Text_Editor(0, 56, 510, 188);
Fl_Group::current()->resizable(txtMailText);
} // Fl_Text_Editor* txtMailText
{ Fl_Pack* o = new Fl_Pack(0, 247, 515, 28);
o->type(1);
{ btnOpenComposedMail = new Fl_Button(4, 251, 70, 20, "Open");
btnOpenComposedMail->tooltip("Open existing Composed email");
btnOpenComposedMail->callback((Fl_Callback*)cb_btnOpenComposedMail);
} // Fl_Button* btnOpenComposedMail
{ new Fl_Box(75, 251, 5, 20);
} // Fl_Box* o
{ btnClearComposer = new Fl_Button(81, 251, 70, 20, "Clear");
btnClearComposer->tooltip("Clear all fields");
btnClearComposer->callback((Fl_Callback*)cb_btnClearComposer);
} // Fl_Button* btnClearComposer
{ new Fl_Box(152, 251, 5, 20);
} // Fl_Box* o
{ btnUseTemplate = new Fl_Button(159, 251, 70, 20, "Template");
btnUseTemplate->tooltip("Use template file");
btnUseTemplate->callback((Fl_Callback*)cb_btnUseTemplate);
} // Fl_Button* btnUseTemplate
{ Fl_Box* o = new Fl_Box(230, 251, 127, 20);
Fl_Group::current()->resizable(o);
} // Fl_Box* o
{ btnCancelComposedMail = new Fl_Button(358, 251, 70, 20, "Cancel");
btnCancelComposedMail->tooltip("Close Dialog");
btnCancelComposedMail->callback((Fl_Callback*)cb_btnCancelComposedMail);
} // Fl_Button* btnCancelComposedMail
{ new Fl_Box(429, 251, 5, 20);
} // Fl_Box* o
{ btnSaveComposedMail = new Fl_Button(436, 251, 70, 20, "Save");
btnSaveComposedMail->tooltip("Save this message (shift click Save Template)");
btnSaveComposedMail->callback((Fl_Callback*)cb_btnSaveComposedMail);
} // Fl_Button* btnSaveComposedMail
o->end();
} // Fl_Pack* o
o->end();
} // Fl_Double_Window* o
return w;
}

Wyświetl plik

@ -0,0 +1,445 @@
# data file for the Fltk User Interface Designer (fluid)
version 1.0108
header_name {.h}
code_name {.cxx}
decl {\#include <config.h>} {}
decl {\#include <string>} {}
decl {\#include "flarq.h"} {}
decl {\#include "flinput2.h"} {public
}
Function {arq_dialog()} {open
} {
Fl_Window {} {
label flarq
callback {arqCLOSE();} open
xywh {415 60 515 415} type Double color 50 resizable visible
} {
Fl_Menu_Bar mnu {open
xywh {0 0 516 22}
} {
Submenu {} {
label {&File} open
xywh {0 0 70 21}
} {
MenuItem mnuExit {
label {E&xit}
callback {arqCLOSE();}
xywh {0 0 36 21}
}
}
Submenu mnuSend {
label {&Send} open
xywh {0 0 70 21}
} {
MenuItem mnuSendEmail {
label Email
callback {sendEmailFile();}
xywh {0 0 34 21}
}
MenuItem mnuSendText {
label {Text File}
callback {sendAsciiFile();}
xywh {0 0 36 21}
}
MenuItem mnuSendImage {
label {Image File}
callback {sendImageFile();}
xywh {0 0 36 21}
}
MenuItem mnuSendBinary {
label {Binary File}
callback {sendBinaryFile();}
xywh {0 0 36 21}
}
}
MenuItem mnuCompose {
label Compose
callback {ComposeMail();}
xywh {0 0 30 20}
code0 {extern void ComposeMail();}
}
MenuItem mnuConfig {
label {&Config}
callback {cbMenuConfig();}
xywh {0 0 36 21}
code0 {extern void cbMenuConfig();}
}
Submenu mnuHelp {
label Help open
xywh {0 0 62 20}
} {
MenuItem mnuHowTo {
label {How To}
callback {help_cb();}
xywh {0 0 30 20}
}
MenuItem mnuAbout {
label About
callback {cbMenuAbout();}
xywh {5 5 36 21}
code0 {extern void cbMenuAbout();}
}
}
}
Fl_Group {} {open
xywh {0 25 515 60}
} {
Fl_Group {} {open
xywh {0 25 515 31} box ENGRAVED_FRAME
} {
Fl_Button btnCONNECT {
label Connnect
callback {arqCONNECT();}
tooltip {Connect to other station} xywh {5 28 90 24} color 50
}
Fl_Input txtURCALL {
tooltip {Connect-to callsign} xywh {97 28 70 24} align 20
class Fl_Input2
}
Fl_Light_Button btnBEACON {
label Beacon
callback {arqBEACON();}
tooltip {Beacon ON / OFF} xywh {168 28 79 24} selection_color 2
}
Fl_Output txtBeaconing {
label {output:}
xywh {249 28 261 24} box FLAT_BOX color 50 align 20 resizable
code0 {o->type(FL_NORMAL_OUTPUT);}
class Fl_Input2
}
}
Fl_Group {} {open
xywh {0 54 515 31} box ENGRAVED_FRAME
} {
Fl_Box indCONNECT {
tooltip {ARQ state} xywh {5 60 18 18} box DIAMOND_DOWN_BOX color 50 labelfont 13 align 24
}
Fl_Output txtState {
label Disconnecting
xywh {27 57 483 24} box FLAT_BOX color 50 align 20 resizable
code0 {o->type(FL_NORMAL_OUTPUT);}
class Fl_Input2
}
}
}
Fl_Text_Display txtARQ {
xywh {0 87 515 117} box DOWN_BOX textfont 4 resizable
}
Fl_Group {} {open
xywh {0 206 516 26} box DOWN_BOX
} {
Fl_Output txtStatus {
tooltip {Status messages} xywh {5 208 220 22} align 20 resizable
code0 {o->type(FL_NORMAL_OUTPUT);}
class Fl_Input2
}
Fl_Output txtStatus2 {selected
xywh {225 208 170 22} align 20
code0 {o->type(FL_NORMAL_OUTPUT);}
class Fl_Input2
}
Fl_Progress prgStatus {
tooltip {Tx/Rx ARQ file transfer progress} xywh {395 210 70 18} selection_color 70 labelfont 1
code0 {o->minimum(0.0);}
code1 {o->maximum(1.0);}
}
Fl_Button btnClearText {
label Clear
callback {cbClearText();}
xywh {468 210 45 20}
}
}
Fl_Group {} {
label {Plain Talk} open
xywh {0 235 515 180} box ENGRAVED_FRAME align 21
} {
Fl_Text_Display txtRX {
xywh {5 255 505 130} box DOWN_BOX textfont 4 resizable
}
Fl_Group {} {open
xywh {0 387 515 28} box ENGRAVED_FRAME
} {
Fl_Input txtTX {
label {input:}
callback {cbSendTalk();}
tooltip {Plain talk text - ENTER to send} xywh {5 390 450 22} align 0 when 8 resizable
code0 {txtTX->value("");}
code1 {txtTX->maximum_size(80);}
class Fl_Input2
}
Fl_Button btnSendTalk {
label Clear
callback {cbClearTalk();}
xywh {460 390 49 22}
}
}
}
}
}
Function {arq_configure()} {} {
Fl_Window {} {
label {Configure flarq} open
xywh {519 621 610 195} type Double hide resizable
} {
Fl_Group {} {open
xywh {2 2 190 166} box ENGRAVED_FRAME
} {
Fl_Input txtMyCall {
label {My Call:}
callback {changeMyCall(o->value());}
xywh {5 22 100 24} align 5
code0 {o->value(MyCall.c_str());}
class Fl_Input2
}
Fl_Group {} {
label {Text/Binary Files} open
xywh {2 60 190 105} box ENGRAVED_FRAME align 17
} {
Fl_Input txtFolder {
label {In folder:}
callback {InFolder = o->value();}
tooltip {Folder (in $HOME) to store incoming files} xywh {6 96 180 24} align 5 when 1
code0 {o->value(InFolder.c_str());}
class Fl_Input2
}
Fl_Input txtOutputFolder {
label {Out folder:}
callback {OutFolder = o->value();}
tooltip {Folder (in $HOME) to store outgoing files} xywh {6 138 180 24} align 5 when 1
code0 {o->value(OutFolder.c_str());}
class Fl_Input2
}
}
}
Fl_Group {} {
label {Mail Client Files} open
xywh {194 3 190 164} box ENGRAVED_FRAME align 17
} {
Fl_Input txtMail_IN {
label {Mail In:}
callback {MailInFolder = o->value();}
tooltip {Folder to store incoming files} xywh {200 37 178 24} align 5 when 1
code0 {o->value(MailInFolder.c_str());}
class Fl_Input2
}
Fl_Input txtMail_OUT {
label {Mail Out:}
callback {MailOutFolder = o->value();}
tooltip {Folder to store outgoing files} xywh {200 78 178 24} align 5 when 1
code0 {o->value(MailOutFolder.c_str());}
class Fl_Input2
}
Fl_Input txtMail_SENT {
label {Mail Sent:}
callback {MailSentFolder = o->value();}
tooltip {Folder to store outgoing files} xywh {200 119 178 24} align 5 when 1
code0 {o->value(MailSentFolder.c_str());}
class Fl_Input2
}
Fl_Check_Button btnSylpheedMail {
label {Sylpheed Mail Client}
callback {bSylpheedFolder = o->value();}
tooltip {Check ONLY if Sylpheed is used as mail client} xywh {200 146 175 15} down_box DOWN_BOX
code0 {o->value(bSylpheedFolder);}
}
}
Fl_Group {} {open
xywh {386 3 224 163} box ENGRAVED_FRAME
} {
Fl_Spinner spnExponent {
label {Exponent:}
callback {exponent = (int)o->value();
switch (exponent) {
case 4: txtBlockSize->value("16"); break;
case 5: txtBlockSize->value("32"); break;
case 6: txtBlockSize->value("64"); break;
case 7: txtBlockSize->value("128"); break;
case 8: txtBlockSize->value("256"); break;
default:
txtBlockSize->value("32");break;
}
cbSetConfig();}
tooltip {block size = 2^exponent} xywh {464 138 30 22} value 1
code0 {o->minimum(4);}
code1 {o->maximum(8);}
code2 {o->step(1);}
code3 {o->value(exponent);}
}
Fl_Spinner spnRetries {
label {Retries:}
callback {iretries = (int)o->value();
cbSetConfig();}
tooltip {\# retries before connection declared down} xywh {558 7 45 22} value 1
code0 {o->minimum(2);}
code1 {o->maximum(20);}
code2 {o->step(1);}
code3 {o->value(iretries);}
}
Fl_Spinner spnWaitTime {
label {Wait time (sec):}
callback {iwaittime = (int)(1000 * o->value());
cbSetConfig();}
tooltip {time between retries} xywh {533 33 70 22} value 1
code0 {o->minimum(10);}
code1 {o->maximum(30);}
code2 {o->step(5);}
code3 {o->value(iwaittime/1000);}
}
Fl_Spinner spnTimeout {
label {Timeout (sec):}
callback {itimeout = (int)(o->value() * 1000.0);
cbSetConfig();}
tooltip {Time out for dead connection} xywh {533 59 70 22} value 1
code0 {o->minimum(30);}
code1 {o->maximum(300);}
code2 {o->step(15);}
code3 {o->value(itimeout / 1000);}
}
Fl_Spinner spnTxDelay {
label {Tx delay (msec):}
callback {txdelay = (int)o->value();
cbSetConfig();}
tooltip {delay from Rx to Tx} xywh {533 85 70 22} value 1
code0 {o->minimum(200);}
code1 {o->maximum(2000);}
code2 {o->step(100);}
code3 {o->value(txdelay);}
}
Fl_Spinner spnBcnInterval {
label {Beacon interval (sec)}
callback {bcnInterval = (int)o->value();
cbSetConfig();}
tooltip {Time between beacon transmissions} xywh {554 111 49 22} value 1
code0 {o->minimum(15); o->maximum(600);}
code1 {o->step(15);}
code2 {o->value(bcnInterval);}
}
Fl_Output txtBlockSize {
label { = Blk Size}
xywh {568 137 35 24}
code0 {switch (exponent) {
case 4: o->value("16"); break;
case 5: o->value("32"); break;
case 6: o->value("64"); break;
case 7: o->value("128"); break;
default:
o->value("32");break;
}
o->type(FL_NORMAL_OUTPUT);
}
class Fl_Input2
}
}
Fl_Button btnOK {
label Ok
callback {closeConfig();}
xywh {540 169 62 24}
}
Fl_Input txtBEACONTXT {
label {Beacon Text}
callback {changeBeaconText(o->value());}
tooltip {Text for the beacon 64 chars max} xywh {90 168 443 24} resizable
code0 {o->value(beacontext.c_str());}
class Fl_Input2
}
}
}
Function {arq_SendSelect()} {open
} {
Fl_Window {} {
label {Select Email} open
xywh {427 717 500 170} type Double resizable modal visible
} {
Fl_Box tblOutgoing {
xywh {0 3 500 140} box DOWN_BOX color 7 selection_color 246 align 16
code0 {\#include "table.h"}
class Table
}
Fl_Button send_Cancel {
label Cancel
callback {sendCancel();}
xywh {335 145 70 20}
code0 {extern void sendCancel();}
}
Fl_Return_Button send_OK {
label OK
callback {sendOK();}
xywh {420 145 72 20}
code0 {extern void sendOK();}
}
}
}
Function {arq_composer()} {open
} {
Fl_Window {} {
label {Flarq Mail Composer} open
xywh {575 537 515 275} type Double resizable visible
} {
Fl_Input inpMailTo {
label {To:}
xywh {48 4 460 24}
class Fl_Input2
}
Fl_Input inpMailSubj {
label {Subj:}
xywh {48 30 460 24}
class Fl_Input2
}
Fl_Text_Editor txtMailText {
xywh {0 56 510 188} resizable
}
Fl_Pack {} {open
xywh {0 247 515 28} type HORIZONTAL
} {
Fl_Button btnOpenComposedMail {
label Open
callback {cb_OpenComposeMail();}
tooltip {Open existing Composed email} xywh {4 251 70 20}
code0 {extern void cb_OpenComposeMail();}
}
Fl_Box {} {
xywh {75 251 5 20}
}
Fl_Button btnClearComposer {
label Clear
callback {cb_ClearComposer();}
tooltip {Clear all fields} xywh {81 251 70 20}
code0 {extern void cb_ClearComposer();}
}
Fl_Box {} {
xywh {152 251 5 20}
}
Fl_Button btnUseTemplate {
label Template
callback {cb_UseTemplate();}
tooltip {Use template file} xywh {159 251 70 20}
code0 {extern void cb_UseTemplate();}
}
Fl_Box {} {
xywh {230 251 127 20} resizable
}
Fl_Button btnCancelComposedMail {
label Cancel
callback {cb_CancelComposeMail();}
tooltip {Close Dialog} xywh {358 251 70 20}
code0 {extern void cb_CancelComposeMail();}
}
Fl_Box {} {
xywh {429 251 5 20}
}
Fl_Button btnSaveComposedMail {
label Save
callback {cb_SaveComposeMail();}
tooltip {Save this message (shift click Save Template)} xywh {436 251 70 20}
code0 {extern void cb_SaveComposeMail();}
}
}
}
}

Wyświetl plik

@ -0,0 +1,183 @@
#include <config.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <ctime>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.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>
#ifndef __WOE32__
#include <sys/ipc.h>
#include <sys/msg.h>
#include <dirent.h>
#endif
#include "flarq.h"
#include "arq.h"
#include "arqdialogs.h"
#include "b64.h"
Fl_Help_Dialog *help_dialog = (Fl_Help_Dialog *)0;
void help_cb() {
if (!help_dialog) {
help_dialog = new Fl_Help_Dialog();
help_dialog->value(
"<HTML>\n"
"<HEAD>\n"
"<TITLE>Flarq Help</TITLE>\n"
"</HEAD>\n"
"<BODY BGCOLOR='#ffffff'>\n"
"<H2>Initiating an ARQ connect session</H2>\n"
"<P>Start by sending a 'CQ NBEMS' or some similar unique way of indicating\n"
"that you are seeking to send ARQ traffic. Do this from the digital modem\n"
"program and not from flarq. The potential station for receiving your ARQ\n"
"traffic will answer in the clear. Negotiate what digital mode you will use\n"
"for the ARQ connection; ie: PSK-63, PSK-125, PSK-250, MFKS-16 etc. Then\n"
"try that mode without ARQ to be sure that QRN and QSB will not seriously\n"
"disrupt the connection. Ask the responding station to send an ARQ beacon\n"
"using flarq. You will then see his ARQ callsign appear in the callsign\n"
"window.</P>"
"<P>Click the CONNECT button to connect with that station. The text next to\n"
"the diamond will change to CONNECTING and remain that way during the connect\n"
"time out period. During the connection process the CONNECT button will be\n"
"disabled (greyed out).</P>\n"
"<P>After a connection has been established the button label changes to\n"
"'Disconnect' and the text next to the diamond indicator will read CONNECTED.\n"
"Pressing this button will then execute an orderly disconnect from the other\n"
"station and return the program to the CONNECTED state.</P>\n"
"<P>During a file transfer the button's label changes to Abort. When the\n"
"button says Abort, pressing it will abort the file transfer and the program\n"
"will return to the CONNECTED state. During the abort text next to the\n"
"diamond indicator will read ABORTING XFR and return to CONNECTED after the\n"
"abort has been fully recognized by both ends of the connection.</P>\n"
"<H2>Beaconing</H2>\n"
"<P>Click the Beacon button to transmit a beacon signal requesting\n"
"assistance with ARQ message forwarding. The small rectangle on the Beacon\n"
"button will turn green when a beacon signal is being sent. The beacon will\n"
"repeat at the repeat interval (default is 60 seconds). You should not reduce\n"
"the repeat interval so short as to make it impossible to receive an ARQ\n"
"connection. This is particularly true on PSK-31.</P>\n"
"<H2>Diamond Indicator</H2>\n"
"<P>The diamond-shaped indicator will be green when ready to transfer messages.\n"
"The ""Not Connected"" label next to the diamond indicator will change to Sending\n"
"when sending, or Connected when connected.</P>\n"
"<H2>Send Menu</H2>\n"
"<P>The Send menu will not be enabled unless a CONNECTION has been established\n"
"with another flarq station.</P>\n"
"<P>This menu accesses four types of files. When selecting any type, the Show: field\n"
"allows you to use the dropdown arrow to choose which type of file to display.</P>\n"
"<P>The area with the question mark is where file content is displayed, if the Preview\n"
"box is checked.</P>\n"
"<P>The Filename field has a row of buttons above it which can be used to quickly\n"
"navigate through the hierarchy of folders shown. Just click the button over the\n"
"folder you want to access.</P>\n"
"<P>When Email is selected, a list of emails waiting to be transferred will be\n"
"displayed. Select an email and click the Send button to start transferring the\n"
"email.</P>\n"
"<P>When Image File is selected, Flarq can send a color, passport photo sized\n"
"picture, in about 10 minutes using PSK250.</P>\n"
"<H2>Config Menu</H2>\n"
"<P>This menu provides a place where you should enter your callsign that Flarq\n"
"will use for transmitting. Various folders are shown and can be changed, but\n"
"it is recommended that the default folders be used except in special\n"
"circumstances.</P>\n"
"<P>If you are using the Sylpheed mail client you need to check that box.\n"
"Sylpheed uses a different naming convention for storing messages inside of\n"
"it's mail folders.</P>\n"
"<P>The beacon interval is probably the most often changed setting. Use it to\n"
"control how often Flarq sends the beacon text.</P>\n"
"<P>You can enter additional beacon text which will be sent with the each time\n"
"the ARQ beacon is transmited.</P>\n"
"<P>At the bottom left of the Flarq window there is a space on the left side that\n"
"displays messages showing the Flarq status at any given time.</P>\n"
"<P>At the bottom right, there is a space for a progress indicator, which will show\n"
"a moving green bar as a message is transferred. When a transfer is completed, the\n"
"green color will disappear after filling the space, indicating that transfer has\n"
"been completed.</P>\n"
"<H2>Status Bar</H2>\n"
"<P>A notification area in the bar just above the Plain Talk label will show the name\n"
"and size of the file being transferred and how long it took to transfer when the\n"
"transfer is completed. The left and right arrows are for adjusting the number of\n"
"SOH characters preceeding each block. Leave it at the default of 10 unless you\n"
"have trouble connecting at high speed, or have too many repeat blocks. Then try\n"
"higher values to reduce the number of repeated blocks.</P>\n"
"<P>Next to the right hand arrow is an area where the quality level of the transfer\n"
"is shown. A transfer without any retries will be shown as 1.00.</P>\n"
"<P>The area next to the Clear button will display a progress indicator, which will\n"
"show the progress of the transfer. When you are sending a message, it will show\n"
"the amount of the message confirmed as being received correctly. When you are on\n"
"the receiving end, it will advance as each message frame is received.</P>\n"
"<P>The Clear button can be used to clear the flarq screen.</P>\n"
"<H2>Plain Talk</H2>\n"
"<P>You can also communicate during, before, or after a file transfer, as long as\n"
"the Connected diamond is green (showing that you are connected to the other\n"
"station), by typing in the box next to the Clear button at the very bottom of\n"
"the flarq window, and pressing Enter. The text you are sending will be shown\n"
"in red in the Plain Talk window and incoming text from the other station will\n"
"be shown in black. Text you type will be sent out at the first opportunity,\n"
"but only after a block completes being sent, so there will be a delay until\n"
"your text appears on the other station's Plain Talk window, and the other\n"
"station responds. As with most edit controls it is necessary to first put\n"
"the keyboard focus in that box by clicking in it with the mouse.</P>\n"
"<P>The maximum number of characters you can type on the Plain Talk line before\n"
"pressing Enter can be no more than 80 characters. In order to make the speed\n"
"of Plain Talk text exchanges as rapid as possible, Plain Talk uses the current\n"
"mode without any ARQ error checking, so there may be some errors at the\n"
"receiving end that would not occur if ARQ were used.</P>\n"
"<P>The Clear button next to the Plain Talk line can be used to clear the Plain\n"
"Talk display area."
"</BODY>\n"
);
}
help_dialog->show();
}

Wyświetl plik

@ -0,0 +1,225 @@
//=====================================================================
//
// base64 encoding / decoding class
//
// To create a standalone base64 encode/coder:
// g++ -DTEST b64.cxx -o base64
//
// To use in a calling program:
//
// base64 b64; // default no CRLF's in output file
// base 64 b64(true); // insert CRLF's in output file
// pass c++ string into encoder / decoder
// return value is encoded / decoded string
// original string is left unchanged
//
// string instr, outstr;
// outstr = b64.encoder(instr);
// outstr = b64.decoder(instr);
//=====================================================================
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "b64.h"
void base64::init()
{
iolen = 0;
iocp = 0;
ateof = false;
linelength = 0;
// create the etable for encoding
for (int i = 0; i < 9; i++) {
etable[i] = 'A' + i;
etable[i + 9] = 'J' + i;
etable[26 + i] = 'a' + i;
etable[26 + i + 9] = 'j' + i;
}
for (int i = 0; i < 8; i++) {
etable[i + 18] = 'S' + i;
etable[26 + i + 18] = 's' + i;
}
for (int i = 0; i < 10; i++)
etable[52 + i] = '0' + i;
etable[62] = '+';
etable[63] = '/';
// create the dtable for decoding
for (int i= 0; i < 255; i++)
dtable[i] = 0x80;
for (int i = 'A'; i <= 'I'; i++)
dtable[i] = 0 + (i - 'A');
for (int i = 'J'; i <= 'R'; i++)
dtable[i] = 9 + (i - 'J');
for (int i = 'S'; i <= 'Z'; i++)
dtable[i] = 18 + (i - 'S');
for (int i = 'a'; i <= 'i'; i++)
dtable[i] = 26 + (i - 'a');
for (int i = 'j'; i <= 'r'; i++)
dtable[i] = 35 + (i - 'j');
for (int i = 's'; i <= 'z'; i++)
dtable[i] = 44 + (i - 's');
for (int i = '0'; i <= '9'; i++)
dtable[i] = 52 + (i - '0');
dtable[(int)'+'] = 62;
dtable[(int)'/'] = 63;
dtable[(int)'='] = 0;
}
string base64::encode(string in)
{
int n;
byte igroup[3], ogroup[4];
output = "";
iocp = 0;
ateof = false;
if (crlf)
linelength = 0;
iolen = in.length();
while (!ateof) {
igroup[0] = igroup[1] = igroup[2] = 0;
for (n = 0; n < 3; n++) {
if (iocp == iolen) {
ateof = true;
break;
}
igroup[n] = (byte)in[iocp];
iocp++;
}
if (n > 0) {
ogroup[0] = etable[igroup[0] >> 2];
ogroup[1] = etable[((igroup[0] & 3) << 4) | (igroup[1] >> 4)];
ogroup[2] = etable[((igroup[1] & 0xF) << 2) | (igroup[2] >> 6)];
ogroup[3] = etable[igroup[2] & 0x3F];
if (n < 2) {
ogroup[2] = '=';
if (n < 1) {
ogroup[2] = '=';
}
}
for (int i = 0; i < 4; i++) {
if (crlf)
if (linelength >= LINELEN) {
// output += '\r';
output += '\n';
linelength = 0;
}
output += (byte)ogroup[i];
if (crlf)
linelength++;
}
}
}
if (crlf) {
// output += '\r';
output += '\n';
}
return output;
}
string base64::decode(string in)
{
int i;
output = "";
iocp = 0;
iolen = in.length();
byte c;
while (iocp < iolen) {
byte a[4], b[4], o[3];
for (i = 0; i < 4; i++) {
if (iocp == iolen) {
output = "b64 file length error.\n";
return output;
}
c = in[iocp++];
while (c <= ' ') {
if (iocp == iolen) {
return output;
}
c = in[iocp++];
}
if (dtable[c] & 0x80) {
output = "Illegal character in b64 file.\n";
return output;
}
a[i] = c;
b[i] = (byte)dtable[c];
}
o[0] = (b[0] << 2) | (b[1] >> 4);
o[1] = (b[1] << 4) | (b[2] >> 2);
o[2] = (b[2] << 6) | b[3];
output += o[0];
if (a[2] != '=') {
output += o[1];
if (a[3] != '=')
output += o[2];
}
}
return output;
}
#ifdef TEST
#include <iostream>
#include <fstream>
void usage(void)
{
printf("b64 -- Encode/decode file as base64. Call:\n");
printf(" b64 e/d < infile > outfile\n");
}
int main(int argc,char*argv[])
{
char opt;
bool decoding = false;
char * cp;
byte c;
string inputstring;
string infilename;
string outputstring;
string outfilename;
base64 b64;
if (argc < 2) {
usage();
return(0);
}
opt = *(argv[1]);
if (opt == 'd' || opt == 'D') {
while (!std::cin.eof()) {
c = std::cin.get();
if (!std::cin.eof())
inputstring += c;
}
outputstring = b64.decode( inputstring );
size_t len = outputstring.length();
for (size_t n = 0; n < len; n++)
std::cout << (unsigned char)outputstring[n];
} else if (opt == 'e' || opt == 'E') {
while (!std::cin.eof()) {
c = std::cin.get();
if (!std::cin.eof())
inputstring += c;
}
outputstring = b64.encode( inputstring );
size_t len = outputstring.length();
for (size_t n = 0; n < len; n++)
std::cout << (unsigned char)outputstring[n];
} else
usage();
return 0;
}
#endif

Plik diff jest za duży Load Diff

Wyświetl plik

@ -0,0 +1,301 @@
#include <config.h>
#include <iostream>
#include <string>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <cerrno>
#ifdef __MINGW32__
# include "compat.h"
#endif
#if HAVE_SYS_UTSNAME_H
# include <sys/utsname.h>
#endif
#include <signal.h>
#include <getopt.h>
#include <FL/Fl.H>
#include "stacktrace.h"
#include "flarq.h"
using namespace std;
string option_help, version_text, build_text;
extern string arq_address, arq_port;
extern bool ioMPSK;
extern bool SHOWDEBUG;
void generate_option_help(void)
{
ostringstream help;
help << "Usage:\n"
<< " " << PACKAGE_NAME << " [option...]\n\n";
help << PACKAGE_NAME << " options:\n\n"
<< " --arq-protocol TYPE\n"
<< " Set the ARQ protocol\n"
<< " May be either ``fldigi'' or ``multipsk''\n"
<< " The default is: " << (ioMPSK ? "multipsk" : "fldigi") << "\n\n"
<< " --arq-server-address HOSTNAME\n"
<< " Set the ARQ TCP server address\n"
<< " The default is: " << arq_address << "\n\n"
<< " --arq-server-port PORT\n"
<< " Set the ARQ TCP server port\n"
<< " The default is: " << arq_port << "\n\n"
<< " --debug\n"
<< " Enable debugging messages\n\n"
<< " --version\n"
<< " Print version information\n\n"
<< " --build-info\n"
<< " Print build information\n\n"
<< " --help\n"
<< " Print this option help\n\n";
// Fl::help looks ugly so we'll write our own
help << "Standard FLTK options:\n\n"
<< " -bg COLOR, -background COLOR\n"
<< " Set the background color\n"
<< " -bg2 COLOR, -background2 COLOR\n"
<< " Set the secondary (text) background color\n\n"
<< " -di DISPLAY, -display DISPLAY\n"
<< " Set the X display to use DISPLAY,\n"
<< " format is ``host:n.n''\n\n"
<< " -dn, -dnd or -nodn, -nodnd\n"
<< " Enable or disable drag and drop copy and paste in text fields\n\n"
<< " -fg COLOR, -foreground COLOR\n"
<< " Set the foreground color\n\n"
<< " -g GEOMETRY, -geometry GEOMETRY\n"
<< " Set the initial window size and position\n"
<< " GEOMETRY format is ``WxH+X+Y''\n"
<< " ** " << PACKAGE_NAME << " may override this setting **\n\n"
<< " -i, -iconic\n"
<< " Start " << PACKAGE_NAME << " in iconified state\n\n"
<< " -k, -kbd or -nok, -nokbd\n"
<< " Enable or disable visible keyboard focus in non-text widgets\n\n"
<< " -na CLASSNAME, -name CLASSNAME\n"
<< " Set the window class to CLASSNAME\n\n"
<< " -ti WINDOWTITLE, -title WINDOWTITLE\n"
<< " Set the window title\n\n";
help << "Additional UI options:\n\n"
<< " --font FONT[:SIZE]\n"
<< " Set the widget font and (optionally) size\n"
<< " The default is: " << Fl::get_font(FL_HELVETICA)
<< ':' << FL_NORMAL_SIZE << "\n\n";
option_help = help.str();
}
int parse_args(int argc, char** argv, int& idx)
{
// Only handle long options
if ( !(strlen(argv[idx]) >= 2 && strncmp(argv[idx], "--", 2) == 0) )
return 0;
enum { OPT_ZERO,
#ifndef __WOE32__
OPT_RX_IPC_KEY, OPT_TX_IPC_KEY,
#endif
OPT_ARQ_PROTOCOL, OPT_ARQ_ADDRESS, OPT_ARQ_PORT,
OPT_FONT,
OPT_DEBUG, OPT_DEPRECATED, OPT_HELP, OPT_VERSION, OPT_BUILD_INFO
};
const char shortopts[] = "+";
struct option longopts[] = {
#ifndef __WOE32__
{ "rx-ipc-key", 1, 0, OPT_RX_IPC_KEY },
{ "tx-ipc-key", 1, 0, OPT_TX_IPC_KEY },
#endif
{ "arq-protocol", 1, 0, OPT_ARQ_PROTOCOL },
{ "arq-server-address", 1, 0, OPT_ARQ_ADDRESS },
{ "arq-server-port", 1, 0, OPT_ARQ_PORT },
{ "font", 1, 0, OPT_FONT },
{ "debug", 0, 0, OPT_DEBUG },
{ "help", 0, 0, OPT_HELP },
{ "version", 0, 0, OPT_VERSION },
{ "build-info", 0, 0, OPT_BUILD_INFO },
{ 0 }
};
int longindex;
optind = idx;
int c = getopt_long(argc, argv, shortopts, longopts, &longindex);
switch (c) {
case -1:
return 0;
case 0:
// handle options with non-0 flag here
return 0;
case OPT_ARQ_PROTOCOL:
if (!strcmp(optarg, "fldigi"))
ioMPSK = false;
else if (!strcmp(optarg, "multipsk"))
ioMPSK = true;
else {
cerr << "E: unknown protocol type\n";
exit(EXIT_FAILURE);
}
break;
case OPT_ARQ_ADDRESS:
arq_address = optarg;
break;
case OPT_ARQ_PORT:
arq_port = optarg;
break;
case OPT_FONT: {
char *p;
if ((p = strchr(optarg, ':'))) {
*p = '\0';
FL_NORMAL_SIZE = strtol(p + 1, 0, 10);
}
Fl::set_font(FL_HELVETICA, optarg);
break;
}
case OPT_DEBUG:
SHOWDEBUG = true;
break;
case OPT_DEPRECATED:
cerr << "W: the --" << longopts[longindex].name
<< " option has been deprecated and will be removed in a future version\n";
break;
case OPT_HELP:
cout << option_help;
exit(EXIT_SUCCESS);
case OPT_VERSION:
cout << version_text;
exit(EXIT_SUCCESS);
case OPT_BUILD_INFO:
cout << build_text;
exit(EXIT_SUCCESS);
case '?': default:
cerr << "Try `" << PACKAGE_NAME << " --help' for more information.\n";
exit(EXIT_FAILURE);
}
// Increment idx by the number of args we used and return that number.
// We must check whether the option argument is in the same argv element
// as the option name itself, i.e., --opt=arg.
c = longopts[longindex].has_arg ? 2 : 1;
if (c == 2) {
string arg = argv[idx];
string::size_type p;
if ((p = arg.rfind(optarg)) != string::npos && arg[p-1] == '=')
c = 1;
}
idx += c;
return c;
}
void set_platform_ui(void)
{
#if defined(__APPLE__)
FL_NORMAL_SIZE = 12;
#elif defined(__WOE32__)
Fl::set_font(FL_HELVETICA, "Tahoma");
FL_NORMAL_SIZE = 11;
#else
FL_NORMAL_SIZE = 12;
#endif
}
void generate_version_text(void)
{
version_text.assign(PACKAGE_STRING "\nCopyright (C) 2008, 2009 " PACKAGE_AUTHORS ".\n");
version_text.append("License GPLv2+: GNU GPL version 2 or later "
"<http://www.gnu.org/licenses/gpl-2.0.html>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n");
ostringstream s;
s << "Build information:\n";
s << " built : " << BUILD_DATE << " by " << BUILD_USER
<< '@' << BUILD_HOST << " on " << BUILD_BUILD_PLATFORM
<< " for " << BUILD_TARGET_PLATFORM << "\n\n"
<< " configure flags: " << BUILD_CONFIGURE_ARGS << "\n\n"
<< " compiler : " << BUILD_COMPILER << "\n\n"
<< " compiler flags : " << FLARQ_BUILD_CXXFLAGS << "\n\n"
<< " linker flags : " << FLARQ_BUILD_LDFLAGS << "\n\n"
<< " libraries : " "FLTK " FLTK_BUILD_VERSION "\n";
s << "\nRuntime information:\n";
struct utsname u;
if (uname(&u) != -1) {
s << " system : " << u.sysname << ' ' << u.nodename
<< ' ' << u.release << ' ' << u.version << ' ' << u.machine << "\n\n";
}
build_text = s.str();
}
void setup_signal_handlers(void)
{
#ifndef __WOE32__
struct sigaction action;
memset(&action, 0, sizeof(struct sigaction));
// no child stopped notifications, no zombies
action.sa_handler = SIG_DFL;
action.sa_flags = SA_NOCLDSTOP | SA_NOCLDWAIT;
sigaction(SIGCHLD, &action, NULL);
action.sa_flags = 0;
action.sa_handler = handle_signal;
sigaction(SIGSEGV, &action, NULL);
sigaction(SIGILL, &action, NULL);
sigaction(SIGABRT, &action, NULL);
sigaction(SIGUSR2, &action, NULL);
action.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &action, NULL);
sigemptyset(&action.sa_mask);
sigaddset(&action.sa_mask, SIGUSR2);
pthread_sigmask(SIG_BLOCK, &action.sa_mask, NULL);
#else
signal(SIGSEGV, handle_signal);
signal(SIGILL, handle_signal);
signal(SIGABRT, handle_signal);
#endif
}

Wyświetl plik

@ -0,0 +1,5 @@
#include <windows.h> // include for version info constants
#define IDI_ICON 101
IDI_ICON ICON DISCARDABLE "flarq.ico"

Wyświetl plik

@ -0,0 +1,422 @@
#ifndef arq_H
#define arq_H
// arq module arq.h
// Copyright (c) 2007, Dave Freese, W1HKJ
//
//
// arq.cxx / arq.h is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// arq.pm 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. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with tUr program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// link layer spec for fldigi_arq
//
// generic Frame format:
// <SOH>dcl[info])12EF<EOT|SOH>
// | ||| | | |
// | ||| | | +--ASCII <SOH> or <EOT> (0x04) character
// | ||| | +-------checksum (4xAlphaNum)
// | ||| +-------------Payload (1 ... 2^N chars, N 4, 5, 6, 7 8)
// | ||+---------------Block type
// | |+----------------Stream id
// | +-----------------Protocol version number
// +---------------------ASCII <SOH> (0x01) character
// BLOCKSIZE = 2^n
//
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <vector>
#include <list>
#include <cctype>
#include <FL/Fl.H>
using namespace std;
#define DEBUG
#define arq_Version "arq 0.1"
//=====================================================================
// following Block Types are defined in K9PS ARQ Protocol specification
#define IDENT 'i'
#define CONREQ 'c'
#define CONACK 'k'
#define REFUSED 'r'
#define DISREQ 'd'
#define STATUS 's'
#define POLL 'p'
#define FMTFAIL 'f'
// following Block Types are extensions to the K9PS specification
#define _ABORT 'a'
#define _ACKABORT 'o'
#define _DISACK 'b'
#define _UNPROTO 'u'
#define _TALK 't'
//=====================================================================
#define SOH 0X01
#define STX 0X02
#define ACK 0X06
#define SUB 0X1A
#define EOT 0X04
//=====================================================================
//ARQ defaults
#define MAXHEADERS 8 // Max. number of missing blocks
#define MAXCOUNT 64 // DO NOT CHANGE THIS CONSTANT
#define EXPONENT 7 // Bufferlength = 2 ^ EXPONENT = 128
//=====================================================================
//link timing defaults
#define RETRIES 5
#define RETRYTIME 10000 // # milliseconds between retries
#define TXDELAY 500 // # milliseconds from xmt to rcv
#define TIMEOUT 60000 // # milliseconds before TIMED OUT
#define ARQLOOPTIME 100 // # msec for loop timing
//=====================================================================
//link states
#define DOWN 0
#define TIMEDOUT 1
#define ABORT 3
#define CONNECTING 4
#define CONNECTED 5
#define WAITING 6
#define WAITFORACK 7
#define DISCONNECT 8
#define DISCONNECTING 9
#define ABORTING 10
#define SENDING 0x80;
//=====================================================================
extern char *ARQASCII[];
// crc 16 cycle redundancy check sum for data block integrity
class Ccrc16 {
private:
unsigned int crcval;
char ss[5];
public:
Ccrc16() { crcval = 0xFFFF; }
~Ccrc16() {};
void reset() { crcval = 0xFFFF;}
unsigned int val() {return crcval;}
string sval() {
snprintf(ss, sizeof(ss), "%04X", crcval);
return ss;
}
void update(char c) {
crcval ^= c;
for (int i = 0; i < 8; ++i) {
if (crcval & 1)
crcval = (crcval >> 1) ^ 0xA001;
else
crcval = (crcval >> 1);
}
}
unsigned int crc16(char c) {
update(c);
return crcval;
}
unsigned int crc16(string s) {
reset();
for (size_t i = 0; i < s.length(); i++)
update(s[i]);
return crcval;
}
string scrc16(string s) {
crc16(s);
return sval();
}
};
// text block; block # and string of text
class cTxtBlk {
private:
int number;
string txt;
public:
cTxtBlk() {number = -1; txt = "";}
cTxtBlk(int n, string text) { number = n; txt = text; }
~cTxtBlk() {}
void nbr(int n) { number = n;}
int nbr() { return number; }
string text() { return txt; }
void text(string t) { txt = t;}
bool operator <(const cTxtBlk &b)const { return number < b.number; }
bool operator ==(const cTxtBlk b)const { return number == b.number; }
};
class arq {
private:
bool arqstop;
string MyCall;
string UrCall;
string Header;
string Frame;
string Payload;
string rcvPayload;
string logfile;
char MyStreamID;
char UrStreamID;
char MyBlockLengthChar;
char UrBlockLengthChar;
char BlockNumberChar;
char fID;
int blknbr;
// queues //
string TxTextQueue; // Text out to mail engine
string TxPlainTextQueue; // plain text transmit queu
string RxTextQueue; // Text in from mail engine
string RxFrameQueue;
char lastRxChar;
bool TXflag;
int Sessionnumber;
int Bufferlength;
int maxheaders;
int exponent;
// status variables
int payloadlength; // Average length of payload received
long totalRx; // total number of frames received
long totalTx; // total number of frames transmitted
long nbrbadRx; // number with crc errors
long nbrbadTx; // total number of repeats required
// int max_idle; // Dynamic timing slot initial value
int SessionNumber;
bool PollOK; // used for status handshake
bool wrappedFlag; // set true if missing blocks bit count
// has wrapped around
long retrytime;
long RetryTime;
long retries;
long Retries;
long timeout;
long Timeout;
long tx2txdelay;
long TxDelay;
long loopcount;
long baseRetryTime;
long baseTimeout;
long baseRetries;
bool immediate;
bool primary;
Ccrc16 framecrc;
// My status
int Firstsent; // First Header I sent last turn
int LastHeader; // Last Header I sent last turn
int Lastqueued; // Last Header in static send queue
int EndHeader; // Last I received o.k.
int GoodHeader; // Last Header received consecutively
int blkcount;
int Blocks2Send; // number of blocks at beginning of Tx
vector<int> MyMissing; // missing Rx blocks
string MissingRxBlocks;
vector<cTxtBlk> RxPending; // RxPending Rx blocks (not consecutive)
list<cTxtBlk> TxBlocks; // fifo of transmit buffers
list<cTxtBlk> TxMissing; // fifo of sent; RxPending Status report
list<cTxtBlk> TxPending; // fifo of transmitted buffers pending print
// Ur status
int UrGoodHeader; // Other station's Good Header
int UrLastHeader; // Other station's Header last sent
int UrEndHeader; // Other station's last received Header
vector<int> UrMissing; // Other station's missing Headers
int LinkState; // status of ARQ link
int Sending;
bool bABORT;
// Link quality for sending *** used for testing only !! ***
// double sendquality;
void reset();
void resetTx();
void resetRx();
int rtry();
void setBufferlength();
void checkblocks();
string upcase(string s);
void newblocknumber();
void newHeader();
void IdHeader();
void UnkHeader();
void connectFrame();
void disackFrame();
void ackFrame();
void ttyconnectFrame();
void ttyackFrame();
void pollFrame();
void identFrame();
void pingFrame();
void statFrame();
void disconnectFrame();
void abortFrame();
void ackAbortFrame();
void beaconFrame(string txt);
void textFrame(cTxtBlk block);
void talkFrame(string txt);
void addToTxQue(string s);
void sendblocks();
void transmitdata();
string frame() {return Frame;}
bool isUrcall();
void parseIDENT();
void parseCONREQ();
void parseCONACK();
void parseREFUSED();
void parseDISREQ();
void parseDISACK();
void parseABORT();
void parseACKABORT();
void parseUNPROTO();
void parseSTATUS();
void parsePOLL();
void parseDATA();
void parseTALK();
int parseFrame(string txt);
// external functions called by arq class
void (*sendfnc)(const string& s);
bool (*getc1)(char &);
void (*rcvfnc)();
void (*printRX)(string s);
void (*printTX)(string s);
void (*printRX_DEBUG)(string s);
void (*printTX_DEBUG)(string s);
void (*printTALK)(string s);
void (*abortfnc)();
void (*disconnectfnc)();
void (*rxUrCall)(string s);
void (*qualityfnc)(string s);
void (*printSTATUS)(string s, double disptime);
public:
arq();
~arq() {};
friend void arqloop(void *me);
void start_arq();
string checksum(string &s);
void myCall(string s) { MyCall = upcase(s);}
string myCall() { return MyCall;}
void urCall(string s) { UrCall = s;}
string urCall() { return UrCall;}
void newsession();
void setSendFunc( void (*f)(const string& s)) { sendfnc = f;}
void setGetCFunc( bool (*f)(char &)) { getc1 = f;}
void setRcvFunc( void (*f)()) { rcvfnc = f;}
void setPrintRX( void (*f)(string s)) { printRX = f;}
void setPrintTX( void (*f)(string s)) { printTX = f;}
void setPrintTALK (void (*f)(string s)) {printTALK = f;}
void setPrintRX_DEBUG (void (*f)(string s)){printRX_DEBUG = f;}
void setPrintTX_DEBUG (void (*f)(string s)) {printTX_DEBUG = f;}
void setPrintSTATUS (void (*f)(string s, double disptime)) { printSTATUS = f;}
void setMaxHeaders( int mh ) { maxheaders = mh; }
void setExponent( int exp ) { exponent = exp; setBufferlength(); }
int getExponent() { return (int) exponent;}
void setWaitTime( int rtime ) { RetryTime = rtime; baseRetryTime = rtime; }
int getWaitTime() { return (int) RetryTime; }
void setRetries ( int rtries ) {
retries = Retries = baseRetries = rtries; }
int getRetries() { return (int) Retries; }
void setTimeout ( int tout ) { Timeout = tout; baseTimeout = tout; }
int getTimeout() { return (int) Timeout; }
int getTimeLeft() { return (int) timeout * ARQLOOPTIME / 1000; }
void setTxDelay ( int r2t ) { TxDelay = r2t; }
int getTxDelay() { return (int) TxDelay; }
int getRetryCount() { return (int)(Retries - retries + 1); }
void setrxUrCall( void (*f)(string s)) { rxUrCall = f;}
void setQualityValue( void (*f)(string s)) { qualityfnc = f;}
void setAbortedTransfer( void (*f)()) { abortfnc = f;};
void setDisconnected( void (*f)()) { disconnectfnc = f;};
void rcvChar( char c );
void connect(string callsign);//, int blocksize = 6, int retries = 4);
void sendblocks( string txt );
void sendBeacon (string txt);
void sendPlainText( string txt );
string getText() { return RxTextQueue;}
void sendText(string txt);
bool connected() { return (LinkState == CONNECTED); }
void disconnect();
void abort();
int state() { return (LinkState + Sending);}
int TXblocks() { return totalTx;}
int TXbad() { return nbrbadTx;}
int RXblocks() { return totalRx;}
int RXbad() { return nbrbadRx;}
double quality() {
if (totalTx == 0) return 1.0;
return ( 1.0 * (totalTx - nbrbadTx) / totalTx );
}
float percentSent() {
if (Blocks2Send == 0) return 0.0;
if ((TxBlocks.empty() && TxMissing.empty())) return 1.0;
return (1.0 * (Blocks2Send - TxBlocks.size() - TxMissing.size()) / Blocks2Send);
}
bool transferComplete() {
if (TxMissing.empty() == false) return false;
if (TxBlocks.empty() == false) return false;
return true;
}
};
#endif

Wyświetl plik

@ -0,0 +1,89 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0109
#ifndef arqdialogs_h
#define arqdialogs_h
#include <FL/Fl.H>
#include "flinput2.h"
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Menu_Bar.H>
extern Fl_Menu_Bar *mnu;
extern void ComposeMail();
extern void cbMenuConfig();
extern void cbMenuAbout();
#include <FL/Fl_Group.H>
#include <FL/Fl_Button.H>
extern Fl_Button *btnCONNECT;
extern Fl_Input2 *txtURCALL;
#include <FL/Fl_Light_Button.H>
extern Fl_Light_Button *btnBEACON;
extern Fl_Input2 *txtBeaconing;
#include <FL/Fl_Box.H>
extern Fl_Box *indCONNECT;
extern Fl_Input2 *txtState;
#include <FL/Fl_Text_Display.H>
extern Fl_Text_Display *txtARQ;
extern Fl_Input2 *txtStatus;
extern Fl_Input2 *txtStatus2;
#include <FL/Fl_Progress.H>
extern Fl_Progress *prgStatus;
extern Fl_Button *btnClearText;
extern Fl_Text_Display *txtRX;
extern Fl_Input2 *txtTX;
extern Fl_Button *btnSendTalk;
Fl_Double_Window* arq_dialog();
extern Fl_Menu_Item menu_mnu[];
#define mnuExit (menu_mnu+1)
#define mnuSend (menu_mnu+3)
#define mnuSendEmail (menu_mnu+4)
#define mnuSendText (menu_mnu+5)
#define mnuSendImage (menu_mnu+6)
#define mnuSendBinary (menu_mnu+7)
#define mnuCompose (menu_mnu+9)
#define mnuConfig (menu_mnu+10)
#define mnuHelp (menu_mnu+11)
#define mnuHowTo (menu_mnu+12)
#define mnuAbout (menu_mnu+13)
extern Fl_Input2 *txtMyCall;
extern Fl_Input2 *txtFolder;
extern Fl_Input2 *txtOutputFolder;
extern Fl_Input2 *txtMail_IN;
extern Fl_Input2 *txtMail_OUT;
extern Fl_Input2 *txtMail_SENT;
#include <FL/Fl_Check_Button.H>
extern Fl_Check_Button *btnSylpheedMail;
#include <FL/Fl_Spinner.H>
extern Fl_Spinner *spnExponent;
extern Fl_Spinner *spnRetries;
extern Fl_Spinner *spnWaitTime;
extern Fl_Spinner *spnTimeout;
extern Fl_Spinner *spnTxDelay;
extern Fl_Spinner *spnBcnInterval;
extern Fl_Input2 *txtBlockSize;
extern Fl_Button *btnOK;
extern Fl_Input2 *txtBEACONTXT;
Fl_Double_Window* arq_configure();
#include "table.h"
extern Table *tblOutgoing;
extern void sendCancel();
extern Fl_Button *send_Cancel;
#include <FL/Fl_Return_Button.H>
extern void sendOK();
extern Fl_Return_Button *send_OK;
Fl_Double_Window* arq_SendSelect();
extern Fl_Input2 *inpMailTo;
extern Fl_Input2 *inpMailSubj;
#include <FL/Fl_Text_Editor.H>
extern Fl_Text_Editor *txtMailText;
#include <FL/Fl_Pack.H>
extern void cb_OpenComposeMail();
extern Fl_Button *btnOpenComposedMail;
extern void cb_ClearComposer();
extern Fl_Button *btnClearComposer;
extern void cb_UseTemplate();
extern Fl_Button *btnUseTemplate;
extern void cb_CancelComposeMail();
extern Fl_Button *btnCancelComposedMail;
extern void cb_SaveComposeMail();
extern Fl_Button *btnSaveComposedMail;
Fl_Double_Window* arq_composer();
#endif

Wyświetl plik

@ -0,0 +1,34 @@
//=====================================================================
//
// base64 encoding / decoding class
//
//=====================================================================
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string>
using namespace std;
typedef unsigned char byte;
class base64 {
#define LINELEN 72
private:
string output;
size_t iolen;
size_t iocp;
bool ateof;
byte dtable[256];
byte etable[256];
int linelength;
bool crlf;
void init();
public:
base64(bool t = false) {crlf = t; init(); };
~base64(){};
string encode(string in);
string decode(string in);
};

Wyświetl plik

@ -0,0 +1,57 @@
#ifndef FLARQ_H
#define FLARQ_H
#include <string>
#define SOHCOUNT 10
extern void arqBEACON();
extern void arqCLOSE();
extern void arqCONNECT();
extern void cbMenuAbout();
extern void cbMenuConfig();
extern void cbSetConfig();
extern void closeConfig();
extern void sendCancel();
extern void sendOK();
extern void cb_SortByDate();
extern void cb_SortByTo();
extern void cb_SortBySubj();
extern void abortTransfer();
extern void cbAbort();
extern void cbClearText();
extern void testDirectory(std::string);
extern void cbSendTalk();
extern void cbClearTalk();
extern void help_cb();
extern void sendEmailFile();
extern void sendAsciiFile();
extern void sendImageFile();
extern void sendBinaryFile();
extern void changeMyCall(const char *);
extern void changeBeaconText(const char *);
extern std::string MyCall;
extern std::string InFolder;
extern std::string OutFolder;
extern std::string MailInFolder;
extern std::string MailOutFolder;
extern std::string MailSentFolder;
extern std::string Logfile;
extern bool bSylpheedFolder;
extern std::string beacontext;
extern int exponent;
extern int txdelay;
extern int iretries;
extern long iwaittime;
extern long itimeout;
extern int bcnInterval;
extern void cb_SaveComposeMail();
extern void cb_CancelComposeMail();
extern void cb_UseTemplate();
extern void cb_OpenComposeMail();
extern void ComposeMail();
#endif

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef flarqenv_h_
#define flarqenv_h_
#include <string>
extern std::string option_help, version_text, build_text;
void generate_option_help(void);
void generate_version_text(void);
int parse_args(int argc, char** argv, int& idx);
void set_platform_ui(void);
void setup_signal_handlers(void);
#endif // flarqenv_h_

Wyświetl plik

@ -57,6 +57,7 @@ extern const char *tx2_icon[];
extern const char *rx_icon[];
extern const char *tx_icon[];
extern const char *fldigi_icon[];
extern const char *flarq_icon[];
extern const char *waterfall_icon[];
extern const char *dice_icon[];
extern const char *pskr_icon[];

24
src/include/pkg.h 100644
Wyświetl plik

@ -0,0 +1,24 @@
#ifndef PKG_H_
#define PKG_H_
#include <config.h>
#if BUILD_FLDIGI
# define PACKAGE_AUTHORS FLDIGI_AUTHORS
#else
# define PACKAGE_AUTHORS FLARQ_AUTHORS
# undef PACKAGE
# define PACKAGE "flarq"
# undef PACKAGE_NAME
# define PACKAGE_NAME "flarq"
# undef PACKAGE_TARNAME
# define PACKAGE_TARNAME "flarq"
# undef PACKAGE_VERSION
# define PACKAGE_VERSION FLARQ_VERSION
# undef PACKAGE_STRING
# define PACKAGE_STRING PACKAGE_TARNAME " " PACKAGE_VERSION
# undef VERSION
# define VERSION PACKAGE_VERSION
#endif
#endif

Wyświetl plik

@ -803,8 +803,8 @@ void generate_version_text(void)
<< " for " << BUILD_TARGET_PLATFORM << "\n\n"
<< " configure flags: " << BUILD_CONFIGURE_ARGS << "\n\n"
<< " compiler : " << BUILD_COMPILER << "\n\n"
<< " compiler flags : " << BUILD_CXXFLAGS << "\n\n"
<< " linker flags : " << BUILD_LDFLAGS << "\n\n"
<< " compiler flags : " << FLDIGI_BUILD_CXXFLAGS << "\n\n"
<< " linker flags : " << FLDIGI_BUILD_LDFLAGS << "\n\n"
<< " libraries : " "FLTK " FLTK_BUILD_VERSION "\n"
<< " " "libsamplerate " << SAMPLERATE_BUILD_VERSION "\n";

Wyświetl plik

@ -25,6 +25,8 @@
#include <FL/Fl.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Widget.H>
#include <FL/Fl_Group.H>
#if USE_IMAGE_LABELS
# include <map>
@ -35,7 +37,6 @@
# include <FL/Fl_Image.H>
# include <FL/Fl_Pixmap.H>
#include "configuration.h"
#endif

Wyświetl plik

@ -525,7 +525,7 @@ void pRSID(string &s, size_t &i)
#ifndef __MINGW32__
void set_env(void)
{
enum { PATH, FLDIGI_RX_IPC_KEY, FLDIGI_TX_IPC_KEY, FLDIGI_VERSION,
enum { PATH, FLDIGI_RX_IPC_KEY, FLDIGI_TX_IPC_KEY, FLDIGI_VERSION_ENVVAR,
FLDIGI_PID, FLDIGI_CONFIG_DIR,
FLDIGI_MY_CALL, FLDIGI_MY_NAME, FLDIGI_MY_LOCATOR,

Wyświetl plik

@ -6843,3 +6843,968 @@ const char *fldigi_icon[] = {
". . . . . . . . . . . . . I H . . . O 5.}+o |+t 1+X.C..+,+p.8 ).9 . . . y.0.. . . . . . . . . . ",
". . . . . 9 9 . . . . . . P 9 . . . . . . p X D.9 P O <.~.2+. . . . . . :.<.. . . . . . . . . . ",
". . . . . @ @ . . . . . . . . . . . . . . &.I . . . . . ~.T.. . . . . . #.P.. . . . . . . . . . "};
/* XPM */
const char *flarq_icon[] = {
/* columns rows colors chars-per-pixel */
"48 35 924 2",
" c None",
". c #5B1E0E",
"+ c #7F381B",
"@ c #A7624B",
"# c #A8624E",
"$ c #652012",
"% c #90555F",
"& c #AA7A86",
"* c #D4B5BE",
"= c #5E231C",
"- c #540900",
"; c #AC5D55",
"> c #B4644F",
", c #CF7F58",
"' c #FCAD85",
") c #FBB18F",
"! c #BA7057",
"~ c #965140",
"{ c #4F1509",
"] c #3B1314",
"^ c #45151B",
"/ c #895156",
"( c #AB8687",
"_ c #D7C6C1",
": c #FFFFFD",
"< c #FFFFFE",
"[ c #A58088",
"} c #945D68",
"| c #642D34",
"1 c #AC6352",
"2 c #A45C49",
"3 c #A35B46",
"4 c #CC8C74",
"5 c #F4B8A0",
"6 c #FAC5A8",
"7 c #FFD4B3",
"8 c #FFD8B8",
"9 c #FFDCBD",
"0 c #FFCFAC",
"a c #E7A380",
"b c #A2563C",
"c c #984D37",
"d c #A2787A",
"e c #997474",
"f c #AA8B91",
"g c #D1C0C6",
"h c #CAB3BD",
"i c #FBE6F1",
"j c #F9FFFF",
"k c #F8FAFA",
"l c #FEFFFF",
"m c #F3F2EF",
"n c #E9D7D9",
"o c #AC9092",
"p c #AC8C8D",
"q c #926A6E",
"r c #9A737B",
"s c #9B747C",
"t c #9E573C",
"u c #98543D",
"v c #9A5F47",
"w c #BF8469",
"x c #E9AE90",
"y c #FFCAA8",
"z c #FFD9B6",
"A c #FFDFBA",
"B c #FDE1BA",
"C c #FDDEB8",
"D c #FEDBBB",
"E c #FBDBC3",
"F c #F8DBC5",
"G c #FFDCC3",
"H c #FFD1AF",
"I c #FBB891",
"J c #E79B74",
"K c #9A4E30",
"L c #9B5644",
"M c #7D4F54",
"N c #D0BCBE",
"O c #F5EDE7",
"P c #FCF4EE",
"Q c #FFFAFC",
"R c #FFFFFF",
"S c #C7BDC6",
"T c #C4B0BD",
"U c #F4F3F8",
"V c #FDFCFF",
"W c #FFFDFF",
"X c #F7FFFF",
"Y c #DEDCDC",
"Z c #E6E1E1",
"` c #FFFAF9",
" . c #FFF3F5",
".. c #FFF4F7",
"+. c #E2D9DA",
"@. c #C1AEB5",
"#. c #C5A3AF",
"$. c #7B5057",
"%. c #7D2F24",
"&. c #C87559",
"*. c #EA9464",
"=. c #FFA873",
"-. c #FFB886",
";. c #FFC193",
">. c #FBBD92",
",. c #FBBE92",
"'. c #F9B98A",
"). c #FAB784",
"!. c #F8AE77",
"~. c #F9AC76",
"{. c #F3A97B",
"]. c #F3BB97",
"^. c #FDD7BD",
"/. c #FEDCC3",
"(. c #FFDBB4",
"_. c #FED2A6",
":. c #FEBF94",
"<. c #E89574",
"[. c #D07355",
"}. c #C06F4F",
"|. c #C09581",
"1. c #F0F1E9",
"2. c #E8FBF4",
"3. c #EEF9F3",
"4. c #FDFDFE",
"5. c #FDF8FE",
"6. c #EFE7ED",
"7. c #A6969F",
"8. c #F2E9EF",
"9. c #F7F9F9",
"0. c #FEFDFF",
"a. c #B2A3AC",
"b. c #CBBFC7",
"c. c #FCFBFE",
"d. c #F9F6F8",
"e. c #F5F8F7",
"f. c #F6FFFF",
"g. c #69302D",
"h. c #5D0100",
"i. c #A0402C",
"j. c #CC7D59",
"k. c #BF6F4E",
"l. c #C16645",
"m. c #F6996A",
"n. c #FCA264",
"o. c #F8995F",
"p. c #F3925E",
"q. c #F29968",
"r. c #F29F71",
"s. c #E79469",
"t. c #C26640",
"u. c #CF6A43",
"v. c #FD9366",
"w. c #FF9B68",
"x. c #F99B63",
"y. c #F19F6E",
"z. c #EEAB80",
"A. c #F8C59B",
"B. c #FBD3AB",
"C. c #FCD2AA",
"D. c #FCD9B1",
"E. c #F8D1AA",
"F. c #F9C596",
"G. c #FFB371",
"H. c #FEAC6B",
"I. c #D69B78",
"J. c #EAD5D1",
"K. c #ECF6FA",
"L. c #F1FAFB",
"M. c #FFFBFF",
"N. c #FDF4FB",
"O. c #FDFAFB",
"P. c #D3CACE",
"Q. c #D8C7CE",
"R. c #F6FAF8",
"S. c #FEFCFF",
"T. c #C4B4C0",
"U. c #D3C8D3",
"V. c #FAFBFF",
"W. c #FBFBFF",
"X. c #FBFDFF",
"Y. c #F7FEFF",
"Z. c #F8DEDA",
"`. c #B76C57",
" + c #D76E4E",
".+ c #F89463",
"++ c #F9A36A",
"@+ c #FFB783",
"#+ c #F5A27A",
"$+ c #D0744E",
"%+ c #EB9060",
"&+ c #E68655",
"*+ c #EA8855",
"=+ c #F1935B",
"-+ c #F0975D",
";+ c #D27B43",
">+ c #E18450",
",+ c #E98B5A",
"'+ c #DD7C50",
")+ c #D07242",
"!+ c #F9A06A",
"~+ c #FFA771",
"{+ c #F6A26B",
"]+ c #EE9D67",
"^+ c #EEA26D",
"/+ c #F2AA77",
"(+ c #ECA776",
"_+ c #EDAC7B",
":+ c #EEB17D",
"<+ c #F1A55D",
"[+ c #FFA45C",
"}+ c #DC855E",
"|+ c #D9A3A2",
"1+ c #F5F0FC",
"2+ c #E9F7FA",
"3+ c #F6FDFE",
"4+ c #FDFBFE",
"5+ c #F8F9F9",
"6+ c #D1CFD0",
"7+ c #CCB9C0",
"8+ c #F9FAF9",
"9+ c #FBFAFC",
"0+ c #F7F0F5",
"a+ c #D7C6D1",
"b+ c #E7E0EB",
"c+ c #EAF4FB",
"d+ c #F1F9FD",
"e+ c #F9FEFF",
"f+ c #F2FCFB",
"g+ c #F6F5F5",
"h+ c #CA9E8E",
"i+ c #F4A27A",
"j+ c #FAA77A",
"k+ c #F6B280",
"l+ c #F5C896",
"m+ c #FED8AD",
"n+ c #FFCFAB",
"o+ c #FFCCA8",
"p+ c #F8C39B",
"q+ c #F5BC9C",
"r+ c #F2B48F",
"s+ c #ECA878",
"t+ c #F3A86C",
"u+ c #FCAA68",
"v+ c #FAA664",
"w+ c #F9A76A",
"x+ c #EC9B65",
"y+ c #D38048",
"z+ c #E69056",
"A+ c #E0874E",
"B+ c #FAA26B",
"C+ c #FAA470",
"D+ c #F5A06F",
"E+ c #F59E6A",
"F+ c #FA9C62",
"G+ c #F99A5D",
"H+ c #F49E6C",
"I+ c #F89E63",
"J+ c #FF9D5E",
"K+ c #ED8F64",
"L+ c #B67466",
"M+ c #F5EBF0",
"N+ c #E4F6F9",
"O+ c #EAFCFA",
"P+ c #FDFFFF",
"Q+ c #F5F8F8",
"R+ c #E6E6E7",
"S+ c #BEAAB2",
"T+ c #E9E2E6",
"U+ c #FCF9FB",
"V+ c #DFCFD2",
"W+ c #C4AEB7",
"X+ c #FAF0F9",
"Y+ c #EAF0F6",
"Z+ c #F3F8FC",
"`+ c #FBFEFF",
" @ c #F8F9F8",
".@ c #EADFDD",
"+@ c #B47A60",
"@@ c #E99560",
"#@ c #F3BB8E",
"$@ c #FDD8B6",
"%@ c #FFDDC1",
"&@ c #FDCFB2",
"*@ c #FECEAD",
"=@ c #FBD0A7",
"-@ c #F7D3A7",
";@ c #FAD1AA",
">@ c #F9CAA1",
",@ c #F8C392",
"'@ c #FAB179",
")@ c #F9A468",
"!@ c #F9A166",
"~@ c #F69F67",
"{@ c #F9A470",
"]@ c #FDA56E",
"^@ c #F69A5A",
"/@ c #D37536",
"(@ c #D1753D",
"_@ c #EF9868",
":@ c #F8A67A",
"<@ c #F39F71",
"[@ c #FB9E68",
"}@ c #FF9D60",
"|@ c #FA9C65",
"1@ c #FAA06B",
"2@ c #FA9C63",
"3@ c #FDA26C",
"4@ c #D5926E",
"5@ c #F2DFDA",
"6@ c #F0F3FD",
"7@ c #EDF3F8",
"8@ c #FEFCFC",
"9@ c #F9FAFA",
"0@ c #F3F4F6",
"a@ c #A2929B",
"b@ c #C0B1BA",
"c@ c #C4B0B0",
"d@ c #AC9398",
"e@ c #FEF1F8",
"f@ c #EEF2F7",
"g@ c #F2F3F8",
"h@ c #FEF9FB",
"i@ c #FBF2F0",
"j@ c #EFD9D8",
"k@ c #E09D81",
"l@ c #F0A268",
"m@ c #F9CCA1",
"n@ c #FDD3B7",
"o@ c #F2B094",
"p@ c #F3A377",
"q@ c #F5A66E",
"r@ c #F4A873",
"s@ c #F3A476",
"t@ c #F4A66D",
"u@ c #F6A367",
"v@ c #F9A269",
"w@ c #FBA169",
"x@ c #FD9F69",
"y@ c #FC9F69",
"z@ c #FC9F68",
"A@ c #F99F65",
"B@ c #F4A471",
"C@ c #F9B385",
"D@ c #F6A36E",
"E@ c #F19359",
"F@ c #D1743D",
"G@ c #E3905E",
"H@ c #F5A370",
"I@ c #F59F69",
"J@ c #FAA062",
"K@ c #FBA05E",
"L@ c #F8A26B",
"M@ c #F9A46F",
"N@ c #FAA160",
"O@ c #EA9C62",
"P@ c #C3998A",
"Q@ c #F7EBFA",
"R@ c #EEEAF8",
"S@ c #F6F4F6",
"T@ c #FCFEFF",
"U@ c #F4F4F7",
"V@ c #E4DCE3",
"W@ c #D4C1CD",
"X@ c #F2F5FA",
"Y@ c #AEA19F",
"Z@ c #C2B0B5",
"`@ c #F9F8FC",
" # c #E5F2F8",
".# c #EAF5FB",
"+# c #F0F5F5",
"@# c #F9F7F7",
"## c #D3B3A9",
"$# c #DF916B",
"%# c #FAA76E",
"&# c #F3B787",
"*# c #F0AE84",
"=# c #EE9D6B",
"-# c #F6A15D",
";# c #F7A559",
"># c #F9A160",
",# c #FE9B68",
"'# c #FD9D67",
")# c #FC9F67",
"!# c #FA9F69",
"~# c #F9A06C",
"{# c #F69F6A",
"]# c #F5A067",
"^# c #F9A464",
"/# c #F5A35C",
"(# c #E9A779",
"_# c #F8D5C1",
":# c #FFCEAA",
"<# c #FAB079",
"[# c #E1884B",
"}# c #CD713A",
"|# c #F39961",
"1# c #FAA56C",
"2# c #F8A668",
"3# c #FFA864",
"4# c #EF9965",
"5# c #E59462",
"6# c #FBA360",
"7# c #F49958",
"8# c #BE8469",
"9# c #E7DAE0",
"0# c #EFF2FB",
"a# c #EBF0F3",
"b# c #FBFEFE",
"c# c #F6F6FA",
"d# c #FAF3FA",
"e# c #B7A0AF",
"f# c #C4C0C8",
"g# c #D4CECD",
"h# c #DED5DD",
"i# c #EEF5FC",
"j# c #E4F0FD",
"k# c #E6F2FC",
"l# c #EBF5FB",
"m# c #EAE0E9",
"n# c #B67A69",
"o# c #ED8F5B",
"p# c #FCA368",
"q# c #F59E66",
"r# c #F9A067",
"s# c #F9A165",
"t# c #F99F66",
"u# c #FAA069",
"v# c #FAA169",
"w# c #FAA166",
"x# c #F8A264",
"y# c #F7A262",
"z# c #F9A162",
"A# c #F59E5E",
"B# c #FCA464",
"C# c #F0A172",
"D# c #F8C7AA",
"E# c #FFDFBE",
"F# c #F7D7AF",
"G# c #F7C497",
"H# c #F19C6B",
"I# c #DC7947",
"J# c #E48552",
"K# c #DD8553",
"L# c #BF6033",
"M# c #E28B60",
"N# c #E99B6D",
"O# c #F2A367",
"P# c #FA9F60",
"Q# c #E89874",
"R# c #E2CBBF",
"S# c #E9F6F7",
"T# c #EAF1FA",
"U# c #F6F6FB",
"V# c #FAF9FC",
"W# c #F9F1FA",
"X# c #BBABB5",
"Y# c #BDAEB7",
"Z# c #DDCBCC",
"`# c #FBF1F9",
" $ c #EFEAF7",
".$ c #E9EFFC",
"+$ c #EAF0FC",
"@$ c #F1F6FE",
"#$ c #E2CDCB",
"$$ c #D28869",
"%$ c #FFA26B",
"&$ c #F99F64",
"*$ c #FAA065",
"=$ c #FAA167",
"-$ c #FAA168",
";$ c #F9A066",
">$ c #F7A168",
",$ c #F7A167",
"'$ c #F7A165",
")$ c #F9A163",
"!$ c #FB9F63",
"~$ c #FA9E65",
"{$ c #F89D64",
"]$ c #FEA667",
"^$ c #F4B072",
"/$ c #FBD2AB",
"($ c #FBDFCB",
"_$ c #F9DECA",
":$ c #FBCBAA",
"<$ c #EFA579",
"[$ c #D3764B",
"}$ c #AE4621",
"|$ c #EA865A",
"1$ c #F8A674",
"2$ c #F8A16F",
"3$ c #FAA66A",
"4$ c #E38A65",
"5$ c #D5AFA0",
"6$ c #F1FDFF",
"7$ c #E9EFFF",
"8$ c #EEEDFC",
"9$ c #F5F4FD",
"0$ c #F0EDF6",
"a$ c #F5E9EF",
"b$ c #C6AFB4",
"c$ c #A28385",
"d$ c #FFF7FE",
"e$ c #F1E8F9",
"f$ c #EBEFF9",
"g$ c #EBEFFA",
"h$ c #F0EFF8",
"i$ c #D5B09E",
"j$ c #ED9B6E",
"k$ c #FDA168",
"l$ c #F89F66",
"m$ c #F89F65",
"n$ c #F6A066",
"o$ c #F5A166",
"p$ c #F6A065",
"q$ c #F8A065",
"r$ c #F9A167",
"s$ c #FCA06A",
"t$ c #F99B68",
"u$ c #DA7F51",
"v$ c #E88B52",
"w$ c #F9A15D",
"x$ c #F1AF7D",
"y$ c #F8D0B1",
"z$ c #FBDCC7",
"A$ c #FDDEC9",
"B$ c #FED4B9",
"C$ c #FBBC9A",
"D$ c #E58C65",
"E$ c #DB794C",
"F$ c #F69F61",
"G$ c #FF9F61",
"H$ c #FD9D60",
"I$ c #FAA163",
"J$ c #F79C6E",
"K$ c #DCA289",
"L$ c #EAE3E3",
"M$ c #ECF2FF",
"N$ c #E7F0FB",
"O$ c #E7F3FA",
"P$ c #E7EFF2",
"Q$ c #FEF7F9",
"R$ c #B49DA0",
"S$ c #C0A5A8",
"T$ c #F7F6FB",
"U$ c #E9EAFB",
"V$ c #E9F0F8",
"W$ c #E9F0FA",
"X$ c #F5F1FA",
"Y$ c #DBAD8E",
"Z$ c #EF975E",
"`$ c #FBA16A",
" % c #F7A065",
".% c #F6A165",
"+% c #F6A067",
"@% c #F6A570",
"#% c #F4A673",
"$% c #EC9A6C",
"%% c #D1794A",
"&% c #E68752",
"*% c #FDA26F",
"=% c #F2A374",
"-% c #F9C29B",
";% c #FFE0C1",
">% c #FDDDBC",
",% c #F4C29D",
"'% c #E09266",
")% c #D67F46",
"!% c #FB9E5C",
"~% c #FF9D63",
"{% c #FBA972",
"]% c #CE805C",
"^% c #C8A39D",
"/% c #F2F5FD",
"(% c #EAF1F4",
"_% c #E6F2F3",
":% c #E6F5F4",
"<% c #E7F1F1",
"[% c #EAEDED",
"}% c #E6E0E3",
"|% c #E7F3F7",
"1% c #DEF1FD",
"2% c #E7F2FB",
"3% c #EBF3FB",
"4% c #E7D7DC",
"5% c #D5916A",
"6% c #FCA265",
"7% c #F89E68",
"8% c #F8A066",
"9% c #F29F67",
"0% c #EFA56E",
"a% c #FBC490",
"b% c #F6BC8A",
"c% c #E9A26E",
"d% c #D8834F",
"e% c #E58456",
"f% c #FF9B6E",
"g% c #FAA16D",
"h% c #EDB075",
"i% c #F3C790",
"j% c #FCD7AD",
"k% c #FED4B6",
"l% c #F6BB94",
"m% c #CE8350",
"n% c #D6854A",
"o% c #FBA16F",
"p% c #F39F6D",
"q% c #F1A86D",
"r% c #E89568",
"s% c #D79F8D",
"t% c #F4EDEE",
"u% c #F0EEF8",
"v% c #ECEEF6",
"w% c #ECEFF9",
"x% c #ECEDF7",
"y% c #F1F0FC",
"z% c #F0F4FA",
"A% c #E6F2F5",
"B% c #DCF5FD",
"C% c #E3EBF7",
"D% c #F9FBFF",
"E% c #C19A96",
"F% c #D57E55",
"G% c #FDA366",
"H% c #F99F67",
"I% c #F99F63",
"J% c #FA9F63",
"K% c #F99E64",
"L% c #F8A86F",
"M% c #F1A66F",
"N% c #F8B985",
"O% c #FDD4A2",
"P% c #F2BD89",
"Q% c #F5A971",
"R% c #E28955",
"S% c #D97847",
"T% c #F69962",
"U% c #F4A66A",
"V% c #E9A46A",
"W% c #F2AA79",
"X% c #F9AE84",
"Y% c #F6AB7C",
"Z% c #EA9B63",
"`% c #E49159",
" & c #FFA572",
".& c #FBA36B",
"+& c #F8A363",
"@& c #FFA66F",
"#& c #CE7F5A",
"$& c #E9CAC3",
"%& c #F2F3FF",
"&& c #EBEDFD",
"*& c #F1EFFF",
"=& c #F8F1FF",
"-& c #FAEFFE",
";& c #FDF8FF",
">& c #FCF4F9",
",& c #F4F9FA",
"'& c #F9F7FF",
")& c #FDE9EB",
"!& c #D99781",
"~& c #F59668",
"{& c #F8A165",
"]& c #F8A164",
"^& c #F7A063",
"/& c #F9A164",
"(& c #FBA069",
"_& c #D98350",
":& c #DA8954",
"<& c #E79A68",
"[& c #FAB887",
"}& c #F6B181",
"|& c #F5A46D",
"1& c #F4A15F",
"2& c #E6914E",
"3& c #D37D41",
"4& c #EA9569",
"5& c #F8A078",
"6& c #FC9E6C",
"7& c #FE9D5C",
"8& c #FF9F5B",
"9& c #FFA46B",
"0& c #E58B5F",
"a& c #F09769",
"b& c #F39562",
"c& c #F09762",
"d& c #EF9A6A",
"e& c #D67F58",
"f& c #BB8678",
"g& c #F6F6FF",
"h& c #F7F4FF",
"i& c #EADFE9",
"j& c #D8C4CE",
"k& c #DABEC8",
"l& c #E3C8DB",
"m& c #E9CAD1",
"n& c #ECD7D4",
"o& c #EEDFE4",
"p& c #B98787",
"q& c #D9805B",
"r& c #F9A266",
"s& c #F6A360",
"t& c #F79E64",
"u& c #F6A466",
"v& c #F6A465",
"w& c #F9A065",
"x& c #FD9E67",
"y& c #DC7E4D",
"z& c #C7693C",
"A& c #ED9167",
"B& c #F4976B",
"C& c #FBA160",
"D& c #FFAC67",
"E& c #F49B60",
"F& c #D6784A",
"G& c #E5895F",
"H& c #F09662",
"I& c #FFA866",
"J& c #FFAD6E",
"K& c #E07F5D",
"L& c #7B2B1B",
"M& c #853D24",
"N& c #963E27",
"O& c #8D472B",
"P& c #824730",
"Q& c #843A2A",
"R& c #712A23",
"S& c #BA9092",
"T& c #DABABA",
"U& c #8B6E6B",
"V& c #4D3232",
"W& c #5D2D3D",
"X& c #68353A",
"Y& c #734744",
"Z& c #6A4A4C",
"`& c #663235",
" * c #934833",
".* c #DF8766",
"+* c #F99766",
"@* c #FB9E61",
"#* c #FFA66E",
"$* c #FCA16D",
"%* c #F99E69",
"&* c #F7A169",
"** c #F3A266",
"=* c #F4A365",
"-* c #FB9F68",
";* c #F6A16A",
">* c #F6A16B",
",* c #FCA06C",
"'* c #FC9D69",
")* c #FF9D6B",
"!* c #FF9E6C",
"~* c #F69563",
"{* c #D67949",
"]* c #D47348",
"^* c #F79567",
"/* c #FA9F68",
"(* c #F9A265",
"_* c #FFA166",
":* c #FC9B65",
"<* c #E98D5B",
"[* c #C4683A",
"}* c #BE6339",
"|* c #B06D4E",
"1* c #732F25",
"2* c #64201E",
"3* c #8B463B",
"4* c #B6573A",
"5* c #D06B39",
"6* c #D37A42",
"7* c #F4986B",
"8* c #FC9C73",
"9* c #F99F6C",
"0* c #F4A766",
"a* c #F1A561",
"b* c #F49E63",
"c* c #FB9E6B",
"d* c #F7A069",
"e* c #F9A16A",
"f* c #FCA16C",
"g* c #FE9F6C",
"h* c #FFA06C",
"i* c #FBA468",
"j* c #F49D5F",
"k* c #ED925B",
"l* c #C86A3A",
"m* c #DF8653",
"n* c #FBA26F",
"o* c #F9A369",
"p* c #FFA673",
"q* c #F6936D",
"r* c #7C1705",
"s* c #7C3625",
"t* c #C76E51",
"u* c #DE7B53",
"v* c #CA693D",
"w* c #BF633B",
"x* c #E88C57",
"y* c #E98E54",
"z* c #F9A267",
"A* c #FEA86F",
"B* c #F4A167",
"C* c #F6A362",
"D* c #F19C5B",
"E* c #DD8848",
"F* c #E89255",
"G* c #E68F53",
"H* c #F49D63",
"I* c #FEA76D",
"J* c #FCA36A",
"K* c #FAA466",
"L* c #F29B5B",
"M* c #EC8E5C",
"N* c #DB8154",
"O* c #D6874F",
"P* c #E79659",
"Q* c #FFA778",
"R* c #D07B64",
"S* c #6E1913",
"T* c #6C1F18",
"U* c #963729",
"V* c #EC9366",
"W* c #FFB374",
"X* c #E98F56",
"Y* c #B24C23",
"Z* c #ED8661",
"`* c #E78B58",
" = c #FAA561",
".= c #F8A262",
"+= c #F6A164",
"@= c #F7A466",
"#= c #E49459",
"$= c #C16E36",
"%= c #E08C58",
"&= c #E1895C",
"*= c #EF9265",
"== c #FFA372",
"-= c #FEA36A",
";= c #F5A268",
">= c #F6AA6A",
",= c #DC8545",
"'= c #D47440",
")= c #C87153",
"!= c #69241A",
"~= c #AB5E46",
"{= c #E88666",
"]= c #E37B53",
"^= c #D26E43",
"/= c #F4996C",
"(= c #CC6C39",
"_= c #E5834A",
":= c #F39462",
"<= c #FA9F6F",
"[= c #F6A16D",
"}= c #F49F6B",
"|= c #F69E6D",
"1= c #DD7F55",
"2= c #C7653C",
"3= c #E7825E",
"4= c #E4895D",
"5= c #F1A364",
"6= c #FFAC66",
"7= c #FEA067",
"8= c #CD7151",
"9= c #6E2215",
"0= c #7F2427",
"a= c #902F20",
"b= c #E5895A",
"c= c #FFB175",
"d= c #F2915D",
"e= c #B7522B",
"f= c #C05D34",
"g= c #D67649",
"h= c #F69E68",
"i= c #FDA46B",
"j= c #FCA069",
"k= c #FFA46E",
"l= c #F49460",
"m= c #EB8E5D",
"n= c #D06F41",
"o= c #C9683C",
"p= c #D67D55",
"q= c #A55135",
"r= c #682616",
"s= c #8F4C2E",
"t= c #DE8C68",
"u= c #CA6E51",
"v= c #C4654C",
"w= c #FFA579",
"x= c #F09360",
"y= c #CC7345",
"z= c #DA844C",
"A= c #EE9556",
"B= c #F59D5E",
"C= c #FFB174",
"D= c #FFB075",
"E= c #FFB073",
"F= c #FFA472",
"G= c #B85D49",
"H= c #6C1515",
"I= c #8B5446",
"J= c #73251B",
"K= c #95402C",
"L= c #E48F68",
"M= c #FFAA79",
"N= c #F59D70",
"O= c #EB9061",
"P= c #E48A59",
"Q= c #C57046",
"R= c #B26340",
"S= c #B16947",
"T= c #B36943",
"U= c #A65D40",
"V= c #7B3629",
"W= c #6A230D",
"X= c #BA6848",
"Y= c #D57C5E",
"Z= c #D1745E",
"`= c #CE7260",
" - c #923C2D",
".- c #84382F",
"+- c #813F39",
"@- c #7B423B",
" ",
" ",
" ",
" ",
" . + @ # $ % & * ",
" = - ; > , ' ) ! ~ { ] ^ / ( _ : < ",
"[ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l ",
"m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W ",
"X Y Z ` ...+.@.#.$. %.&.*.=.-.;.>.,.'.).!.~.{.].^./.9 (._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.",
"R a.b.c.d.e.f.R W g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.",
"R T.U.V.W.X.Y.V Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+",
"0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+",
"V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@R ",
"c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@",
"Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#",
"g#h#i#j#k#l#m#n#o#p#~@q#r#s#s#s#t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#",
"Z#`# $.$+$@$#$$$%$&$&$*$=$-$r#r#;$>$,$'$)$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$~@3$4$5$6$7$8$9$0$a$b$",
"c$d$e$f$g$h$i$j$k$A@;$=$;$;$l$m$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$",
"S$T$U$V$W$X$Y$Z$`$;$=$;$=$=$;$;$;$ % %.% %+%@%#%$%%%&%*%=%-%D ;%>%,%'%)%!%~%t#{%]%^%/%(%_%:%<%[%",
"}%|%1%2%3%4%5%6%7%r#=$m$;$;$=$;$8%&$&$q$+%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%",
"z%A%B%C%D%E%F%G%H%=$=$;$;$;$=$;$m$I%J%K%v@L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&",
";&>&,&'&)&!&~&{&]&;$;$;$;$;$;$;$;$^&/&K%(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&",
"l&m&n&o&p&q&=.r&s&t&t&r$;$;$m$;$r$u&v&w&x&t$y&z&A&B&x@C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V& ",
"W&X&Y&Z&`& *.*+*@*#*$*%*&***=*A@-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*1* 2* ",
" 3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*z@i*j*k*l*m*n*8%o*p*q*r* ",
" s*t*u*v*w*x*y*z*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S* ",
" T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!= ",
" ~={=]=^=/=(=_=:=<=n*[=}=|=1=2=3=4=5=6=7=8=9= ",
" 0=a=b=c=d=e=f=g=o%h=i=j=k=l=m=n=o=p=q=r= ",
" s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H= ",
" I=J=K=L=M=N=O=P=Q=R=S=T=U=V= ",
" W=X=Y=Z=`= -.-+-@- ",
" ",
" ",
" "};

Wyświetl plik

@ -35,7 +35,11 @@
#include <cstdlib>
#include <csignal>
#include "main.h"
#ifdef BUILD_FLDIGI
# include "main.h"
#else
# include "flarq.h"
#endif
using namespace std;
@ -76,7 +80,11 @@ void diediedie(void)
cerr << "\n****** Version information:\n" << version_text;
string stfname;
#ifdef BUILD_FLDIGI
stfname.assign(HomeDir).append("stacktrace.txt");
#else
stfname = Logfile;
#endif
#if !HAVE_DBG_STACK
FILE* stfile = fopen(stfname.c_str(), "w");