kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Merge flarq
* 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 supportpull/2/head
rodzic
91a1425e1d
commit
d4b1a038ac
|
@ -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
|
||||
|
|
67
configure.ac
67
configure.ac
|
@ -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
|
||||
|
|
|
@ -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;
|
|
@ -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=`= -.-+-@- ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 12 KiB |
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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:
|
||||
////////////////////////////////////////////////////////////////////////////////
|
69
m4/build.m4
69
m4/build.m4
|
@ -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"
|
||||
|
|
|
@ -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"])
|
||||
])
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
176
src/Makefile.am
176
src/Makefile.am
|
@ -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)
|
||||
|
|
Plik diff jest za duży
Load Diff
|
@ -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;
|
||||
}
|
|
@ -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();}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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
|
@ -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
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#include <windows.h> // include for version info constants
|
||||
|
||||
#define IDI_ICON 101
|
||||
|
||||
IDI_ICON ICON DISCARDABLE "flarq.ico"
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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);
|
||||
};
|
|
@ -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
|
|
@ -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_
|
|
@ -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[];
|
||||
|
|
|
@ -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
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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=`= -.-+-@- ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
|
|
|
@ -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");
|
||||
|
|
Ładowanie…
Reference in New Issue