--- lusernet.app-0.4.2.orig/debian/docs +++ lusernet.app-0.4.2/debian/docs @@ -0,0 +1,2 @@ +Changes +README --- lusernet.app-0.4.2.orig/debian/menu +++ lusernet.app-0.4.2/debian/menu @@ -0,0 +1,5 @@ +?package(lusernet.app):needs="X11" \ + section="Applications/Network/Communication" \ + title="LuserNET" command="/usr/bin/LuserNET" \ + icon="/usr/share/pixmaps/News.app.xpm" \ + longtitle="News reader for GNUstep" --- lusernet.app-0.4.2.orig/debian/control +++ lusernet.app-0.4.2/debian/control @@ -0,0 +1,18 @@ +Source: lusernet.app +Section: net +Priority: optional +Maintainer: Gürkan Sengün +Uploaders: Yavor Doganov +Build-Depends: debhelper (>= 5.0.0), libgnustep-gui-dev (>= 0.12.0), libpantomime1.2-dev, dpatch, imagemagick +Standards-Version: 3.7.2 +Homepage: http://web.telia.com/~u42308495/alex/LuserNET/LuserNET.html + +Package: lusernet.app +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: lusernet +Replaces: lusernet +Provides: news-reader +Description: News Reader for GNUstep + LuserNET is an NNTP based news reader for GNUstep. Though it's at + an early version, it's already quite usable. --- lusernet.app-0.4.2.orig/debian/LuserNET.1 +++ lusernet.app-0.4.2/debian/LuserNET.1 @@ -0,0 +1,21 @@ +.TH LUSERNET 1 "December 30, 2003" +.SH NAME +LuserNET \- News Reader for GNUstep +.SH SYNOPSIS +.B LuserNET +.SH DESCRIPTION +This manual page documents briefly the +.B LuserNET +command. +This manual page was written for the Debian distribution +because the original program does not have a manual page. +.PP +\fBLuserNET\fP is an NNTP-based news reader for GNUstep. It features good +MIME conformance and handling, an ability to handle multiple servers, +intelligent scrolling, complete asynchronicity, background read-ahead, +and coloring of messages based on quoting depth. +.SH SEE ALSO +.BR GNUstep (7). +.SH AUTHOR +This manual page was written by G\[:u]rkan Seng\[:u]n , +for the Debian project (but may be used by others). --- lusernet.app-0.4.2.orig/debian/rules +++ lusernet.app-0.4.2/debian/rules @@ -0,0 +1,90 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +include /usr/share/dpatch/dpatch.make +include /usr/share/GNUstep/debian/config.mk + +TIFFICON = News.app.tiff +XPMICON = $(TIFFICON:.tiff=.xpm) + + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + OBJCFLAGS += -O0 +else + OBJCFLAGS += -O2 +endif + + +build: patch build-stamp + +build-stamp: + dh_testdir + GNUSTEP_MAKEFILES=$(GS_MAKE_DIR) \ + $(MAKE) OBJCFLAGS="$(OBJCFLAGS)" messages=yes + convert $(TIFFICON) -resize 32x32 xpm:$(XPMICON) + touch build-stamp + +clean: unpatch clean-patched + dh_testdir + dh_testroot + rm -f build-stamp + rm -f $(XPMICON) +ifdef $(GS_MAKE_DIR) + GNUSTEP_MAKEFILES=$(GS_MAKE_DIR) \ + $(MAKE) distclean clean +endif + dh_clean + +clean-patched: unpatch + rm -f debian/patched + +install: build + dh_testdir + dh_testroot + dh_clean -k + GNUSTEP_MAKEFILES=$(GS_MAKE_DIR) \ + $(MAKE) install DESTDIR=$(CURDIR)/debian/lusernet.app \ + GNUSTEP_INSTALLATION_DOMAIN=SYSTEM + rm $(CURDIR)/debian/*.app/usr/lib/GNUstep/Applications/*.app/Resources/*.desktop + install -D -m 644 debian/LuserNET.desktop \ + $(CURDIR)/debian/lusernet.app/usr/share/applications/LuserNET.desktop + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installdocs + mv $(CURDIR)/debian/lusernet.app/usr/share/doc/lusernet.app/Changes $(CURDIR)/debian/lusernet.app/usr/share/doc/lusernet.app/changelog.old + gsdh_gnustep + dh_install $(XPMICON) /usr/share/pixmaps + dh_installmenu + dh_installman + +ifndef DEB_GNUSTEP_NO_MOVE + dh_installdirs usr/share/GNUstep + mv debian/lusernet.app/$(GNUSTEP_SYSTEM_APPS)/LuserNET.app/Resources debian/lusernet.app/usr/share/GNUstep/LuserNET.app + dh_link usr/share/GNUstep/LuserNET.app $(GNUSTEP_SYSTEM_APPS)/LuserNET.app/Resources +endif + + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install --- lusernet.app-0.4.2.orig/debian/changelog +++ lusernet.app-0.4.2/debian/changelog @@ -0,0 +1,117 @@ +lusernet.app (0.4.2-3build1) intrepid; urgency=low + + * Rebuild for GNUstep transition. + + -- Luca Falavigna Sun, 06 Jul 2008 15:02:15 +0200 + +lusernet.app (0.4.2-3) unstable; urgency=low + + * debian/control (Build-Depends): Use versioned dependency on + libgnustep-gui-dev (>= 0.12.0). Removed gnustep-make; it is always + pulled in by libgnustep-base-dev. + (Section): Moved to `net' where it belongs. + (Depends): Added ${misc:Depends}. + (Description): Moved Homepage... + (Homepage): ...to its own field, now supported by dpkg. + * debian/rules (CFLAGS): Removed, upstream's flags are sane. + (OBJCFLAGS): Set conditionally and pass optimization flag to $(MAKE). + (build-stamp, clean, install): Do not source GNUstep.sh, use + GNUSTEP_MAKEFILES instead. + (clean): Invoke $(MAKE) distclean only when $(GS_MAKE_DIR) is + defined. + (install): Use the standard variable DESTDIR and + GNUSTEP_INSTALLATION_DOMAIN instead of GNUSTEP_INSTALLATION_DIR. + Remove the invalid .desktop file generated by pl2link and install our + own in usr/share/applications. Also remove the unused dh_installdirs + invocation. + (binary-arch): Removed dh_link invocation; the app wrapper is no + longer needed. Replaced GS_SYSTEM_ROOT with GNUSTEP_SYSTEM_APPS. + * debian/LuserNET.desktop: New file. + * debian/menu: Updated for the new policy -- changed from `Apps/Net' to + `Applications/Network/Communication'. + * debian/preinst: Deleted; upgrades from Etch should work flawlessly. + + -- Yavor Doganov Sat, 20 Oct 2007 17:15:19 +0300 + +lusernet.app (0.4.2-2) unstable; urgency=low + + * To properly move the Resources dir to /usr/share, include a preinst + script which Hubert Chan wrote originally for gnumail.app. + * Remove the lintian override, it is not necessary anymore. + * debian/patches: + + 05_pantomime1.2.dpatch: Removed a useless space at the shebang line. + + 10_mark_string_as_translatable.dpatch: Added, to mark one string as + translatable. + + 20_bg_translation.dpatch: Added Bulgarian translation. + + -- Yavor Doganov Tue, 21 Nov 2006 21:16:25 +0200 + +lusernet.app (0.4.2-1) unstable; urgency=low + + * New upstream release. + * Acknowledge NMU, thanks Luk Claes (Closes: #350435, #356531). + * Build-depend on libgnustep-gui-dev instead on libgnustep-gui0.10-dev. + * Upgrade to debhelper v5, bump debian/compat and the build-dependency. + * Drop the configure target from debian/rules. + * Use dpatch for patch management, build-depend on dpatch: + + debian/patches/05_pantomime1.2.dpatch: Add a slightly modified patch + from Sergey Golovin , syncing LuserNET to Pantomime 1.2. + * Build-depend on libpantomime1.2-dev. Bye-bye, pantomime-dev. + * Escape "ü" in the manpage to fix a lintian warning. + * Include /usr/share/GNUstep/debian/config.mk in debian/rules. + * Append "messages=yes" to $(MAKE). + * Remove dh_installexamples. + * Remove the redundant file debian/dirs. + * Install the new ChangeLog as changelog.gz, move Changes to debian/docs + and rename/compress it as changelog.old.gz. + * Move Resources to /usr/share/GNUstep/LuserNET.app and make a + compatibility symlink. + * Replace the symlink to /usr/bin/gnustep-app-wrapper with the + future-proof one provided by gnustep-common. + * Convert the .tiff icon to .xpm format and add it to debian/menu; add a + longtitle as well. Build-depend on imagemagick for that. + * Add a homepage to the long description. + * Sanitize debian/copyright: clarify Copyright vs. License and add the + GPL license header. + * Add myself to uploaders; thanks, Gürkan, for the vote of confidence. + * Bump Standards-Version to 3.7.2 (no changes needed). + + -- Yavor Doganov Thu, 28 Sep 2006 01:45:43 +0300 + +lusernet.app (0.4.1-4.1) unstable; urgency=high + + * Non-maintainer upload. + * Update build-dep of libgnustep-gui (Closes: #350435). + * Use gsdh_gnustep. + + -- Luk Claes Sun, 12 Mar 2006 17:16:20 +0100 + +lusernet.app (0.4.1-4) unstable; urgency=low + + * Renamed source package to lusernet.app. + * Updated manual page. + * Fixed debian/copyright. + * Updated debian/control build-depends for GNUstep 0.9.4. + + -- Gürkan Sengün Wed, 22 Dec 2004 00:41:23 +0100 + +lusernet (0.4.1-3) unstable; urgency=high + + * Updated for latest gnustep + * Renamed binary package to lusernet.app. (Closes: #265634) + + -- Gürkan Sengün Sun, 8 Aug 2004 12:52:22 +0200 + +lusernet (0.4.1-2) unstable; urgency=low + + * Added gnustep-make to build-depends. (Closes: #240391) + * Dropped .app from debian/menu. + + -- Gürkan Sengün Sat, 27 Mar 2004 14:39:59 +0100 + +lusernet (0.4.1-1) unstable; urgency=low + + * Initial Release. (Closes: #179093) + + -- Gürkan Sengün Tue, 30 Dec 2003 21:55:44 +0100 + --- lusernet.app-0.4.2.orig/debian/manpages +++ lusernet.app-0.4.2/debian/manpages @@ -0,0 +1 @@ +debian/LuserNET.1 --- lusernet.app-0.4.2.orig/debian/compat +++ lusernet.app-0.4.2/debian/compat @@ -0,0 +1 @@ +5 --- lusernet.app-0.4.2.orig/debian/LuserNET.desktop +++ lusernet.app-0.4.2/debian/LuserNET.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=LuserNET News Reader +Name[bg]=Четец на новини (LuserNET) +Comment=News Reader for GNUstep +Comment[bg]=Четец на новини за GNUstep +Type=Application +Version=0.94 +Categories=Network;News; +Icon=/usr/share/GNUstep/LuserNET.app/News.app.tiff +Exec=LuserNET --- lusernet.app-0.4.2.orig/debian/copyright +++ lusernet.app-0.4.2/debian/copyright @@ -0,0 +1,28 @@ +This package was debianized by Gürkan Sengün on +Tue, 30 Dec 2003 21:55:44 +0100. + +It was downloaded from http://w1.423.telia.com/~u42308495/alex/LuserNET/LuserNET.html + +Upstream Author: Alexander Malmberg + +Copyright Holder: (C) 2002 Alexander Malmberg + (icon by Andrew Lindesay) + +License: + + This package 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. + + This package 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 this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. --- lusernet.app-0.4.2.orig/debian/patches/20_bg_translation.dpatch +++ lusernet.app-0.4.2/debian/patches/20_bg_translation.dpatch @@ -0,0 +1,437 @@ +#!/bin/sh /usr/share/dpatch/dpatch-run +## 20_bg_translation.dpatch by Yavor Doganov +## +## DP: Bulgarian translation. + +@DPATCH@ +diff -urNad lusernet.app-0.4.2~/Bulgarian.lproj/Localizable.strings lusernet.app-0.4.2/Bulgarian.lproj/Localizable.strings +--- lusernet.app-0.4.2~/Bulgarian.lproj/Localizable.strings 1970-01-01 02:00:00.000000000 +0200 ++++ lusernet.app-0.4.2/Bulgarian.lproj/Localizable.strings 2006-11-21 22:04:38.000000000 +0200 +@@ -0,0 +1,415 @@ ++ ++/* ++ Bulgarian translation of LuserNET. ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ This file is distributed under the same license as LuserNET. ++ Translated by: Yavor Doganov , 2006. ++*/ ++ ++/*** ++Bulgarian.lproj/Localizable.strings ++updated by make_strings 2006-11-15 15:06:47 +0200 ++add comments above this one ++***/ ++ ++ ++/*** Keys found in multiple places ***/ ++ ++/* File: ComposeWindowController.m:220 */ ++/* File: MessageViewController.m:559 */ ++"Subject:" = "Тема:"; ++ ++/* File: ComposeWindowController.m:272 */ ++/* File: MessageViewController.m:561 */ ++"From:" = "От:"; ++ ++/* File: FolderListController.m:69 */ ++/* File: main.m:253 */ ++"Folder list" = "Списък с групи"; ++ ++/* File: FolderListController.m:72 */ ++/* File: Pref_Sources.m:104 */ ++"Name" = "Име"; ++ ++/* File: MessageViewController.m:727 */ ++/* File: main.m:348 */ ++"Download" = "Изтегляне"; ++ ++/* File: MessageViewController.m:298 */ ++/* File: MessageViewController.m:402 */ ++/* File: main.m:350 */ ++"Save..." = "Запазване..."; ++ ++/* File: NNTPSourceGUI.m:228 */ ++/* File: Pref_Sources.m:150 */ ++"Add" = "Добавяне"; ++ ++/* File: NNTPSourceGUI.m:237 */ ++/* File: Pref_Sources.m:141 */ ++"Remove" = "Премахванe"; ++ ++ ++/*** Strings from ComposeWindowController.m ***/ ++/* File: ComposeWindowController.m:246 */ ++"Newsgroups (separate with commas):" ++= "Групи за новини (разделени със запетаи):"; ++/* File: ComposeWindowController.m:291 */ ++"Post" = "Изпращане"; ++ ++ ++/*** Strings from FolderListController.m ***/ ++/* File: FolderListController.m:78 */ ++"Messages" = "Статии"; ++ ++ ++/*** Strings from FolderWindowController.m ***/ ++/* File: FolderWindowController.m:679 */ ++"Date" = "Дата"; ++/* File: FolderWindowController.m:673 */ ++"From" = "От"; ++/* File: FolderWindowController.m:661 */ ++"Subject" = "Тема"; ++ ++ ++/*** Strings from LogWindowController.m ***/ ++/* File: LogWindowController.m:35 */ ++"Log" = "Дневник"; ++ ++ ++/*** Strings from MessageViewController.m ***/ ++/* File: MessageViewController.m:723 */ ++" unknown" = " непознато"; ++/* File: MessageViewController.m:233 */ ++"Alternatives:" = "Алтернативи:"; ++/* File: MessageViewController.m:567 */ ++"Content-type:" = "Тип съдържание:"; ++/* File: MessageViewController.m:231 */ ++"Currently shown:" = "В момента показани:"; ++/* File: MessageViewController.m:741 */ ++"Data cannot be downloaded for %s since it has no source." ++= "Данните за %s не могат да бъдат изтеглени, понеже няма изходен код."; ++/* File: MessageViewController.m:736 */ ++"Data for %s is currently being downloaded." ++= "Данните за %s се изтеглят в момента."; ++/* File: MessageViewController.m:731 */ ++"Data for %s is unavailable due to an error." ++= "Данните за %s не са налични заради грешка."; ++/* File: MessageViewController.m:565 */ ++"Date:" = "Дата:"; ++/* File: MessageViewController.m:332 */ ++"Description:" = "Описание:"; ++/* File: MessageViewController.m:247 */ ++"Displaying multipart with %i parts: %@\n" ++= "Показване на композитна статия с %i части: %@\n"; ++/* File: MessageViewController.m:337 */ ++"Filename:" = "Име на файл:"; ++/* File: MessageViewController.m:410 */ ++"Hide raw data" = "Скриване на изходните данни"; ++/* File: MessageViewController.m:425 */ ++"Hide text" = "Скриване на текста"; ++/* File: MessageViewController.m:563 */ ++"Newsgroups:" = "Групи за новини"; ++/* File: MessageViewController.m:714 */ ++"No data has been downloaded for %s." = "Не бяха изтеглени данни за %s."; ++/* File: MessageViewController.m:551 */ ++"No icon for part.\n" = "Няма икона за тази част.\n"; ++/* File: MessageViewController.m:600 */ ++"Raw source:\n\n" = "Изходни данни:\n\n"; ++/* File: MessageViewController.m:858 */ ++"Save data" = "Запазване на данните"; ++/* File: MessageViewController.m:1146 */ ++"Save message" = "Запазване на статията"; ++/* File: MessageViewController.m:417 */ ++"Show raw data" = "Показване на изходните данни"; ++/* File: MessageViewController.m:719 */ ++/* File: MessageViewController.m:398 */ ++/* File: MessageViewController.m:301 */ ++"Size:" = "Размер:"; ++/* File: MessageViewController.m:429 */ ++"Try to show as text" = "Опит за показване като текст"; ++/* File: MessageViewController.m:393 */ ++"Type:" = "Тип:"; ++/* File: MessageViewController.m:296 */ ++"UUEncoded file:" = "Файл, кодиран с „uuencode“:"; ++/* File: MessageViewController.m:383 */ ++"Unable to render content of class '%@' (type '%@'). Please report this as a bug.\n" ++= "Неуспех при изобразяването на съдържанието на клас „%@“ (тип „%@“). Моля, докладвайте това като грешка.\n"; ++/* File: MessageViewController.m:579 */ ++"Unable to render part of class '%@'. Please report this as a bug.\n" ++= "Неуспех при изобразяването на част от клас „%@“. Моля, докладвайте това като грешка.\n"; ++/* File: MessageViewController.m:709 */ ++"Unknown status %i for %s." = "Непознато състояние %i на %s."; ++/* File: MessageViewController.m:253 */ ++"\nPart:" = "\nЧаст:"; ++/* File: MessageViewController.m:749 */ ++"\n\nYou can set a source for this message by clicking on one of the sources:\n\n" ++= "\n\nМоже да настроите изходен код за тази статия, като натиснете някои от вариантите:\n\n"; ++ ++ ++/*** Strings from NNTPServer.m ***/ ++/* File: NNTPServer.m:563 */ ++"Can't open connection: %s" ++= "Неуспех при осъществяването на свързването: %s"; ++/* File: NNTPServer.m:1154 */ ++"Closing connection: %i %s" = "Разпадане на свързването: %i %s"; ++/* File: NNTPServer.m:542 */ ++"Connecting to %i.%i.%i.%i:%i..." = "Свързване към %i.%i.%i.%i:%i..."; ++/* File: NNTPServer.m:1161 */ ++"New connection (%i total): %i %s" = "Ново свързване (общо %i): %i %s"; ++/* File: NNTPServer.m:476 */ ++"Resolved '%s' to %i.%i.%i.%i" = "„%s“ се разреши като %i.%i.%i.%i"; ++/* File: NNTPServer.m:1178 */ ++/* File: NNTPServer.m:1173 */ ++"Unexpected response when connecting: %i %s" ++= "Неочакван отговор при свързване: %i %s"; ++/* File: NNTPServer.m:554 */ ++"can't create socket: %s" = "неуспех при създаването на гнездо: %s"; ++/* File: NNTPServer.m:578 */ ++"fcntl failed to set non-blocking mode: %s" ++= "fcntl не успя да определи неблокиращ режим: %s"; ++/* File: NNTPServer.m:469 */ ++"lookup of %s failed: %s" = "неуспех при откриването на %s: %s"; ++/* File: NNTPServer.m:513 */ ++/* File: NNTPServer.m:500 */ ++"warning: can't find protocol, assuming 0" ++= "предупреждение: неуспех при намирането на протокола, счита се 0"; ++/* File: NNTPServer.m:488 */ ++"warning: can't find service 'nntp', assuming port 119" ++= "предупреждение: неуспех при намирането на услугата „nntp“, приема се порт 119"; ++ ++ ++/*** Strings from NNTPSource.m ***/ ++/* File: NNTPSource.m:221 */ ++"%i new messages in '%s', retrieving headers..." ++= "%i нови статии в „%s“, изтегляне на заглавията..."; ++/* File: NNTPSource.m:165 */ ++"Downloaded %ikb for '%@'" = "Изтеглени са %i кБ от „%@“"; ++/* File: NNTPSource.m:144 */ ++"Failed to connect: %@" = "Неуспех при свързването: %@"; ++/* File: NNTPSource.m:325 */ ++"Got headers in '%s': %5i/%5i (%5i) ..." ++= "Изтеглени заглавията в %s“: %5i/%5i (%5i) ..."; ++/* File: NNTPSource.m:338 */ ++"Got headers in '%s': %5i/%5i (%5i) Done." ++= "Изтеглени заглавията в „%s“: %5i/%5i (%5i) Готово."; ++/* File: NNTPSource.m:184 */ ++"Group '%s' contains message %i - %i." ++= "Групата „%s“ съдържа статии %i - %i."; ++/* File: NNTPSource.m:194 */ ++"Group '%s' doesn't exist." = "Групата „%s“ не съществува."; ++/* File: NNTPSource.m:209 */ ++"No new messages in '%s'." = "Няма нови статии в „%s“."; ++ ++ ++/*** Strings from NNTPSourceGUI.m ***/ ++/* File: NNTPSourceGUI.m:101 */ ++"" = "<Погледнете в дневника (alt-l)>"; ++/* File: NNTPSourceGUI.m:385 */ ++"" = "<неизвестно>"; ++/* File: NNTPSourceGUI.m:148 */ ++"Done" = "Готово"; ++/* File: NNTPSourceGUI.m:273 */ ++"Group" = "Група"; ++/* File: NNTPSourceGUI.m:204 */ ++"Group name:" = "Име на групата:"; ++/* File: NNTPSourceGUI.m:332 */ ++"Host:" = "Хост:"; ++/* File: NNTPSourceGUI.m:185 */ ++"Last message (use query):" = "Последна статия (използвайте „Търсене“):"; ++/* File: NNTPSourceGUI.m:279 */ ++"Last msg" = "Последна ст-я"; ++/* File: NNTPSourceGUI.m:347 */ ++"NNTPSource properties" = "Настройки на източника на NNTP"; ++/* File: NNTPSourceGUI.m:313 */ ++"Port:" = "Порт:"; ++/* File: NNTPSourceGUI.m:246 */ ++"Query" = "Търсене"; ++ ++ ++/*** Strings from Pref_MessageViewing.m ***/ ++/* File: Pref_MessageViewing.m:206 */ ++"Automatically download messages smaller than:" ++= "Автоматично изтегляне на статии, по-малки от:"; ++/* File: Pref_MessageViewing.m:179 */ ++"Color lines in messages based on quoting depth." ++= "Цветни редове в статиите, на базата на цитирания текст."; ++/* File: Pref_MessageViewing.m:304 */ ++"Default encoding " = "Кодиране по подразбиране "; ++/* File: Pref_MessageViewing.m:269 */ ++"Message font #1:" = "Шрифт #1 за статии:"; ++/* File: Pref_MessageViewing.m:235 */ ++"Message font #2:" = "Шрифт #2 за статии:"; ++/* File: Pref_MessageViewing.m:155 */ ++"Message viewing" = "Четене на статии"; ++/* File: Pref_MessageViewing.m:160 */ ++"Message\nviewing" = "Четене\nна статии"; ++/* File: Pref_MessageViewing.m:287 */ ++/* File: Pref_MessageViewing.m:253 */ ++"Pick font..." = "Избор на шрифт..."; ++/* File: Pref_MessageViewing.m:186 */ ++"Scroll intelligently (ie. skip quoted sections and signatures)." ++= "Интелигентно прелистване (пропускане на цитиран текст и подписи)."; ++ ++ ++/*** Strings from Pref_Posting.m ***/ ++/* File: Pref_Posting.m:230 */ ++"Browse..." = "Разглеждане..."; ++/* File: Pref_Posting.m:260 */ ++"Contents of file" = "Съдържание на файл"; ++/* File: Pref_Posting.m:282 */ ++"From-address:" = "Адрес:"; ++/* File: Pref_Posting.m:259 */ ++"Literal" = "Текст"; ++/* File: Pref_Posting.m:308 */ ++"Name:" = "Име:"; ++/* File: Pref_Posting.m:261 */ ++"Output from program" = "Изход от програма"; ++/* File: Pref_Posting.m:192 */ ++"Post articles as quoted-printable" ++= "Изпращане на статиите като „quoted-printable“"; ++/* File: Pref_Posting.m:151 */ ++/* File: Pref_Posting.m:156 */ ++"Posting" = "Изпращане"; ++/* File: Pref_Posting.m:246 */ ++"Signature type:" = "Тип на подписа:"; ++/* File: Pref_Posting.m:212 */ ++"Source:" = "Източник:"; ++/* File: Pref_Posting.m:76 */ ++"Unable to get signature by running '%@'.\n" ++= "Неуспех при получаването на подписа при изпълнение на „%@“.\n"; ++/* File: Pref_Posting.m:65 */ ++"Unable to read signature from '%@'.\n" ++= "Неуспех при четенето на подписа от „%@“.\n"; ++ ++ ++/*** Strings from Pref_ReadAhead.m ***/ ++/* File: Pref_ReadAhead.m:181 */ ++"Next unread past the current thread." ++= "Следващата непрочетена след текущата нишка."; ++/* File: Pref_ReadAhead.m:188 */ ++"Next unread." = "Следващата непрочетена."; ++/* File: Pref_ReadAhead.m:202 */ ++"Next." = "Следващата."; ++/* File: Pref_ReadAhead.m:195 */ ++"Previous." = "Предходната."; ++/* File: Pref_ReadAhead.m:216 */ ++"Read ahead (ie. start downloading related messages\nwhen a message is selected)." ++= "Предварително изтегляне (изтегляне на съответните статии,\nкогато дадена статия е избрана)."; ++/* File: Pref_ReadAhead.m:175 */ ++"Read ahead what?" = "Предварително четене на какво?"; ++/* File: Pref_ReadAhead.m:123 */ ++"Read-\nahead" = "Предварително\nизтегляне"; ++/* File: Pref_ReadAhead.m:118 */ ++"Read-ahead" = "Предварително изтегляне"; ++/* File: Pref_ReadAhead.m:147 */ ++"Read-ahead downloads messages smaller than:" ++= "При тази опция се изтеглят статии, по-малки от:"; ++ ++ ++/*** Strings from Pref_Sources.m ***/ ++/* File: Pref_Sources.m:98 */ ++"Id" = "И-р"; ++/* File: Pref_Sources.m:236 */ ++"Message sources" = "Източници за статии"; ++/* File: Pref_Sources.m:219 */ ++"Message\nsources" = "Източници\nза статии"; ++/* File: Pref_Sources.m:159 */ ++"Properties..." = "Настройки..."; ++/* File: Pref_Sources.m:110 */ ++"Type" = "Вид"; ++ ++ ++/*** Strings from PreferencesWindowController.m ***/ ++/* File: PreferencesWindowController.m:119 */ ++"Preferences" = "Настройки"; ++/* File: PreferencesWindowController.m:66 */ ++"Revert" = "Връщане"; ++/* File: PreferencesWindowController.m:74 */ ++"Save" = "Запазване"; ++ ++ ++/*** Strings from main.m ***/ ++/* File: main.m:288 */ ++"All" = "Всички"; ++/* File: main.m:313 */ ++"Arrival" = "Дата"; ++/* File: main.m:282 */ ++"Branch" = "Клон"; ++/* File: main.m:339 */ ++"Change encoding..." = "Смяна на кодирането..."; ++/* File: main.m:393 */ ++"Close" = "Затваряне"; ++/* File: main.m:364 */ ++"Compose" = "Съставяне"; ++/* File: main.m:370 */ ++"Copy" = "Копиране"; ++/* File: main.m:373 */ ++"Cut" = "Отрязване"; ++/* File: main.m:379 */ ++"Edit" = "Редактиране"; ++/* File: main.m:320 */ ++"Folder" = "Група"; ++/* File: main.m:361 */ ++"Followup to group" = "Отговор"; ++/* File: main.m:405 */ ++"Hide" = "Скриване"; ++/* File: main.m:243 */ ++"Info" = "Информация"; ++/* File: main.m:241 */ ++"Info..." = "Относно..."; ++/* File: main.m:388 */ ++"Log window" = "Дневник"; ++/* File: main.m:291 */ ++"Mark read" = "Отбелязване като прочетени"; ++/* File: main.m:353 */ ++"Message" = "Статия"; ++/* File: main.m:277 */ ++"Move to" = "Преход до"; ++/* File: main.m:359 */ ++"New article" = "Нова статия"; ++/* File: main.m:271 */ ++"Next branch" = "Следващ клон"; ++/* File: main.m:274 */ ++"Next thread" = "Следвща нишка"; ++/* File: main.m:265 */ ++"Next unread" = "Следваща непрочетена"; ++/* File: main.m:251 */ ++"Open folder" = "Отваряне на групата"; ++/* File: main.m:248 */ ++"Open list" = "Отваряне на списъка"; ++/* File: main.m:262 */ ++"Parent" = "Предходна"; ++/* File: main.m:376 */ ++"Paste" = "Поставяне"; ++/* File: main.m:239 */ ++"Preferences..." = "Настройки..."; ++/* File: main.m:409 */ ++"Quit" = "Изход"; ++/* File: main.m:315 */ ++"Reverse arrival" = "Дата в обратен ред"; ++/* File: main.m:298 */ ++"Reverse thread" = "Нишка в обратен ред"; ++/* File: main.m:268 */ ++"Scroll/next" = "Прелистване/следваща"; ++/* File: main.m:401 */ ++"Services" = "Услуги"; ++/* File: main.m:346 */ ++"Show source" = "Код на статията"; ++/* File: main.m:317 */ ++"Sort by" = "Подреждане по"; ++/* File: main.m:343 */ ++"Switch font" = "Смяна на шрифт"; ++/* File: main.m:296 */ ++/* File: main.m:285 */ ++"Thread" = "Нишка"; ++/* File: main.m:340 */ ++"Toggle read/unread" = "Отбелязване като прочетена/непрочетена"; ++/* File: main.m:384 */ ++"Update" = "Обновяване"; ++/* File: main.m:419 */ ++"Welcome to LuserNET.app v%s" = "Добре дошли в LuserNET.app v%s"; ++/* File: main.m:396 */ ++"Windows" = "Прозорци"; ++/* File: main.m:420 */ ++"alt-f brings up the folder lists; alt-u checks for new messages" ++= "alt-f показва списъка с групи; alt-u проверява за нови статии"; +diff -urNad lusernet.app-0.4.2~/GNUmakefile lusernet.app-0.4.2/GNUmakefile +--- lusernet.app-0.4.2~/GNUmakefile 2004-03-03 02:01:26.000000000 +0200 ++++ lusernet.app-0.4.2/GNUmakefile 2006-11-21 22:04:54.000000000 +0200 +@@ -40,7 +40,7 @@ + LuserNET_RESOURCE_FILES = News.app.tiff + + LuserNET_LOCALIZED_RESOURCE_FILES = Localizable.strings +-LuserNET_LANGUAGES = English Swedish Spanish French German ++LuserNET_LANGUAGES = Bulgarian English Swedish Spanish French German + + MAKE_STRINGS_OPTIONS = --aggressive-match --aggressive-remove + --- lusernet.app-0.4.2.orig/debian/patches/10_mark_string_as_translatable.dpatch +++ lusernet.app-0.4.2/debian/patches/10_mark_string_as_translatable.dpatch @@ -0,0 +1,18 @@ +#!/bin/sh /usr/share/dpatch/dpatch-run +## 10_mark_string_as_translatable.dpatch by Yavor Doganov +## +## DP: Mark one string as translatable. + +@DPATCH@ +diff -urNad lusernet.app-0.4.2~/Pref_ReadAhead.m lusernet.app-0.4.2/Pref_ReadAhead.m +--- lusernet.app-0.4.2~/Pref_ReadAhead.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/Pref_ReadAhead.m 2006-11-21 21:01:05.000000000 +0200 +@@ -172,7 +172,7 @@ + GSVbox *vb; + + box=[[NSBox alloc] init]; +- [box setTitle: @"Read ahead what?"]; ++ [box setTitle: _(@"Read ahead what?")]; + + vb=[[GSVbox alloc] init]; + [vb setDefaultMinYMargin: 4]; --- lusernet.app-0.4.2.orig/debian/patches/00list +++ lusernet.app-0.4.2/debian/patches/00list @@ -0,0 +1,3 @@ +05_pantomime1.2 +10_mark_string_as_translatable +20_bg_translation --- lusernet.app-0.4.2.orig/debian/patches/05_pantomime1.2.dpatch +++ lusernet.app-0.4.2/debian/patches/05_pantomime1.2.dpatch @@ -0,0 +1,650 @@ +#!/bin/sh /usr/share/dpatch/dpatch-run +## 05_pantomime1.2.dpatch by Sergey Golovin +## +## DP: Convert to Pantomime 1.2. + +@DPATCH@ +diff -urNad lusernet.app-0.4.2~/ChangeLog lusernet.app-0.4.2/ChangeLog +--- lusernet.app-0.4.2~/ChangeLog 1970-01-01 02:00:00.000000000 +0200 ++++ lusernet.app-0.4.2/ChangeLog 2006-09-27 00:13:21.000000000 +0300 +@@ -0,0 +1,41 @@ ++2006-09-19 Sergey V. Golovin ++ ++ * main.m ([AppDelegate -changeEncoding:]): post ++ DefaultEncodingChangedNotification when done ++ ++ * main.m: new notification DefaultEncodingChangedNotification ++ ++ * ComposeWindowController.m: "DefaultEncoding" now influences all ++ messages that going to be posted (Yavor Doganov ) ++ ++ * NNTPSourceGUI.m ([NNTPSourcePropertiesController ++ -initWithNNTPSource:]): the NNTPSourcePropertiesController is ++ responsible for releasing its window ([win release] removed from ++ end of -initWithNNTPSource:) ++ ++ * MessageViewController.m ([MessageViewController -getData]): ++ - The "DefaultEncoding" should influence only such messages that ++ have no the content type header ++ - All normal messages are displayed with their charsets ++ ++ * MessageViewController.m ([MessageViewController -encodingChanged:]): added ++ ([MessageViewController -initWithMsgDB:textView:scrollView:]): now it ++ waits for DefaultEncodingChangedNotification to redisplay ++ immediately a message if it is needed. ++ ++2006-09-04 Sergey Golovin ++ ++ * Pref_MessageViewing.m ([Pref_MessageViewing -willShow]): added ++ a pop-up button for charset selection ++ ([Pref_MessageViewing -changeEncoding:]): added ++ ++2006-09-02 Sergey Golovin ++ ++ * MessageViewController.m ([MessageViewController -getData]): ++ - added from user defaults a charset header when a raw message has ++ no one ++ - added from user defaults a content type header when a raw ++ message has no one ++ ++ * synchronized with Pantomime 1.2 ++ +diff -urNad lusernet.app-0.4.2~/ComposeWindowController.h lusernet.app-0.4.2/ComposeWindowController.h +--- lusernet.app-0.4.2~/ComposeWindowController.h 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/ComposeWindowController.h 2006-09-27 00:13:21.000000000 +0300 +@@ -6,7 +6,7 @@ + #define ComposeWindowController_h + + @class NSString,NSDictionary; +-@class Message; ++@class CWMessage; + @class NSTextView,NSTextField,NSButton; + + @interface ComposeWindowController : NSWindowController +@@ -25,7 +25,7 @@ + + - initWithHeaders: (NSDictionary *)headers quoteContent: (NSString *)content; + - initWithHeaders: (NSDictionary *)headers; +-- initWithFollowupToMessage: (Message *)msg; ++- initWithFollowupToMessage: (CWMessage *)msg; + + @end + +diff -urNad lusernet.app-0.4.2~/ComposeWindowController.m lusernet.app-0.4.2/ComposeWindowController.m +--- lusernet.app-0.4.2~/ComposeWindowController.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/ComposeWindowController.m 2006-09-27 00:13:21.000000000 +0300 +@@ -21,11 +21,12 @@ + #include "main.h" + #include "KeyWindow.h" + #include "Pref_Posting.h" ++#include "Pref_MessageViewing.h" + +-#include +-#include +-#include +-#include ++#include ++#include ++#include ++#include + + + @implementation ComposeWindowController +@@ -33,7 +34,7 @@ + + -(void) post: (id)sender + { +- Message *m=[[Message alloc] init]; ++ CWMessage *m=[[CWMessage alloc] init]; + NSMutableDictionary *md; + NSEnumerator *e; + NSString *header,*value; +@@ -64,7 +65,7 @@ + + if ([header isEqualToString: @"From"]) + { +- InternetAddress *ia=[[InternetAddress alloc] initWithString: value]; ++ CWInternetAddress *ia=[[CWInternetAddress alloc] initWithString: value]; + [m setFrom: ia]; + DESTROY(ia); + } +@@ -81,7 +82,14 @@ + [m setFormat: PantomimeFormatFlowed]; + [m setContent: [text string]]; + +- [m setCharset: [MimeUtility charsetForString: [text string]]]; ++ if(![Pref_MessageViewing defaultEncoding]) ++ { ++ [m setCharset: @"utf-8"]; ++ } ++ else ++ { ++ [m setCharset: [Pref_MessageViewing defaultEncoding]]; ++ } + + state=1; + d=[m dataValue]; +@@ -386,7 +394,7 @@ + } + + /* TODO: handle attributation, followup to sender, followup, etc. */ +-- initWithFollowupToMessage: (Message *)msg ++- initWithFollowupToMessage: (CWMessage *)msg + { + NSDictionary *headers; + NSString *subject,*references; +diff -urNad lusernet.app-0.4.2~/FolderThreader.m lusernet.app-0.4.2/FolderThreader.m +--- lusernet.app-0.4.2~/FolderThreader.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/FolderThreader.m 2006-09-27 00:13:21.000000000 +0300 +@@ -9,7 +9,7 @@ + + #include "FolderThreader.h" + +-#include ++#include + + + static NSDate *parse_date(const char *date_header) +@@ -544,7 +544,7 @@ + return @""; + + d=[[NSData alloc] initWithBytes: c length: strlen(c)]; +- s2=[MimeUtility decodeHeader: d charset: nil]; ++ s2=[CWMIMEUtility decodeHeader: d charset: nil]; + [d release]; + return s2; + } +@@ -586,7 +586,7 @@ + else + { + d=[[NSData alloc] initWithBytes: c length: strlen(c)]; +- s2=[MimeUtility decodeHeader: d charset: nil]; ++ s2=[CWMIMEUtility decodeHeader: d charset: nil]; + [d release]; + h->subject=[s2 retain]; + } +@@ -595,7 +595,7 @@ + if (c) + { + d=[[NSData alloc] initWithBytes: c length: strlen(c)]; +- s2=[MimeUtility decodeHeader: d charset: nil]; ++ s2=[CWMIMEUtility decodeHeader: d charset: nil]; + [d release]; + h->from=[s2 retain]; + } +diff -urNad lusernet.app-0.4.2~/FolderWindowController.m lusernet.app-0.4.2/FolderWindowController.m +--- lusernet.app-0.4.2~/FolderWindowController.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/FolderWindowController.m 2006-09-27 00:13:21.000000000 +0300 +@@ -20,7 +20,7 @@ + #include + #include + +-#include ++#include + + #include "MsgDB.h" + +diff -urNad lusernet.app-0.4.2~/MessageViewController.h lusernet.app-0.4.2/MessageViewController.h +--- lusernet.app-0.4.2~/MessageViewController.h 2002-03-08 02:39:34.000000000 +0200 ++++ lusernet.app-0.4.2/MessageViewController.h 2006-09-27 00:13:21.000000000 +0300 +@@ -6,7 +6,7 @@ + #define MessageViewController_h + + @class NSTextView,NSScrollView,NSMutableDictionary; +-@class Message; ++@class CWMessage; + + #include "MsgDB.h" + +@@ -17,7 +17,7 @@ + + MsgDB *mdb; + msg_id_t mid; +- Message *cur_message; ++ CWMessage *cur_message; + + /* actually an NSMapTable */ + void *cur_options; +@@ -48,6 +48,8 @@ + + -(void) messageSave; + ++-(void) encodingChanged: (NSNotification *)n; ++ + @end + + #endif +diff -urNad lusernet.app-0.4.2~/MessageViewController.m lusernet.app-0.4.2/MessageViewController.m +--- lusernet.app-0.4.2~/MessageViewController.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/MessageViewController.m 2006-09-27 00:13:21.000000000 +0300 +@@ -21,11 +21,11 @@ + + #include "GUISource.h" + +-#include +-#include +-#include +-#include +-#include ++#include ++#include ++#include ++#include ++#include + + //#define USE_MIME_STUFF + +@@ -89,7 +89,7 @@ + + + @interface MessageViewController (private) +--(void) _renderContent:(id)p parent:(Part *)parent to:(NSMutableAttributedString *)str; ++-(void) _renderContent:(id)p parent:(CWPart *)parent to:(NSMutableAttributedString *)str; + -(void) _renderPart:(id)p to:(NSMutableAttributedString *)str; + + -(void) displayMessage; +@@ -212,10 +212,10 @@ + } + + +--(void) _render_multipart: (MimeMultipart *)mp type: (NSString *)ct ++-(void) _render_multipart: (CWMIMEMultipart *)mp type: (NSString *)ct + to: (NSMutableAttributedString *)str + { +- Part *bp; ++ CWPart *bp; + int i; + + if ([ct isEqual: @"multipart/alternative"]) +@@ -227,14 +227,14 @@ + else + disp=[mp count]-1; + +- bp=[mp bodyPartAtIndex: disp]; ++ bp=[mp partAtIndex: disp]; + append(str,header_bold_dict,_(@"Currently shown:")); + append(str,header_dict,@" %@\n",[bp contentType]); + append(str,header_bold_dict,_(@"Alternatives:")); + for (i=0;i<[mp count];i++) + { + appendLink(str,LINK_MULTIPART_ALTERNATIVE,mp,i+1,@" %@", +- [[mp bodyPartAtIndex: i] contentType]); ++ [[mp partAtIndex: i] contentType]); + } + append(str,nil,@"\n"); + +@@ -249,7 +249,7 @@ + + for (i=0;i<[mp count];i++) + { +- bp=[mp bodyPartAtIndex: i]; ++ bp=[mp partAtIndex: i]; + append(str,header_bold_dict,_(@"\nPart:")); + append(str,header_dict,@" %i %@\n",i,[bp contentType]); + [self _renderPart:bp to:str]; +@@ -264,7 +264,7 @@ + NSDictionary *fd; + NSFont *f; + +- NSRange r; ++ // NSRange r; + + if (cur_font) + f=[Pref_MessageViewing font2]; +@@ -276,7 +276,7 @@ + + #if 0 /* TODO: need to update with new Pantomime interface */ + /* TODO: this should probably be optional */ +- r=[MimeUtility rangeOfUUEncodedStringFromString: text ++ r=[CWMIMEUtility rangeOfUUEncodedStringFromString: text + range: NSMakeRange(0,[text length])]; + + if (r.location==NSNotFound) +@@ -291,7 +291,7 @@ + appendPlainText(str,fd,[text substringWithRange: NSMakeRange(0,r.location)]); + + /* TODO: this is inefficient */ +- fw=[MimeUtility fileWrapperFromUUEncodedString: [text substringWithRange: r]]; ++ fw=[CWMIMEUtility fileWrapperFromUUEncodedString: [text substringWithRange: r]]; + + append(str,header_bold_dict,_(@"UUEncoded file:")); + append(str,header_dict,@" %@ ",[fw preferredFilename]); +@@ -312,7 +312,7 @@ + } + + +--(void) _renderContent:(id)p parent:(Part *)parent ++-(void) _renderContent:(id)p parent:(CWPart *)parent + to:(NSMutableAttributedString *)str + { + NSString *ct=[parent contentType]; +@@ -340,9 +340,9 @@ + + + /* Some content classes/types we handle internally. */ +- if ([p isKindOfClass: [MimeMultipart class]]) ++ if ([p isKindOfClass: [CWMIMEMultipart class]]) + { +- [self _render_multipart: (MimeMultipart *)p type: ct to: str]; ++ [self _render_multipart: (CWMIMEMultipart *)p type: ct to: str]; + return; + } + +@@ -352,7 +352,7 @@ + return; + } + +- if ([p isKindOfClass: [Part class]]) ++ if ([p isKindOfClass: [CWPart class]]) + { + [self _renderPart: p to: str]; + return; +@@ -553,13 +553,13 @@ + + -(void) _renderPart:(id)p to:(NSMutableAttributedString *)str + { +- if ([p isKindOfClass: [Message class]]) ++ if ([p isKindOfClass: [CWMessage class]]) + { +- Message *m=(Message *)p; ++ CWMessage *m=(CWMessage *)p; + append(str,header_bold_dict,_(@"Subject:")); + append(str,header_dict,@" %@\n",[m subject]); + append(str,header_bold_dict,_(@"From:")); +- append(str,header_dict,@" %@\n",[[m from] unicodeStringValue]); ++ append(str,header_dict,@" %@\n",[[m from] stringValue]); + append(str,header_bold_dict,_(@"Newsgroups:")); + append(str,header_dict,@" %@\n",[m headerValueForName: @"Newsgroups"]); + append(str,header_bold_dict,_(@"Date:")); +@@ -569,9 +569,9 @@ + append(str,nil,@"\n"); + [self _renderContent:[m content] parent: m to:str]; + } +- else if ([p isKindOfClass: [Part class]]) ++ else if ([p isKindOfClass: [CWPart class]]) + { /* handles MimeBodyPart and any extensions */ +- [self _renderContent:[(Part *)p content] parent: (Part *)p to:str]; ++ [self _renderContent:[(CWPart *)p content] parent: (CWPart *)p to:str]; + } + else + { +@@ -655,7 +655,27 @@ + NSData *d; + + d=[[NSData alloc] initWithBytes: data length: length]; +- cur_message=[(Message *)[Message alloc] initWithData: d]; ++ if([mdb msg_getHeader: "ContentType" : mid]) ++ { ++ cur_message=[(CWMessage *)[CWMessage alloc] initWithData: d]; ++ } ++ else ++ { ++ cur_message=[(CWMessage *)[CWMessage alloc] initWithData: d ++ charset:[Pref_MessageViewing defaultEncoding]]; ++ } ++ if(![cur_message contentType]) ++ { ++ [cur_message setContentType:@"text/plain"]; ++ } ++ else ++ { ++ ASSIGN( ++ cur_message, ++ [(CWMessage *)[CWMessage alloc] initWithData: d ++ charset:[cur_message charset]] ++ ); ++ } + [d release]; + { + const char *c; +@@ -819,17 +839,17 @@ + { + NSString *s=(NSString *)l->object; + NSRange r; +- UUFile *fw; +- r=[MimeUtility rangeOfUUEncodedStringFromString: s ++ CWUUFile *fw; ++ r=[CWUUFile rangeOfUUEncodedStringFromString: s + range: NSMakeRange(0,[s length])]; + +- fw=[MimeUtility fileFromUUEncodedString: [s substringWithRange: r]]; ++ fw=[CWUUFile fileFromUUEncodedString: [s substringWithRange: r]]; + filename=AUTORELEASE(RETAIN([fw name])); + d=AUTORELEASE(RETAIN([fw data])); + } + else + { +- Part *p=(Part *)l->object; ++ CWPart *p=(CWPart *)l->object; + d=(NSData *)[p content]; + filename=[p filename]; + } +@@ -926,6 +946,12 @@ + + mid=0; + ++ [[NSNotificationCenter defaultCenter] ++ addObserver: self ++ selector: @selector(encodingChanged:) ++ name: DefaultEncodingChangedNotification ++ object: nil]; ++ + return self; + } + +@@ -1154,6 +1180,11 @@ + [app_delegate composeFollowupToMessage: cur_message]; + } + ++-(void) encodingChanged: (NSNotification *)n ++{ ++ [self getData]; ++ [self displayMessage]; ++} + + @end + +diff -urNad lusernet.app-0.4.2~/NNTPSourceGUI.m lusernet.app-0.4.2/NNTPSourceGUI.m +--- lusernet.app-0.4.2~/NNTPSourceGUI.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/NNTPSourceGUI.m 2006-09-27 00:13:21.000000000 +0300 +@@ -347,7 +347,6 @@ + [win setTitle: _(@"NNTPSource properties")]; + [win setDelegate: self]; + [win autoSetupKeyViewChain]; +- [win release]; + + return self; + } +diff -urNad lusernet.app-0.4.2~/Pref_MessageViewing.h lusernet.app-0.4.2/Pref_MessageViewing.h +--- lusernet.app-0.4.2~/Pref_MessageViewing.h 2002-03-11 02:06:46.000000000 +0200 ++++ lusernet.app-0.4.2/Pref_MessageViewing.h 2006-09-27 00:13:21.000000000 +0300 +@@ -27,6 +27,7 @@ + + +(NSFont *) font1; + +(NSFont *) font2; +++(NSString *) defaultEncoding; + + @end + +diff -urNad lusernet.app-0.4.2~/Pref_MessageViewing.m lusernet.app-0.4.2/Pref_MessageViewing.m +--- lusernet.app-0.4.2~/Pref_MessageViewing.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/Pref_MessageViewing.m 2006-09-27 00:13:21.000000000 +0300 +@@ -8,11 +8,14 @@ + #include + + #include ++#include + #include + #include + #include + #include + ++#include ++ + #include "Pref_MessageViewing.h" + + +@@ -192,6 +195,7 @@ + { + NSTextField *f; + NSButton *b; ++ NSPopUpButton *pop; + GSHbox *hb; + + hb=[[GSHbox alloc] init]; +@@ -289,6 +293,49 @@ + + [top addView: hb enablingYResizing: NO]; + DESTROY(hb); ++ ++ [top addSeparator]; ++ ++ hb=[[GSHbox alloc] init]; ++ [hb setDefaultMinXMargin: 4]; ++ [hb setAutoresizingMask: NSViewWidthSizable]; ++ ++ f=[[NSTextField alloc] init]; ++ [f setStringValue: _(@"Default encoding ")]; ++ [f setEditable: NO]; ++ [f setDrawsBackground: NO]; ++ [f setBordered: NO]; ++ [f setBezeled: NO]; ++ [f setSelectable: NO]; ++ [f sizeToFit]; ++ [f setAutoresizingMask: 0]; ++ [hb addView: f enablingXResizing: NO]; ++ DESTROY(f); ++ ++ pop = [[NSPopUpButton alloc] init]; ++ [pop setPullsDown:NO]; ++ NSDictionary *charsets = [CWCharset allCharsets]; ++ NSEnumerator *en = [[charsets allValues] objectEnumerator]; ++ NSString *encoding; ++ while((encoding = [en nextObject])) ++ { ++ [pop addItemWithTitle:encoding]; ++ } ++ [pop selectItemWithTitle: ++ [charsets ++ objectForKey: ++ [sd objectForKey:@"DefaultEncoding"]]]; ++ [pop synchronizeTitleAndSelectedItem]; ++ [pop setTarget: self]; ++ [pop setAction: @selector(changeEncoding:)]; ++ [pop sizeToFit]; ++ [hb addView: pop enablingXResizing: NO]; ++ DESTROY(pop); ++ ++ ++ [top addView: hb enablingYResizing: NO]; ++ DESTROY(hb); ++ + } + + [self revert]; +@@ -334,5 +381,23 @@ + [f_cur setFont: f]; + } + ++-(void) changeEncoding:(id)sender ++{ ++ NSDictionary *charsets = [CWCharset allCharsets]; ++ sd=[NSUserDefaults standardUserDefaults]; ++ ++ [sender selectItemWithTitle:[sender titleOfSelectedItem]]; ++ [sender synchronizeTitleAndSelectedItem]; ++ ++ [sd setObject: ++ [[charsets allKeysForObject:[sender titleOfSelectedItem]] objectAtIndex:0] ++ forKey:@"DefaultEncoding"]; ++} ++ +++(NSString *) defaultEncoding ++{ ++ return [sd stringForKey:@"DefaultEncoding"]; ++} ++ + @end + +diff -urNad lusernet.app-0.4.2~/main.h lusernet.app-0.4.2/main.h +--- lusernet.app-0.4.2~/main.h 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/main.h 2006-09-27 00:13:21.000000000 +0300 +@@ -11,6 +11,8 @@ + @class FolderListController,LogWindowController,PreferencesWindowController; + @class Message; + ++extern NSString *DefaultEncodingChangedNotification; ++ + @interface AppDelegate : NSObject + { + NSApplication *app; +@@ -37,7 +39,7 @@ + @interface AppDelegate (prefs) + -(void) openPreferences: (id)sender; + @end +- ++ + + extern AppDelegate *app_delegate; + +diff -urNad lusernet.app-0.4.2~/main.m lusernet.app-0.4.2/main.m +--- lusernet.app-0.4.2~/main.m 2004-03-03 01:58:37.000000000 +0200 ++++ lusernet.app-0.4.2/main.m 2006-09-27 00:13:21.000000000 +0300 +@@ -11,6 +11,8 @@ + #include + #include + ++#include ++ + #include "MsgDB.h" + + #include "LogWindowController.h" +@@ -36,6 +38,7 @@ + + #define LocationKey @"MessageDatabaseLocation" + ++NSString *DefaultEncodingChangedNotification = @"DefaultEncodingChangedNotification"; + + @interface NSMenu (im_lazy) + -(id ) addItemWithTitle: (NSString *)s; +@@ -209,6 +212,21 @@ + #endif + } + ++-(void) changeEncoding:(id)sender ++{ ++ NSDictionary *charsets = [CWCharset allCharsets]; ++ ++ // [sender selectItemWithTitle:[sender title]]; ++ // [sender synchronizeTitleAndSelectedItem]; ++ ++ [[NSUserDefaults standardUserDefaults] setObject: ++ [[charsets allKeysForObject:[sender title]] objectAtIndex:0] ++ forKey:@"DefaultEncoding"]; ++ ++ [[NSNotificationCenter defaultCenter] ++ postNotificationName: DefaultEncodingChangedNotification ++ object: nil]; ++} + + -(void) applicationWillFinishLaunching: (NSNotification *)n + { +@@ -307,6 +325,18 @@ + m=[[NSMenu alloc] init]; + /* [m addItemWithTitle: _(@"Open") + action: @selector(openMessage:)];*/ ++ m2=[[NSMenu alloc] init]; ++ ++ NSDictionary *charsets = [CWCharset allCharsets]; ++ NSEnumerator *en = [[charsets allValues] objectEnumerator]; ++ NSString *encoding; ++ while((encoding = [en nextObject])) ++ { ++ [m2 addItemWithTitle: encoding ++ action: @selector(changeEncoding:)]; ++ } ++ ++ [m setSubmenu: m2 forItem: [m addItemWithTitle: _(@"Change encoding...")]]; + [m addItemWithTitle: _(@"Toggle read/unread") + action: @selector(messageToggleRead:) + keyEquivalent: @"m"];