diff options
Diffstat (limited to 'app/bin/cnote.c')
-rw-r--r-- | app/bin/cnote.c | 133 |
1 files changed, 70 insertions, 63 deletions
diff --git a/app/bin/cnote.c b/app/bin/cnote.c index 0a015f1..04d63f1 100644 --- a/app/bin/cnote.c +++ b/app/bin/cnote.c @@ -17,14 +17,12 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <string.h> #include "custom.h" #include "dynstring.h" #include "fileio.h" -#include "i18n.h" #include "misc.h" #include "param.h" #include "include/utf8convert.h" @@ -36,76 +34,83 @@ static paramTextData_t noteTextData = { 300, 150 }; static paramData_t notePLs[] = { #define I_NOTETEXT (0) #define noteT ((wText_p)notePLs[I_NOTETEXT].control) - { PD_TEXT, NULL, "text", PDO_DLGRESIZE, ¬eTextData } + { PD_TEXT, NULL, "text", PDO_DLGRESIZE, ¬eTextData } }; -static paramGroup_t notePG = { "note", 0, notePLs, sizeof notePLs/sizeof notePLs[0] }; +static paramGroup_t notePG = { "note", 0, notePLs, COUNT( notePLs ) }; void ClearNote(void) { - if (mainText) { - MyFree(mainText); - mainText = NULL; - } + if (mainText) { + MyFree(mainText); + mainText = NULL; + } } -static void NoteOk(void * junk) +static void NoteOk(void * unused) { - if (wTextGetModified(noteT)) { - int len; - ClearNote(); - len = wTextGetSize(noteT); - mainText = (char*)MyMalloc(len+2); - wTextGetText(noteT, mainText, len); - } - - wHide(noteW); + if (wTextGetModified(noteT)) { + int len; + ClearNote(); + len = wTextGetSize(noteT); + mainText = (char*)MyMalloc(len+2); + wTextGetText(noteT, mainText, len); + } + + wHide(noteW); } -void DoNote(void) +void DoNote(void * unused) { - if (noteW == NULL) { - noteW = ParamCreateDialog(¬ePG, MakeWindowTitle(_("Note")), _("Ok"), NoteOk, - wHide, FALSE, NULL, F_NOTTRANSIENT|F_RESIZE, NULL); - } - - wTextClear(noteT); - wTextAppend(noteT, mainText?mainText: - _("Replace this text with your layout notes")); - wTextSetReadonly(noteT, FALSE); - wShow(noteW); + if (noteW == NULL) { + noteW = ParamCreateDialog(¬ePG, MakeWindowTitle(_("Note")), _("Ok"), NoteOk, + wHide, FALSE, NULL, F_NOTTRANSIENT|F_RESIZE, NULL); + } + + wTextClear(noteT); + wTextAppend(noteT, mainText?mainText: + _("Replace this text with your layout notes")); + wTextSetReadonly(noteT, FALSE); + wShow(noteW); } +/** + * Save the main layout note to file. The note text is converted to + * UTF-8 if this is configured at compile time. Before saving characters that + * have special meanings in the XTC file (eg. ") are escaped. + * + * \param f open layout file + * \return + */ BOOL_T WriteMainNote(FILE* f) { - BOOL_T rc = TRUE; + BOOL_T rc = TRUE; char *noteText = mainText; if (noteText && *noteText) { -#ifdef WINDOWS +#ifdef UTFCONVERT char *out = NULL; if (RequiresConvToUTF8(mainText)) { - unsigned cnt = strlen(mainText) * 2 + 1; + size_t cnt = strlen(mainText) * 2 + 1; out = MyMalloc(cnt); - wSystemToUTF8(mainText, out, cnt); + wSystemToUTF8(mainText, out, (unsigned int)cnt); noteText = out; } -#endif // WINDOWS - +#endif // UTFCONVERT - char * sText = ConvertToEscapedText( noteText ); - rc &= fprintf(f, "NOTE MAIN 0 0 0 0 0 \"%s\"\n", sText )>0; - MyFree( sText ); + char * sText = ConvertToEscapedText( noteText ); + rc &= fprintf(f, "NOTE MAIN 0 0 0 0 0 \"%s\"\n", sText )>0; + MyFree( sText ); -#ifdef WINDOWS +#ifdef UTFCONVERT if (out) { MyFree(out); } -#endif // WINDOWS - } - return rc; +#endif // UTFCONVERT + } + return rc; } /** @@ -116,28 +121,30 @@ BOOL_T WriteMainNote(FILE* f) BOOL_T ReadMainNote(char *line) { - long size; - char * sNote = NULL; - - if (!GetArgs(line + 9, - paramVersion < 3 ? "l" : - paramVersion < 12 ? "0000l": - "0000lq", &size, &sNote)) { - return FALSE; - } - - if (mainText) { - MyFree(mainText); - } - - if ( paramVersion < 12 ) - mainText = ReadMultilineText(); - else - mainText = sNote; - return TRUE; + long size; + char * sNote = NULL; + + if (!GetArgs(line + 9, + paramVersion < 3 ? "l" : + paramVersion < VERSION_INLINENOTE ? "0000l": + "0000lq", &size, &sNote)) { + return FALSE; + } + + if (mainText) { + MyFree(mainText); + } + + if ( paramVersion < VERSION_INLINENOTE ) { + mainText = ReadMultilineText(); + } else { + mainText = sNote; + } + + return TRUE; } void InitCmdNote() { - ParamRegister(¬ePG); + ParamRegister(¬ePG); } |